From 101c57ec4c28bc3c36e49c50a926e9e7c0dd0247 Mon Sep 17 00:00:00 2001
From: ke_junjie <508432735@qq.com>
Date: 周三, 04 6月 2025 11:27:14 +0800
Subject: [PATCH] 修改
---
qqjf-Background/IWareDataAccess/Base/PRINT/PrintSqlFunc.cs | 14
qqjf-Background/WebApi_QQJF/Global.asax | 1
qqjf-Background/IWareDataAccess/Base/ITEMSTORAGE/ItemStorageSqlFunc.cs | 132
qqjf-Background/iWareSda_QQJF/FormTest.Designer.cs | 211
qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.xml | 10752 ++
qqjf-Background/IWareDataAccess/Entity/Order/InOrderWebEntity.cs | 103
qqjf-Background/test/Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml | 51
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_PLACE_VS_CONTAINER.cs | 36
qqjf-Background/IWareDataAccess/packages.config | 5
qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.intellisense.js | 2671
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_PRINT.cs | 52
qqjf-Background/iWareSda_QQJF/OPCService/EXS7PLC.cs | 118
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/CAR_CARTASK.cs | 61
qqjf-Background/IWareDataAccess/Properties/AssemblyInfo.cs | 36
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/TASK_RECORD.cs | 40
qqjf-Background/test/Scripts/bootstrap.min.js | 21
qqjf-Background/test/Views/Shared/_Layout.cshtml | 43
qqjf-Background/IWareDataAccess/Base/PLACEVSCONTAINER/PlaceVsContainerSqlFunc.cs | 437
qqjf-Background/IWareDataAccess/EF/v3D展示数据.cs | 34
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_SYS_USER.cs | 36
qqjf-Background/WMSPatch/EF/Base_EmptyEquipment.cs | 98
qqjf-Background/iWareSda_QQJF/SRM/SrmService/EntitySrmView.cs | 114
qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmRecordView.cs | 24
qqjf-Background/IWareDataAccess/Task/TASK/TaskSqlFunc.cs | 793
qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchPermissionView.cs | 24
qqjf-Background/test/Project_Readme.html | 150
qqjf-Background/IWareDataAccess/EF/TranTask.cs | 34
qqjf-Background/WMSPatch/EF/Base_PlateType.cs | 69
qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfString.datasource | 10
qqjf-Background/test/Areas/HelpPage/SampleGeneration/TextSample.cs | 37
qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.cs | 442
qqjf-Background/iWareSda_QQJF/WEBAPI/JSONEntity/AddItem.cs | 84
qqjf-Background/test/fonts/glyphicons-halflings-regular.svg | 228
qqjf-Background/iWareCommon/log4net_iWare.config | 47
qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.Designer.cs | 320
qqjf-Background/IWareDataAccess/EF/View_BASE_DEVICE.cs | 23
qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.map | 8
qqjf-Background/IWareDataAccess/EF/BASE_DEVICE.cs | 32
qqjf-Background/DeviceWCS/Web References/tranSRM/item.disco | 4
qqjf-Background/iWareSda_QQJF/SRM/SrmModel/Srm_CacheEntity.cs | 31
qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.SendTaskClass.datasource | 10
qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.map | 7
qqjf-Background/test/Areas/HelpPage/HelpPage.css | 89
qqjf-Background/IWareDataAccess/Summary/SummaryStatisticsSqlFunc.cs | 1290
qqjf-Background/WebApi_QQJF/Controllers/ItemStorageController.cs | 83
qqjf-Background/Models/Properties/AssemblyInfo.cs | 36
qqjf-Background/WMSPatch/EF/Base_EmptyEquipmentList.cs | 88
qqjf-Background/test/Controllers/ValuesController.cs | 39
qqjf-Background/test/Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml | 44
qqjf-Background/iWareSda_QQJF/WCSNEW/Helper.cs | 1269
qqjf-Background/test/Areas/HelpPage/SampleGeneration/ObjectGenerator.cs | 456
qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.dll | 0
qqjf-Background/DeviceWCS/DeviceWCS.csproj | 221
qqjf-Background/IWareDataAccess/Base/ITEM/ItemSqlFunc.cs | 576
qqjf-Background/WebApi_QQJF/Views/Web.config | 35
qqjf-Background/iWareCommon/Properties/Resources.resx | 123
qqjf-Background/iWareSda_QQJF/WEBAPI/TestPost/SignExtension.cs | 92
qqjf-Background/WebApi_QQJF/WebApi_QQJF.csproj | 352
qqjf-Background/IWareDataAccess/EF/Model.cs | 349
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_PLACE.cs | 43
qqjf-Background/iWareCommon/Utils/Log4Net/LogType.cs | 19
qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER_VS_ITEM.cs | 87
qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryPie.cs | 18
qqjf-Background/iWareSda_QQJF/RGV/RgvModel/rgvDB.cs | 151
qqjf-Background/IWareDataAccess/Entity/Task/SrmRecordWebEntity.cs | 41
qqjf-Background/iWareSda_QQJF/DLL/WZ.Useful.Commons.dll | 0
qqjf-Background/IWareDataAccess/Entity/Summary/HomeBarEntity.cs | 24
qqjf-Background/IWareDataAccess/Alert/ALERT/AlertSqlFunc.cs | 370
qqjf-Background/iWareSda_QQJF/S7.Net.dll | 0
qqjf-Background/DeviceWCS/Web References/srmSER/Reference.map | 8
qqjf-Background/test/Scripts/modernizr-2.6.2.js | 1416
qqjf-Background/IWareDataAccess/Sys/ROLE_VS_PERMISSION/Role_Vs_PermissionSqlFunc.cs | 193
qqjf-Background/iWareSda_QQJF/WCS/WCS.cs | 830
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/SYS_DEPT.cs | 41
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/RECORD_WAREHOUSEINFO.cs | 25
qqjf-Background/test/Content/Site.css | 42
qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER.cs | 74
qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.ArrayOfInt.datasource | 10
qqjf-Background/IWareDataAccess/Entity/Base/ContainerWebEntity.cs | 44
qqjf-Background/IWareDataAccess/Helper/PredicateBuilder.cs | 128
qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskRecodeView.cs | 25
qqjf-Background/WebApi_QQJF/Web.Debug.config | 30
qqjf-Background/WebApi_QQJF/Content/bootstrap.min.css | 20
qqjf-Background/iWareSda_QQJF/WCS/EDM/Model.cs | 48
qqjf-Background/IWareDataAccess/EF/v3D_Inventory.cs | 26
qqjf-Background/test/Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml | 41
qqjf-Background/IWareDataAccess/Entity/Base/UserRoleMenuEntity.cs | 23
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_SRMTASK.cs | 53
qqjf-Background/EnumType/EDeviceId.cs | 22
qqjf-Background/test/Areas/HelpPage/Views/Shared/_Layout.cshtml | 12
qqjf-Background/IWareDataAccess/Entity/Base/PalletWebEntity.cs | 28
qqjf-Background/iWareSda_QQJF/OPCService/HSLS7.cs | 164
qqjf-Background/IWareDataAccess/EF/SrmTask.cs | 51
qqjf-Background/iWareSda_QQJF/SRMTRAN/SrmTranService/EntitySrmTranView.cs | 95
qqjf-Background/IWareDataAccess/EF/ERP_EPRORDER.cs | 24
qqjf-Background/IWareDataAccess/Entity/Alert/AlertWebEntity.cs | 32
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml | 51
qqjf-Background/WMSPatch/EF/Base_ProductPlaceHolder.cs | 199
qqjf-Background/WebApi_QQJF/Scripts/bootstrap.min.js | 21
qqjf-Background/WMSPatch/Service References/SrmServer/item.disco | 4
qqjf-Background/DeviceWCS/Web References/srmSER/item.disco | 4
qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPage.css | 89
qqjf-Background/IWareDataAccess/Base/CONTAINERVSITEM/ContainerVsItemSqlFunc.cs | 1023
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/TranLock.cs | 28
qqjf-Background/2DShow/2DShow.csproj | 85
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_DESTINATION.cs | 30
qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.eot | 0
qqjf-Background/test/fonts/glyphicons-halflings-regular.ttf | 0
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnPlace.cs | 19
qqjf-Background/WebApi_QQJF/favicon.ico | 0
qqjf-Background/IWareDataAccess/EF/SYS_USER_VS_ROLE.cs | 23
qqjf-Background/IWareDataAccess/Entity/Task/TaskRecodeWebEntity.cs | 67
qqjf-Background/IWareDataAccess/Task/TASK/SrmTaskSqlFunc.cs | 129
qqjf-Background/iWareSda_QQJF/DLL/Interop.OPCAutomation.dll | 0
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_ITEMSTORAGE.cs | 68
qqjf-Background/iWareSda_QQJF/iWareSda_QQJF.csproj | 309
qqjf-Background/iWareSda_QQJF/DLL/EXS7PLC.txt | 99
qqjf-Background/WebApi_QQJF/Views/Home/Index.cshtml | 24
qqjf-Background/test/Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml | 4
qqjf-Background/IWareDataAccess/EF/PDA_VERSION.cs | 20
qqjf-Background/test/Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml | 13
qqjf-Background/test/Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml | 6
qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.SqlServer.dll | 0
qqjf-Background/test/Areas/HelpPage/Views/Help/Index.cshtml | 41
qqjf-Background/IWareDataAccess/EF/SYS_DEPT.cs | 41
qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleVsPermission.cs | 24
qqjf-Background/WebApi_QQJF/Scripts/respond.min.js | 20
qqjf-Background/WebApi_QQJF/Web -生产地址.Release.config | 31
qqjf-Background/iWareSda_QQJF/Properties/AssemblyInfo.cs | 36
qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchUserView.cs | 24
qqjf-Background/iWareSda_QQJF/WCS/EDM/KEYVALUE.cs | 19
qqjf-Background/WebApi_QQJF/Views/Shared/_Layout.cshtml | 43
qqjf-Background/iWareSda_QQJF/RGV/RgvService/IRgvService.cs | 121
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_PLACE_VS_CONTAINER.cs | 95
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_ITEM.cs | 80
qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleGenerator.cs | 372
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_CAR_CARTASK.cs | 46
qqjf-Background/WebApi_QQJF/Uplod/1704784885695.PNG | 0
qqjf-Background/EnumType/ESrgvAlarm.cs | 55
qqjf-Background/IWareDataAccess/EF/ALERT_ALERTTIME.cs | 27
qqjf-Background/Models/Input/InOrderUnlineNumInput.cs | 24
qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemListWebEntity.cs | 42
qqjf-Background/WMSPatch/EF/Base_ProductPosition.cs | 230
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_INTYPE.cs | 28
qqjf-Background/IWareDataAccess/Car/CAR/CarSqlFunc.cs | 216
qqjf-Background/IWareDataAccess/EF/TASK_SRMRECORD.cs | 29
qqjf-Background/iWareSda_QQJF/LOGO.ico | 0
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/STORAGERECORD.cs | 26
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Api.cshtml | 25
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/RgvTask.cs | 51
qqjf-Background/IWareDataAccess/EF/BASE_URL.cs | 18
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml | 30
qqjf-Background/iWareSda_QQJF/WCSNEW/WCS.cs | 2608
qqjf-Background/DeviceWCS/FormUpdate.cs | 54
qqjf-Background/EnumType/ETranGoodSize.cs | 20
qqjf-Background/IWareDataAccess/EF/BASE_PRODUCTIONLINE.cs | 36
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/SYS_ROLE.cs | 39
qqjf-Background/WebApi_QQJF/Controllers/ItemController.cs | 243
qqjf-Background/IWareDataAccess/EF/View_TASK_SRMRECORD.cs | 41
qqjf-Background/iWareSda_QQJF/WCSNEW/生成主任务/CreateMainTask.cs | 1294
qqjf-Background/test/App_Start/WebApiConfig.cs | 24
qqjf-Background/DeviceWCS/App.config | 39
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/ORDER_INORDER.cs | 57
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/sysdiagrams.cs | 24
qqjf-Background/IWareDataAccess/Entity/Base/PlaceEntity.cs | 22
qqjf-Background/IWareDataAccess/IWareDataAccess.csproj | 302
qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchDeptView.cs | 24
qqjf-Background/WebApi_QQJF/Web - 本机环境.Debug.config | 30
qqjf-Background/iWareSda_QQJF/WEBAPI/JSONEntity/ERPTask.cs | 42
qqjf-Background/iWareSda_QQJF/SRM/SrmModel/SrmEntity.cs | 122
qqjf-Background/WebApi_QQJF/Controllers/InOrderController.cs | 338
qqjf-Background/IWareDataAccess/EF/View_SYS_PERMISSION.cs | 22
qqjf-Background/WMSPatch/EF/Sale_Order.cs | 465
qqjf-Background/DeviceWCS/Form1.cs | 1108
qqjf-Background/WebApi_QQJF/Controllers/AlertController.cs | 133
qqjf-Background/test/test.csproj | 232
qqjf-Background/IWareDataAccess/Entity/Sys/PermissionVsRoleWebEntity.cs | 15
qqjf-Background/test/Areas/HelpPage/Views/_ViewStart.cshtml | 4
qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER.cs | 44
qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/SampleDirection.cs | 11
qqjf-Background/EnumType/ESrmCmd.cs | 17
qqjf-Background/IWareDataAccess/Task/TASK/TaskRecodeFunc.cs | 458
qqjf-Background/IWareDataAccess/EF/SYS_ROLE_VS_PERMISSION.cs | 21
qqjf-Background/IWareDataAccess/Base/CONTAINER/ContainerSqlFunc.cs | 340
qqjf-Background/DeviceWCS/Web References/srmSER/item.xsd | 13
qqjf-Background/2DShow/Properties/Settings.Designer.cs | 30
qqjf-Background/IWareDataAccess/Entity/Base/InOrderExcelEntity.cs | 23
qqjf-Background/WebApi_QQJF/Content/bootstrap.css | 6816 +
qqjf-Background/WMSPatch/Service References/SrmServer/Reference.cs | 509
qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.TaskFinishClass.datasource | 10
qqjf-Background/WMSPatch/Form1.cs | 322
qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchRgvTaskView.cs | 24
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_PRODUCTIONLINE.cs | 23
qqjf-Background/IWareDataAccess/EF/BASE_Material.cs | 51
qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.xsd | 13
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPalletView.cs | 25
qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchInOrderView.cs | 24
qqjf-Background/test/Properties/AssemblyInfo.cs | 35
qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleView.cs | 24
qqjf-Background/IWareDataAccess/Entity/Summary/HomePieDataEntity.cs | 23
qqjf-Background/IWareDataAccess/Entity/Task/TimeVsTaskNumWebEntity.cs | 15
qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.svg | 228
qqjf-Background/iWareSda_QQJF/WCS/EDM/RgvTask.cs | 43
qqjf-Background/DeviceWCS/Web References/tranSRM/item.xsd | 8
qqjf-Background/DeviceWCS/FormUpdate.Designer.cs | 117
qqjf-Background/iWareSda_QQJF/WCS/TaskFinishClass.cs | 20
qqjf-Background/IWareDataAccess/Entity/Base/ReturnItemStorageEntity.cs | 27
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_URL.cs | 18
qqjf-Background/IWareDataAccess/Base/INTYPE/InTypeFunc.cs | 136
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/ERP_EPRORDER.cs | 24
qqjf-Background/WebApi_QQJF/Service References/SrmServer/SrmService.wsdl | 259
qqjf-Background/iWareSda_QQJF/RGV/RgvModel/RgvEntity.cs | 103
qqjf-Background/iWareSda_QQJF/WEBAPI/TestPost/HttpHelper.cs | 719
qqjf-Background/Models/Input/UpdateCviCodeInput.cs | 34
qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration.svcinfo | 10
qqjf-Background/IWareDataAccess/EF/View_TASK_TASK.cs | 78
qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchOutOrderView.cs | 24
qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageConfigurationExtensions.cs | 247
qqjf-Background/iWareSda_QQJF/RGV/RgvService/EntityRgvView.cs | 96
qqjf-Background/IWareDataAccess/EF/TASK_RECORD.cs | 42
qqjf-Background/DeviceWCS/Properties/Settings.settings | 15
qqjf-Background/iWareSda_QQJF/DLL/S7.Net.dll | 0
qqjf-Background/iWareSda_QQJF/SRMTRAN/SrmTranModel/SrmTran_CacheEntity.cs | 154
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/v3D展示数据.cs | 34
qqjf-Background/DeviceWCS/Form1.resx | 218
qqjf-Background/IWareDataAccess/EF/BASE_PLACE.cs | 43
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml | 44
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Shared/_Layout.cshtml | 12
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceVsContainerView.cs | 24
qqjf-Background/iWareSda_QQJF/FormMain.cs | 458
qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.js | 9803 ++
qqjf-Background/IWareDataAccess/EF/View_ORDER_INORDER.cs | 121
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/SYS_USER_VS_ROLE.cs | 23
qqjf-Background/2DShow/2DFrm.cs | 20
qqjf-Background/2DShow/GetRGVInfo.cs | 13
qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ImageSample.cs | 41
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Controllers/HelpController.cs | 45
qqjf-Background/iWareSda_QQJF/SRM/SrmModel/srmOPC.cs | 77
qqjf-Background/iWareSda_QQJF/FormMain.resx | 16201 +++
qqjf-Background/WebApi_QQJF/Controllers/TaskRecodeController.cs | 118
qqjf-Background/IWareDataAccess/Entity/Sys/UserWebEntity.cs | 42
qqjf-Background/2DShow/Program.cs | 22
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/SrmTask.cs | 51
qqjf-Background/DBScript/01_DDL/02_DDL_TABLE_Edit.sql | 67
qqjf-Background/WebApi_QQJF/Areas/HelpPage/App_Start/HelpPageConfig.cs | 51
qqjf-Background/读我.txt | 2
qqjf-Background/WMSPatch/Program.cs | 22
qqjf-Background/WebApi_QQJF/Views/Shared/Error.cshtml | 18
qqjf-Background/iWareSda_QQJF/WEBAPI/JSONEntity/GetJsonOfItem.cs | 18
qqjf-Background/EnumType/EnumType.csproj | 67
qqjf-Background/IWareDataAccess/Helper/Attribute/NoDbFilterAttribute.cs | 16
qqjf-Background/iWareSda_QQJF/packages.config | 5
qqjf-Background/WMSPatch/Properties/Resources.Designer.cs | 71
qqjf-Background/iWareSda_QQJF/WEBAPI/ReadErpSendToWMS.cs | 188
qqjf-Background/test/Scripts/respond.min.js | 20
qqjf-Background/IWareDataAccess/EF/BASE_PLACETYPE.cs | 31
qqjf-Background/IWareDataAccess/EF/BASE_INTYPE.cs | 28
qqjf-Background/WebApi_QQJF/packages.config | 29
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemStorageView.cs | 24
qqjf-Background/IWareDataAccess/Sys/USER/ViewUserSqlFunc.cs | 313
qqjf-Background/iWareSda_QQJF/RGV/RgvModel/Rgv_CacheEntity.cs | 27
qqjf-Background/DeviceWCS/Web References/tranSRM/SrmTranService.wsdl | 346
qqjf-Background/test/Controllers/HomeController.cs | 18
qqjf-Background/iWareSda_QQJF/FormTest.cs | 174
qqjf-Background/WMSPatch/EF/Purchase_Order.cs | 241
qqjf-Background/Models/Input/InOrderAuditInput.cs | 34
qqjf-Background/test/Scripts/jquery-1.10.2.min.map | 1
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_CONTAINER_VS_ITEM.cs | 84
qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.ttf | 0
qqjf-Background/IWareDataAccess/EF/RgvTask.cs | 49
qqjf-Background/IWareDataAccess/EF/KEYVALUE.cs | 19
qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummary.cs | 20
qqjf-Background/IWareDataAccess/EF/BASE_PALLET.cs | 39
qqjf-Background/iWareSda_QQJF/WCSNEW/SendTaskClass.cs | 22
qqjf-Background/WebApi_QQJF/ExcelTemple/零件导入模板.xlsx | 0
qqjf-Background/WMSPatch/EF/Task_Queue.cs | 97
qqjf-Background/IWareDataAccess/EF/TranLock.cs | 28
qqjf-Background/IWareDataAccess/Sys/USER/UserSqlFunc.cs | 59
qqjf-Background/EnumType/EYesOrNo.cs | 14
qqjf-Background/test/packages.config | 27
qqjf-Background/IWareDataAccess/EF/View_SYS_DEPT.cs | 23
qqjf-Background/WebApi_QQJF/Controllers/PlaceController.cs | 159
qqjf-Background/IWareDataAccess/Entity/Sys/DeptWebEntity.cs | 30
qqjf-Background/DeviceWCS/Web References/srmSER/SrmService.wsdl | 303
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Web.config | 62
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_Material.cs | 51
qqjf-Background/test/App_Start/BundleConfig.cs | 28
qqjf-Background/IWareDataAccess/EF/CAR_CARTASK.cs | 61
qqjf-Background/WMSPatch/EF/Purchase_OrderList.cs | 198
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/ORDER_OUTORDER.cs | 73
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml | 6
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_SYS_PERMISSION.cs | 22
qqjf-Background/WebApi_QQJF/Web - 本机环境.Release.config | 31
qqjf-Background/WebApi_QQJF/Properties/AssemblyInfo.cs | 35
qqjf-Background/test/Views/Web.config | 35
qqjf-Background/WebApi_QQJF/Web.config | 90
qqjf-Background/iWareSda_QQJF/WCS/SendTaskClass.cs | 22
qqjf-Background/IWareDataAccess/Entity/Sys/RoleWebEntity.cs | 30
qqjf-Background/iWareSda_QQJF/WEBAPI/JSONEntity/data.cs | 27
qqjf-Background/DBScript/01_DDL/04_DDL_INDEX.sql | 6
qqjf-Background/WebApi_QQJF/Controllers/PalletController.cs | 95
qqjf-Background/WebApi_QQJF/App_Start/WebApiConfig.cs | 32
qqjf-Background/iWareSda_QQJF/Properties/Settings.settings | 7
qqjf-Background/IWareDataAccess/EF/View_SRMTASK.cs | 53
qqjf-Background/DeviceWCS/rgvINFO.cs | 87
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/TASK_SRMRECORD.cs | 29
qqjf-Background/DeviceWCS/Web References/srmSER/Reference.cs | 1017
qqjf-Background/EnumType/ESrmAlarm.cs | 96
qqjf-Background/IWareDataAccess/Entity/Car/CarWebEntity.cs | 32
qqjf-Background/WebApi_QQJF/Controllers/ContainerVsItemController.cs | 347
qqjf-Background/IWareDataAccess/EF/ALERT_ALERT.cs | 34
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_PRODUCTIONLINE.cs | 36
qqjf-Background/test/Scripts/jquery-1.10.2.intellisense.js | 2671
qqjf-Background/IWareDataAccess/EF/SYS_USER.cs | 97
qqjf-Background/test/Areas/HelpPage/Controllers/HelpController.cs | 45
qqjf-Background/iWareSda_QQJF/WEBAPI/TestPost/ApiCheckAuthAttribute.cs | 745
qqjf-Background/WebApi_QQJF/Scripts/bootstrap.js | 2014
qqjf-Background/IWareDataAccess/EF/ORDER_INORDER.cs | 149
qqjf-Background/IWareDataAccess/EF/View_ROLE_VS_PERMISSION.cs | 20
qqjf-Background/IWareDataAccess/EF/CAR_CAR.cs | 33
qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/InvalidSample.cs | 37
qqjf-Background/test/Content/bootstrap.css | 6816 +
qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE.cs | 43
qqjf-Background/Models/Models.csproj | 55
qqjf-Background/iWareSda_QQJF/DLL/log4net.xml | 31814 +++++++
qqjf-Background/test/Areas/HelpPage/SampleGeneration/ImageSample.cs | 41
qqjf-Background/WebApi_QQJF/Controllers/ValuesController.cs | 39
qqjf-Background/WebApi_QQJF/Controllers/InTypeController.cs | 62
qqjf-Background/iWareSda_QQJF/enumType/srmIp.cs | 29
qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.svcmap | 33
qqjf-Background/IWareDataAccess/EF/View_BASE_ITEM.cs | 55
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRolePermission.cs | 20
qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarView.cs | 24
qqjf-Background/IWareDataAccess/EF/BASE_PRINT.cs | 52
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml | 41
qqjf-Background/iWareSda_QQJF/OPCService/OpcService.cs | 15
qqjf-Background/WMSPatch/Form1.resx | 120
qqjf-Background/IWareDataAccess/EF/View_SYS_USER.cs | 41
qqjf-Background/DeviceWCS/Web References/rgvSRM/item.disco | 4
qqjf-Background/IWareDataAccess/EF/View_ITEMSTORAGE.cs | 75
qqjf-Background/DBScript/01_DDL/01_DDL_TABLE.sql | 0
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_DEVICE.cs | 23
qqjf-Background/test/Areas/HelpPage/SampleGeneration/SampleDirection.cs | 11
qqjf-Background/DLL/log4net.dll | 0
qqjf-Background/WebApi_QQJF/Controllers/RgvTaskController.cs | 62
qqjf-Background/WebApi_QQJF/Web - 本机环境.config | 89
qqjf-Background/test/Global.asax.cs | 23
qqjf-Background/IWareDataAccess/App.config | 30
qqjf-Background/test/Web.config | 49
qqjf-Background/IWareDataAccess/Car/CARTASK/CarTaskSqlFunc.cs | 413
qqjf-Background/WebApi_QQJF/Web -生产地址.config | 89
qqjf-Background/IWareDataAccess/Entity/Base/ItemListWebEntity.cs | 20
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_ITEM.cs | 53
qqjf-Background/WebApi_QQJF/Controllers/CarController.cs | 93
qqjf-Background/iWareSda_QQJF/Program.cs | 38
qqjf-Background/WMSPatch/WMSPatch.csproj | 154
qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleKey.cs | 178
qqjf-Background/test/Scripts/_references.js | 0
qqjf-Background/IWareDataAccess/EF/View_RGVTASK.cs | 57
qqjf-Background/IWareDataAccess/EF/TASK_TASK.cs | 96
qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.disco | 4
qqjf-Background/iWareSda_QQJF/WCS/Helper.cs | 1044
qqjf-Background/DeviceWCS/FormUpdate.resx | 120
qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE_VS_CONTAINER.cs | 95
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceView.cs | 24
qqjf-Background/WebApi_QQJF/Controllers/TaskController.cs | 249
qqjf-Background/IWareDataAccess/Entity/Task/TaskNumOnEnterWebEntity.cs | 15
qqjf-Background/DeviceWCS/Properties/Settings.Designer.cs | 58
qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.resx | 44285 ++++++++++
qqjf-Background/DLL/HslCommunication.dll | 0
qqjf-Background/test/Scripts/bootstrap.js | 2014
qqjf-Background/iWareSda_QQJF/SRMTRAN/SrmTranModel/tranOpc.cs | 83
qqjf-Background/DBScript/01_DDL/03_DDL_VIEW.sql | 65
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_ALERT_ALERT.cs | 32
qqjf-Background/DLL/Oracle.ManagedDataAccess.dll | 0
qqjf-Background/IWareDataAccess/Entity/Base/InTypeWebEntity.cs | 17
qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryNum.cs | 29
qqjf-Background/EnumType/InOrderStatusEnum.cs | 20
qqjf-Background/IWareDataAccess/Entity/Summary/SummaryHomeEntity.cs | 20
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_CONTAINER.cs | 44
qqjf-Background/IWareDataAccess/EF/View_CAR_CAR.cs | 32
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml | 13
qqjf-Background/DLL/EntityFramework.dll | 0
qqjf-Background/IWareDataAccess/EF/STORAGERECORD.cs | 26
qqjf-Background/test/Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml | 30
qqjf-Background/test/Views/_ViewStart.cshtml | 3
qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.cs | 1126
qqjf-Background/WMSPatch/EF/Model.cs | 468
qqjf-Background/WebApi_QQJF/Controllers/CarTaskController.cs | 171
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_SYS_DEPT.cs | 23
qqjf-Background/IWareDataAccess/Entity/Summary/BarEntity.cs | 30
qqjf-Background/IWareDataAccess/Entity/Base/PlaceStatusCountEntity.cs | 28
qqjf-Background/test/Controllers/aaaController.cs | 40
qqjf-Background/IWareDataAccess/EF/View_SYS_ROLE.cs | 24
qqjf-Background/WebApi_QQJF/Areas/HelpPage/ApiDescriptionExtensions.cs | 39
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_RGVTASK.cs | 57
qqjf-Background/IWareDataAccess/ReturnEntity/ReturnResultAndMsg.cs | 43
qqjf-Background/EnumType/ETranAlarm.cs | 21
qqjf-Background/WMSPatch/Form1.Designer.cs | 62
qqjf-Background/WebApi_QQJF/Controllers/RoleController.cs | 97
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnIndexMessage.cs | 24
qqjf-Background/iWareSda_QQJF/WCS/EDM/MainTask.cs | 67
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/ALERT_ALERT.cs | 34
qqjf-Background/IWareDataAccess/Entity/Base/ItemStorageWebEntity.cs | 51
qqjf-Background/IWareDataAccess/Entity/Task/SrmTaskWebEntity.cs | 46
qqjf-Background/iWareSda_QQJF/WEBAPI/JSONEntity/details.cs | 35
qqjf-Background/WebApi_QQJF/App_Start/RouteConfig.cs | 23
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/v3D_Inventory.cs | 26
qqjf-Background/test/Areas/HelpPage/App_Start/HelpPageConfig.cs | 51
qqjf-Background/iWareSda_QQJF/WEBAPI/JSONEntity/DeleteTask.cs | 15
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/KEYVALUE.cs | 19
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/SYS_USER.cs | 83
qqjf-Background/WebApi_QQJF/App_Start/BundleConfig.cs | 28
qqjf-Background/test/Areas/HelpPage/Views/Web.config | 62
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_PALLET.cs | 39
qqjf-Background/iWareSda_QQJF/WCS/EDM/TranLock.cs | 28
qqjf-Background/WebApi_QQJF/Project_Readme.html | 150
qqjf-Background/IWareDataAccess/PDA/Version/VersionSqlFunc.cs | 53
qqjf-Background/IWareDataAccess/Program.cs | 40
qqjf-Background/WebApi_QQJF/Views/_ViewStart.cshtml | 3
qqjf-Background/IWareDataAccess/Entity/Base/DeviceWebEntity.cs | 21
qqjf-Background/IWareDataAccess/Sys/PERMISSION/PermissionSqlFunc.cs | 416
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml | 4
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_TASK_TASK.cs | 80
qqjf-Background/IWareDataAccess/EF/BASE_ITEM.cs | 80
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRoleMena.cs | 19
qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.DeleteMainTaskResponse.datasource | 10
qqjf-Background/IWareDataAccess/Task/TASK/RgvTaskSqlFunc.cs | 129
qqjf-Background/IWareDataAccess/Entity/Base/AddContainerVsItemWebEntity.cs | 13
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/CAR_CAR.cs | 33
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerView.cs | 24
qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/TextSample.cs | 37
qqjf-Background/test/Areas/HelpPage/HelpPageAreaRegistration.cs | 26
qqjf-Background/WebApi_QQJF/Content/Site.css | 42
qqjf-Background/WMSPatch/Service References/SrmServer/item.xsd | 25
qqjf-Background/IWareDataAccess/Base/PALLET/PalletSqlFunc.cs | 176
qqjf-Background/IWareDataAccess/Entity/Task/TaskCommonEntity.cs | 19
qqjf-Background/WebApi_QQJF/Scripts/respond.js | 340
qqjf-Background/iWareSda_QQJF/DLL/OpcAccess.dll | 0
qqjf-Background/WebApi_QQJF/Controllers/PermissionController.cs | 192
qqjf-Background/2DShow/Properties/AssemblyInfo.cs | 36
qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnTaskCommonView.cs | 18
qqjf-Background/IWareDataAccess/Entity/Car/CarTaskWebEntity.cs | 44
qqjf-Background/test/Web.Debug.config | 30
qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarTaskView.cs | 24
qqjf-Background/WMSPatch/Service References/SrmServer/configuration.svcinfo | 10
qqjf-Background/iWareSda_QQJF/FormMain.Designer.cs | 422
qqjf-Background/iWareSda_QQJF/App.config | 83
qqjf-Background/EnumType/ESrmState.cs | 20
qqjf-Background/iWareSda_QQJF/Properties/Settings.Designer.cs | 26
qqjf-Background/test/Areas/HelpPage/SampleGeneration/HelpPageSampleGenerator.cs | 372
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_PLACETYPE.cs | 31
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_ROLE_VS_PERMISSION.cs | 20
qqjf-Background/WebApi_QQJF/Controllers/UserController.cs | 123
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/Model.cs | 331
qqjf-Background/IWareDataAccess/EF/SYS_PERMISSION.cs | 47
qqjf-Background/iWareSda_QQJF/SRMTRAN/SrmTranService/ISrmTranService.cs | 167
qqjf-Background/IWareDataAccess/Entity/Task/TaskNumAllEnterWebEntity.cs | 26
qqjf-Background/WMSPatch/packages.config | 5
qqjf-Background/IWareDataAccess/EF/View_ORDER_OUTORDER.cs | 65
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_DEVICE.cs | 32
qqjf-Background/EnumType/InOrderPageTypeEnum.cs | 18
qqjf-Background/WebApi_QQJF/Controllers/PDAController.cs | 43
qqjf-Background/IWareDataAccess/Task/TASK/SrmRecordSqlFunc.cs | 330
qqjf-Background/IWareDataAccess/EF/RECORD_WAREHOUSEINFO.cs | 25
qqjf-Background/IWareDataAccess/Order/OUTORDER/OutOrderSqlFunc.cs | 477
qqjf-Background/iWareSda_QQJF/SRMTRAN/SrmTranModel/SrmTranEntity.cs | 94
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnCommonItem.cs | 20
qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemWebEntity.cs | 89
qqjf-Background/IWareDataAccess/Entity/Base/PlaceWebEntity.cs | 38
qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfInt.datasource | 10
qqjf-Background/iWareCommon/Properties/Resources.Designer.cs | 72
qqjf-Background/iWareSda_QQJF/WEBAPI/OracleWord.cs | 435
qqjf-Background/IWareDataAccess/ReturnEntity/Alert/ReturnSearchAlertView.cs | 24
qqjf-Background/test/favicon.ico | 0
qqjf-Background/iWareSda_QQJF/SRM/SrmService/SrmService.cs | 888
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_CONTAINER_VS_ITEM.cs | 53
qqjf-Background/IWareDataAccess/EF/LOG_WMSLOG.cs | 30
qqjf-Background/WebApi_QQJF/App_Start/FilterConfig.cs | 13
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Models/HelpPageApiModel.cs | 43
qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.cs | 762
qqjf-Background/DeviceWCS/srmInfo.cs | 107
qqjf-Background/IWareDataAccess/Helper/SearchHelper.cs | 112
qqjf-Background/IWareDataAccess/EF/View_CAR_CARTASK.cs | 46
qqjf-Background/WMSPatch/Service References/SrmServer/Reference.svcmap | 33
qqjf-Background/test/Areas/HelpPage/SampleGeneration/InvalidSample.cs | 37
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchProductionLineView.cs | 24
qqjf-Background/IWareDataAccess/EF/View_TASK_RECORD.cs | 77
qqjf-Background/WMSPatch/EF/v3D展示数据.cs | 28
qqjf-Background/WebApi_QQJF/Controllers/UnitTestController.cs | 44
qqjf-Background/DeviceWCS/EDM/Base_ProductPosition.cs | 230
qqjf-Background/DeviceWCS/packages.config | 5
qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntityVsTime.cs | 15
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_ORDER_OUTORDER.cs | 63
qqjf-Background/DeviceWCS/Properties/Resources.Designer.cs | 71
qqjf-Background/test/fonts/glyphicons-halflings-regular.woff | 0
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_PLACE.cs | 46
qqjf-Background/2DShow/Properties/Settings.settings | 7
qqjf-Background/test/Areas/HelpPage/SampleGeneration/HelpPageSampleKey.cs | 178
qqjf-Background/iWareSda_QQJF/Newtonsoft.Json.dll | 0
qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.js | 23
qqjf-Background/IWareDataAccess/EF/ORDER_OUTORDER.cs | 73
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/TASK_TASK.cs | 96
qqjf-Background/2DShow/2DFrm.resx | 120
qqjf-Background/iWareSda_QQJF/RGV/RgvService/RgvService.cs | 531
qqjf-Background/WebApi_QQJF/Web.Release.config | 31
qqjf-Background/DeviceWCS/tranInfo.cs | 95
qqjf-Background/WMSPatch/App.config | 36
qqjf-Background/test/App_Start/RouteConfig.cs | 23
qqjf-Background/IWareDataAccess/Base/PLACE/PlaceSqlFunc.cs | 496
qqjf-Background/IWareDataAccess/Entity/Base/View_BASE_CONTAINER_VS_ITEMPrint.cs | 69
qqjf-Background/DLL/Z.EntityFramework.Extensions.dll | 0
qqjf-Background/IWareDataAccess/Entity/PredicateBuilderNew.cs | 140
qqjf-Background/iWareSda_QQJF/DLL/log4net.dll | 0
qqjf-Background/WMSPatch/Service References/SrmServer/configuration91.svcinfo | 201
qqjf-Background/WMSPatch/Properties/Settings.settings | 7
qqjf-Background/DeviceWCS/Form1.Designer.cs | 1948
qqjf-Background/IWareDataAccess/Entity/Summary/PieEntity.cs | 22
qqjf-Background/IWareDataAccess/Sys/ROLE/RoleSqlFunc.cs | 269
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/TranTask.cs | 34
qqjf-Background/DeviceWCS/taskCommon.cs | 26
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/ALERT_ALERTTIME.cs | 27
qqjf-Background/IWareDataAccess/Entity/Base/PlaceVsContainerWebEntity.cs | 77
qqjf-Background/test/Web.Release.config | 31
qqjf-Background/DLL/EntityFramework.SqlServer.dll | 0
qqjf-Background/WebApi_QQJF/Scripts/_references.js | 0
qqjf-Background/WMSPatch/EF/Base_Position.cs | 118
qqjf-Background/DeviceWCS/Program.cs | 36
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/BASE_CONTAINER.cs | 74
qqjf-Background/test/Views/Shared/Error.cshtml | 18
qqjf-Background/test/Global.asax | 1
qqjf-Background/WebApi_QQJF/Controllers/SrmRecordController.cs | 110
qqjf-Background/test/Scripts/jquery-1.10.2.js | 9803 ++
qqjf-Background/iWareSda_QQJF/SRMTRAN/SrmTranService/SrmTranService.cs | 950
qqjf-Background/iWareSda_QQJF/WCSNEW/TaskFinishClass.cs | 20
qqjf-Background/WebApi_QQJF/Controllers/OutOrderController.cs | 127
qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.map | 1
qqjf-Background/IWareDataAccess/Entity/Summary/SummaryCommEntity.cs | 22
qqjf-Background/iWareSda_QQJF/WCS/EDM/TranTask.cs | 34
qqjf-Background/DeviceWCS/EDM/Purchase_Order.cs | 232
qqjf-Background/2DShow/2DFrm.Designer.cs | 47
qqjf-Background/IWareDataAccess/EF/BASE_PLACE_VS_CONTAINER.cs | 36
qqjf-Background/IWareDataAccess/Helper/Helper.cs | 290
qqjf-Background/DLL/log4net.xml | 31814 +++++++
qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntity.cs | 15
qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.DeleteMainTaskResponse.datasource | 10
qqjf-Background/iWareSda_QQJF/DLL/logtxt.dll | 0
qqjf-Background/DLL/EntityFramework.Extended.dll | 0
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/PDA_VERSION.cs | 20
qqjf-Background/IWareDataAccess/Entity/Task/TaskWebEntity.cs | 77
qqjf-Background/WebApi_QQJF/Controllers/DeviceController.cs | 79
qqjf-Background/iWareSda_QQJF/SRM/SrmModel/SrmDBli.cs | 231
qqjf-Background/WebApi_QQJF/Controllers/ContainerController.cs | 119
qqjf-Background/WebApi_QQJF/Areas/HelpPage/XmlDocumentationProvider.cs | 143
qqjf-Background/EnumType/TaskTypeEnum.cs | 18
qqjf-Background/WebApi_QQJF/Controllers/PlaceVsContainerController.cs | 148
qqjf-Background/iWareSda_QQJF/WCS/EDM/SrmTask.cs | 34
qqjf-Background/WMSPatch/Properties/Resources.resx | 117
qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.woff | 0
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_ORDER_INORDER.cs | 56
qqjf-Background/WMSPatch/Service References/SrmServer/SrmService.wsdl | 300
qqjf-Background/test/Areas/HelpPage/Views/Help/Api.cshtml | 25
qqjf-Background/test/Scripts/respond.js | 340
qqjf-Background/IWareDataAccess/Entity/Order/OutOrderWebEntity.cs | 71
qqjf-Background/WMSPatch/EF/Base_Plate.cs | 107
qqjf-Background/iWareCommon/Utils/Log4Net/C_LogWriter.cs | 110
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/SYS_ROLE_VS_PERMISSION.cs | 21
qqjf-Background/WebApi_QQJF/WebHelper/WebHelper.cs | 80
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_BASE_INTYPE.cs | 19
qqjf-Background/IWareDataAccess/Helper/Attribute/AttributeHelper.cs | 25
qqjf-Background/WebApi_QQJF/Controllers/SummaryStatisticsController.cs | 583
qqjf-Background/IWareDataAccess/EF/View_ALERT_ALERT.cs | 32
qqjf-Background/WMSPatch/Properties/Settings.Designer.cs | 30
qqjf-Background/test/Areas/HelpPage/Models/HelpPageApiModel.cs | 43
qqjf-Background/test/Views/Home/Index.cshtml | 24
qqjf-Background/iWareSda_QQJF/Properties/Resources.Designer.cs | 63
qqjf-Background/WebApi_QQJF/ExcelTemple/冲压计划导入模板.xlsx | 0
qqjf-Background/IWareDataAccess/Base/PRODUCTIONLINE/ProductionLineSqlFunc.cs | 206
qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.cs | 302
qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER_VS_ITEM.cs | 74
qqjf-Background/EnumType/Properties/AssemblyInfo.cs | 36
qqjf-Background/IWareDataAccess/Helper/ExcelHelper.cs | 309
qqjf-Background/IWareDataAccess/EF/View_BASE_PRODUCTIONLINE.cs | 23
qqjf-Background/IWareDataAccess/Base/DEVICE/DeviceSqlFunc.cs | 172
qqjf-Background/test/Areas/HelpPage/ApiDescriptionExtensions.cs | 39
qqjf-Background/IWareDataAccess/Entity/Task/RgvTaskWebEntity.cs | 47
qqjf-Background/WMSPatch/Properties/AssemblyInfo.cs | 36
qqjf-Background/test/App_Start/FilterConfig.cs | 13
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchDeviceView.cs | 24
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/LOG_WMSLOG.cs | 30
qqjf-Background/IWareDataAccess/EF/SYS_ROLE.cs | 39
qqjf-Background/WebApi_QQJF/Controllers/DeptController.cs | 104
qqjf-Background/test/Content/bootstrap.min.css | 20
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Index.cshtml | 41
qqjf-Background/WebApi_QQJF/Controllers/ProductionLineController.cs | 92
qqjf-Background/iWareSda_QQJF/SRM/SrmService/ISrmService.cs | 167
qqjf-Background/2DShow/Properties/Resources.resx | 117
qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/_ViewStart.cshtml | 4
qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmTaskView.cs | 24
qqjf-Background/test/Areas/HelpPage/XmlDocumentationProvider.cs | 143
qqjf-Background/DeviceWCS/Properties/Resources.resx | 117
qqjf-Background/IWareDataAccess/Entity/Sys/PermissionWebEntity.cs | 22
qqjf-Background/iWareCommon/Properties/AssemblyInfo.cs | 36
qqjf-Background/iWareSda_QQJF/OPCService/S7.cs | 166
qqjf-Background/IWareDataAccess/Sys/DEPT/DeptSqlFunc.cs | 270
qqjf-Background/WebApi_QQJF/Controllers/SrmTaskController.cs | 61
qqjf-Background/WebApi_QQJF/Controllers/HomeController.cs | 62
qqjf-Background/iWareSda_QQJF/Properties/Resources.resx | 117
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_TASK_RECORD.cs | 74
qqjf-Background/DLL/WZ.Useful.Commons.dll | 0
qqjf-Background/test/fonts/glyphicons-halflings-regular.eot | 0
qqjf-Background/IWareDataAccess/Entity/Base/PdaPermissionEntity.cs | 15
qqjf-Background/IWareDataAccess/EF/View_BASE_INTYPE.cs | 19
qqjf-Background/IWareDataAccess/EF/BASE_DESTINATION.cs | 30
qqjf-Background/DeviceWCS/Properties/AssemblyInfo.cs | 36
qqjf-Background/WebApi_QQJF/Web -生产地址.Debug.config | 30
qqjf-Background/IWareDataAccess/Entity/Base/ProductionLineWebEntity.cs | 26
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_SYS_ROLE.cs | 24
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/SYS_PERMISSION.cs | 47
qqjf-Background/WebApi_QQJF/Scripts/modernizr-2.6.2.js | 1416
qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.dll | 0
qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskView.cs | 25
qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration91.svcinfo | 201
qqjf-Background/qinqijSDA.sln | 90
qqjf-Background/test/Areas/HelpPage/HelpPageConfigurationExtensions.cs | 247
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchInTypeView.cs | 24
qqjf-Background/DBScript/02_DML/01_InitData.sql | 62
qqjf-Background/2DShow/Properties/Resources.Designer.cs | 71
qqjf-Background/IWareDataAccess/Entity/Base/ItemWebEntity.cs | 56
qqjf-Background/2DShow/App.config | 6
qqjf-Background/IWareDataAccess/Order/INORDER/InOrderSqlFunc.cs | 704
qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageAreaRegistration.cs | 26
qqjf-Background/DeviceWCS/EDM/Model.cs | 125
qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ObjectGenerator.cs | 456
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemView.cs | 24
qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerVsItemView.cs | 40
qqjf-Background/iWareSda_QQJF/FormTest.resx | 120
qqjf-Background/test/Scripts/jquery-1.10.2.min.js | 23
qqjf-Background/iWareCommon/iWareCommon.csproj | 88
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_TASK_SRMRECORD.cs | 41
qqjf-Background/iWareSda_QQJF/WCSNEW/EDM/View_CAR_CAR.cs | 32
qqjf-Background/DeviceWCS/Web References/rgvSRM/RgvService.wsdl | 233
qqjf-Background/IWareDataAccess/Entity/Base/UserRolePermissionViewEntity.cs | 29
qqjf-Background/iWareSda_QQJF/RGV/RgvModel/rgvOPC.cs | 63
qqjf-Background/IWareDataAccess/EF/sysdiagrams.cs | 24
qqjf-Background/iWareCommon/Utils/Log4Net/Log4netHelper.cs | 36
qqjf-Background/WebApi_QQJF/Global.asax.cs | 23
qqjf-Background/iWareSda_QQJF/SRMTRAN/SrmTranModel/SrmTran_DB.cs | 378
648 files changed, 247,625 insertions(+), 0 deletions(-)
diff --git a/qqjf-Background/2DShow/2DFrm.Designer.cs b/qqjf-Background/2DShow/2DFrm.Designer.cs
new file mode 100644
index 0000000..5bcd1d7
--- /dev/null
+++ b/qqjf-Background/2DShow/2DFrm.Designer.cs
@@ -0,0 +1,47 @@
+锘縩amespace _2DShow
+{
+ partial class Form1
+ {
+ /// <summary>
+ /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆�
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// 娓呯悊鎵�鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆�
+ /// </summary>
+ /// <param name="disposing">濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓� true锛涘惁鍒欎负 false銆�</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 绐椾綋璁捐鍣ㄧ敓鎴愮殑浠g爜
+
+ /// <summary>
+ /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈
+ /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.SuspendLayout();
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(964, 593);
+ this.Name = "Form1";
+ this.Text = "Form1";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ }
+}
+
diff --git a/qqjf-Background/2DShow/2DFrm.cs b/qqjf-Background/2DShow/2DFrm.cs
new file mode 100644
index 0000000..4386b7d
--- /dev/null
+++ b/qqjf-Background/2DShow/2DFrm.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace _2DShow
+{
+ public partial class Form1 : Form
+ {
+ public Form1()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/qqjf-Background/2DShow/2DFrm.resx b/qqjf-Background/2DShow/2DFrm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/qqjf-Background/2DShow/2DFrm.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/2DShow/2DShow.csproj b/qqjf-Background/2DShow/2DShow.csproj
new file mode 100644
index 0000000..a2d2bfe
--- /dev/null
+++ b/qqjf-Background/2DShow/2DShow.csproj
@@ -0,0 +1,85 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{25D1CF45-1E0B-4B07-8E86-FCB95355897F}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>_2DShow</RootNamespace>
+ <AssemblyName>2DShow</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Deployment" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Form1.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Form1.Designer.cs">
+ <DependentUpon>Form1.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/2DShow/App.config b/qqjf-Background/2DShow/App.config
new file mode 100644
index 0000000..8e15646
--- /dev/null
+++ b/qqjf-Background/2DShow/App.config
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+ </startup>
+</configuration>
\ No newline at end of file
diff --git a/qqjf-Background/2DShow/GetRGVInfo.cs b/qqjf-Background/2DShow/GetRGVInfo.cs
new file mode 100644
index 0000000..8ec583b
--- /dev/null
+++ b/qqjf-Background/2DShow/GetRGVInfo.cs
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace _2DShow
+{
+ public class GetRGVInfo
+ {
+
+ }
+}
diff --git a/qqjf-Background/2DShow/Program.cs b/qqjf-Background/2DShow/Program.cs
new file mode 100644
index 0000000..70a19f8
--- /dev/null
+++ b/qqjf-Background/2DShow/Program.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace _2DShow
+{
+ static class Program
+ {
+ /// <summary>
+ /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
+ /// </summary>
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/qqjf-Background/2DShow/Properties/AssemblyInfo.cs b/qqjf-Background/2DShow/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..946bcf5
--- /dev/null
+++ b/qqjf-Background/2DShow/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅閫氳繃浠ヤ笅
+// 鐗规�ч泦鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("2DShow")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("2DShow")]
+[assembly: AssemblyCopyright("Copyright 漏 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浣挎绋嬪簭闆嗕腑鐨勭被鍨�
+// 瀵� COM 缁勪欢涓嶅彲瑙併�� 濡傛灉闇�瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷锛�
+// 鍒欏皢璇ョ被鍨嬩笂鐨� ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("b3063f75-2628-4d7c-a171-23ef0b0acbe1")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅闈㈠洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/2DShow/Properties/Resources.Designer.cs b/qqjf-Background/2DShow/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..452d951
--- /dev/null
+++ b/qqjf-Background/2DShow/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�: 4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢涓㈠け銆�
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace _2DShow.Properties
+{
+
+
+ /// <summary>
+ /// 涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勩�佺紦瀛樼殑 ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("_2DShow.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// 涓烘墍鏈夎祫婧愭煡鎵鹃噸鍐欏綋鍓嶇嚎绋嬬殑 CurrentUICulture 灞炴�э紝
+ /// 鏂规硶鏄娇鐢ㄦ寮虹被鍨嬭祫婧愮被銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/2DShow/Properties/Resources.resx b/qqjf-Background/2DShow/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/qqjf-Background/2DShow/Properties/Resources.resx
@@ -0,0 +1,117 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/2DShow/Properties/Settings.Designer.cs b/qqjf-Background/2DShow/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..60e3444
--- /dev/null
+++ b/qqjf-Background/2DShow/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace _2DShow.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/2DShow/Properties/Settings.settings b/qqjf-Background/2DShow/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/qqjf-Background/2DShow/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile>
diff --git a/qqjf-Background/DBScript/01_DDL/01_DDL_TABLE.sql b/qqjf-Background/DBScript/01_DDL/01_DDL_TABLE.sql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/qqjf-Background/DBScript/01_DDL/01_DDL_TABLE.sql
diff --git a/qqjf-Background/DBScript/01_DDL/02_DDL_TABLE_Edit.sql b/qqjf-Background/DBScript/01_DDL/02_DDL_TABLE_Edit.sql
new file mode 100644
index 0000000..365bfe7
--- /dev/null
+++ b/qqjf-Background/DBScript/01_DDL/02_DDL_TABLE_Edit.sql
@@ -0,0 +1,67 @@
+ALTER TABLE BASE_CONTAINER_VS_ITEM
+ADD CreateTime DateTime -- 鍒涘缓鏃堕棿
+
+ALTER TABLE BASE_CONTAINER_VS_ITEM
+ADD UpdateUserId int -- 淇敼浜篒D
+
+
+ALTER TABLE ORDER_INORDER
+ADD OrderStatusId int -- 璁㈠崟鐘舵�両D
+
+ALTER TABLE ORDER_INORDER
+ADD IsSatisfyAudit bit -- 鏄惁婊¤冻瀹℃牳鏉′欢
+
+
+ALTER TABLE ORDER_INORDER
+ADD AllFinishedNum int -- 鎬诲畬宸ユ暟
+
+
+ALTER TABLE ORDER_INORDER
+ADD CheckRemark nvarchar(100) -- 瀹℃牳鐞嗙敱
+
+
+
+ALTER TABLE ORDER_INORDER
+ADD CreateTime DateTime -- 鍒涘缓鏃堕棿
+
+ALTER TABLE ORDER_INORDER
+ADD UpdateUserId int -- 淇敼浜篒D
+
+
+ALTER TABLE ORDER_INORDER
+ADD CheckTime DateTime -- 瀹℃牳鏃堕棿
+
+ALTER TABLE ORDER_INORDER
+ADD CheckResult nvarchar(50) -- 瀹℃牳缁撴灉
+
+
+ALTER TABLE ORDER_INORDER
+ADD SendTime DateTime -- 鎻愪氦瀹℃牳鏃堕棿
+
+
+ALTER TABLE SYS_USER
+ADD IsWeldingAuditGroup bit -- 鏄惁鏄� 鐒婅瀹℃牳缁�
+
+
+
+
+
+ALTER TABLE ORDER_INORDER
+ADD SENDERID int --
+ALTER TABLE ORDER_INORDER
+ADD CHECKERID int --
+ALTER TABLE ORDER_INORDER
+ADD UNLINENUM int --
+ALTER TABLE ORDER_INORDER
+ADD CLASSNO int --
+ALTER TABLE ORDER_INORDER
+ADD STATUS int --
+ALTER TABLE ORDER_INORDER
+ADD CHECKERID int --
+
+ALTER TABLE TASK_RECORD
+ADD INORDERID int --
+
+
+ALTER TABLE BASE_CONTAINER_VS_ITEM
+ADD OperationRemark nvarchar(200) -- 鎿嶄綔璇存槑 銆怑ditby shaocx,2023-01-10銆�
\ No newline at end of file
diff --git a/qqjf-Background/DBScript/01_DDL/03_DDL_VIEW.sql b/qqjf-Background/DBScript/01_DDL/03_DDL_VIEW.sql
new file mode 100644
index 0000000..f0cc627
--- /dev/null
+++ b/qqjf-Background/DBScript/01_DDL/03_DDL_VIEW.sql
@@ -0,0 +1,65 @@
+ /**
+ ** 閫佺鍗曡〃 瑙嗗浘
+ **/
+IF EXISTS(SELECT 1 FROM sys.views WHERE name='View_ORDER_INORDER')
+ DROP VIEW View_ORDER_INORDER
+GO
+CREATE VIEW View_ORDER_INORDER
+AS
+
+SELECT dbo.ORDER_INORDER.CREATORID,dbo.ORDER_INORDER.ID AS id, dbo.ORDER_INORDER.INORDERCODE AS inOrderCode,
+ dbo.ORDER_INORDER.ORDERTYPE AS orderType,
+ dbo.ORDER_INORDER.ORDERSTATUS AS orderStatus,
+ dbo.ORDER_INORDER.OrderStatusId AS OrderStatusId,
+ dbo.ORDER_INORDER.TOTALNUM AS totalNum, dbo.ORDER_INORDER.DONENUM AS DoneNum,
+ dbo.ORDER_INORDER.UNLINENUM AS unLineNum, dbo.ORDER_INORDER.TOTALWEIGHT AS totalWeight,
+ dbo.ORDER_INORDER.UPDATETIME AS updateTime, dbo.ORDER_INORDER.ISFINISH AS isFinish,
+ dbo.ORDER_INORDER.DOTIME AS doTime, dbo.BASE_ITEM.ITEMNAME AS itemName,
+ dbo.BASE_ITEM.ITEMDES AS itemDes, dbo.BASE_ITEM.WEIGHT AS itemWeight,
+ dbo.BASE_ITEM.ITEMTYPE AS itemTYpe, dbo.BASE_ITEM.PRICE AS price, dbo.ORDER_INORDER.ENABLE AS enable,
+ dbo.BASE_ITEM.CREATELINE AS createLine, SYS_USER_1.USERNAME AS createName,
+ dbo.ORDER_INORDER.CLASSNO AS classNo, dbo.ORDER_INORDER.STATUS AS status,
+ dbo.SYS_USER.USERNAME AS checkerName, SYS_USER_2.USERNAME AS senderName,
+ dbo.ORDER_INORDER.allFinishedNum,dbo.ORDER_INORDER.CheckTime,dbo.ORDER_INORDER.CheckResult
+ ,dbo.ORDER_INORDER.CheckRemark ,dbo.ORDER_INORDER.SendTime,dbo.ORDER_INORDER.CHECKERID,dbo.ORDER_INORDER.createTime,
+SYS_USER_Update.USERNAME AS updateName
+FROM dbo.ORDER_INORDER LEFT JOIN
+ dbo.SYS_USER AS SYS_USER_2 ON dbo.ORDER_INORDER.SENDERID = SYS_USER_2.ID LEFT JOIN
+ dbo.SYS_USER ON dbo.ORDER_INORDER.CHECKERID = dbo.SYS_USER.ID LEFT OUTER JOIN
+ dbo.SYS_USER AS SYS_USER_1 ON dbo.ORDER_INORDER.CREATORID = SYS_USER_1.ID LEFT OUTER JOIN
+ dbo.BASE_ITEM ON dbo.ORDER_INORDER.ITEMID = dbo.BASE_ITEM.ID
+ LEFT OUTER JOIN
+ dbo.SYS_USER AS SYS_USER_Update ON dbo.ORDER_INORDER.UpdateUserId = SYS_USER_Update.ID
+
+
+GO
+
+
+
+ /**
+ ** 鐢ㄦ埛鍒楄〃 瑙嗗浘
+ **/
+IF EXISTS(SELECT 1 FROM sys.views WHERE name='View_SYS_USER')
+ DROP VIEW View_SYS_USER
+GO
+CREATE VIEW View_SYS_USER
+AS
+
+SELECT dbo.SYS_USER.ID AS id, dbo.SYS_USER.USERNAME AS userName,
+ dbo.SYS_USER.USERTRUENAME AS userTrueName, dbo.SYS_USER.PASSWORD AS passWord,
+ dbo.SYS_ROLE.ROLENAME AS roleName, dbo.SYS_USER.ENABLE AS enable,
+ dbo.SYS_USER.UPDATETIME AS updateTime, dbo.SYS_DEPT.DEPTNAME AS deptName,
+ SYS_USER_1.USERNAME AS createName,dbo.SYS_USER.IsWeldingAuditGroup
+FROM dbo.SYS_DEPT RIGHT OUTER JOIN
+ dbo.SYS_USER AS SYS_USER_1 RIGHT OUTER JOIN
+ dbo.SYS_USER ON SYS_USER_1.ID = dbo.SYS_USER.CREATORID ON
+ dbo.SYS_DEPT.ID = dbo.SYS_USER.DEPTID LEFT OUTER JOIN
+ dbo.SYS_ROLE LEFT OUTER JOIN
+ dbo.SYS_USER_VS_ROLE ON dbo.SYS_ROLE.ID = dbo.SYS_USER_VS_ROLE.ROLEID ON
+ dbo.SYS_USER.ID = dbo.SYS_USER_VS_ROLE.USERID
+
+
+GO
+
+
+
diff --git a/qqjf-Background/DBScript/01_DDL/04_DDL_INDEX.sql b/qqjf-Background/DBScript/01_DDL/04_DDL_INDEX.sql
new file mode 100644
index 0000000..32438dd
--- /dev/null
+++ b/qqjf-Background/DBScript/01_DDL/04_DDL_INDEX.sql
@@ -0,0 +1,6 @@
+/* 琛� ORDER_INORDER 寤虹珛鍞竴鎬х储寮�*/
+IF EXISTS(select 1 from sysindexes where id=object_id('ORDER_INORDER') and name='ORDER_INORDER_idx1')
+ DROP INDEX ORDER_INORDER_idx1 ON ORDER_INORDER
+CREATE UNIQUE INDEX
+ ORDER_INORDER_idx1 ON ORDER_INORDER(INORDERCODE)
+GO
\ No newline at end of file
diff --git a/qqjf-Background/DBScript/02_DML/01_InitData.sql b/qqjf-Background/DBScript/02_DML/01_InitData.sql
new file mode 100644
index 0000000..fc46693
--- /dev/null
+++ b/qqjf-Background/DBScript/02_DML/01_InitData.sql
@@ -0,0 +1,62 @@
+
+DELETE [WB20005QingQi-WMS].[dbo].[SYS_PERMISSION] WHERE [PERMISSION]='鍏ュ簱-瀹屽伐鍝佽緭鍏�';
+GO
+
+INSERT INTO [WB20005QingQi-WMS].[dbo].[SYS_PERMISSION] (
+ [PERMISSION],
+ [ENABLE],
+ [BUTTONNAME],
+ [FATHERPERMISSIONID],
+ [PERMISSIONLEVEL],
+ [ISBUTTON],
+ [PATH],
+ [ICON],
+ [TYPE],
+ [DEC]
+)
+VALUES
+ (
+ N'鍏ュ簱-瀹屽伐鍝佽緭鍏�',
+ '1',
+ NULL,
+ '10',
+ '2',
+ '0',
+ N'/inbound/purchase/input_finished_product',
+ NULL,
+ '1',
+ NULL
+ );
+
+
+DELETE [WB20005QingQi-WMS].[dbo].[SYS_PERMISSION] WHERE [PERMISSION]='鍏ュ簱-鐒婅纭';
+GO
+INSERT INTO [WB20005QingQi-WMS].[dbo].[SYS_PERMISSION] (
+ [PERMISSION],
+ [ENABLE],
+ [BUTTONNAME],
+ [FATHERPERMISSIONID],
+ [PERMISSIONLEVEL],
+ [ISBUTTON],
+ [PATH],
+ [ICON],
+ [TYPE],
+ [DEC]
+)
+VALUES
+ (
+ N'鍏ュ簱-鐒婅纭',
+ '1',
+ NULL,
+ '10',
+ '2',
+ '0',
+ N'/inbound/purchase/confirm_welding',
+ NULL,
+ '1',
+ NULL
+ );
+
+
+
+
diff --git a/qqjf-Background/DLL/EntityFramework.Extended.dll b/qqjf-Background/DLL/EntityFramework.Extended.dll
new file mode 100644
index 0000000..8fdc246
--- /dev/null
+++ b/qqjf-Background/DLL/EntityFramework.Extended.dll
Binary files differ
diff --git a/qqjf-Background/DLL/EntityFramework.SqlServer.dll b/qqjf-Background/DLL/EntityFramework.SqlServer.dll
new file mode 100644
index 0000000..9a9c5e9
--- /dev/null
+++ b/qqjf-Background/DLL/EntityFramework.SqlServer.dll
Binary files differ
diff --git a/qqjf-Background/DLL/EntityFramework.dll b/qqjf-Background/DLL/EntityFramework.dll
new file mode 100644
index 0000000..9275df6
--- /dev/null
+++ b/qqjf-Background/DLL/EntityFramework.dll
Binary files differ
diff --git a/qqjf-Background/DLL/HslCommunication.dll b/qqjf-Background/DLL/HslCommunication.dll
new file mode 100644
index 0000000..3edfef9
--- /dev/null
+++ b/qqjf-Background/DLL/HslCommunication.dll
Binary files differ
diff --git a/qqjf-Background/DLL/Oracle.ManagedDataAccess.dll b/qqjf-Background/DLL/Oracle.ManagedDataAccess.dll
new file mode 100644
index 0000000..8cf6d1e
--- /dev/null
+++ b/qqjf-Background/DLL/Oracle.ManagedDataAccess.dll
Binary files differ
diff --git a/qqjf-Background/DLL/WZ.Useful.Commons.dll b/qqjf-Background/DLL/WZ.Useful.Commons.dll
new file mode 100644
index 0000000..6ab19a1
--- /dev/null
+++ b/qqjf-Background/DLL/WZ.Useful.Commons.dll
Binary files differ
diff --git a/qqjf-Background/DLL/Z.EntityFramework.Extensions.dll b/qqjf-Background/DLL/Z.EntityFramework.Extensions.dll
new file mode 100644
index 0000000..5308f11
--- /dev/null
+++ b/qqjf-Background/DLL/Z.EntityFramework.Extensions.dll
Binary files differ
diff --git a/qqjf-Background/DLL/log4net.dll b/qqjf-Background/DLL/log4net.dll
new file mode 100644
index 0000000..47cd9ad
--- /dev/null
+++ b/qqjf-Background/DLL/log4net.dll
Binary files differ
diff --git a/qqjf-Background/DLL/log4net.xml b/qqjf-Background/DLL/log4net.xml
new file mode 100644
index 0000000..55a19f2
--- /dev/null
+++ b/qqjf-Background/DLL/log4net.xml
@@ -0,0 +1,31814 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>log4net</name>
+ </assembly>
+ <members>
+ <member name="T:log4net.Appender.AdoNetAppender">
+ <summary>
+ Appender that logs to a database.
+ </summary>
+ <remarks>
+ <para>
+ <see cref="T:log4net.Appender.AdoNetAppender"/> appends logging events to a table within a
+ database. The appender can be configured to specify the connection
+ string by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionString"/> property.
+ The connection type (provider) can be specified by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/>
+ property. For more information on database connection strings for
+ your specific database see <a href="http://www.connectionstrings.com/">http://www.connectionstrings.com/</a>.
+ </para>
+ <para>
+ Records are written into the database either using a prepared
+ statement or a stored procedure. The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property
+ is set to <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement
+ or to <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored
+ procedure.
+ </para>
+ <para>
+ The prepared statement text or the name of the stored procedure
+ must be set in the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property.
+ </para>
+ <para>
+ The prepared statement or stored procedure can take a number
+ of parameters. Parameters are added using the <see cref="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)"/>
+ method. This adds a single <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> to the
+ ordered list of parameters. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/>
+ type may be subclassed if required to provide database specific
+ functionality. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> specifies
+ the parameter name, database type, size, and how the value should
+ be generated using a <see cref="T:log4net.Layout.ILayout"/>.
+ </para>
+ </remarks>
+ <example>
+ An example of a SQL Server table that could be logged to:
+ <code lang="SQL">
+ CREATE TABLE [dbo].[Log] (
+ [ID] [int] IDENTITY (1, 1) NOT NULL ,
+ [Date] [datetime] NOT NULL ,
+ [Thread] [varchar] (255) NOT NULL ,
+ [Level] [varchar] (20) NOT NULL ,
+ [Logger] [varchar] (255) NOT NULL ,
+ [Message] [varchar] (4000) NOT NULL
+ ) ON [PRIMARY]
+ </code>
+ </example>
+ <example>
+ An example configuration to log to the above table:
+ <code lang="XML" escaped="true">
+ <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
+ <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+ <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa"/>
+ <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
+ <parameter>
+ <parameterName value="@log_date"/>
+ <dbType value="DateTime"/>
+ <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@thread"/>
+ <dbType value="String"/>
+ <size value="255"/>
+ <layout type="log4net.Layout.PatternLayout" value="%thread"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@log_level"/>
+ <dbType value="String"/>
+ <size value="50"/>
+ <layout type="log4net.Layout.PatternLayout" value="%level"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@logger"/>
+ <dbType value="String"/>
+ <size value="255"/>
+ <layout type="log4net.Layout.PatternLayout" value="%logger"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@message"/>
+ <dbType value="String"/>
+ <size value="4000"/>
+ <layout type="log4net.Layout.PatternLayout" value="%message"/>
+ </parameter>
+ </appender>
+ </code>
+ </example>
+ <author>Julian Biddle</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Lance Nehring</author>
+ </member>
+ <member name="T:log4net.Appender.BufferingAppenderSkeleton">
+ <summary>
+ Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/> that
+ buffers events in a fixed size buffer.
+ </summary>
+ <remarks>
+ <para>
+ This base class should be used by appenders that need to buffer a
+ number of events before logging them. For example the <see cref="T:log4net.Appender.AdoNetAppender"/>
+ buffers events and then submits the entire contents of the buffer to
+ the underlying database in one go.
+ </para>
+ <para>
+ Subclasses should override the <see cref="M:SendBuffer(LoggingEvent[])"/>
+ method to deliver the buffered events.
+ </para>
+ <para>The BufferingAppenderSkeleton maintains a fixed size cyclic
+ buffer of events. The size of the buffer is set using
+ the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> property.
+ </para>
+ <para>A <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> is used to inspect
+ each event as it arrives in the appender. If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/>
+ triggers, then the current buffer is sent immediately
+ (see <see cref="M:SendBuffer(LoggingEvent[])"/>). Otherwise the event
+ is stored in the buffer. For example, an evaluator can be used to
+ deliver the events immediately when an ERROR event arrives.
+ </para>
+ <para>
+ The buffering appender can be configured in a <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode.
+ By default the appender is NOT lossy. When the buffer is full all
+ the buffered events are sent with <see cref="M:SendBuffer(LoggingEvent[])"/>.
+ If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property is set to <c>true</c> then the
+ buffer will not be sent when it is full, and new events arriving
+ in the appender will overwrite the oldest event in the buffer.
+ In lossy mode the buffer will only be sent when the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/>
+ triggers. This can be useful behavior when you need to know about
+ ERROR events but not about events with a lower level, configure an
+ evaluator that will trigger when an ERROR event arrives, the whole
+ buffer will be sent which gives a history of events leading up to
+ the ERROR event.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Appender.AppenderSkeleton">
+ <summary>
+ Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ This class provides the code for common functionality, such
+ as support for threshold filtering and support for general filters.
+ </para>
+ <para>
+ Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
+ they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method
+ be called after the appenders properties have been configured.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Appender.IAppender">
+ <summary>
+ Implement this interface for your own strategies for printing log statements.
+ </summary>
+ <remarks>
+ <para>
+ Implementors should consider extending the <see cref="T:log4net.Appender.AppenderSkeleton"/>
+ class which provides a default implementation of this interface.
+ </para>
+ <para>
+ Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
+ they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method
+ be called after the appenders properties have been configured.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.IAppender.Close">
+ <summary>
+ Closes the appender and releases resources.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)">
+ <summary>
+ Log the logging event in Appender specific way.
+ </summary>
+ <param name="loggingEvent">The event to log</param>
+ <remarks>
+ <para>
+ This method is called to log a message into this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.IAppender.Name">
+ <summary>
+ Gets or sets the name of this appender.
+ </summary>
+ <value>The name of the appender.</value>
+ <remarks>
+ <para>The name uniquely identifies the appender.</para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.IBulkAppender">
+ <summary>
+ Interface for appenders that support bulk logging.
+ </summary>
+ <remarks>
+ <para>
+ This interface extends the <see cref="T:log4net.Appender.IAppender"/> interface to
+ support bulk logging of <see cref="T:log4net.Core.LoggingEvent"/> objects. Appenders
+ should only implement this interface if they can bulk log efficiently.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])">
+ <summary>
+ Log the array of logging events in Appender specific way.
+ </summary>
+ <param name="loggingEvents">The events to log</param>
+ <remarks>
+ <para>
+ This method is called to log an array of events into this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.IOptionHandler">
+ <summary>
+ Interface used to delay activate a configured object.
+ </summary>
+ <remarks>
+ <para>
+ This allows an object to defer activation of its options until all
+ options have been set. This is required for components which have
+ related options that remain ambiguous until all are set.
+ </para>
+ <para>
+ If a component implements this interface then the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method
+ must be called by the container after its all the configured properties have been set
+ and before the component can be used.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.IOptionHandler.ActivateOptions">
+ <summary>
+ Activate the options that were previously set with calls to properties.
+ </summary>
+ <remarks>
+ <para>
+ This allows an object to defer activation of its options until all
+ options have been set. This is required for components which have
+ related options that remain ambiguous until all are set.
+ </para>
+ <para>
+ If a component implements this interface then this method must be called
+ after its properties have been set before the component can be used.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferSize">
+ <summary>
+ Initial buffer size
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity">
+ <summary>
+ Maximum buffer size before it is recycled
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>Empty default constructor</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Finalize">
+ <summary>
+ Finalizes this appender by calling the implementation's
+ <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> method.
+ </summary>
+ <remarks>
+ <para>
+ If this appender has not been closed then the <c>Finalize</c> method
+ will call <see cref="M:log4net.Appender.AppenderSkeleton.Close"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Close">
+ <summary>
+ Closes the appender and release resources.
+ </summary>
+ <remarks>
+ <para>
+ Release any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ <para>
+ This method cannot be overridden by subclasses. This method
+ delegates the closing of the appender to the <see cref="M:log4net.Appender.AppenderSkeleton.OnClose"/>
+ method which must be overridden in the subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)">
+ <summary>
+ Performs threshold checks and invokes filters before
+ delegating actual logging to the subclasses specific
+ <see cref="M:Append(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ This method cannot be overridden by derived classes. A
+ derived class should override the <see cref="M:Append(LoggingEvent)"/> method
+ which is called by this method.
+ </para>
+ <para>
+ The implementation of this method is as follows:
+ </para>
+ <para>
+ <list type="bullet">
+ <item>
+ <description>
+ Checks that the severity of the <paramref name="loggingEvent"/>
+ is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
+ appender.</description>
+ </item>
+ <item>
+ <description>
+ Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the
+ <paramref name="loggingEvent"/>.
+ </description>
+ </item>
+ <item>
+ <description>
+ Calls <see cref="M:PreAppendCheck()"/> and checks that
+ it returns <c>true</c>.</description>
+ </item>
+ </list>
+ </para>
+ <para>
+ If all of the above steps succeed then the <paramref name="loggingEvent"/>
+ will be passed to the abstract <see cref="M:Append(LoggingEvent)"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])">
+ <summary>
+ Performs threshold checks and invokes filters before
+ delegating actual logging to the subclasses specific
+ <see cref="M:Append(LoggingEvent[])"/> method.
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ This method cannot be overridden by derived classes. A
+ derived class should override the <see cref="M:Append(LoggingEvent[])"/> method
+ which is called by this method.
+ </para>
+ <para>
+ The implementation of this method is as follows:
+ </para>
+ <para>
+ <list type="bullet">
+ <item>
+ <description>
+ Checks that the severity of the <paramref name="loggingEvents"/>
+ is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
+ appender.</description>
+ </item>
+ <item>
+ <description>
+ Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the
+ <paramref name="loggingEvents"/>.
+ </description>
+ </item>
+ <item>
+ <description>
+ Calls <see cref="M:PreAppendCheck()"/> and checks that
+ it returns <c>true</c>.</description>
+ </item>
+ </list>
+ </para>
+ <para>
+ If all of the above steps succeed then the <paramref name="loggingEvents"/>
+ will be passed to the <see cref="M:Append(LoggingEvent[])"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Test if the logging event should we output by this appender
+ </summary>
+ <param name="loggingEvent">the event to test</param>
+ <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>
+ <remarks>
+ <para>
+ This method checks the logging event against the threshold level set
+ on this appender and also against the filters specified on this
+ appender.
+ </para>
+ <para>
+ The implementation of this method is as follows:
+ </para>
+ <para>
+ <list type="bullet">
+ <item>
+ <description>
+ Checks that the severity of the <paramref name="loggingEvent"/>
+ is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
+ appender.</description>
+ </item>
+ <item>
+ <description>
+ Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the
+ <paramref name="loggingEvent"/>.
+ </description>
+ </item>
+ </list>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)">
+ <summary>
+ Adds a filter to the end of the filter chain.
+ </summary>
+ <param name="filter">the filter to add to this appender</param>
+ <remarks>
+ <para>
+ The Filters are organized in a linked list.
+ </para>
+ <para>
+ Setting this property causes the new filter to be pushed onto the
+ back of the filter chain.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.ClearFilters">
+ <summary>
+ Clears the filter list for this appender.
+ </summary>
+ <remarks>
+ <para>
+ Clears the filter list for this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)">
+ <summary>
+ Checks if the message level is below this appender's threshold.
+ </summary>
+ <param name="level"><see cref="T:log4net.Core.Level"/> to test against.</param>
+ <remarks>
+ <para>
+ If there is no threshold set, then the return value is always <c>true</c>.
+ </para>
+ </remarks>
+ <returns>
+ <c>true</c> if the <paramref name="level"/> meets the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/>
+ requirements of this appender.
+ </returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.OnClose">
+ <summary>
+ Is called when the appender is closed. Derived classes should override
+ this method if resources need to be released.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Subclasses of <see cref="T:log4net.Appender.AppenderSkeleton"/> should implement this method
+ to perform actual logging.
+ </summary>
+ <param name="loggingEvent">The event to append.</param>
+ <remarks>
+ <para>
+ A subclass must implement this method to perform
+ logging of the <paramref name="loggingEvent"/>.
+ </para>
+ <para>This method will be called by <see cref="M:DoAppend(LoggingEvent)"/>
+ if all the conditions listed for that method are met.
+ </para>
+ <para>
+ To restrict the logging of events in the appender
+ override the <see cref="M:PreAppendCheck()"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ Append a bulk array of logging events.
+ </summary>
+ <param name="loggingEvents">the array of logging events</param>
+ <remarks>
+ <para>
+ This base class implementation calls the <see cref="M:Append(LoggingEvent)"/>
+ method for each element in the bulk array.
+ </para>
+ <para>
+ A sub class that can better process a bulk array of events should
+ override this method in addition to <see cref="M:Append(LoggingEvent)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.PreAppendCheck">
+ <summary>
+ Called before <see cref="M:Append(LoggingEvent)"/> as a precondition.
+ </summary>
+ <remarks>
+ <para>
+ This method is called by <see cref="M:DoAppend(LoggingEvent)"/>
+ before the call to the abstract <see cref="M:Append(LoggingEvent)"/> method.
+ </para>
+ <para>
+ This method can be overridden in a subclass to extend the checks
+ made before the event is passed to the <see cref="M:Append(LoggingEvent)"/> method.
+ </para>
+ <para>
+ A subclass should ensure that they delegate this call to
+ this base class if it is overridden.
+ </para>
+ </remarks>
+ <returns><c>true</c> if the call to <see cref="M:Append(LoggingEvent)"/> should proceed.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string.
+ </summary>
+ <param name="loggingEvent">The event to render.</param>
+ <returns>The event rendered as a string.</returns>
+ <remarks>
+ <para>
+ Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to
+ a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/>
+ set to render the <paramref name="loggingEvent"/> to
+ a string.
+ </para>
+ <para>If there is exception data in the logging event and
+ the layout does not process the exception, this method
+ will append the exception text to the rendered string.
+ </para>
+ <para>
+ Where possible use the alternative version of this method
+ <see cref="M:RenderLoggingEvent(TextWriter,LoggingEvent)"/>.
+ That method streams the rendering onto an existing Writer
+ which can give better performance if the caller already has
+ a <see cref="T:System.IO.TextWriter"/> open and ready for writing.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string.
+ </summary>
+ <param name="loggingEvent">The event to render.</param>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <remarks>
+ <para>
+ Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to
+ a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/>
+ set to render the <paramref name="loggingEvent"/> to
+ a string.
+ </para>
+ <para>If there is exception data in the logging event and
+ the layout does not process the exception, this method
+ will append the exception text to the rendered string.
+ </para>
+ <para>
+ Use this method in preference to <see cref="M:RenderLoggingEvent(LoggingEvent)"/>
+ where possible. If, however, the caller needs to render the event
+ to a string then <see cref="M:RenderLoggingEvent(LoggingEvent)"/> does
+ provide an efficient mechanism for doing so.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_layout">
+ <summary>
+ The layout of this appender.
+ </summary>
+ <remarks>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_name">
+ <summary>
+ The name of this appender.
+ </summary>
+ <remarks>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.Name"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_threshold">
+ <summary>
+ The level threshold of this appender.
+ </summary>
+ <remarks>
+ <para>
+ There is no level threshold filtering by default.
+ </para>
+ <para>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_errorHandler">
+ <summary>
+ It is assumed and enforced that errorHandler is never null.
+ </summary>
+ <remarks>
+ <para>
+ It is assumed and enforced that errorHandler is never null.
+ </para>
+ <para>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_headFilter">
+ <summary>
+ The first filter in the filter chain.
+ </summary>
+ <remarks>
+ <para>
+ Set to <c>null</c> initially.
+ </para>
+ <para>
+ See <see cref="T:log4net.Filter.IFilter"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_tailFilter">
+ <summary>
+ The last filter in the filter chain.
+ </summary>
+ <remarks>
+ See <see cref="T:log4net.Filter.IFilter"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_closed">
+ <summary>
+ Flag indicating if this appender is closed.
+ </summary>
+ <remarks>
+ See <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_recursiveGuard">
+ <summary>
+ The guard prevents an appender from repeatedly calling its own DoAppend method
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_renderWriter">
+ <summary>
+ StringWriter used to render events
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.declaringType">
+ <summary>
+ The fully qualified type of the AppenderSkeleton class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.Threshold">
+ <summary>
+ Gets or sets the threshold <see cref="T:log4net.Core.Level"/> of this appender.
+ </summary>
+ <value>
+ The threshold <see cref="T:log4net.Core.Level"/> of the appender.
+ </value>
+ <remarks>
+ <para>
+ All log events with lower level than the threshold level are ignored
+ by the appender.
+ </para>
+ <para>
+ In configuration files this option is specified by setting the
+ value of the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> option to a level
+ string, such as "DEBUG", "INFO" and so on.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.ErrorHandler">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Core.IErrorHandler"/> for this appender.
+ </summary>
+ <value>The <see cref="T:log4net.Core.IErrorHandler"/> of the appender</value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Appender.AppenderSkeleton"/> provides a default
+ implementation for the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.FilterHead">
+ <summary>
+ The filter chain.
+ </summary>
+ <value>The head of the filter chain filter chain.</value>
+ <remarks>
+ <para>
+ Returns the head Filter. The Filters are organized in a linked list
+ and so all Filters on this Appender are available through the result.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.Layout">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Layout.ILayout"/> for this appender.
+ </summary>
+ <value>The layout of the appender.</value>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/> for more information.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.Name">
+ <summary>
+ Gets or sets the name of this appender.
+ </summary>
+ <value>The name of the appender.</value>
+ <remarks>
+ <para>
+ The name uniquely identifies the appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.RequiresLayout">
+ <summary>
+ Tests if this appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
+ </summary>
+ <remarks>
+ <para>
+ In the rather exceptional case, where the appender
+ implementation admits a layout but can also work without it,
+ then the appender should return <c>true</c>.
+ </para>
+ <para>
+ This default implementation always returns <c>false</c>.
+ </para>
+ </remarks>
+ <returns>
+ <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.
+ </returns>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE">
+ <summary>
+ The default buffer size.
+ </summary>
+ <remarks>
+ The default size of the cyclic buffer used to store events.
+ This is set to 512 by default.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Protected default constructor to allow subclassing.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class.
+ </summary>
+ <param name="eventMustBeFixed">the events passed through this appender must be
+ fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>
+ <remarks>
+ <para>
+ Protected constructor to allow subclassing.
+ </para>
+ <para>
+ The <paramref name="eventMustBeFixed"/> should be set if the subclass
+ expects the events delivered to be fixed even if the
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to zero, i.e. when no buffering occurs.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush">
+ <summary>
+ Flush the currently buffered events
+ </summary>
+ <remarks>
+ <para>
+ Flushes any events that have been buffered.
+ </para>
+ <para>
+ If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents
+ of the buffer will NOT be flushed to the appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)">
+ <summary>
+ Flush the currently buffered events
+ </summary>
+ <param name="flushLossyBuffer">set to <c>true</c> to flush the buffer of lossy events</param>
+ <remarks>
+ <para>
+ Flushes events that have been buffered. If <paramref name="flushLossyBuffer"/> is
+ <c>false</c> then events will only be flushed if this buffer is non-lossy mode.
+ </para>
+ <para>
+ If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents
+ of the buffer will only be flushed if <paramref name="flushLossyBuffer"/> is <c>true</c>.
+ In this case the contents of the buffer will be tested against the
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator"/> and if triggering will be output. All other buffered
+ events will be discarded.
+ </para>
+ <para>
+ If <paramref name="flushLossyBuffer"/> is <c>true</c> then the buffer will always
+ be emptied by calling this method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.OnClose">
+ <summary>
+ Close this appender instance.
+ </summary>
+ <remarks>
+ <para>
+ Close this appender instance. If this appender is marked
+ as not <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> then the remaining events in
+ the buffer must be sent when the appender is closed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>
+ Stores the <paramref name="loggingEvent"/> in the cyclic buffer.
+ </para>
+ <para>
+ The buffer will be sent (i.e. passed to the <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/>
+ method) if one of the following conditions is met:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>The cyclic buffer is full and this appender is
+ marked as not lossy (see <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/>)</description>
+ </item>
+ <item>
+ <description>An <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> is set and
+ it is triggered for the <paramref name="loggingEvent"/>
+ specified.</description>
+ </item>
+ </list>
+ <para>
+ Before the event is stored in the buffer it is fixed
+ (see <see cref="M:LoggingEvent.FixVolatileData(FixFlags)"/>) to ensure that
+ any data referenced by the event will be valid when the buffer
+ is processed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)">
+ <summary>
+ Sends the contents of the buffer.
+ </summary>
+ <param name="firstLoggingEvent">The first logging event.</param>
+ <param name="buffer">The buffer containing the events that need to be send.</param>
+ <remarks>
+ <para>
+ The subclass must override <see cref="M:SendBuffer(LoggingEvent[])"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Sends the events.
+ </summary>
+ <param name="events">The events that need to be send.</param>
+ <remarks>
+ <para>
+ The subclass must override this method to process the buffered events.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize">
+ <summary>
+ The size of the cyclic buffer used to hold the logging events.
+ </summary>
+ <remarks>
+ Set to <see cref="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE"/> by default.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_cb">
+ <summary>
+ The cyclic buffer used to store the logging events.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator">
+ <summary>
+ The triggering event evaluator that causes the buffer to be sent immediately.
+ </summary>
+ <remarks>
+ The object that is used to determine if an event causes the entire
+ buffer to be sent immediately. This field can be <c>null</c>, which
+ indicates that event triggering is not to be done. The evaluator
+ can be set using the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> property. If this appender
+ has the <see cref="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy"/> (<see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property) set to
+ <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be set.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy">
+ <summary>
+ Indicates if the appender should overwrite events in the cyclic buffer
+ when it becomes full, or if the buffer should be flushed when the
+ buffer is full.
+ </summary>
+ <remarks>
+ If this field is set to <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must
+ be set.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator">
+ <summary>
+ The triggering event evaluator filters discarded events.
+ </summary>
+ <remarks>
+ The object that is used to determine if an event that is discarded should
+ really be discarded or if it should be sent to the appenders.
+ This field can be <c>null</c>, which indicates that all discarded events will
+ be discarded.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags">
+ <summary>
+ Value indicating which fields in the event should be fixed
+ </summary>
+ <remarks>
+ By default all fields are fixed
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed">
+ <summary>
+ The events delivered to the subclass must be fixed.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.Lossy">
+ <summary>
+ Gets or sets a value that indicates whether the appender is lossy.
+ </summary>
+ <value>
+ <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ This appender uses a buffer to store logging events before
+ delivering them. A triggering event causes the whole buffer
+ to be send to the remote sink. If the buffer overruns before
+ a triggering event then logging events could be lost. Set
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> to <c>false</c> to prevent logging events
+ from being lost.
+ </para>
+ <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize">
+ <summary>
+ Gets or sets the size of the cyclic buffer used to hold the
+ logging events.
+ </summary>
+ <value>
+ The size of the cyclic buffer used to hold the logging events.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option takes a positive integer
+ representing the maximum number of logging events to collect in
+ a cyclic buffer. When the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is reached,
+ oldest events are deleted as new events are added to the
+ buffer. By default the size of the cyclic buffer is 512 events.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to a value less than
+ or equal to 1 then no buffering will occur. The logging event
+ will be delivered synchronously (depending on the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/>
+ and <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> properties). Otherwise the event will
+ be buffered.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the
+ buffer to be sent immediately.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the buffer to be
+ sent immediately.
+ </value>
+ <remarks>
+ <para>
+ The evaluator will be called for each event that is appended to this
+ appender. If the evaluator triggers then the current buffer will
+ immediately be sent (see <see cref="M:SendBuffer(LoggingEvent[])"/>).
+ </para>
+ <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator">
+ <summary>
+ Gets or sets the value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use.
+ </summary>
+ <value>
+ The value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use.
+ </value>
+ <remarks>
+ <para>
+ The evaluator will be called for each event that is discarded from this
+ appender. If the evaluator triggers then the current buffer will immediately
+ be sent (see <see cref="M:SendBuffer(LoggingEvent[])"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData">
+ <summary>
+ Gets or sets a value indicating if only part of the logging event data
+ should be fixed.
+ </summary>
+ <value>
+ <c>true</c> if the appender should only fix part of the logging event
+ data, otherwise <c>false</c>. The default is <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ Setting this property to <c>true</c> will cause only part of the
+ event data to be fixed and serialized. This will improve performance.
+ </para>
+ <para>
+ See <see cref="M:LoggingEvent.FixVolatileData(FixFlags)"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.Fix">
+ <summary>
+ Gets or sets a the fields that will be fixed in the event
+ </summary>
+ <value>
+ The event fields that will be fixed before the event is buffered
+ </value>
+ <remarks>
+ <para>
+ The logging event needs to have certain thread specific values
+ captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/>
+ for details.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.Core.LoggingEvent.Fix"/>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppender"/> class.
+ </summary>
+ <remarks>
+ Public default constructor to initialize a new instance of this class.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.OnClose">
+ <summary>
+ Override the parent method to close the database
+ </summary>
+ <remarks>
+ <para>
+ Closes the database command and database connection.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Inserts the events into the database.
+ </summary>
+ <param name="events">The events to insert into the database.</param>
+ <remarks>
+ <para>
+ Insert all the events specified in the <paramref name="events"/>
+ array into the database.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)">
+ <summary>
+ Adds a parameter to the command.
+ </summary>
+ <param name="parameter">The parameter to add to the command.</param>
+ <remarks>
+ <para>
+ Adds a parameter to the ordered list of command parameters.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])">
+ <summary>
+ Writes the events to the database using the transaction specified.
+ </summary>
+ <param name="dbTran">The transaction that the events will be executed under.</param>
+ <param name="events">The array of events to insert into the database.</param>
+ <remarks>
+ <para>
+ The transaction argument can be <c>null</c> if the appender has been
+ configured not to use transactions. See <see cref="P:log4net.Appender.AdoNetAppender.UseTransactions"/>
+ property for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)">
+ <summary>
+ Formats the log message into database statement text.
+ </summary>
+ <param name="logEvent">The event being logged.</param>
+ <remarks>
+ This method can be overridden by subclasses to provide
+ more control over the format of the database statement.
+ </remarks>
+ <returns>
+ Text that can be passed to a <see cref="T:System.Data.IDbCommand"/>.
+ </returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)">
+ <summary>
+ Creates an <see cref="T:System.Data.IDbConnection"/> instance used to connect to the database.
+ </summary>
+ <remarks>
+ This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).
+ </remarks>
+ <param name="connectionType">The <see cref="T:System.Type"/> of the <see cref="T:System.Data.IDbConnection"/> object.</param>
+ <param name="connectionString">The connectionString output from the ResolveConnectionString method.</param>
+ <returns>An <see cref="T:System.Data.IDbConnection"/> instance with a valid connection string.</returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.ResolveConnectionString(System.String@)">
+ <summary>
+ Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey
+ property.
+ </summary>
+ <remarks>
+ ConnectiongStringName is only supported on .NET 2.0 and higher.
+ </remarks>
+ <param name="connectionStringContext">Additional information describing the connection string.</param>
+ <returns>A connection string used to connect to the database.</returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.ResolveConnectionType">
+ <summary>
+ Retrieves the class type of the ADO.NET provider.
+ </summary>
+ <remarks>
+ <para>
+ Gets the Type of the ADO.NET provider to use to connect to the
+ database. This method resolves the type specified in the
+ <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> property.
+ </para>
+ <para>
+ Subclasses can override this method to return a different type
+ if necessary.
+ </para>
+ </remarks>
+ <returns>The <see cref="T:System.Type"/> of the ADO.NET provider</returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand">
+ <summary>
+ Prepares the database command and initialize the parameters.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection">
+ <summary>
+ Connects to the database.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)">
+ <summary>
+ Cleanup the existing command.
+ </summary>
+ <param name="ignoreException">
+ If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.
+ </param>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.DiposeConnection">
+ <summary>
+ Cleanup the existing connection.
+ </summary>
+ <remarks>
+ Calls the IDbConnection's <see cref="M:System.Data.IDbConnection.Close"/> method.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_usePreparedCommand">
+ <summary>
+ Flag to indicate if we are using a command object
+ </summary>
+ <remarks>
+ <para>
+ Set to <c>true</c> when the appender is to use a prepared
+ statement or stored procedure to insert into the database.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_parameters">
+ <summary>
+ The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects.
+ </summary>
+ <remarks>
+ <para>
+ The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_dbConnection">
+ <summary>
+ The <see cref="T:System.Data.IDbConnection"/> that will be used
+ to insert logging events into a database.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_dbCommand">
+ <summary>
+ The database command.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_connectionString">
+ <summary>
+ Database connection string.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_appSettingsKey">
+ <summary>
+ The appSettings key from App.Config that contains the connection string.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_connectionStringName">
+ <summary>
+ The connectionStrings key from App.Config that contains the connection string.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_connectionType">
+ <summary>
+ String type name of the <see cref="T:System.Data.IDbConnection"/> type name.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_commandText">
+ <summary>
+ The text of the command.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_commandType">
+ <summary>
+ The command type.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_useTransactions">
+ <summary>
+ Indicates whether to use transactions when writing to the database.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_reconnectOnError">
+ <summary>
+ Indicates whether to use transactions when writing to the database.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.declaringType">
+ <summary>
+ The fully qualified type of the AdoNetAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ConnectionString">
+ <summary>
+ Gets or sets the database connection string that is used to connect to
+ the database.
+ </summary>
+ <value>
+ The database connection string used to connect to the database.
+ </value>
+ <remarks>
+ <para>
+ The connections string is specific to the connection type.
+ See <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> for more information.
+ </para>
+ </remarks>
+ <example>Connection string for MS Access via ODBC:
+ <code>"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb"</code>
+ </example>
+ <example>Another connection string for MS Access via ODBC:
+ <code>"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;"</code>
+ </example>
+ <example>Connection string for MS Access via OLE DB:
+ <code>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;"</code>
+ </example>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.AppSettingsKey">
+ <summary>
+ The appSettings key from App.Config that contains the connection string.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ConnectionStringName">
+ <summary>
+ The connectionStrings key from App.Config that contains the connection string.
+ </summary>
+ <remarks>
+ This property requires at least .NET 2.0.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ConnectionType">
+ <summary>
+ Gets or sets the type name of the <see cref="T:System.Data.IDbConnection"/> connection
+ that should be created.
+ </summary>
+ <value>
+ The type name of the <see cref="T:System.Data.IDbConnection"/> connection.
+ </value>
+ <remarks>
+ <para>
+ The type name of the ADO.NET provider to use.
+ </para>
+ <para>
+ The default is to use the OLE DB provider.
+ </para>
+ </remarks>
+ <example>Use the OLE DB Provider. This is the default value.
+ <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
+ </example>
+ <example>Use the MS SQL Server Provider.
+ <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
+ </example>
+ <example>Use the ODBC Provider.
+ <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>
+ This is an optional package that you can download from
+ <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a>
+ search for <b>ODBC .NET Data Provider</b>.
+ </example>
+ <example>Use the Oracle Provider.
+ <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
+ This is an optional package that you can download from
+ <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a>
+ search for <b>.NET Managed Provider for Oracle</b>.
+ </example>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.CommandText">
+ <summary>
+ Gets or sets the command text that is used to insert logging events
+ into the database.
+ </summary>
+ <value>
+ The command text used to insert logging events into the database.
+ </value>
+ <remarks>
+ <para>
+ Either the text of the prepared statement or the
+ name of the stored procedure to execute to write into
+ the database.
+ </para>
+ <para>
+ The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property determines if
+ this text is a prepared statement or a stored procedure.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.CommandType">
+ <summary>
+ Gets or sets the command type to execute.
+ </summary>
+ <value>
+ The command type to execute.
+ </value>
+ <remarks>
+ <para>
+ This value may be either <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify
+ that the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> is a prepared statement to execute,
+ or <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the
+ <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property is the name of a stored procedure
+ to execute.
+ </para>
+ <para>
+ The default value is <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.UseTransactions">
+ <summary>
+ Should transactions be used to insert logging events in the database.
+ </summary>
+ <value>
+ <c>true</c> if transactions should be used to insert logging events in
+ the database, otherwise <c>false</c>. The default value is <c>true</c>.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets a value that indicates whether transactions should be used
+ to insert logging events in the database.
+ </para>
+ <para>
+ When set a single transaction will be used to insert the buffered events
+ into the database. Otherwise each event will be inserted without using
+ an explicit transaction.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ReconnectOnError">
+ <summary>
+ Should this appender try to reconnect to the database on error.
+ </summary>
+ <value>
+ <c>true</c> if the appender should try to reconnect to the database after an
+ error has occurred, otherwise <c>false</c>. The default value is <c>false</c>,
+ i.e. not to try to reconnect.
+ </value>
+ <remarks>
+ <para>
+ The default behaviour is for the appender not to try to reconnect to the
+ database if an error occurs. Subsequent logging events are discarded.
+ </para>
+ <para>
+ To force the appender to attempt to reconnect to the database set this
+ property to <c>true</c>.
+ </para>
+ <note>
+ When the appender attempts to connect to the database there may be a
+ delay of up to the connection timeout specified in the connection string.
+ This delay will block the calling application's thread.
+ Until the connection can be reestablished this potential delay may occur multiple times.
+ </note>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.Connection">
+ <summary>
+ Gets or sets the underlying <see cref="T:System.Data.IDbConnection"/>.
+ </summary>
+ <value>
+ The underlying <see cref="T:System.Data.IDbConnection"/>.
+ </value>
+ <remarks>
+ <see cref="T:log4net.Appender.AdoNetAppender"/> creates a <see cref="T:System.Data.IDbConnection"/> to insert
+ logging events into a database. Classes deriving from <see cref="T:log4net.Appender.AdoNetAppender"/>
+ can use this property to get or set this <see cref="T:System.Data.IDbConnection"/>. Use the
+ underlying <see cref="T:System.Data.IDbConnection"/> returned from <see cref="P:log4net.Appender.AdoNetAppender.Connection"/> if
+ you require access beyond that which <see cref="T:log4net.Appender.AdoNetAppender"/> provides.
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.AdoNetAppenderParameter">
+ <summary>
+ Parameter type used by the <see cref="T:log4net.Appender.AdoNetAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ This class provides the basic database parameter properties
+ as defined by the <see cref="T:System.Data.IDbDataParameter"/> interface.
+ </para>
+ <para>This type can be subclassed to provide database specific
+ functionality. The two methods that are called externally are
+ <see cref="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)"/> and <see cref="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppenderParameter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> class.
+ </summary>
+ <remarks>
+ Default constructor for the AdoNetAppenderParameter class.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)">
+ <summary>
+ Prepare the specified database command object.
+ </summary>
+ <param name="command">The command to prepare.</param>
+ <remarks>
+ <para>
+ Prepares the database command object by adding
+ this parameter to its collection of parameters.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)">
+ <summary>
+ Renders the logging event and set the parameter value in the command.
+ </summary>
+ <param name="command">The command containing the parameter.</param>
+ <param name="loggingEvent">The event to be rendered.</param>
+ <remarks>
+ <para>
+ Renders the logging event using this parameters layout
+ object. Sets the value of the parameter on the command object.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_parameterName">
+ <summary>
+ The name of this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_dbType">
+ <summary>
+ The database type for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_inferType">
+ <summary>
+ Flag to infer type rather than use the DbType
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_precision">
+ <summary>
+ The precision for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_scale">
+ <summary>
+ The scale for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_size">
+ <summary>
+ The size for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_layout">
+ <summary>
+ The <see cref="T:log4net.Layout.IRawLayout"/> to use to render the
+ logging event into an object for this parameter.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.ParameterName">
+ <summary>
+ Gets or sets the name of this parameter.
+ </summary>
+ <value>
+ The name of this parameter.
+ </value>
+ <remarks>
+ <para>
+ The name of this parameter. The parameter name
+ must match up to a named parameter to the SQL stored procedure
+ or prepared statement.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.DbType">
+ <summary>
+ Gets or sets the database type for this parameter.
+ </summary>
+ <value>
+ The database type for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The database type for this parameter. This property should
+ be set to the database type from the <see cref="P:log4net.Appender.AdoNetAppenderParameter.DbType"/>
+ enumeration. See <see cref="P:System.Data.IDataParameter.DbType"/>.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the type from the value.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDataParameter.DbType"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Precision">
+ <summary>
+ Gets or sets the precision for this parameter.
+ </summary>
+ <value>
+ The precision for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The maximum number of digits used to represent the Value.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the precision from the value.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDbDataParameter.Precision"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Scale">
+ <summary>
+ Gets or sets the scale for this parameter.
+ </summary>
+ <value>
+ The scale for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The number of decimal places to which Value is resolved.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the scale from the value.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDbDataParameter.Scale"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Size">
+ <summary>
+ Gets or sets the size for this parameter.
+ </summary>
+ <value>
+ The size for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The maximum size, in bytes, of the data within the column.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the size from the value.
+ </para>
+ <para>
+ For BLOB data types like VARCHAR(max) it may be impossible to infer the value automatically, use -1 as the size in this case.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDbDataParameter.Size"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Layout">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Layout.IRawLayout"/> to use to
+ render the logging event into an object for this
+ parameter.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Layout.IRawLayout"/> used to render the
+ logging event into an object for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Layout.IRawLayout"/> that renders the value for this
+ parameter.
+ </para>
+ <para>
+ The <see cref="T:log4net.Layout.RawLayoutConverter"/> can be used to adapt
+ any <see cref="T:log4net.Layout.ILayout"/> into a <see cref="T:log4net.Layout.IRawLayout"/>
+ for use in the property.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender">
+ <summary>
+ Appends logging events to the terminal using ANSI color escape sequences.
+ </summary>
+ <remarks>
+ <para>
+ AnsiColorTerminalAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific level of message to be set.
+ </para>
+ <note>
+ This appender expects the terminal to understand the VT100 control set
+ in order to interpret the color codes. If the terminal or console does not
+ understand the control codes the behavior is not defined.
+ </note>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ NOTE: This appender writes each message to the <c>System.Console.Out</c> or
+ <c>System.Console.Error</c> that is set at the time the event is appended.
+ Therefore it is possible to programmatically redirect the output of this appender
+ (for example NUnit does this to capture program output). While this is the desired
+ behavior of this appender it may have security implications in your application.
+ </para>
+ <para>
+ When configuring the ANSI colored terminal appender, a mapping should be
+ specified to map a logging level to a color. For example:
+ </para>
+ <code lang="XML" escaped="true">
+ <mapping>
+ <level value="ERROR"/>
+ <foreColor value="White"/>
+ <backColor value="Red"/>
+ <attributes value="Bright,Underscore"/>
+ </mapping>
+ <mapping>
+ <level value="DEBUG"/>
+ <backColor value="Green"/>
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level and ForeColor and BackColor can be any
+ of the following values:
+ <list type="bullet">
+ <item><term>Blue</term><description></description></item>
+ <item><term>Green</term><description></description></item>
+ <item><term>Red</term><description></description></item>
+ <item><term>White</term><description></description></item>
+ <item><term>Yellow</term><description></description></item>
+ <item><term>Purple</term><description></description></item>
+ <item><term>Cyan</term><description></description></item>
+ </list>
+ These color values cannot be combined together to make new colors.
+ </para>
+ <para>
+ The attributes can be any combination of the following:
+ <list type="bullet">
+ <item><term>Bright</term><description>foreground is brighter</description></item>
+ <item><term>Dim</term><description>foreground is dimmer</description></item>
+ <item><term>Underscore</term><description>message is underlined</description></item>
+ <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>
+ <item><term>Reverse</term><description>foreground and background are reversed</description></item>
+ <item><term>Hidden</term><description>output is hidden</description></item>
+ <item><term>Strikethrough</term><description>message has a line through it</description></item>
+ </list>
+ While any of these attributes may be combined together not all combinations
+ work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes
+ no sense.
+ </para>
+ </remarks>
+ <author>Patrick Wagstrom</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes">
+ <summary>
+ Ansi code to reset terminal
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)">
+ <summary>
+ Add a mapping of level to color
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors"/> mapping to this appender.
+ Each mapping defines the foreground and background colours
+ for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to color mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream">
+ <summary>
+ Flag to write output to the error stream rather than the standard output stream
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to color value
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes">
+ <summary>
+ The enum of possible display attributes
+ </summary>
+ <remarks>
+ <para>
+ The following flags can be combined together to
+ form the ANSI color attributes.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright">
+ <summary>
+ text is bright
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim">
+ <summary>
+ text is dim
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore">
+ <summary>
+ text is underlined
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink">
+ <summary>
+ text is blinking
+ </summary>
+ <remarks>
+ Not all terminals support this attribute
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse">
+ <summary>
+ text and background colors are reversed
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden">
+ <summary>
+ text is hidden
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough">
+ <summary>
+ text is displayed with a strikethrough
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Light">
+ <summary>
+ text color is light
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor">
+ <summary>
+ The enum of possible foreground or background color values for
+ use with the color mapping method
+ </summary>
+ <remarks>
+ <para>
+ The output can be in one for the following ANSI colors.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black">
+ <summary>
+ color is black
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red">
+ <summary>
+ color is red
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green">
+ <summary>
+ color is green
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow">
+ <summary>
+ color is yellow
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue">
+ <summary>
+ color is blue
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta">
+ <summary>
+ color is magenta
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan">
+ <summary>
+ color is cyan
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White">
+ <summary>
+ color is white
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and the color it should be displayed in.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.LevelMappingEntry">
+ <summary>
+ An entry in the <see cref="T:log4net.Util.LevelMapping"/>
+ </summary>
+ <remarks>
+ <para>
+ This is an abstract base class for types that are stored in the
+ <see cref="T:log4net.Util.LevelMapping"/> object.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.LevelMappingEntry.#ctor">
+ <summary>
+ Default protected constructor
+ </summary>
+ <remarks>
+ <para>
+ Default protected constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LevelMappingEntry.ActivateOptions">
+ <summary>
+ Initialize any options defined on this entry
+ </summary>
+ <remarks>
+ <para>
+ Should be overridden by any classes that need to initialise based on their options
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.LevelMappingEntry.Level">
+ <summary>
+ The level that is the key for this mapping
+ </summary>
+ <value>
+ The <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this mapping
+ </value>
+ <remarks>
+ <para>
+ Get or set the <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this
+ mapping subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions">
+ <summary>
+ Initialize the options for the object
+ </summary>
+ <remarks>
+ <para>
+ Combine the <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> together
+ and append the attributes.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor">
+ <summary>
+ The mapped foreground color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped foreground color for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor">
+ <summary>
+ The mapped background color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped background color for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes">
+ <summary>
+ The color attributes for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The color attributes for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor">
+ <summary>
+ The combined <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/>, <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> and
+ <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes"/> suitable for setting the ansi terminal color.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection">
+ <summary>
+ A strongly-typed collection of <see cref="T:log4net.Appender.IAppender"/> objects.
+ </summary>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)">
+ <summary>
+ Creates a read-only wrapper for a <c>AppenderCollection</c> instance.
+ </summary>
+ <param name="list">list to create a readonly wrapper arround</param>
+ <returns>
+ An <c>AppenderCollection</c> wrapper that is read-only.
+ </returns>
+ </member>
+ <member name="F:log4net.Appender.AppenderCollection.EmptyCollection">
+ <summary>
+ An empty readonly static AppenderCollection
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that is empty and has the default initial capacity.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that has the specified initial capacity.
+ </summary>
+ <param name="capacity">
+ The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.
+ </param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that contains elements copied from the specified <c>AppenderCollection</c>.
+ </summary>
+ <param name="c">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> array.
+ </summary>
+ <param name="a">The <see cref="T:log4net.Appender.IAppender"/> array whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> collection.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)">
+ <summary>
+ Allow subclasses to avoid our default constructors
+ </summary>
+ <param name="tag"></param>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])">
+ <summary>
+ Copies the entire <c>AppenderCollection</c> to a one-dimensional
+ <see cref="T:log4net.Appender.IAppender"/> array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)">
+ <summary>
+ Copies the entire <c>AppenderCollection</c> to a one-dimensional
+ <see cref="T:log4net.Appender.IAppender"/> array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param>
+ <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)">
+ <summary>
+ Adds a <see cref="T:log4net.Appender.IAppender"/> to the end of the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to be added to the end of the <c>AppenderCollection</c>.</param>
+ <returns>The index at which the value has been added.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Clear">
+ <summary>
+ Removes all elements from the <c>AppenderCollection</c>.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:log4net.Appender.AppenderCollection"/>.
+ </summary>
+ <returns>A new <see cref="T:log4net.Appender.AppenderCollection"/> with a shallow copy of the collection data.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)">
+ <summary>
+ Determines whether a given <see cref="T:log4net.Appender.IAppender"/> is in the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to check for.</param>
+ <returns><c>true</c> if <paramref name="item"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)">
+ <summary>
+ Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Appender.IAppender"/>
+ in the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to locate in the <c>AppenderCollection</c>.</param>
+ <returns>
+ The zero-based index of the first occurrence of <paramref name="item"/>
+ in the entire <c>AppenderCollection</c>, if found; otherwise, -1.
+ </returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)">
+ <summary>
+ Inserts an element into the <c>AppenderCollection</c> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to insert.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)">
+ <summary>
+ Removes the first occurrence of a specific <see cref="T:log4net.Appender.IAppender"/> from the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to remove from the <c>AppenderCollection</c>.</param>
+ <exception cref="T:System.ArgumentException">
+ The specified <see cref="T:log4net.Appender.IAppender"/> was not found in the <c>AppenderCollection</c>.
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)">
+ <summary>
+ Removes the element at the specified index of the <c>AppenderCollection</c>.
+ </summary>
+ <param name="index">The zero-based index of the element to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the <c>AppenderCollection</c>.
+ </summary>
+ <returns>An <see cref="T:log4net.Appender.AppenderCollection.Enumerator"/> for the entire <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)">
+ <summary>
+ Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.
+ </summary>
+ <param name="x">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> array to the current <c>AppenderCollection</c>.
+ </summary>
+ <param name="x">The <see cref="T:log4net.Appender.IAppender"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> collection to the current <c>AppenderCollection</c>.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.TrimToSize">
+ <summary>
+ Sets the capacity to the actual number of elements.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ToArray">
+ <summary>
+ Return the collection elements as an array
+ </summary>
+ <returns>the array</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Count">
+ <summary>
+ Gets the number of elements actually contained in the <c>AppenderCollection</c>.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IsSynchronized">
+ <summary>
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+ </summary>
+ <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Appender.IAppender"/> at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>true if the collection has a fixed size; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the IList is read-only.
+ </summary>
+ <value>true if the collection is read-only; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Capacity">
+ <summary>
+ Gets or sets the number of elements the <c>AppenderCollection</c> can contain.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator">
+ <summary>
+ Supports type-safe iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>.
+ </summary>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.Tag">
+ <summary>
+ Type visible only to our subclasses
+ Used to access protected constructor
+ </summary>
+ <exclude/>
+ </member>
+ <member name="F:log4net.Appender.AppenderCollection.Tag.Default">
+ <summary>
+ A value
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.Enumerator">
+ <summary>
+ Supports simple iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>.
+ </summary>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)">
+ <summary>
+ Initializes a new instance of the <c>Enumerator</c> class.
+ </summary>
+ <param name="tc"></param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Enumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Enumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Enumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection">
+ <exclude/>
+ </member>
+ <member name="T:log4net.Appender.AspNetTraceAppender">
+ <summary>
+ <para>
+ Appends log events to the ASP.NET <see cref="T:System.Web.TraceContext"/> system.
+ </para>
+ </summary>
+ <remarks>
+ <para>
+ Diagnostic information and tracing messages that you specify are appended to the output
+ of the page that is sent to the requesting browser. Optionally, you can view this information
+ from a separate trace viewer (Trace.axd) that displays trace information for every page in a
+ given application.
+ </para>
+ <para>
+ Trace statements are processed and displayed only when tracing is enabled. You can control
+ whether tracing is displayed to a page, to the trace viewer, or both.
+ </para>
+ <para>
+ The logging event is passed to the <see cref="M:TraceContext.Write(string)"/> or
+ <see cref="M:TraceContext.Warn(string)"/> method depending on the level of the logging event.
+ The event's logger name is the default value for the category parameter of the Write/Warn method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Appender.AspNetTraceAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AspNetTraceAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Write the logging event to the ASP.NET trace
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>
+ Write the logging event to the ASP.NET trace
+ <c>HttpContext.Current.Trace</c>
+ (<see cref="T:System.Web.TraceContext"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AspNetTraceAppender.m_category">
+ <summary>
+ Defaults to %logger
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AspNetTraceAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AspNetTraceAppender.Category">
+ <summary>
+ The category parameter sent to the Trace method.
+ </summary>
+ <remarks>
+ <para>
+ Defaults to %logger which will use the logger name of the current
+ <see cref="T:log4net.Core.LoggingEvent"/> as the category parameter.
+ </para>
+ <para>
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.BufferingForwardingAppender">
+ <summary>
+ Buffers events and then forwards them to attached appenders.
+ </summary>
+ <remarks>
+ <para>
+ The events are buffered in this appender until conditions are
+ met to allow the appender to deliver the events to the attached
+ appenders. See <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> for the
+ conditions that cause the buffer to be sent.
+ </para>
+ <para>The forwarding appender can be used to specify different
+ thresholds and filters for the same appender at different locations
+ within the hierarchy.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Core.IAppenderAttachable">
+ <summary>
+ Interface for attaching appenders to objects.
+ </summary>
+ <remarks>
+ <para>
+ Interface for attaching, removing and retrieving appenders.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Attaches an appender.
+ </summary>
+ <param name="appender">The appender to add.</param>
+ <remarks>
+ <para>
+ Add the specified appender. The implementation may
+ choose to allow or deny duplicate appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.GetAppender(System.String)">
+ <summary>
+ Gets an attached appender with the specified name.
+ </summary>
+ <param name="name">The name of the appender to get.</param>
+ <returns>
+ The appender with the name specified, or <c>null</c> if no appender with the
+ specified name is found.
+ </returns>
+ <remarks>
+ <para>
+ Returns an attached appender with the <paramref name="name"/> specified.
+ If no appender with the specified name is found <c>null</c> will be
+ returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.RemoveAllAppenders">
+ <summary>
+ Removes all attached appenders.
+ </summary>
+ <remarks>
+ <para>
+ Removes and closes all attached appenders
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Removes the specified appender from the list of attached appenders.
+ </summary>
+ <param name="appender">The appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)">
+ <summary>
+ Removes the appender with the specified name from the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.IAppenderAttachable.Appenders">
+ <summary>
+ Gets all attached appenders.
+ </summary>
+ <value>
+ A collection of attached appenders.
+ </value>
+ <remarks>
+ <para>
+ Gets a collection of attached appenders.
+ If there are no attached appenders the
+ implementation should return an empty
+ collection rather than <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.BufferingForwardingAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.OnClose">
+ <summary>
+ Closes the appender and releases resources.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Send the events.
+ </summary>
+ <param name="events">The events that need to be send.</param>
+ <remarks>
+ <para>
+ Forwards the events to the attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this
+ instance.
+ </summary>
+ <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param>
+ <remarks>
+ <para>
+ If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of
+ appenders, then it won't be added again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)">
+ <summary>
+ Looks for the appender with the specified name.
+ </summary>
+ <param name="name">The name of the appender to lookup.</param>
+ <returns>
+ The appender with the specified name, or <c>null</c>.
+ </returns>
+ <remarks>
+ <para>
+ Get the named appender attached to this buffering appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders">
+ <summary>
+ Removes all previously added appenders from this appender.
+ </summary>
+ <remarks>
+ <para>
+ This is useful when re-reading configuration information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Removes the specified appender from the list of appenders.
+ </summary>
+ <param name="appender">The appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)">
+ <summary>
+ Removes the appender with the specified name from the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl">
+ <summary>
+ Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.BufferingForwardingAppender.Appenders">
+ <summary>
+ Gets the appenders contained in this appender as an
+ <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <remarks>
+ If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/>
+ is returned.
+ </remarks>
+ <returns>
+ A collection of the appenders in this appender.
+ </returns>
+ </member>
+ <member name="T:log4net.Appender.ColoredConsoleAppender">
+ <summary>
+ Appends logging events to the console.
+ </summary>
+ <remarks>
+ <para>
+ ColoredConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific type of message to be set.
+ </para>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ NOTE: This appender writes directly to the application's attached console
+ not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.
+ The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be
+ programmatically redirected (for example NUnit does this to capture program output).
+ This appender will ignore these redirections because it needs to use Win32
+ API calls to colorize the output. To respect these redirections the <see cref="T:log4net.Appender.ConsoleAppender"/>
+ must be used.
+ </para>
+ <para>
+ When configuring the colored console appender, mapping should be
+ specified to map a logging level to a color. For example:
+ </para>
+ <code lang="XML" escaped="true">
+ <mapping>
+ <level value="ERROR"/>
+ <foreColor value="White"/>
+ <backColor value="Red, HighIntensity"/>
+ </mapping>
+ <mapping>
+ <level value="DEBUG"/>
+ <backColor value="Green"/>
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level and ForeColor and BackColor can be any
+ combination of the following values:
+ <list type="bullet">
+ <item><term>Blue</term><description></description></item>
+ <item><term>Green</term><description></description></item>
+ <item><term>Red</term><description></description></item>
+ <item><term>White</term><description></description></item>
+ <item><term>Yellow</term><description></description></item>
+ <item><term>Purple</term><description></description></item>
+ <item><term>Cyan</term><description></description></item>
+ <item><term>HighIntensity</term><description></description></item>
+ </list>
+ </para>
+ </remarks>
+ <author>Rick Hobbs</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <param name="writeToErrorStream">flag set to <c>true</c> to write to the console error stream</param>
+ <remarks>
+ When <paramref name="writeToErrorStream"/> is set to <c>true</c>, output is written to
+ the standard error output stream. Otherwise, output is written to the standard
+ output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)">
+ <summary>
+ Add a mapping of level to color - done by the config file
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.ColoredConsoleAppender.LevelColors"/> mapping to this appender.
+ Each mapping defines the foreground and background colors
+ for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to color mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream">
+ <summary>
+ Flag to write output to the error stream rather than the standard output stream
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to color value
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter">
+ <summary>
+ The console output stream writer to write to
+ </summary>
+ <remarks>
+ <para>
+ This writer is not thread safe.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.ColoredConsoleAppender.Colors">
+ <summary>
+ The enum of possible color values for use with the color mapping method
+ </summary>
+ <remarks>
+ <para>
+ The following flags can be combined together to
+ form the colors.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.ColoredConsoleAppender"/>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Blue">
+ <summary>
+ color is blue
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Green">
+ <summary>
+ color is green
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Red">
+ <summary>
+ color is red
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.White">
+ <summary>
+ color is white
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow">
+ <summary>
+ color is yellow
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Purple">
+ <summary>
+ color is purple
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan">
+ <summary>
+ color is cyan
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity">
+ <summary>
+ color is intensified
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.ColoredConsoleAppender.LevelColors">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and the color it should be displayed in.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions">
+ <summary>
+ Initialize the options for the object
+ </summary>
+ <remarks>
+ <para>
+ Combine the <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor"/> together.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor">
+ <summary>
+ The mapped foreground color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped foreground color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor">
+ <summary>
+ The mapped background color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped background color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor">
+ <summary>
+ The combined <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor"/> suitable for
+ setting the console color.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.ConsoleAppender">
+ <summary>
+ Appends logging events to the console.
+ </summary>
+ <remarks>
+ <para>
+ ConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user.
+ </para>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ NOTE: This appender writes each message to the <c>System.Console.Out</c> or
+ <c>System.Console.Error</c> that is set at the time the event is appended.
+ Therefore it is possible to programmatically redirect the output of this appender
+ (for example NUnit does this to capture program output). While this is the desired
+ behavior of this appender it may have security implications in your application.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Appender.ConsoleAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ConsoleAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <param name="writeToErrorStream">flag set to <c>true</c> to write to the console error stream</param>
+ <remarks>
+ When <paramref name="writeToErrorStream"/> is set to <c>true</c>, output is written to
+ the standard error output stream. Otherwise, output is written to the standard
+ output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ConsoleAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ConsoleAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.DebugAppender">
+ <summary>
+ Appends log events to the <see cref="T:System.Diagnostics.Debug"/> system.
+ </summary>
+ <remarks>
+ <para>
+ The application configuration file can be used to control what listeners
+ are actually used. See the MSDN documentation for the
+ <see cref="T:System.Diagnostics.Debug"/> class for details on configuring the
+ debug system.
+ </para>
+ <para>
+ Events are written using the <see cref="M:System.Diagnostics.Debug.Write(string,string)"/>
+ method. The event's logger name is passed as the value for the category name to the Write method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.DebugAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/>
+ with a specified layout.
+ </summary>
+ <param name="layout">The layout to use with this appender.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system.
+ If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is <c>true</c> then the <see cref="M:System.Diagnostics.Debug.Flush"/>
+ is called.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.DebugAppender.m_immediateFlush">
+ <summary>
+ Immediate flush means that the underlying writer or output stream
+ will be flushed at the end of each append operation.
+ </summary>
+ <remarks>
+ <para>
+ Immediate flush is slower but ensures that each append request is
+ actually written. If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is set to
+ <c>false</c>, then there is a good chance that the last few
+ logs events are not actually written to persistent media if and
+ when the application crashes.
+ </para>
+ <para>
+ The default value is <c>true</c>.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.DebugAppender.ImmediateFlush">
+ <summary>
+ Gets or sets a value that indicates whether the appender will
+ flush at the end of each write.
+ </summary>
+ <remarks>
+ <para>The default behavior is to flush at the end of each
+ write. If the option is set to<c>false</c>, then the underlying
+ stream can defer writing to physical medium to a later time.
+ </para>
+ <para>
+ Avoiding the flush operation at the end of each append results
+ in a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.DebugAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.EventLogAppender">
+ <summary>
+ Writes events to the system event log.
+ </summary>
+ <remarks>
+ <para>
+ The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.
+ See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog
+ </para>
+ <para>
+ The <c>EventID</c> of the event log entry can be
+ set using the <c>EventID</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ </para>
+ <para>
+ The <c>Category</c> of the event log entry can be
+ set using the <c>Category</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ </para>
+ <para>
+ There is a limit of 32K characters for an event log message
+ </para>
+ <para>
+ When configuring the EventLogAppender a mapping can be
+ specified to map a logging level to an event log entry type. For example:
+ </para>
+ <code lang="XML">
+ <mapping>
+ <level value="ERROR" />
+ <eventLogEntryType value="Error" />
+ </mapping>
+ <mapping>
+ <level value="DEBUG" />
+ <eventLogEntryType value="Information" />
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level and eventLogEntryType can be any value
+ from the <see cref="T:System.Diagnostics.EventLogEntryType"/> enum, i.e.:
+ <list type="bullet">
+ <item><term>Error</term><description>an error event</description></item>
+ <item><term>Warning</term><description>a warning event</description></item>
+ <item><term>Information</term><description>an informational event</description></item>
+ </list>
+ </para>
+ </remarks>
+ <author>Aspi Havewala</author>
+ <author>Douglas de la Torre</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Thomas Voss</author>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class
+ with the specified <see cref="T:log4net.Layout.ILayout"/>.
+ </summary>
+ <param name="layout">The <see cref="T:log4net.Layout.ILayout"/> to use with this appender.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)">
+ <summary>
+ Add a mapping of level to <see cref="T:System.Diagnostics.EventLogEntryType"/> - done by the config file
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType"/> mapping to this appender.
+ Each mapping defines the event log entry type for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)">
+ <summary>
+ Create an event log source
+ </summary>
+ <remarks>
+ Uses different API calls under NET_2_0
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
+ method.
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>Writes the event to the system event log using the
+ <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/>.</para>
+
+ <para>If the event has an <c>EventID</c> property (see <see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ set then this integer will be used as the event log event id.</para>
+
+ <para>
+ There is a limit of 32K characters for an event log message
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)">
+ <summary>
+ Get the equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="level"/>
+ </summary>
+ <param name="level">the Level to convert to an EventLogEntryType</param>
+ <returns>The equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="level"/></returns>
+ <remarks>
+ Because there are fewer applicable <see cref="T:System.Diagnostics.EventLogEntryType"/>
+ values to use in logging levels than there are in the
+ <see cref="T:log4net.Core.Level"/> this is a one way mapping. There is
+ a loss of information during the conversion.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_logName">
+ <summary>
+ The log name is the section in the event logs where the messages
+ are stored.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_applicationName">
+ <summary>
+ Name of the application to use when logging. This appears in the
+ application column of the event log named by <see cref="F:log4net.Appender.EventLogAppender.m_logName"/>.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_machineName">
+ <summary>
+ The name of the machine which holds the event log. This is
+ currently only allowed to be '.' i.e. the current machine.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to EventLogEntryType
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_eventId">
+ <summary>
+ The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_category">
+ <summary>
+ The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.declaringType">
+ <summary>
+ The fully qualified type of the EventLogAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE_DEFAULT">
+ <summary>
+ The maximum size supported by default.
+ </summary>
+ <remarks>
+ http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx
+ The 32766 documented max size is two bytes shy of 32K (I'm assuming 32766
+ may leave space for a two byte null terminator of #0#0). The 32766 max
+ length is what the .NET 4.0 source code checks for, but this is WRONG!
+ Strings with a length > 31839 on Windows Vista or higher can CORRUPT
+ the event log! See: System.Diagnostics.EventLogInternal.InternalWriteEvent()
+ for the use of the 32766 max size.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE_VISTA_OR_NEWER">
+ <summary>
+ The maximum size supported by a windows operating system that is vista
+ or newer.
+ </summary>
+ <remarks>
+ See ReportEvent API:
+ http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx
+ ReportEvent's lpStrings parameter:
+ "A pointer to a buffer containing an array of
+ null-terminated strings that are merged into the message before Event Viewer
+ displays the string to the user. This parameter must be a valid pointer
+ (or NULL), even if wNumStrings is zero. Each string is limited to 31,839 characters."
+
+ Going beyond the size of 31839 will (at some point) corrupt the event log on Windows
+ Vista or higher! It may succeed for a while...but you will eventually run into the
+ error: "System.ComponentModel.Win32Exception : A device attached to the system is
+ not functioning", and the event log will then be corrupt (I was able to corrupt
+ an event log using a length of 31877 on Windows 7).
+
+ The max size for Windows Vista or higher is documented here:
+ http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx.
+ Going over this size may succeed a few times but the buffer will overrun and
+ eventually corrupt the log (based on testing).
+
+ The maxEventMsgSize size is based on the max buffer size of the lpStrings parameter of the ReportEvent API.
+ The documented max size for EventLog.WriteEntry for Windows Vista and higher is 31839, but I'm leaving room for a
+ terminator of #0#0, as we cannot see the source of ReportEvent (though we could use an API monitor to examine the
+ buffer, given enough time).
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE">
+ <summary>
+ The maximum size that the operating system supports for
+ a event log message.
+ </summary>
+ <remarks>
+ Used to determine the maximum string length that can be written
+ to the operating system event log and eventually truncate a string
+ that exceeds the limits.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.GetMaxEventLogMessageSize">
+ <summary>
+ This method determines the maximum event log message size allowed for
+ the current environment.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.LogName">
+ <summary>
+ The name of the log where messages will be stored.
+ </summary>
+ <value>
+ The string name of the log where messages will be stored.
+ </value>
+ <remarks>
+ <para>This is the name of the log as it appears in the Event Viewer
+ tree. The default value is to log into the <c>Application</c>
+ log, this is where most applications write their events. However
+ if you need a separate log for your application (or applications)
+ then you should set the <see cref="P:log4net.Appender.EventLogAppender.LogName"/> appropriately.</para>
+ <para>This should not be used to distinguish your event log messages
+ from those of other applications, the <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/>
+ property should be used to distinguish events. This property should be
+ used to group together events into a single log.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.ApplicationName">
+ <summary>
+ Property used to set the Application name. This appears in the
+ event logs when logging.
+ </summary>
+ <value>
+ The string used to distinguish events from different sources.
+ </value>
+ <remarks>
+ Sets the event log source property.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.MachineName">
+ <summary>
+ This property is used to return the name of the computer to use
+ when accessing the event logs. Currently, this is the current
+ computer, denoted by a dot "."
+ </summary>
+ <value>
+ The string name of the machine holding the event log that
+ will be logged into.
+ </value>
+ <remarks>
+ This property cannot be changed. It is currently set to '.'
+ i.e. the local machine. This may be changed in future.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog.
+ </value>
+ <remarks>
+ <para>
+ The system security context used to write to the EventLog.
+ </para>
+ <para>
+ Unless a <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.EventId">
+ <summary>
+ Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ <remarks>
+ <para>
+ The <c>EventID</c> of the event log entry will normally be
+ set using the <c>EventID</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ This property provides the fallback value which defaults to 0.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.Category">
+ <summary>
+ Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ <remarks>
+ <para>
+ The <c>Category</c> of the event log entry will normally be
+ set using the <c>Category</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ This property provides the fallback value which defaults to 0.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and its event log entry type.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType">
+ <summary>
+ The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender">
+ <summary>
+ Appends logging events to a file.
+ </summary>
+ <remarks>
+ <para>
+ Logging events are sent to the file specified by
+ the <see cref="P:log4net.Appender.FileAppender.File"/> property.
+ </para>
+ <para>
+ The file can be opened in either append or overwrite mode
+ by specifying the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property.
+ If the file path is relative it is taken as relative from
+ the application base directory. The file encoding can be
+ specified by setting the <see cref="P:log4net.Appender.FileAppender.Encoding"/> property.
+ </para>
+ <para>
+ The layout's <see cref="P:log4net.Layout.ILayout.Header"/> and <see cref="P:log4net.Layout.ILayout.Footer"/>
+ values will be written each time the file is opened and closed
+ respectively. If the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is <see langword="true"/>
+ then the file may contain multiple copies of the header and footer.
+ </para>
+ <para>
+ This appender will first try to open the file for writing when <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/>
+ is called. This will typically be during configuration.
+ If the file cannot be opened for writing the appender will attempt
+ to open the file again each time a message is logged to the appender.
+ If the file cannot be opened for writing when a message is logged then
+ the message will be discarded by this appender.
+ </para>
+ <para>
+ The <see cref="T:log4net.Appender.FileAppender"/> supports pluggable file locking models via
+ the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> property.
+ The default behavior, implemented by <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>
+ is to obtain an exclusive write lock on the file until this appender is closed.
+ The alternative models only hold a
+ write lock while the appender is writing a logging event (<see cref="T:log4net.Appender.FileAppender.MinimalLock"/>)
+ or synchronize by using a named system wide Mutex (<see cref="T:log4net.Appender.FileAppender.InterProcessLock"/>).
+ </para>
+ <para>
+ All locking strategies have issues and you should seriously consider using a different strategy that
+ avoids having multiple processes logging to the same file.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Rodrigo B. de Oliveira</author>
+ <author>Douglas de la Torre</author>
+ <author>Niall Daley</author>
+ </member>
+ <member name="T:log4net.Appender.TextWriterAppender">
+ <summary>
+ Sends logging events to a <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ An Appender that writes to a <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ <para>
+ This appender may be used stand alone if initialized with an appropriate
+ writer, however it is typically used as a base class for an appender that
+ can open a <see cref="T:System.IO.TextWriter"/> to write to.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Douglas de la Torre</author>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and
+ sets the output destination to a new <see cref="T:System.IO.StreamWriter"/> initialized
+ with the specified <see cref="T:System.IO.Stream"/>.
+ </summary>
+ <param name="layout">The layout to use with this appender.</param>
+ <param name="os">The <see cref="T:System.IO.Stream"/> to output to.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and sets
+ the output destination to the specified <see cref="T:System.IO.StreamWriter"/>.
+ </summary>
+ <param name="layout">The layout to use with this appender</param>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to output to</param>
+ <remarks>
+ The <see cref="T:System.IO.TextWriter"/> must have been previously opened.
+ </remarks>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.PreAppendCheck">
+ <summary>
+ This method determines if there is a sense in attempting to append.
+ </summary>
+ <remarks>
+ <para>
+ This method checks if an output target has been set and if a
+ layout has been set.
+ </para>
+ </remarks>
+ <returns><c>false</c> if any of the preconditions fail.</returns>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
+ method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes a log statement to the output stream if the output stream exists
+ and is writable.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent[])"/>
+ method.
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ This method writes all the bulk logged events to the output writer
+ before flushing the stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.OnClose">
+ <summary>
+ Close this appender instance. The underlying stream or writer is also closed.
+ </summary>
+ <remarks>
+ Closed appenders cannot be reused.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter">
+ <summary>
+ Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.CloseWriter">
+ <summary>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.Reset">
+ <summary>
+ Clears internal references to the underlying <see cref="T:System.IO.TextWriter"/>
+ and other variables.
+ </summary>
+ <remarks>
+ <para>
+ Subclasses can override this method for an alternate closing behavior.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.WriteFooter">
+ <summary>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.WriteHeader">
+ <summary>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.PrepareWriter">
+ <summary>
+ Called to allow a subclass to lazily initialize the writer
+ </summary>
+ <remarks>
+ <para>
+ This method is called when an event is logged and the <see cref="P:log4net.Appender.TextWriterAppender.Writer"/> or
+ <see cref="P:log4net.Appender.TextWriterAppender.QuietWriter"/> have not been set. This allows a subclass to
+ attempt to initialize the writer multiple times.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TextWriterAppender.m_qtw">
+ <summary>
+ This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
+ will be written to.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.TextWriterAppender.m_immediateFlush">
+ <summary>
+ Immediate flush means that the underlying <see cref="T:System.IO.TextWriter"/>
+ or output stream will be flushed at the end of each append operation.
+ </summary>
+ <remarks>
+ <para>
+ Immediate flush is slower but ensures that each append request is
+ actually written. If <see cref="P:log4net.Appender.TextWriterAppender.ImmediateFlush"/> is set to
+ <c>false</c>, then there is a good chance that the last few
+ logging events are not actually persisted if and when the application
+ crashes.
+ </para>
+ <para>
+ The default value is <c>true</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TextWriterAppender.declaringType">
+ <summary>
+ The fully qualified type of the TextWriterAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.ImmediateFlush">
+ <summary>
+ Gets or set whether the appender will flush at the end
+ of each append operation.
+ </summary>
+ <value>
+ <para>
+ The default behavior is to flush at the end of each
+ append operation.
+ </para>
+ <para>
+ If this option is set to <c>false</c>, then the underlying
+ stream can defer persisting the logging event to a later
+ time.
+ </para>
+ </value>
+ <remarks>
+ Avoiding the flush operation at the end of each append results in
+ a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.Writer">
+ <summary>
+ Sets the <see cref="T:System.IO.TextWriter"/> where the log output will go.
+ </summary>
+ <remarks>
+ <para>
+ The specified <see cref="T:System.IO.TextWriter"/> must be open and writable.
+ </para>
+ <para>
+ The <see cref="T:System.IO.TextWriter"/> will be closed when the appender
+ instance is closed.
+ </para>
+ <para>
+ <b>Note:</b> Logging to an unopened <see cref="T:System.IO.TextWriter"/> will fail.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.ErrorHandler">
+ <summary>
+ Gets or set the <see cref="T:log4net.Core.IErrorHandler"/> and the underlying
+ <see cref="T:log4net.Util.QuietTextWriter"/>, if any, for this appender.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.IErrorHandler"/> for this appender.
+ </value>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.QuietWriter">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
+ will be written to.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Util.QuietTextWriter"/> where logging events are written.
+ </value>
+ <remarks>
+ <para>
+ This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
+ will be written to.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)">
+ <summary>
+ Construct a new appender using the layout, file and append mode.
+ </summary>
+ <param name="layout">the layout to use with this appender</param>
+ <param name="filename">the full path to the file to write to</param>
+ <param name="append">flag to indicate if the file should be appended to</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)">
+ <summary>
+ Construct a new appender using the layout and file specified.
+ The file will be appended to.
+ </summary>
+ <param name="layout">the layout to use with this appender</param>
+ <param name="filename">the full path to the file to write to</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ActivateOptions">
+ <summary>
+ Activate the options on the file appender.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ This will cause the file to be opened.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.Reset">
+ <summary>
+ Closes any previously opened file and calls the parent's <see cref="M:log4net.Appender.TextWriterAppender.Reset"/>.
+ </summary>
+ <remarks>
+ <para>
+ Resets the filename and the file stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.PrepareWriter">
+ <summary>
+ Called to initialize the file writer
+ </summary>
+ <remarks>
+ <para>
+ Will be called for each logged message until the file is
+ successfully opened.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
+ method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes a log statement to the output stream if the output stream exists
+ and is writable.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent[])"/>
+ method.
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ Acquires the output file locks once before writing all the events to
+ the stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.WriteFooter">
+ <summary>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.WriteHeader">
+ <summary>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.CloseWriter">
+ <summary>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.CloseFile">
+ <summary>
+ Closes the previously opened file.
+ </summary>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Layout.ILayout.Footer"/> to the file and then
+ closes the file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)">
+ <summary>
+ Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.
+ </summary>
+ <param name="fileName">The path to the log file. Must be a fully qualified path.</param>
+ <param name="append">If true will append to fileName. Otherwise will truncate fileName</param>
+ <remarks>
+ <para>
+ Calls <see cref="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)"/> but guarantees not to throw an exception.
+ Errors are passed to the <see cref="P:log4net.Appender.TextWriterAppender.ErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)">
+ <summary>
+ Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.
+ </summary>
+ <param name="fileName">The path to the log file. Must be a fully qualified path.</param>
+ <param name="append">If true will append to fileName. Otherwise will truncate fileName</param>
+ <remarks>
+ <para>
+ If there was already an opened file, then the previous file
+ is closed first.
+ </para>
+ <para>
+ This method will ensure that the directory structure
+ for the <paramref name="fileName"/> specified exists.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)">
+ <summary>
+ Sets the quiet writer used for file output
+ </summary>
+ <param name="fileStream">the file stream that has been opened for writing</param>
+ <remarks>
+ <para>
+ This implementation of <see cref="M:SetQWForFiles(Stream)"/> creates a <see cref="T:System.IO.StreamWriter"/>
+ over the <paramref name="fileStream"/> and passes it to the
+ <see cref="M:SetQWForFiles(TextWriter)"/> method.
+ </para>
+ <para>
+ This method can be overridden by sub classes that want to wrap the
+ <see cref="T:System.IO.Stream"/> in some way, for example to encrypt the output
+ data using a <c>System.Security.Cryptography.CryptoStream</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)">
+ <summary>
+ Sets the quiet writer being used.
+ </summary>
+ <param name="writer">the writer over the file stream that has been opened for writing</param>
+ <remarks>
+ <para>
+ This method can be overridden by sub classes that want to
+ wrap the <see cref="T:System.IO.TextWriter"/> in some way.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)">
+ <summary>
+ Convert a path into a fully qualified path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>The fully qualified path.</returns>
+ <remarks>
+ <para>
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_appendToFile">
+ <summary>
+ Flag to indicate if we should append to the file
+ or overwrite the file. The default is to append.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_fileName">
+ <summary>
+ The name of the log file.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_encoding">
+ <summary>
+ The encoding to use for the file stream.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_stream">
+ <summary>
+ The stream to log to. Has added locking semantics
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_lockingModel">
+ <summary>
+ The locking model to use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.declaringType">
+ <summary>
+ The fully qualified type of the FileAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.File">
+ <summary>
+ Gets or sets the path to the file that logging will be written to.
+ </summary>
+ <value>
+ The path to the file that logging will be written to.
+ </value>
+ <remarks>
+ <para>
+ If the path is relative it is taken as relative from
+ the application base directory.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.AppendToFile">
+ <summary>
+ Gets or sets a flag that indicates whether the file should be
+ appended to or overwritten.
+ </summary>
+ <value>
+ Indicates whether the file should be appended to or overwritten.
+ </value>
+ <remarks>
+ <para>
+ If the value is set to false then the file will be overwritten, if
+ it is set to true then the file will be appended to.
+ </para>
+ The default value is true.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.Encoding">
+ <summary>
+ Gets or sets <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file.
+ </value>
+ <remarks>
+ <para>
+ The default encoding set is <see cref="P:System.Text.Encoding.Default"/>
+ which is the encoding for the system's current ANSI code page.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.LockingModel">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to lock the file.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file.
+ </para>
+ <para>
+ There are three built in locking models, <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>, <see cref="T:log4net.Appender.FileAppender.MinimalLock"/> and <see cref="T:log4net.Appender.FileAppender.InterProcessLock"/> .
+ The first locks the file from the start of logging to the end, the
+ second locks only for the minimal amount of time when logging each message
+ and the last synchronizes processes using a named system wide Mutex.
+ </para>
+ <para>
+ The default locking model is the <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.LockingStream">
+ <summary>
+ Write only <see cref="T:System.IO.Stream"/> that uses the <see cref="T:log4net.Appender.FileAppender.LockingModelBase"/>
+ to manage access to an underlying resource.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)">
+ <summary>
+ True asynchronous writes are not supported, the implementation forces a synchronous write.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LogException">
+ <summary>
+ Exception base type for log4net.
+ </summary>
+ <remarks>
+ <para>
+ This type extends <see cref="T:System.ApplicationException"/>. It
+ does not add any new functionality but does differentiate the
+ type of exception being thrown.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor(System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="message">A message to include with the exception.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class with
+ the specified message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor(System.String,System.Exception)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="message">A message to include with the exception.</param>
+ <param name="innerException">A nested exception to include.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class
+ with the specified message and inner exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serialization constructor
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class
+ with serialized data.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.LockingModelBase">
+ <summary>
+ Locking model base class
+ </summary>
+ <remarks>
+ <para>
+ Base class for the locking models available to the <see cref="T:log4net.Appender.FileAppender"/> derived loggers.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Open the output file
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/>,
+ <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Acquire the lock on the file in preparation for writing to it.
+ Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/>
+ must be called to release the lock on the output file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock">
+ <summary>
+ Release the lock on the file
+ </summary>
+ <remarks>
+ <para>
+ Release the lock on the file. No further writes will be made to the
+ stream until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)">
+ <summary>
+ Helper method that creates a FileStream under CurrentAppender's SecurityContext.
+ </summary>
+ <remarks>
+ <para>
+ Typically called during OpenFile or AcquireLock.
+ </para>
+ <para>
+ If the directory portion of the <paramref name="filename"/> does not exist, it is created
+ via Directory.CreateDirecctory.
+ </para>
+ </remarks>
+ <param name="filename"></param>
+ <param name="append"></param>
+ <param name="fileShare"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)">
+ <summary>
+ Helper method to close <paramref name="stream"/> under CurrentAppender's SecurityContext.
+ </summary>
+ <remarks>
+ Does not set <paramref name="stream"/> to null.
+ </remarks>
+ <param name="stream"></param>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel
+ </summary>
+ <value>
+ The <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel
+ </value>
+ <remarks>
+ <para>
+ The file appender this locking model is attached to and working on
+ behalf of.
+ </para>
+ <para>
+ The file appender is used to locate the security context and the error handler to use.
+ </para>
+ <para>
+ The value of this property will be set before <see cref="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)"/> is
+ called.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.ExclusiveLock">
+ <summary>
+ Hold an exclusive lock on the output file
+ </summary>
+ <remarks>
+ <para>
+ Open the file once for writing and hold it open until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/> is called.
+ Maintains an exclusive lock on the file during this time.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Open the file specified and prepare for logging.
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/>,
+ <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Does nothing. The lock is already taken
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock">
+ <summary>
+ Release the lock on the file
+ </summary>
+ <remarks>
+ <para>
+ Does nothing. The lock will be released when the file is closed.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.MinimalLock">
+ <summary>
+ Acquires the file lock for each write
+ </summary>
+ <remarks>
+ <para>
+ Opens the file once for each <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>/<see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> cycle,
+ thus holding the lock for the minimal amount of time. This method of locking
+ is considerably slower than <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/> but allows
+ other processes to move/delete the log file whilst logging continues.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Prepares to open the file when the first message is logged.
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>,
+ <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.MinimalLock.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Acquire the lock on the file in preparation for writing to it.
+ Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/>
+ must be called to release the lock on the output file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock">
+ <summary>
+ Release the lock on the file
+ </summary>
+ <remarks>
+ <para>
+ Release the lock on the file. No further writes will be made to the
+ stream until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.InterProcessLock">
+ <summary>
+ Provides cross-process file locking.
+ </summary>
+ <author>Ron Grabowski</author>
+ <author>Steve Wranovsky</author>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Open the file specified and prepare for logging.
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock"/>,
+ -<see cref="M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.InterProcessLock.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Does nothing. The lock is already taken
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.ForwardingAppender">
+ <summary>
+ This appender forwards logging events to attached appenders.
+ </summary>
+ <remarks>
+ <para>
+ The forwarding appender can be used to specify different thresholds
+ and filters for the same appender at different locations within the hierarchy.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ForwardingAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.OnClose">
+ <summary>
+ Closes the appender and releases resources.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Forward the logging event to the attached appenders
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Delivers the logging event to all the attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ Forward the logging events to the attached appenders
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ Delivers the logging events to all the attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this
+ instance.
+ </summary>
+ <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param>
+ <remarks>
+ <para>
+ If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of
+ appenders, then it won't be added again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.GetAppender(System.String)">
+ <summary>
+ Looks for the appender with the specified name.
+ </summary>
+ <param name="name">The name of the appender to lookup.</param>
+ <returns>
+ The appender with the specified name, or <c>null</c>.
+ </returns>
+ <remarks>
+ <para>
+ Get the named appender attached to this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.RemoveAllAppenders">
+ <summary>
+ Removes all previously added appenders from this appender.
+ </summary>
+ <remarks>
+ <para>
+ This is useful when re-reading configuration information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Removes the specified appender from the list of appenders.
+ </summary>
+ <param name="appender">The appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)">
+ <summary>
+ Removes the appender with the specified name from the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl">
+ <summary>
+ Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.ForwardingAppender.Appenders">
+ <summary>
+ Gets the appenders contained in this appender as an
+ <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <remarks>
+ If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/>
+ is returned.
+ </remarks>
+ <returns>
+ A collection of the appenders in this appender.
+ </returns>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender">
+ <summary>
+ Logs events to a local syslog service.
+ </summary>
+ <remarks>
+ <note>
+ This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.
+ If these functions are not available on the local system then this appender will not work!
+ </note>
+ <para>
+ The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and
+ POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.
+ </para>
+ <para>
+ This appender talks to a local syslog service. If you need to log to a remote syslog
+ daemon and you cannot configure your local syslog service to do this you may be
+ able to use the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> to log via UDP.
+ </para>
+ <para>
+ Syslog messages must have a facility and and a severity. The severity
+ is derived from the Level of the logging event.
+ The facility must be chosen from the set of defined syslog
+ <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The facilities list is predefined
+ and cannot be extended.
+ </para>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>).
+ </para>
+ </remarks>
+ <author>Rob Lyon</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class.
+ </summary>
+ <remarks>
+ This instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class is set up to write
+ to a local syslog service.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)">
+ <summary>
+ Add a mapping of level to severity
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Adds a <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/> to this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to a remote syslog daemon.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.OnClose">
+ <summary>
+ Close the syslog when the appender is closed
+ </summary>
+ <remarks>
+ <para>
+ Close the syslog when the appender is closed
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)">
+ <summary>
+ Translates a log4net level to a syslog severity.
+ </summary>
+ <param name="level">A log4net level.</param>
+ <returns>A syslog severity.</returns>
+ <remarks>
+ <para>
+ Translates a log4net level to a syslog severity.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)">
+ <summary>
+ Generate a syslog priority.
+ </summary>
+ <param name="facility">The syslog facility.</param>
+ <param name="severity">The syslog severity.</param>
+ <returns>A syslog priority.</returns>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_facility">
+ <summary>
+ The facility. The default facility is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_identity">
+ <summary>
+ The message identity
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity">
+ <summary>
+ Marshaled handle to the identity string. We have to hold on to the
+ string as the <c>openlog</c> and <c>syslog</c> APIs just hold the
+ pointer to the ident and dereference it for each log message.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to syslog severity
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)">
+ <summary>
+ Open connection to system logger.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)">
+ <summary>
+ Generate a log message.
+ </summary>
+ <remarks>
+ <para>
+ The libc syslog method takes a format string and a variable argument list similar
+ to the classic printf function. As this type of vararg list is not supported
+ by C# we need to specify the arguments explicitly. Here we have specified the
+ format string with a single message argument. The caller must set the format
+ string to <c>"%s"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.closelog">
+ <summary>
+ Close descriptor used to write to system logger.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.Identity">
+ <summary>
+ Message identity
+ </summary>
+ <remarks>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.Facility">
+ <summary>
+ Syslog facility
+ </summary>
+ <remarks>
+ Set to one of the <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The list of
+ facilities is predefined and cannot be extended. The default value
+ is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender.SyslogSeverity">
+ <summary>
+ syslog severities
+ </summary>
+ <remarks>
+ <para>
+ The log4net Level maps to a syslog severity using the
+ <see cref="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)"/> method and the <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/>
+ class. The severity is set on <see cref="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency">
+ <summary>
+ system is unusable
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert">
+ <summary>
+ action must be taken immediately
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical">
+ <summary>
+ critical conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error">
+ <summary>
+ error conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning">
+ <summary>
+ warning conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice">
+ <summary>
+ normal but significant condition
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational">
+ <summary>
+ informational
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug">
+ <summary>
+ debug-level messages
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender.SyslogFacility">
+ <summary>
+ syslog facilities
+ </summary>
+ <remarks>
+ <para>
+ The syslog facility defines which subsystem the logging comes from.
+ This is set on the <see cref="P:log4net.Appender.LocalSyslogAppender.Facility"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel">
+ <summary>
+ kernel messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User">
+ <summary>
+ random user-level messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail">
+ <summary>
+ mail system
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons">
+ <summary>
+ system daemons
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization">
+ <summary>
+ security/authorization messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog">
+ <summary>
+ messages generated internally by syslogd
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer">
+ <summary>
+ line printer subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News">
+ <summary>
+ network news subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp">
+ <summary>
+ UUCP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock">
+ <summary>
+ clock (cron/at) daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2">
+ <summary>
+ security/authorization messages (private)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp">
+ <summary>
+ ftp daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp">
+ <summary>
+ NTP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit">
+ <summary>
+ log audit
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert">
+ <summary>
+ log alert
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2">
+ <summary>
+ clock daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender.LevelSeverity">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </summary>
+ <remarks>
+ <para>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity">
+ <summary>
+ The mapped syslog severity for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped syslog severity for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.ManagedColoredConsoleAppender">
+ <summary>
+ Appends colorful logging events to the console, using the .NET 2
+ built-in capabilities.
+ </summary>
+ <remarks>
+ <para>
+ ManagedColoredConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific type of message to be set.
+ </para>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ When configuring the colored console appender, mappings should be
+ specified to map logging levels to colors. For example:
+ </para>
+ <code lang="XML" escaped="true">
+ <mapping>
+ <level value="ERROR"/>
+ <foreColor value="DarkRed"/>
+ <backColor value="White"/>
+ </mapping>
+ <mapping>
+ <level value="WARN"/>
+ <foreColor value="Yellow"/>
+ </mapping>
+ <mapping>
+ <level value="INFO"/>
+ <foreColor value="White"/>
+ </mapping>
+ <mapping>
+ <level value="DEBUG"/>
+ <foreColor value="Blue"/>
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level while
+ ForeColor and BackColor are the values of <see cref="T:System.ConsoleColor"/>
+ enumeration.
+ </para>
+ <para>
+ Based on the ColoredConsoleAppender
+ </para>
+ </remarks>
+ <author>Rick Hobbs</author>
+ <author>Nicko Cadell</author>
+ <author>Pavlos Touboulidis</author>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ManagedColoredConsoleAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ManagedColoredConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.AddMapping(log4net.Appender.ManagedColoredConsoleAppender.LevelColors)">
+ <summary>
+ Add a mapping of level to color - done by the config file
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.ManagedColoredConsoleAppender.LevelColors"/> mapping to this appender.
+ Each mapping defines the foreground and background colors
+ for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to color mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.m_writeToErrorStream">
+ <summary>
+ Flag to write output to the error stream rather than the standard output stream
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to color value
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.ManagedColoredConsoleAppender.LevelColors">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and the color it should be displayed in.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.LevelColors.ForeColor">
+ <summary>
+ The mapped foreground color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped foreground color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.LevelColors.BackColor">
+ <summary>
+ The mapped background color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped background color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.MemoryAppender">
+ <summary>
+ Stores logging events in an array.
+ </summary>
+ <remarks>
+ <para>
+ The memory appender stores all the logging events
+ that are appended in an in-memory array.
+ </para>
+ <para>
+ Use the <see cref="M:log4net.Appender.MemoryAppender.GetEvents"/> method to get
+ the current list of events that have been appended.
+ </para>
+ <para>
+ Use the <see cref="M:Clear()"/> method to clear the
+ current list of events.
+ </para>
+ </remarks>
+ <author>Julian Biddle</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.MemoryAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.GetEvents">
+ <summary>
+ Gets the events that have been logged.
+ </summary>
+ <returns>The events that have been logged</returns>
+ <remarks>
+ <para>
+ Gets the events that have been logged.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>Stores the <paramref name="loggingEvent"/> in the events list.</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.Clear">
+ <summary>
+ Clear the list of events
+ </summary>
+ <remarks>
+ Clear the list of events
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.MemoryAppender.m_eventsList">
+ <summary>
+ The list of events that have been appended.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.MemoryAppender.m_fixFlags">
+ <summary>
+ Value indicating which fields in the event should be fixed
+ </summary>
+ <remarks>
+ By default all fields are fixed
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData">
+ <summary>
+ Gets or sets a value indicating whether only part of the logging event
+ data should be fixed.
+ </summary>
+ <value>
+ <c>true</c> if the appender should only fix part of the logging event
+ data, otherwise <c>false</c>. The default is <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ Setting this property to <c>true</c> will cause only part of the event
+ data to be fixed and stored in the appender, hereby improving performance.
+ </para>
+ <para>
+ See <see cref="M:LoggingEvent.FixVolatileData(bool)"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.MemoryAppender.Fix">
+ <summary>
+ Gets or sets the fields that will be fixed in the event
+ </summary>
+ <remarks>
+ <para>
+ The logging event needs to have certain thread specific values
+ captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/>
+ for details.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.NetSendAppender">
+ <summary>
+ Logs entries by sending network messages using the
+ <see cref="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)"/> native function.
+ </summary>
+ <remarks>
+ <para>
+ You can send messages only to names that are active
+ on the network. If you send the message to a user name,
+ that user must be logged on and running the Messenger
+ service to receive the message.
+ </para>
+ <para>
+ The receiver will get a top most window displaying the
+ messages one at a time, therefore this appender should
+ not be used to deliver a high volume of messages.
+ </para>
+ <para>
+ The following table lists some possible uses for this appender :
+ </para>
+ <para>
+ <list type="table">
+ <listheader>
+ <term>Action</term>
+ <description>Property Value(s)</description>
+ </listheader>
+ <item>
+ <term>Send a message to a user account on the local machine</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of the local machine>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <user name>
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message to a user account on a remote machine</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of the remote machine>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <user name>
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message to a domain user account</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of a domain controller | uninitialized>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <user name>
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message to all the names in a workgroup or domain</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <workgroup name | domain name>*
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message from the local machine to a remote machine</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of the local machine | uninitialized>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <name of the remote machine>
+ </para>
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ <b>Note :</b> security restrictions apply for sending
+ network messages, see <see cref="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)"/>
+ for more information.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ An example configuration section to log information
+ using this appender from the local machine, named
+ LOCAL_PC, to machine OPERATOR_PC :
+ </para>
+ <code lang="XML" escaped="true">
+ <appender name="NetSendAppender_Operator" type="log4net.Appender.NetSendAppender">
+ <server value="LOCAL_PC"/>
+ <recipient value="OPERATOR_PC"/>
+ <layout type="log4net.Layout.PatternLayout" value="%-5p %c [%x] - %m%n"/>
+ </appender>
+ </code>
+ </example>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_server">
+ <summary>
+ The DNS or NetBIOS name of the server on which the function is to execute.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_sender">
+ <summary>
+ The sender of the network message.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_recipient">
+ <summary>
+ The message alias to which the message should be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.#ctor">
+ <summary>
+ Initializes the appender.
+ </summary>
+ <remarks>
+ The default constructor initializes all fields to their default values.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ The appender will be ignored if no <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> was specified.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">The required property <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> was not specified.</exception>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Sends the event using a network message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)">
+ <summary>
+ Sends a buffer of information to a registered message alias.
+ </summary>
+ <param name="serverName">The DNS or NetBIOS name of the server on which the function is to execute.</param>
+ <param name="msgName">The message alias to which the message buffer should be sent</param>
+ <param name="fromName">The originator of the message.</param>
+ <param name="buffer">The message text.</param>
+ <param name="bufferSize">The length, in bytes, of the message text.</param>
+ <remarks>
+ <para>
+ The following restrictions apply for sending network messages:
+ </para>
+ <para>
+ <list type="table">
+ <listheader>
+ <term>Platform</term>
+ <description>Requirements</description>
+ </listheader>
+ <item>
+ <term>Windows NT</term>
+ <description>
+ <para>
+ No special group membership is required to send a network message.
+ </para>
+ <para>
+ Admin, Accounts, Print, or Server Operator group membership is required to
+ successfully send a network message on a remote server.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Windows 2000 or later</term>
+ <description>
+ <para>
+ If you send a message on a domain controller that is running Active Directory,
+ access is allowed or denied based on the access control list (ACL) for the securable
+ object. The default ACL permits only Domain Admins and Account Operators to send a network message.
+ </para>
+ <para>
+ On a member server or workstation, only Administrators and Server Operators can send a network message.
+ </para>
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ For more information see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp">Security Requirements for the Network Management Functions</a>.
+ </para>
+ </remarks>
+ <returns>
+ <para>
+ If the function succeeds, the return value is zero.
+ </para>
+ </returns>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.Sender">
+ <summary>
+ Gets or sets the sender of the message.
+ </summary>
+ <value>
+ The sender of the message.
+ </value>
+ <remarks>
+ If this property is not specified, the message is sent from the local computer.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.Recipient">
+ <summary>
+ Gets or sets the message alias to which the message should be sent.
+ </summary>
+ <value>
+ The recipient of the message.
+ </value>
+ <remarks>
+ This property should always be specified in order to send a message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.Server">
+ <summary>
+ Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.
+ </summary>
+ <value>
+ DNS or NetBIOS name of the remote server on which the function is to execute.
+ </value>
+ <remarks>
+ <para>
+ For Windows NT 4.0 and earlier, the string should begin with \\.
+ </para>
+ <para>
+ If this property is not specified, the local computer is used.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> used to call the NetSend method.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> used to call the NetSend method.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.OutputDebugStringAppender">
+ <summary>
+ Appends log events to the OutputDebugString system.
+ </summary>
+ <remarks>
+ <para>
+ OutputDebugStringAppender appends log events to the
+ OutputDebugString system.
+ </para>
+ <para>
+ The string is passed to the native <c>OutputDebugString</c>
+ function.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.OutputDebugStringAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.OutputDebugStringAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Write the logging event to the output debug string API
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>
+ Write the logging event to the output debug string API
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)">
+ <summary>
+ Stub for OutputDebugString native method
+ </summary>
+ <param name="message">the string to output</param>
+ <remarks>
+ <para>
+ Stub for OutputDebugString native method
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.OutputDebugStringAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender">
+ <summary>
+ Logs events to a remote syslog daemon.
+ </summary>
+ <remarks>
+ <para>
+ The BSD syslog protocol is used to remotely log to
+ a syslog daemon. The syslogd listens for for messages
+ on UDP port 514.
+ </para>
+ <para>
+ The syslog UDP protocol is not authenticated. Most syslog daemons
+ do not accept remote log messages because of the security implications.
+ You may be able to use the LocalSyslogAppender to talk to a local
+ syslog service.
+ </para>
+ <para>
+ There is an RFC 3164 that claims to document the BSD Syslog Protocol.
+ This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.
+ This appender generates what the RFC calls an "Original Device Message",
+ i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation
+ this format of message will be accepted by all current syslog daemon
+ implementations. The daemon will attach the current time and the source
+ hostname or IP address to any messages received.
+ </para>
+ <para>
+ Syslog messages must have a facility and and a severity. The severity
+ is derived from the Level of the logging event.
+ The facility must be chosen from the set of defined syslog
+ <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The facilities list is predefined
+ and cannot be extended.
+ </para>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>).
+ </para>
+ </remarks>
+ <author>Rob Lyon</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Appender.UdpAppender">
+ <summary>
+ Sends logging events as connectionless UDP datagrams to a remote host or a
+ multicast group using an <see cref="T:System.Net.Sockets.UdpClient"/>.
+ </summary>
+ <remarks>
+ <para>
+ UDP guarantees neither that messages arrive, nor that they arrive in the correct order.
+ </para>
+ <para>
+ To view the logging results, a custom application can be developed that listens for logging
+ events.
+ </para>
+ <para>
+ When decoding events send via this appender remember to use the same encoding
+ to decode the events as was used to send the events. See the <see cref="P:log4net.Appender.UdpAppender.Encoding"/>
+ property to specify the encoding to use.
+ </para>
+ </remarks>
+ <example>
+ This example shows how to log receive logging events that are sent
+ on IP address 244.0.0.1 and port 8080 to the console. The event is
+ encoded in the packet as a unicode string and it is decoded as such.
+ <code lang="C#">
+ IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
+ UdpClient udpClient;
+ byte[] buffer;
+ string loggingEvent;
+
+ try
+ {
+ udpClient = new UdpClient(8080);
+
+ while(true)
+ {
+ buffer = udpClient.Receive(ref remoteEndPoint);
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);
+ Console.WriteLine(loggingEvent);
+ }
+ }
+ catch(Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+ </code>
+ <code lang="Visual Basic">
+ Dim remoteEndPoint as IPEndPoint
+ Dim udpClient as UdpClient
+ Dim buffer as Byte()
+ Dim loggingEvent as String
+
+ Try
+ remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)
+ udpClient = new UdpClient(8080)
+
+ While True
+ buffer = udpClient.Receive(ByRef remoteEndPoint)
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)
+ Console.WriteLine(loggingEvent)
+ Wend
+ Catch e As Exception
+ Console.WriteLine(e.ToString())
+ End Try
+ </code>
+ <para>
+ An example configuration section to log information using this appender to the
+ IP 224.0.0.1 on port 8080:
+ </para>
+ <code lang="XML" escaped="true">
+ <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
+ <remoteAddress value="224.0.0.1"/>
+ <remotePort value="8080"/>
+ <layout type="log4net.Layout.PatternLayout" value="%-5level %logger [%ndc] - %message%newline"/>
+ </appender>
+ </code>
+ </example>
+ <author>Gert Driesen</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.UdpAppender"/> class.
+ </summary>
+ <remarks>
+ The default constructor initializes all fields to their default values.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ The appender will be ignored if no <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was specified or
+ an invalid remote or local TCP port number was specified.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">The required property <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was not specified.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException">The TCP port number assigned to <see cref="P:log4net.Appender.UdpAppender.LocalPort"/> or <see cref="P:log4net.Appender.UdpAppender.RemotePort"/> is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Sends the event using an UDP datagram.
+ </para>
+ <para>
+ Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.OnClose">
+ <summary>
+ Closes the UDP connection and releases all resources associated with
+ this <see cref="T:log4net.Appender.UdpAppender"/> instance.
+ </summary>
+ <remarks>
+ <para>
+ Disables the underlying <see cref="T:System.Net.Sockets.UdpClient"/> and releases all managed
+ and unmanaged resources associated with the <see cref="T:log4net.Appender.UdpAppender"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.InitializeClientConnection">
+ <summary>
+ Initializes the underlying <see cref="T:System.Net.Sockets.UdpClient"/> connection.
+ </summary>
+ <remarks>
+ <para>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/> is initialized and binds to the
+ port number from which you intend to communicate.
+ </para>
+ <para>
+ Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_remoteAddress">
+ <summary>
+ The IP address of the remote host or multicast group to which
+ the logging event will be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_remotePort">
+ <summary>
+ The TCP port number of the remote host or multicast group to
+ which the logging event will be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_remoteEndPoint">
+ <summary>
+ The cached remote endpoint to which the logging events will be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_localPort">
+ <summary>
+ The TCP port number from which the <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_client">
+ <summary>
+ The <see cref="T:System.Net.Sockets.UdpClient"/> instance that will be used for sending the
+ logging events.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_encoding">
+ <summary>
+ The encoding to use for the packet.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RemoteAddress">
+ <summary>
+ Gets or sets the IP address of the remote host or multicast group to which
+ the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event.
+ </summary>
+ <value>
+ The IP address of the remote host or multicast group to which the logging event
+ will be sent.
+ </value>
+ <remarks>
+ <para>
+ Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to
+ 239.255.255.255). Multicast packets can pass across different networks through routers, so
+ it is possible to use multicasts in an Internet scenario as long as your network provider
+ supports multicasting.
+ </para>
+ <para>
+ Hosts that want to receive particular multicast messages must register their interest by joining
+ the multicast group. Multicast messages are not sent to networks where no host has joined
+ the multicast group. Class <b>D</b> IP addresses are used for multicast groups, to differentiate
+ them from normal host addresses, allowing nodes to easily detect if a message is of interest.
+ </para>
+ <para>
+ Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below:
+ </para>
+ <para>
+ <list type="table">
+ <listheader>
+ <term>IP Address</term>
+ <description>Description</description>
+ </listheader>
+ <item>
+ <term>224.0.0.1</term>
+ <description>
+ <para>
+ Sends a message to all system on the subnet.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>224.0.0.2</term>
+ <description>
+ <para>
+ Sends a message to all routers on the subnet.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>224.0.0.12</term>
+ <description>
+ <para>
+ The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.
+ </para>
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ A complete list of actually reserved multicast addresses and their owners in the ranges
+ defined by RFC 3171 can be found at the <A href="http://www.iana.org/assignments/multicast-addresses">IANA web site</A>.
+ </para>
+ <para>
+ The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative
+ addresses. These addresses can be reused with other local groups. Routers are typically
+ configured with filters to prevent multicast traffic in this range from flowing outside
+ of the local network.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RemotePort">
+ <summary>
+ Gets or sets the TCP port number of the remote host or multicast group to which
+ the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event.
+ </summary>
+ <value>
+ An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/>
+ indicating the TCP port number of the remote host or multicast group to which the logging event
+ will be sent.
+ </value>
+ <remarks>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will send messages to this TCP port number
+ on the remote host or multicast group.
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.LocalPort">
+ <summary>
+ Gets or sets the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
+ </summary>
+ <value>
+ An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/>
+ indicating the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
+ </value>
+ <remarks>
+ <para>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will bind to this port for sending messages.
+ </para>
+ <para>
+ Setting the value to 0 (the default) will cause the udp client not to bind to
+ a local port.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.Encoding">
+ <summary>
+ Gets or sets <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.Client">
+ <summary>
+ Gets or sets the underlying <see cref="T:System.Net.Sockets.UdpClient"/>.
+ </summary>
+ <value>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/>.
+ </value>
+ <remarks>
+ <see cref="T:log4net.Appender.UdpAppender"/> creates a <see cref="T:System.Net.Sockets.UdpClient"/> to send logging events
+ over a network. Classes deriving from <see cref="T:log4net.Appender.UdpAppender"/> can use this
+ property to get or set this <see cref="T:System.Net.Sockets.UdpClient"/>. Use the underlying <see cref="T:System.Net.Sockets.UdpClient"/>
+ returned from <see cref="P:log4net.Appender.UdpAppender.Client"/> if you require access beyond that which
+ <see cref="T:log4net.Appender.UdpAppender"/> provides.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RemoteEndPoint">
+ <summary>
+ Gets or sets the cached remote endpoint to which the logging events should be sent.
+ </summary>
+ <value>
+ The cached remote endpoint to which the logging events will be sent.
+ </value>
+ <remarks>
+ The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method will initialize the remote endpoint
+ with the values of the <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> and <see cref="P:log4net.Appender.UdpAppender.RemotePort"/>
+ properties.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort">
+ <summary>
+ Syslog port 514
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.c_renderBufferSize">
+ <summary>
+ Initial buffer size
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.c_renderBufferMaxCapacity">
+ <summary>
+ Maximum buffer size before it is recycled
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class.
+ </summary>
+ <remarks>
+ This instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class is set up to write
+ to a remote syslog daemon.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)">
+ <summary>
+ Add a mapping of level to severity
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity"/> mapping to this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to a remote syslog daemon.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to syslog severity mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)">
+ <summary>
+ Translates a log4net level to a syslog severity.
+ </summary>
+ <param name="level">A log4net level.</param>
+ <returns>A syslog severity.</returns>
+ <remarks>
+ <para>
+ Translates a log4net level to a syslog severity.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)">
+ <summary>
+ Generate a syslog priority.
+ </summary>
+ <param name="facility">The syslog facility.</param>
+ <param name="severity">The syslog severity.</param>
+ <returns>A syslog priority.</returns>
+ <remarks>
+ <para>
+ Generate a syslog priority.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.m_facility">
+ <summary>
+ The facility. The default facility is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.m_identity">
+ <summary>
+ The message identity
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to syslog severity
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RemoteSyslogAppender.Identity">
+ <summary>
+ Message identity
+ </summary>
+ <remarks>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RemoteSyslogAppender.Facility">
+ <summary>
+ Syslog facility
+ </summary>
+ <remarks>
+ Set to one of the <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The list of
+ facilities is predefined and cannot be extended. The default value
+ is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>.
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity">
+ <summary>
+ syslog severities
+ </summary>
+ <remarks>
+ <para>
+ The syslog severities.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency">
+ <summary>
+ system is unusable
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert">
+ <summary>
+ action must be taken immediately
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical">
+ <summary>
+ critical conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error">
+ <summary>
+ error conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning">
+ <summary>
+ warning conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice">
+ <summary>
+ normal but significant condition
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational">
+ <summary>
+ informational
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug">
+ <summary>
+ debug-level messages
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility">
+ <summary>
+ syslog facilities
+ </summary>
+ <remarks>
+ <para>
+ The syslog facilities
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel">
+ <summary>
+ kernel messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User">
+ <summary>
+ random user-level messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail">
+ <summary>
+ mail system
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons">
+ <summary>
+ system daemons
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization">
+ <summary>
+ security/authorization messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog">
+ <summary>
+ messages generated internally by syslogd
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer">
+ <summary>
+ line printer subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News">
+ <summary>
+ network news subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp">
+ <summary>
+ UUCP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock">
+ <summary>
+ clock (cron/at) daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2">
+ <summary>
+ security/authorization messages (private)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp">
+ <summary>
+ ftp daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp">
+ <summary>
+ NTP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit">
+ <summary>
+ log audit
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert">
+ <summary>
+ log alert
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2">
+ <summary>
+ clock daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </summary>
+ <remarks>
+ <para>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity">
+ <summary>
+ The mapped syslog severity for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped syslog severity for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemotingAppender">
+ <summary>
+ Delivers logging events to a remote logging sink.
+ </summary>
+ <remarks>
+ <para>
+ This Appender is designed to deliver events to a remote sink.
+ That is any object that implements the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
+ interface. It delivers the events using .NET remoting. The
+ object to deliver events to is specified by setting the
+ appenders <see cref="P:log4net.Appender.RemotingAppender.Sink"/> property.</para>
+ <para>
+ The RemotingAppender buffers events before sending them. This allows it to
+ make more efficient use of the remoting infrastructure.</para>
+ <para>
+ Once the buffer is full the events are still not sent immediately.
+ They are scheduled to be sent using a pool thread. The effect is that
+ the send occurs asynchronously. This is very important for a
+ number of non obvious reasons. The remoting infrastructure will
+ flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>),
+ if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the
+ remoting boundary. If the server is not contactable then
+ the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>
+ objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from
+ having side effects on the calling application the remoting call must be made
+ from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/>
+ thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then
+ the events will block in the thread pool manager until a thread is available.</para>
+ <para>
+ Because the events are sent asynchronously using pool threads it is possible to close
+ this appender before all the queued events have been sent.
+ When closing the appender attempts to wait until all the queued events have been sent, but
+ this will timeout after 30 seconds regardless.</para>
+ <para>
+ If this appender is being closed because the <see cref="E:System.AppDomain.ProcessExit"/>
+ event has fired it may not be possible to send all the queued events. During process
+ exit the runtime limits the time that a <see cref="E:System.AppDomain.ProcessExit"/>
+ event handler is allowed to run for. If the runtime terminates the threads before
+ the queued events have been sent then they will be lost. To ensure that all events
+ are sent the appender must be closed before the application exits. See
+ <see cref="M:log4net.Core.LoggerManager.Shutdown"/> for details on how to shutdown
+ log4net programmatically.</para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Daniel Cazzulino</author>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.RemotingAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Send the contents of the buffer to the remote sink.
+ </summary>
+ <remarks>
+ The events are not sent immediately. They are scheduled to be sent
+ using a pool thread. The effect is that the send occurs asynchronously.
+ This is very important for a number of non obvious reasons. The remoting
+ infrastructure will flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>),
+ if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the
+ remoting boundary. If the server is not contactable then
+ the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>
+ objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from
+ having side effects on the calling application the remoting call must be made
+ from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/>
+ thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then
+ the events will block in the thread pool manager until a thread is available.
+ </remarks>
+ <param name="events">The events to send.</param>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.OnClose">
+ <summary>
+ Override base class close.
+ </summary>
+ <remarks>
+ <para>
+ This method waits while there are queued work items. The events are
+ sent asynchronously using <see cref="T:System.Threading.ThreadPool"/> work items. These items
+ will be sent once a thread pool thread is available to send them, therefore
+ it is possible to close the appender before all the queued events have been
+ sent.</para>
+ <para>
+ This method attempts to wait until all the queued events have been sent, but this
+ method will timeout after 30 seconds regardless.</para>
+ <para>
+ If the appender is being closed because the <see cref="E:System.AppDomain.ProcessExit"/>
+ event has fired it may not be possible to send all the queued events. During process
+ exit the runtime limits the time that a <see cref="E:System.AppDomain.ProcessExit"/>
+ event handler is allowed to run for.</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.BeginAsyncSend">
+ <summary>
+ A work item is being queued into the thread pool
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.EndAsyncSend">
+ <summary>
+ A work item from the thread pool has completed
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)">
+ <summary>
+ Send the contents of the buffer to the remote sink.
+ </summary>
+ <remarks>
+ This method is designed to be used with the <see cref="T:System.Threading.ThreadPool"/>.
+ This method expects to be passed an array of <see cref="T:log4net.Core.LoggingEvent"/>
+ objects in the state param.
+ </remarks>
+ <param name="state">the logging events to send</param>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_sinkUrl">
+ <summary>
+ The URL of the remote sink.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_sinkObj">
+ <summary>
+ The local proxy (.NET remoting) for the remote logging sink.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_queuedCallbackCount">
+ <summary>
+ The number of queued callbacks currently waiting or executing
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent">
+ <summary>
+ Event used to signal when there are no queued work items
+ </summary>
+ <remarks>
+ This event is set when there are no queued work items. In this
+ state it is safe to close the appender.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RemotingAppender.Sink">
+ <summary>
+ Gets or sets the URL of the well-known object that will accept
+ the logging events.
+ </summary>
+ <value>
+ The well-known URL of the remote sink.
+ </value>
+ <remarks>
+ <para>
+ The URL of the remoting sink that will accept logging events.
+ The sink must implement the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
+ interface.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink">
+ <summary>
+ Interface used to deliver <see cref="T:log4net.Core.LoggingEvent"/> objects to a remote sink.
+ </summary>
+ <remarks>
+ This interface must be implemented by a remoting sink
+ if the <see cref="T:log4net.Appender.RemotingAppender"/> is to be used
+ to deliver logging events to the sink.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])">
+ <summary>
+ Delivers logging events to the remote sink
+ </summary>
+ <param name="events">Array of events to log.</param>
+ <remarks>
+ <para>
+ Delivers logging events to the remote sink
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender">
+ <summary>
+ Appender that rolls log files based on size or date or both.
+ </summary>
+ <remarks>
+ <para>
+ RollingFileAppender can roll log files based on size or date or both
+ depending on the setting of the <see cref="P:log4net.Appender.RollingFileAppender.RollingStyle"/> property.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Size"/> the log file will be rolled
+ once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Date"/> the log file will be rolled
+ once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property
+ is crossed.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/> the log file will be
+ rolled once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property
+ is crossed, but within a date boundary the file will also be rolled
+ once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> the log file will be rolled when
+ the appender is configured. This effectively means that the log file can be
+ rolled once per program execution.
+ </para>
+ <para>
+ A of few additional optional features have been added:
+ <list type="bullet">
+ <item>Attach date pattern for current log file <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/></item>
+ <item>Backup number increments for newer files <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/></item>
+ <item>Infinite number of backups by file size <see cref="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups"/></item>
+ </list>
+ </para>
+
+ <note>
+ <para>
+ For large or infinite numbers of backup files a <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/>
+ greater than zero is highly recommended, otherwise all the backup files need
+ to be renamed each time a new backup is created.
+ </para>
+ <para>
+ When Date/Time based rolling is used setting <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/>
+ to <see langword="true"/> will reduce the number of file renamings to few or none.
+ </para>
+ </note>
+
+ <note type="caution">
+ <para>
+ Changing <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> or <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> without clearing
+ the log file directory of backup files will cause unexpected and unwanted side effects.
+ </para>
+ </note>
+
+ <para>
+ If Date/Time based rolling is enabled this appender will attempt to roll existing files
+ in the directory without a Date/Time tag based on the last write date of the base log file.
+ The appender only rolls the log file when a message is logged. If Date/Time based rolling
+ is enabled then the appender will not roll the log file at the Date/Time boundary but
+ at the point when the next message is logged after the boundary has been crossed.
+ </para>
+
+ <para>
+ The <see cref="T:log4net.Appender.RollingFileAppender"/> extends the <see cref="T:log4net.Appender.FileAppender"/> and
+ has the same behavior when opening the log file.
+ The appender will first try to open the file for writing when <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>
+ is called. This will typically be during configuration.
+ If the file cannot be opened for writing the appender will attempt
+ to open the file again each time a message is logged to the appender.
+ If the file cannot be opened for writing when a message is logged then
+ the message will be discarded by this appender.
+ </para>
+ <para>
+ When rolling a backup file necessitates deleting an older backup file the
+ file to be deleted is moved to a temporary name before being deleted.
+ </para>
+
+ <note type="caution">
+ <para>
+ A maximum number of backup files when rolling on date/time boundaries is not supported.
+ </para>
+ </note>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Aspi Havewala</author>
+ <author>Douglas de la Torre</author>
+ <author>Edward Smit</author>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.RollingFileAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.declaringType">
+ <summary>
+ The fully qualified type of the RollingFileAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)">
+ <summary>
+ Sets the quiet writer being used.
+ </summary>
+ <remarks>
+ This method can be overridden by sub classes.
+ </remarks>
+ <param name="writer">the writer to set</param>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Write out a logging event.
+ </summary>
+ <param name="loggingEvent">the event to write to file.</param>
+ <remarks>
+ <para>
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ Write out an array of logging events.
+ </summary>
+ <param name="loggingEvents">the events to write to file.</param>
+ <remarks>
+ <para>
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend">
+ <summary>
+ Performs any required rolling before outputting the next event
+ </summary>
+ <remarks>
+ <para>
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)">
+ <summary>
+ Creates and opens the file for logging. If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/>
+ is false then the fully qualified name is determined and used.
+ </summary>
+ <param name="fileName">the name of the file to open</param>
+ <param name="append">true to append to existing file</param>
+ <remarks>
+ <para>This method will ensure that the directory structure
+ for the <paramref name="fileName"/> specified exists.</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)">
+ <summary>
+ Get the current output file name
+ </summary>
+ <param name="fileName">the base file name</param>
+ <returns>the output file name</returns>
+ <remarks>
+ The output file name is based on the base fileName specified.
+ If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> is set then the output
+ file name is the same as the base file passed in. Otherwise
+ the output file depends on the date pattern, on the count
+ direction or both.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups">
+ <summary>
+ Determines curSizeRollBackups (only within the current roll point)
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)">
+ <summary>
+ Generates a wildcard pattern that can be used to find all files
+ that are similar to the base file name.
+ </summary>
+ <param name="baseFileName"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)">
+ <summary>
+ Builds a list of filenames for all files matching the base filename plus a file
+ pattern.
+ </summary>
+ <param name="baseFilePath"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing">
+ <summary>
+ Initiates a roll over if needed for crossing a date boundary since the last run.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.ExistingInit">
+ <summary>
+ Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>.
+ </summary>
+ <remarks>
+ <para>
+ Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>.
+ The following is done
+ <list type="bullet">
+ <item>determine curSizeRollBackups (only within the current roll point)</item>
+ <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>
+ </list>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)">
+ <summary>
+ Does the work of bumping the 'current' file counter higher
+ to the highest count when an incremental file name is seen.
+ The highest count is either the first file (when count direction
+ is greater than 0) or the last file (when count direction less than 0).
+ In either case, we want to know the highest count that is present.
+ </summary>
+ <param name="baseFile"></param>
+ <param name="curFileName"></param>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)">
+ <summary>
+ Attempts to extract a number from the end of the file name that indicates
+ the number of the times the file has been rolled over.
+ </summary>
+ <remarks>
+ Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.
+ </remarks>
+ <param name="curFileName"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)">
+ <summary>
+ Takes a list of files and a base file name, and looks for
+ 'incremented' versions of the base file. Bumps the max
+ count up to the highest count seen.
+ </summary>
+ <param name="baseFile"></param>
+ <param name="arrayFiles"></param>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)">
+ <summary>
+ Calculates the RollPoint for the datePattern supplied.
+ </summary>
+ <param name="datePattern">the date pattern to calculate the check period for</param>
+ <returns>The RollPoint that is most accurate for the date pattern supplied</returns>
+ <remarks>
+ Essentially the date pattern is examined to determine what the
+ most suitable roll point is. The roll point chosen is the roll point
+ with the smallest period that can be detected using the date pattern
+ supplied. i.e. if the date pattern only outputs the year, month, day
+ and hour then the smallest roll point that can be detected would be
+ and hourly roll point as minutes could not be detected.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ Sets initial conditions including date/time roll over information, first check,
+ scheduledFilename, and calls <see cref="M:log4net.Appender.RollingFileAppender.ExistingInit"/> to initialize
+ the current number of backups.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)">
+ <summary>
+
+ </summary>
+ <param name="path1"></param>
+ <param name="path2">.1, .2, .3, etc.</param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)">
+ <summary>
+ Rollover the file(s) to date/time tagged file(s).
+ </summary>
+ <param name="fileIsOpen">set to true if the file to be rolled is currently open</param>
+ <remarks>
+ <para>
+ Rollover the file(s) to date/time tagged file(s).
+ Resets curSizeRollBackups.
+ If fileIsOpen is set then the new file is opened (through SafeOpenFile).
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)">
+ <summary>
+ Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>.
+ </summary>
+ <param name="fromFile">Name of existing file to roll.</param>
+ <param name="toFile">New name for file.</param>
+ <remarks>
+ <para>
+ Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>. It
+ also checks for existence of target file and deletes if it does.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.FileExists(System.String)">
+ <summary>
+ Test if a file exists at a specified path
+ </summary>
+ <param name="path">the path to the file</param>
+ <returns>true if the file exists</returns>
+ <remarks>
+ <para>
+ Test if a file exists at a specified path
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)">
+ <summary>
+ Deletes the specified file if it exists.
+ </summary>
+ <param name="fileName">The file to delete.</param>
+ <remarks>
+ <para>
+ Delete a file if is exists.
+ The file is first moved to a new filename then deleted.
+ This allows the file to be removed even when it cannot
+ be deleted, but it still can be moved.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverSize">
+ <summary>
+ Implements file roll base on file size.
+ </summary>
+ <remarks>
+ <para>
+ If the maximum number of size based backups is reached
+ (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest
+ file is deleted -- its index determined by the sign of countDirection.
+ If <c>countDirection</c> < 0, then files
+ {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}
+ are renamed to {<c>File.2</c>, ...,
+ <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is
+ renamed <c>File.1</c> and closed.
+ </para>
+ <para>
+ A new file is created to receive further log output.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> is equal to zero, then the
+ <c>File</c> is truncated with no backup files created.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> < 0, then <c>File</c> is
+ renamed if needed and no files are deleted.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)">
+ <summary>
+ Implements file roll.
+ </summary>
+ <param name="baseFileName">the base name to rename</param>
+ <remarks>
+ <para>
+ If the maximum number of size based backups is reached
+ (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest
+ file is deleted -- its index determined by the sign of countDirection.
+ If <c>countDirection</c> < 0, then files
+ {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}
+ are renamed to {<c>File.2</c>, ...,
+ <c>File.curSizeRollBackups</c>}.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> is equal to zero, then the
+ <c>File</c> is truncated with no backup files created.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> < 0, then <c>File</c> is
+ renamed if needed and no files are deleted.
+ </para>
+ <para>
+ This is called by <see cref="M:log4net.Appender.RollingFileAppender.RollOverSize"/> to rename the files.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)">
+ <summary>
+ Get the start time of the next window for the current rollpoint
+ </summary>
+ <param name="currentDateTime">the current date</param>
+ <param name="rollPoint">the type of roll point we are working with</param>
+ <returns>the start time for the next roll point an interval after the currentDateTime date</returns>
+ <remarks>
+ <para>
+ Returns the date of the next roll point after the currentDateTime date passed to the method.
+ </para>
+ <para>
+ The basic strategy is to subtract the time parts that are less significant
+ than the rollpoint from the current time. This should roll the time back to
+ the start of the time window for the current rollpoint. Then we add 1 window
+ worth of time and get the start time of the next window for the rollpoint.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_dateTime">
+ <summary>
+ This object supplies the current date/time. Allows test code to plug in
+ a method to control this class when testing date/time based rolling. The default
+ implementation uses the underlying value of DateTime.Now.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_datePattern">
+ <summary>
+ The date pattern. By default, the pattern is set to <c>".yyyy-MM-dd"</c>
+ meaning daily rollover.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_scheduledFilename">
+ <summary>
+ The actual formatted filename that is currently being written to
+ or will be the file transferred to on roll over
+ (based on staticLogFileName).
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_nextCheck">
+ <summary>
+ The timestamp when we shall next recompute the filename.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_now">
+ <summary>
+ Holds date of last roll over
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollPoint">
+ <summary>
+ The type of rolling done
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_maxFileSize">
+ <summary>
+ The default maximum file size is 10MB
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups">
+ <summary>
+ There is zero backup files by default
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups">
+ <summary>
+ How many sized based backups have been made so far
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_countDirection">
+ <summary>
+ The rolling file count direction.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollingStyle">
+ <summary>
+ The rolling mode used in this appender.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollDate">
+ <summary>
+ Cache flag set if we are rolling by date.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollSize">
+ <summary>
+ Cache flag set if we are rolling by size.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_staticLogFileName">
+ <summary>
+ Value indicating whether to always log to the same file.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension">
+ <summary>
+ Value indicating whether to preserve the file name extension when rolling.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_baseFileName">
+ <summary>
+ FileName provided in configuration. Used for rolling properly
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.s_date1970">
+ <summary>
+ The 1st of January 1970 in UTC
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.DateTimeStrategy">
+ <summary>
+ Gets or sets the strategy for determining the current date and time. The default
+ implementation is to use LocalDateTime which internally calls through to DateTime.Now.
+ DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying
+ <see cref="T:log4net.Appender.RollingFileAppender.UniversalDateTime"/>.
+ </summary>
+ <value>
+ An implementation of the <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> interface which returns the current date and time.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> used to return the current date and time.
+ </para>
+ <para>
+ There are two built strategies for determining the current date and time,
+ <see cref="T:log4net.Appender.RollingFileAppender.LocalDateTime"/>
+ and <see cref="T:log4net.Appender.RollingFileAppender.UniversalDateTime"/>.
+ </para>
+ <para>
+ The default strategy is <see cref="T:log4net.Appender.RollingFileAppender.LocalDateTime"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.DatePattern">
+ <summary>
+ Gets or sets the date pattern to be used for generating file names
+ when rolling over on date.
+ </summary>
+ <value>
+ The date pattern to be used for generating file names when rolling
+ over on date.
+ </value>
+ <remarks>
+ <para>
+ Takes a string in the same format as expected by
+ <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/>.
+ </para>
+ <para>
+ This property determines the rollover schedule when rolling over
+ on date.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups">
+ <summary>
+ Gets or sets the maximum number of backup files that are kept before
+ the oldest is erased.
+ </summary>
+ <value>
+ The maximum number of backup files that are kept before the oldest is
+ erased.
+ </value>
+ <remarks>
+ <para>
+ If set to zero, then there will be no backup files and the log file
+ will be truncated when it reaches <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/>.
+ </para>
+ <para>
+ If a negative number is supplied then no deletions will be made. Note
+ that this could result in very slow performance as a large number of
+ files are rolled over unless <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> is used.
+ </para>
+ <para>
+ The maximum applies to <b>each</b> time based group of files and
+ <b>not</b> the total.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.MaxFileSize">
+ <summary>
+ Gets or sets the maximum size that the output file is allowed to reach
+ before being rolled over to backup files.
+ </summary>
+ <value>
+ The maximum size in bytes that the output file is allowed to reach before being
+ rolled over to backup files.
+ </value>
+ <remarks>
+ <para>
+ This property is equivalent to <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/> except
+ that it is required for differentiating the setter taking a
+ <see cref="T:System.Int64"/> argument from the setter taking a <see cref="T:System.String"/>
+ argument.
+ </para>
+ <para>
+ The default maximum file size is 10MB (10*1024*1024).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.MaximumFileSize">
+ <summary>
+ Gets or sets the maximum size that the output file is allowed to reach
+ before being rolled over to backup files.
+ </summary>
+ <value>
+ The maximum size that the output file is allowed to reach before being
+ rolled over to backup files.
+ </value>
+ <remarks>
+ <para>
+ This property allows you to specify the maximum size with the
+ suffixes "KB", "MB" or "GB" so that the size is interpreted being
+ expressed respectively in kilobytes, megabytes or gigabytes.
+ </para>
+ <para>
+ For example, the value "10KB" will be interpreted as 10240 bytes.
+ </para>
+ <para>
+ The default maximum file size is 10MB.
+ </para>
+ <para>
+ If you have the option to set the maximum file size programmatically
+ consider using the <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/> property instead as this
+ allows you to set the size in bytes as a <see cref="T:System.Int64"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.CountDirection">
+ <summary>
+ Gets or sets the rolling file count direction.
+ </summary>
+ <value>
+ The rolling file count direction.
+ </value>
+ <remarks>
+ <para>
+ Indicates if the current file is the lowest numbered file or the
+ highest numbered file.
+ </para>
+ <para>
+ By default newer files have lower numbers (<see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> < 0),
+ i.e. log.1 is most recent, log.5 is the 5th backup, etc...
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> >= 0 does the opposite i.e.
+ log.1 is the first backup made, log.5 is the 5th backup made, etc.
+ For infinite backups use <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> >= 0 to reduce
+ rollover costs.
+ </para>
+ <para>The default file count direction is -1.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.RollingStyle">
+ <summary>
+ Gets or sets the rolling style.
+ </summary>
+ <value>The rolling style.</value>
+ <remarks>
+ <para>
+ The default rolling style is <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/>.
+ </para>
+ <para>
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> this appender's
+ <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is set to <c>false</c>, otherwise
+ the appender would append to a single file rather than rolling
+ the file each time it is opened.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension">
+ <summary>
+ Gets or sets a value indicating whether to preserve the file name extension when rolling.
+ </summary>
+ <value>
+ <c>true</c> if the file name extension should be preserved.
+ </value>
+ <remarks>
+ <para>
+ By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.
+ However, under Windows the new file name will loose any program associations as the
+ extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or
+ file.curSizeRollBackup.log to maintain any program associations.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.StaticLogFileName">
+ <summary>
+ Gets or sets a value indicating whether to always log to
+ the same file.
+ </summary>
+ <value>
+ <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ By default file.log is always the current file. Optionally
+ file.log.yyyy-mm-dd for current formatted datePattern can by the currently
+ logging file (or file.log.curSizeRollBackup or even
+ file.log.yyyy-mm-dd.curSizeRollBackup).
+ </para>
+ <para>
+ This will make time based rollovers with a large number of backups
+ much faster as the appender it won't have to rename all the backups!
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.RollingMode">
+ <summary>
+ Style of rolling to use
+ </summary>
+ <remarks>
+ <para>
+ Style of rolling to use
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Once">
+ <summary>
+ Roll files once per program execution
+ </summary>
+ <remarks>
+ <para>
+ Roll files once per program execution.
+ Well really once each time this appender is
+ configured.
+ </para>
+ <para>
+ Setting this option also sets <c>AppendToFile</c> to
+ <c>false</c> on the <c>RollingFileAppender</c>, otherwise
+ this appender would just be a normal file appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Size">
+ <summary>
+ Roll files based only on the size of the file
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Date">
+ <summary>
+ Roll files based only on the date
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Composite">
+ <summary>
+ Roll files based on both the size and date of the file
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.RollPoint">
+ <summary>
+ The code assumes that the following 'time' constants are in a increasing sequence.
+ </summary>
+ <remarks>
+ <para>
+ The code assumes that the following 'time' constants are in a increasing sequence.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint">
+ <summary>
+ Roll the log not based on the date
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute">
+ <summary>
+ Roll the log for each minute
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour">
+ <summary>
+ Roll the log for each hour
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay">
+ <summary>
+ Roll the log twice a day (midday and midnight)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay">
+ <summary>
+ Roll the log each day (midnight)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek">
+ <summary>
+ Roll the log each week
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth">
+ <summary>
+ Roll the log each month
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.IDateTime">
+ <summary>
+ This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>.
+ </summary>
+ <remarks>
+ This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>.
+ Used primarily to allow test classes to plug themselves in so they can
+ supply test date/times.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.IDateTime.Now">
+ <summary>
+ Gets the <i>current</i> time.
+ </summary>
+ <value>The <i>current</i> time.</value>
+ <remarks>
+ <para>
+ Gets the <i>current</i> time.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.LocalDateTime">
+ <summary>
+ Default implementation of <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> that returns the current time.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.LocalDateTime.Now">
+ <summary>
+ Gets the <b>current</b> time.
+ </summary>
+ <value>The <b>current</b> time.</value>
+ <remarks>
+ <para>
+ Gets the <b>current</b> time.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.UniversalDateTime">
+ <summary>
+ Implementation of <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> that returns the current time as the coordinated universal time (UTC).
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.UniversalDateTime.Now">
+ <summary>
+ Gets the <b>current</b> time.
+ </summary>
+ <value>The <b>current</b> time.</value>
+ <remarks>
+ <para>
+ Gets the <b>current</b> time.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.SmtpAppender">
+ <summary>
+ Send an e-mail when a specific logging event occurs, typically on errors
+ or fatal errors.
+ </summary>
+ <remarks>
+ <para>
+ The number of logging events delivered in this e-mail depend on
+ the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The
+ <see cref="T:log4net.Appender.SmtpAppender"/> keeps only the last
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its
+ cyclic buffer. This keeps memory requirements at a reasonable level while
+ still delivering useful application context.
+ </para>
+ <note type="caution">
+ Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.
+ For these features to be enabled you need to ensure that you are using a version of
+ the log4net assembly that is built against the MS .NET 1.1 framework and that you are
+ running the your application on the MS .NET 1.1 runtime. On all other platforms only sending
+ unauthenticated messages to a server listening on port 25 (the default) is supported.
+ </note>
+ <para>
+ Authentication is supported by setting the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property to
+ either <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> or <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>.
+ If using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> authentication then the <see cref="P:log4net.Appender.SmtpAppender.Username"/>
+ and <see cref="P:log4net.Appender.SmtpAppender.Password"/> properties must also be set.
+ </para>
+ <para>
+ To set the SMTP server port use the <see cref="P:log4net.Appender.SmtpAppender.Port"/> property. The default port is 25.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.SmtpAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Sends the contents of the cyclic buffer as an e-mail message.
+ </summary>
+ <param name="events">The logging events to send.</param>
+ </member>
+ <member name="M:log4net.Appender.SmtpAppender.SendEmail(System.String)">
+ <summary>
+ Send the email message
+ </summary>
+ <param name="messageBody">the body text to include in the mail</param>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.To">
+ <summary>
+ Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).
+ </summary>
+ <value>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </value>
+ <remarks>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Cc">
+ <summary>
+ Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses
+ that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).
+ </summary>
+ <value>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </value>
+ <remarks>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Bcc">
+ <summary>
+ Gets or sets a semicolon-delimited list of recipient e-mail addresses
+ that will be blind carbon copied.
+ </summary>
+ <value>
+ A semicolon-delimited list of e-mail addresses.
+ </value>
+ <remarks>
+ <para>
+ A semicolon-delimited list of recipient e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.From">
+ <summary>
+ Gets or sets the e-mail address of the sender.
+ </summary>
+ <value>
+ The e-mail address of the sender.
+ </value>
+ <remarks>
+ <para>
+ The e-mail address of the sender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Subject">
+ <summary>
+ Gets or sets the subject line of the e-mail message.
+ </summary>
+ <value>
+ The subject line of the e-mail message.
+ </value>
+ <remarks>
+ <para>
+ The subject line of the e-mail message.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.SmtpHost">
+ <summary>
+ Gets or sets the name of the SMTP relay mail server to use to send
+ the e-mail messages.
+ </summary>
+ <value>
+ The name of the e-mail relay server. If SmtpServer is not set, the
+ name of the local SMTP server is used.
+ </value>
+ <remarks>
+ <para>
+ The name of the e-mail relay server. If SmtpServer is not set, the
+ name of the local SMTP server is used.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.LocationInfo">
+ <summary>
+ Obsolete
+ </summary>
+ <remarks>
+ Use the BufferingAppenderSkeleton Fix methods instead
+ </remarks>
+ <remarks>
+ <para>
+ Obsolete property.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Authentication">
+ <summary>
+ The mode to use to authentication with the SMTP server
+ </summary>
+ <remarks>
+ <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ Valid Authentication mode values are: <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>,
+ <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, and <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>.
+ The default value is <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>. When using
+ <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> you must specify the <see cref="P:log4net.Appender.SmtpAppender.Username"/>
+ and <see cref="P:log4net.Appender.SmtpAppender.Password"/> to use to authenticate.
+ When using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/> the Windows credentials for the current
+ thread, if impersonating, or the process will be used to authenticate.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Username">
+ <summary>
+ The username to use to authenticate with the SMTP server
+ </summary>
+ <remarks>
+ <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when
+ <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>,
+ otherwise the username will be ignored.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Password">
+ <summary>
+ The password to use to authenticate with the SMTP server
+ </summary>
+ <remarks>
+ <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when
+ <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>,
+ otherwise the password will be ignored.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Port">
+ <summary>
+ The port on which the SMTP server is listening
+ </summary>
+ <remarks>
+ <note type="caution">Server Port is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ The port on which the SMTP server is listening. The default
+ port is <c>25</c>. The Port can only be changed when running on
+ the MS .NET 1.1 runtime.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Priority">
+ <summary>
+ Gets or sets the priority of the e-mail message
+ </summary>
+ <value>
+ One of the <see cref="T:System.Net.Mail.MailPriority"/> values.
+ </value>
+ <remarks>
+ <para>
+ Sets the priority of the e-mails generated by this
+ appender. The default priority is <see cref="F:System.Net.Mail.MailPriority.Normal"/>.
+ </para>
+ <para>
+ If you are using this appender to report errors then
+ you may want to set the priority to <see cref="F:System.Net.Mail.MailPriority.High"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.EnableSsl">
+ <summary>
+ Enable or disable use of SSL when sending e-mail message
+ </summary>
+ <remarks>
+ This is available on MS .NET 2.0 runtime and higher
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.ReplyTo">
+ <summary>
+ Gets or sets the reply-to e-mail address.
+ </summary>
+ <remarks>
+ This is available on MS .NET 2.0 runtime and higher
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.SubjectEncoding">
+ <summary>
+ Gets or sets the subject encoding to be used.
+ </summary>
+ <remarks>
+ The default encoding is the operating system's current ANSI codepage.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.BodyEncoding">
+ <summary>
+ Gets or sets the body encoding to be used.
+ </summary>
+ <remarks>
+ The default encoding is the operating system's current ANSI codepage.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.SmtpAppender.SmtpAuthentication">
+ <summary>
+ Values for the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property.
+ </summary>
+ <remarks>
+ <para>
+ SMTP authentication modes.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None">
+ <summary>
+ No authentication
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic">
+ <summary>
+ Basic authentication.
+ </summary>
+ <remarks>
+ Requires a username and password to be supplied
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm">
+ <summary>
+ Integrated authentication
+ </summary>
+ <remarks>
+ Uses the Windows credentials from the current thread or process to authenticate.
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.SmtpPickupDirAppender">
+ <summary>
+ Send an email when a specific logging event occurs, typically on errors
+ or fatal errors. Rather than sending via smtp it writes a file into the
+ directory specified by <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>. This allows services such
+ as the IIS SMTP agent to manage sending the messages.
+ </summary>
+ <remarks>
+ <para>
+ The configuration for this appender is identical to that of the <c>SMTPAppender</c>,
+ except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify
+ <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>.
+ </para>
+ <para>
+ The number of logging events delivered in this e-mail depend on
+ the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The
+ <see cref="T:log4net.Appender.SmtpPickupDirAppender"/> keeps only the last
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its
+ cyclic buffer. This keeps memory requirements at a reasonable level while
+ still delivering useful application context.
+ </para>
+ </remarks>
+ <author>Niall Daley</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Sends the contents of the cyclic buffer as an e-mail message.
+ </summary>
+ <param name="events">The logging events to send.</param>
+ <remarks>
+ <para>
+ Sends the contents of the cyclic buffer as an e-mail message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions">
+ <summary>
+ Activate the options on this appender.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)">
+ <summary>
+ Convert a path into a fully qualified path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>The fully qualified path.</returns>
+ <remarks>
+ <para>
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.SmtpPickupDirAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.To">
+ <summary>
+ Gets or sets a semicolon-delimited list of recipient e-mail addresses.
+ </summary>
+ <value>
+ A semicolon-delimited list of e-mail addresses.
+ </value>
+ <remarks>
+ <para>
+ A semicolon-delimited list of e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.From">
+ <summary>
+ Gets or sets the e-mail address of the sender.
+ </summary>
+ <value>
+ The e-mail address of the sender.
+ </value>
+ <remarks>
+ <para>
+ The e-mail address of the sender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.Subject">
+ <summary>
+ Gets or sets the subject line of the e-mail message.
+ </summary>
+ <value>
+ The subject line of the e-mail message.
+ </value>
+ <remarks>
+ <para>
+ The subject line of the e-mail message.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.PickupDir">
+ <summary>
+ Gets or sets the path to write the messages to.
+ </summary>
+ <remarks>
+ <para>
+ Gets or sets the path to write the messages to. This should be the same
+ as that used by the agent sending the messages.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TelnetAppender">
+ <summary>
+ Appender that allows clients to connect via Telnet to receive log messages
+ </summary>
+ <remarks>
+ <para>
+ The TelnetAppender accepts socket connections and streams logging messages
+ back to the client.
+ The output is provided in a telnet-friendly way so that a log can be monitored
+ over a TCP/IP socket.
+ This allows simple remote monitoring of application logging.
+ </para>
+ <para>
+ The default <see cref="P:log4net.Appender.TelnetAppender.Port"/> is 23 (the telnet port).
+ </para>
+ </remarks>
+ <author>Keith Long</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TelnetAppender.declaringType">
+ <summary>
+ The fully qualified type of the TelnetAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.OnClose">
+ <summary>
+ Overrides the parent method to close the socket handler
+ </summary>
+ <remarks>
+ <para>
+ Closes all the outstanding connections.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ Create the socket handler and wait for connections
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the logging event to each connected client.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the logging event to each connected client.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TelnetAppender.Port">
+ <summary>
+ Gets or sets the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections.
+ </summary>
+ <value>
+ An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/>
+ indicating the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections.
+ </value>
+ <remarks>
+ <para>
+ The default value is 23 (the telnet port).
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/>
+ or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="P:log4net.Appender.TelnetAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TelnetAppender.SocketHandler">
+ <summary>
+ Helper class to manage connected clients
+ </summary>
+ <remarks>
+ <para>
+ The SocketHandler class is used to accept connections from
+ clients. It is threaded so that clients can connect/disconnect
+ asynchronously.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)">
+ <summary>
+ Opens a new server port on <paramref ref="port"/>
+ </summary>
+ <param name="port">the local port to listen on for connections</param>
+ <remarks>
+ <para>
+ Creates a socket handler on the specified local server port.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)">
+ <summary>
+ Sends a string message to each of the connected clients
+ </summary>
+ <param name="message">the text to send</param>
+ <remarks>
+ <para>
+ Sends a string message to each of the connected clients
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)">
+ <summary>
+ Add a client to the internal clients list
+ </summary>
+ <param name="client">client to add</param>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)">
+ <summary>
+ Remove a client from the internal clients list
+ </summary>
+ <param name="client">client to remove</param>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)">
+ <summary>
+ Callback used to accept a connection on the server socket
+ </summary>
+ <param name="asyncResult">The result of the asynchronous operation</param>
+ <remarks>
+ <para>
+ On connection adds to the list of connections
+ if there are two many open connections you will be disconnected
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Dispose">
+ <summary>
+ Close all network connections
+ </summary>
+ <remarks>
+ <para>
+ Make sure we close all network connections
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections">
+ <summary>
+ Test if this handler has active connections
+ </summary>
+ <value>
+ <c>true</c> if this handler has active connections
+ </value>
+ <remarks>
+ <para>
+ This property will be <c>true</c> while this handler has
+ active connections, that is at least one connection that
+ the handler will attempt to send a message to.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient">
+ <summary>
+ Class that represents a client connected to this handler
+ </summary>
+ <remarks>
+ <para>
+ Class that represents a client connected to this handler
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)">
+ <summary>
+ Create this <see cref="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient"/> for the specified <see cref="T:System.Net.Sockets.Socket"/>
+ </summary>
+ <param name="socket">the client's socket</param>
+ <remarks>
+ <para>
+ Opens a stream writer on the socket.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)">
+ <summary>
+ Write a string to the client
+ </summary>
+ <param name="message">string to send</param>
+ <remarks>
+ <para>
+ Write a string to the client
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose">
+ <summary>
+ Cleanup the clients connection
+ </summary>
+ <remarks>
+ <para>
+ Close the socket connection.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TraceAppender">
+ <summary>
+ Appends log events to the <see cref="T:System.Diagnostics.Trace"/> system.
+ </summary>
+ <remarks>
+ <para>
+ The application configuration file can be used to control what listeners
+ are actually used. See the MSDN documentation for the
+ <see cref="T:System.Diagnostics.Trace"/> class for details on configuring the
+ trace system.
+ </para>
+ <para>
+ Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>
+ method. The event's logger name is the default value for the category parameter
+ of the Write method.
+ </para>
+ <para>
+ <b>Compact Framework</b><br/>
+ The Compact Framework does not support the <see cref="T:System.Diagnostics.Trace"/>
+ class for any operation except <c>Assert</c>. When using the Compact Framework this
+ appender will write to the <see cref="T:System.Diagnostics.Debug"/> system rather than
+ the Trace system. This appender will therefore behave like the <see cref="T:log4net.Appender.DebugAppender"/>.
+ </para>
+ </remarks>
+ <author>Douglas de la Torre</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Appender.TraceAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/>
+ with a specified layout.
+ </summary>
+ <param name="layout">The layout to use with this appender.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TraceAppender.m_immediateFlush">
+ <summary>
+ Immediate flush means that the underlying writer or output stream
+ will be flushed at the end of each append operation.
+ </summary>
+ <remarks>
+ <para>
+ Immediate flush is slower but ensures that each append request is
+ actually written. If <see cref="P:log4net.Appender.TraceAppender.ImmediateFlush"/> is set to
+ <c>false</c>, then there is a good chance that the last few
+ logs events are not actually written to persistent media if and
+ when the application crashes.
+ </para>
+ <para>
+ The default value is <c>true</c>.</para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TraceAppender.m_category">
+ <summary>
+ Defaults to %logger
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.TraceAppender.ImmediateFlush">
+ <summary>
+ Gets or sets a value that indicates whether the appender will
+ flush at the end of each write.
+ </summary>
+ <remarks>
+ <para>The default behavior is to flush at the end of each
+ write. If the option is set to<c>false</c>, then the underlying
+ stream can defer writing to physical medium to a later time.
+ </para>
+ <para>
+ Avoiding the flush operation at the end of each append results
+ in a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TraceAppender.Category">
+ <summary>
+ The category parameter sent to the Trace method.
+ </summary>
+ <remarks>
+ <para>
+ Defaults to %logger which will use the logger name of the current
+ <see cref="T:log4net.Core.LoggingEvent"/> as the category parameter.
+ </para>
+ <para>
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TraceAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.AliasDomainAttribute">
+ <summary>
+ Assembly level attribute that specifies a domain to alias to this assembly's repository.
+ </summary>
+ <remarks>
+ <para>
+ <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>
+ </para>
+ <para>
+ An assembly's logger repository is defined by its <see cref="T:log4net.Config.DomainAttribute"/>,
+ however this can be overridden by an assembly loaded before the target assembly.
+ </para>
+ <para>
+ An assembly can alias another assembly's domain to its repository by
+ specifying this attribute with the name of the target domain.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may be used
+ as many times as necessary to alias all the required domains.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Config.AliasRepositoryAttribute">
+ <summary>
+ Assembly level attribute that specifies a repository to alias to this assembly's repository.
+ </summary>
+ <remarks>
+ <para>
+ An assembly's logger repository is defined by its <see cref="T:log4net.Config.RepositoryAttribute"/>,
+ however this can be overridden by an assembly loaded before the target assembly.
+ </para>
+ <para>
+ An assembly can alias another assembly's repository to its repository by
+ specifying this attribute with the name of the target repository.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may be used
+ as many times as necessary to alias all the required repositories.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with
+ the specified repository to alias to this assembly's repository.
+ </summary>
+ <param name="name">The repository to alias to this assemby's repository.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with
+ the specified repository to alias to this assembly's repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.AliasRepositoryAttribute.Name">
+ <summary>
+ Gets or sets the repository to alias to this assemby's repository.
+ </summary>
+ <value>
+ The repository to alias to this assemby's repository.
+ </value>
+ <remarks>
+ <para>
+ The name of the repository to alias to this assemby's repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.AliasDomainAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.AliasDomainAttribute"/> class with
+ the specified domain to alias to this assembly's repository.
+ </summary>
+ <param name="name">The domain to alias to this assemby's repository.</param>
+ <remarks>
+ <para>
+ Obsolete. Use <see cref="T:log4net.Config.AliasRepositoryAttribute"/> instead of <see cref="T:log4net.Config.AliasDomainAttribute"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.BasicConfigurator">
+ <summary>
+ Use this class to quickly configure a <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
+ </summary>
+ <remarks>
+ <para>
+ Allows very simple programmatic configuration of log4net.
+ </para>
+ <para>
+ Only one appender can be configured using this configurator.
+ The appender is set at the root of the hierarchy and all logging
+ events will be delivered to that appender.
+ </para>
+ <para>
+ Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
+ they would require that the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions()"/> method
+ be called after the appenders properties have been configured.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Config.BasicConfigurator.declaringType">
+ <summary>
+ The fully qualified type of the BasicConfigurator class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.BasicConfigurator"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to prevent instantiation of this class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure">
+ <summary>
+ Initializes the log4net system with a default configuration.
+ </summary>
+ <remarks>
+ <para>
+ Initializes the log4net logging system using a <see cref="T:log4net.Appender.ConsoleAppender"/>
+ that will write to <c>Console.Out</c>. The log messages are
+ formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object
+ with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/>
+ layout style.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)">
+ <summary>
+ Initializes the log4net system using the specified appender.
+ </summary>
+ <param name="appender">The appender to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the log4net system using the specified appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])">
+ <summary>
+ Initializes the log4net system using the specified appenders.
+ </summary>
+ <param name="appenders">The appenders to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the log4net system using the specified appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> with a default configuration.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Initializes the specified repository using a <see cref="T:log4net.Appender.ConsoleAppender"/>
+ that will write to <c>Console.Out</c>. The log messages are
+ formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object
+ with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/>
+ layout style.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)">
+ <summary>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="appender">The appender to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])">
+ <summary>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appenders.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="appenders">The appenders to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.ConfiguratorAttribute">
+ <summary>
+ Base class for all log4net configuration attributes.
+ </summary>
+ <remarks>
+ This is an abstract class that must be extended by
+ specific configurators. This attribute allows the
+ configurator to be parameterized by an assembly level
+ attribute.
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)">
+ <summary>
+ Constructor used by subclasses.
+ </summary>
+ <param name="priority">the ordering priority for this configurator</param>
+ <remarks>
+ <para>
+ The <paramref name="priority"/> is used to order the configurator
+ attributes before they are invoked. Higher priority configurators are executed
+ before lower priority ones.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Abstract method implemented by a subclass. When this method is called
+ the subclass should configure the <paramref name="targetRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)">
+ <summary>
+ Compare this instance to another ConfiguratorAttribute
+ </summary>
+ <param name="obj">the object to compare to</param>
+ <returns>see <see cref="M:System.IComparable.CompareTo(System.Object)"/></returns>
+ <remarks>
+ <para>
+ Compares the priorities of the two <see cref="T:log4net.Config.ConfiguratorAttribute"/> instances.
+ Sorts by priority in descending order. Objects with the same priority are
+ randomly ordered.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.DomainAttribute">
+ <summary>
+ Assembly level attribute that specifies the logging domain for the assembly.
+ </summary>
+ <remarks>
+ <para>
+ <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>
+ </para>
+ <para>
+ Assemblies are mapped to logging domains. Each domain has its own
+ logging repository. This attribute specified on the assembly controls
+ the configuration of the domain. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name
+ of the domain that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/>
+ specifies the type of the repository objects to create for the domain. If
+ this attribute is not specified and a <see cref="P:log4net.Config.RepositoryAttribute.Name"/> is not specified
+ then the assembly will be part of the default shared logging domain.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may only be used
+ once per assembly.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Config.RepositoryAttribute">
+ <summary>
+ Assembly level attribute that specifies the logging repository for the assembly.
+ </summary>
+ <remarks>
+ <para>
+ Assemblies are mapped to logging repository. This attribute specified
+ on the assembly controls
+ the configuration of the repository. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name
+ of the repository that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/>
+ specifies the type of the <see cref="T:log4net.Repository.ILoggerRepository"/> object
+ to create for the assembly. If this attribute is not specified or a <see cref="P:log4net.Config.RepositoryAttribute.Name"/>
+ is not specified then the assembly will be part of the default shared logging repository.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may only be used
+ once per assembly.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.RepositoryAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.RepositoryAttribute.#ctor(System.String)">
+ <summary>
+ Initialize a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class
+ with the name of the repository.
+ </summary>
+ <param name="name">The name of the repository.</param>
+ <remarks>
+ <para>
+ Initialize the attribute with the name for the assembly's repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.RepositoryAttribute.Name">
+ <summary>
+ Gets or sets the name of the logging repository.
+ </summary>
+ <value>
+ The string name to use as the name of the repository associated with this
+ assembly.
+ </value>
+ <remarks>
+ <para>
+ This value does not have to be unique. Several assemblies can share the
+ same repository. They will share the logging configuration of the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.RepositoryAttribute.RepositoryType">
+ <summary>
+ Gets or sets the type of repository to create for this assembly.
+ </summary>
+ <value>
+ The type of repository to create for this assembly.
+ </value>
+ <remarks>
+ <para>
+ The type of the repository to create for the assembly.
+ The type must implement the <see cref="T:log4net.Repository.ILoggerRepository"/>
+ interface.
+ </para>
+ <para>
+ This will be the type of repository created when
+ the repository is created. If multiple assemblies reference the
+ same repository then the repository is only created once using the
+ <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/> of the first assembly to call into the
+ repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DomainAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Obsolete. Use RepositoryAttribute instead of DomainAttribute.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DomainAttribute.#ctor(System.String)">
+ <summary>
+ Initialize a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class
+ with the name of the domain.
+ </summary>
+ <param name="name">The name of the domain.</param>
+ <remarks>
+ <para>
+ Obsolete. Use RepositoryAttribute instead of DomainAttribute.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.DOMConfigurator">
+ <summary>
+ Use this class to initialize the log4net environment using an Xml tree.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.#ctor">
+ <summary>
+ Private constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure">
+ <summary>
+ Automatically configures the log4net system based on the
+ application's configuration settings.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings
+ stored in the application's configuration file.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)">
+ <summary>
+ Configures log4net using a <c>log4net</c> element
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </remarks>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML
+ element.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the specified configuration file.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)">
+ <summary>
+ Configures log4net using the specified configuration file.
+ </summary>
+ <param name="configStream">A stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configStream">The stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the file specified, monitors the file for changes
+ and reloads the configuration if a change is detected.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified,
+ monitors the file for changes and reloads the configuration if a change
+ is detected.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="T:log4net.Config.DOMConfiguratorAttribute">
+ <summary>
+ Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>.
+ </summary>
+ <remarks>
+ <para>
+ <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>
+ </para>
+ <para>
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+ </para>
+ <para>
+ Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
+ without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
+ methods.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Config.XmlConfiguratorAttribute">
+ <summary>
+ Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>.
+ </summary>
+ <remarks>
+ <para>
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+ </para>
+ <para>
+ Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
+ without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
+ methods.
+ </para>
+ <para>
+ If neither of the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>
+ properties are set the configuration is loaded from the application's .config file.
+ If set the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property takes priority over the
+ <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property. The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property
+ specifies a path to a file to load the config from. The path is relative to the
+ application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>.
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property is used as a postfix to the assembly file name.
+ The config file must be located in the application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>.
+ For example in a console application setting the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> to
+ <c>config</c> has the same effect as not specifying the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or
+ <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> properties.
+ </para>
+ <para>
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.Watch"/> property can be set to cause the <see cref="T:log4net.Config.XmlConfigurator"/>
+ to watch the configuration file for changes.
+ </para>
+ <note>
+ <para>
+ Log4net will only look for assembly level configuration attributes once.
+ When using the log4net assembly level attributes to control the configuration
+ of log4net you must ensure that the first call to any of the
+ <see cref="T:log4net.Core.LoggerManager"/> methods is made from the assembly with the configuration
+ attributes.
+ </para>
+ <para>
+ If you cannot guarantee the order in which log4net calls will be made from
+ different assemblies you must use programmatic configuration instead, i.e.
+ call the <see cref="M:XmlConfigurator.Configure()"/> method directly.
+ </para>
+ </note>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Configure the repository using the <see cref="T:log4net.Config.XmlConfigurator"/>.
+ The <paramref name="targetRepository"/> specified must extend the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>
+ class otherwise the <see cref="T:log4net.Config.XmlConfigurator"/> will not be able to
+ configure it.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="targetRepository"/> does not extend <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.</exception>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Attempt to load configuration from the local file system
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configure the specified repository using a <see cref="T:System.IO.FileInfo"/>
+ </summary>
+ <param name="targetRepository">The repository to configure.</param>
+ <param name="configFile">the FileInfo pointing to the config file</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Attempt to load configuration from a URI
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ </member>
+ <member name="F:log4net.Config.XmlConfiguratorAttribute.declaringType">
+ <summary>
+ The fully qualified type of the XmlConfiguratorAttribute class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile">
+ <summary>
+ Gets or sets the filename of the configuration file.
+ </summary>
+ <value>
+ The filename of the configuration file.
+ </value>
+ <remarks>
+ <para>
+ If specified, this is the name of the configuration file to use with
+ the <see cref="T:log4net.Config.XmlConfigurator"/>. This file path is relative to the
+ <b>application base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>).
+ </para>
+ <para>
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension">
+ <summary>
+ Gets or sets the extension of the configuration file.
+ </summary>
+ <value>
+ The extension of the configuration file.
+ </value>
+ <remarks>
+ <para>
+ If specified this is the extension for the configuration file.
+ The path to the config file is built by using the <b>application
+ base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>),
+ the <b>assembly file name</b> and the config file extension.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> is set to <c>MyExt</c> then
+ possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or
+ <c>MyClassLibrary.dll.MyExt</c>.
+ </para>
+ <para>
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.XmlConfiguratorAttribute.Watch">
+ <summary>
+ Gets or sets a value indicating whether to watch the configuration file.
+ </summary>
+ <value>
+ <c>true</c> if the configuration should be watched, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ If this flag is specified and set to <c>true</c> then the framework
+ will watch the configuration file and will reload the config each time
+ the file is modified.
+ </para>
+ <para>
+ The config file can only be watched if it is loaded from local disk.
+ In a No-Touch (Smart Client) deployment where the application is downloaded
+ from a web server the config file may not reside on the local disk
+ and therefore it may not be able to watch it.
+ </para>
+ <note>
+ Watching configuration is not supported on the SSCLI.
+ </note>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.Log4NetConfigurationSectionHandler">
+ <summary>
+ Class to register for the log4net section of the configuration file
+ </summary>
+ <remarks>
+ The log4net section of the configuration file needs to have a section
+ handler registered. This is the section handler used. It simply returns
+ the XML element that is the root of the section.
+ </remarks>
+ <example>
+ Example of registering the log4net section handler :
+ <code lang="XML" escaped="true">
+ <configuration>
+ <configSections>
+ <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
+ </configSections>
+ <log4net>
+ log4net configuration XML goes here
+ </log4net>
+ </configuration>
+ </code>
+ </example>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
+ <summary>
+ Parses the configuration section.
+ </summary>
+ <param name="parent">The configuration settings in a corresponding parent configuration section.</param>
+ <param name="configContext">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>
+ <param name="section">The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</param>
+ <returns>The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</returns>
+ <remarks>
+ <para>
+ Returns the <see cref="T:System.Xml.XmlNode"/> containing the configuration data,
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.PluginAttribute">
+ <summary>
+ Assembly level attribute that specifies a plugin to attach to
+ the repository.
+ </summary>
+ <remarks>
+ <para>
+ Specifies the type of a plugin to create and attach to the
+ assembly's repository. The plugin type must implement the
+ <see cref="T:log4net.Plugin.IPlugin"/> interface.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Plugin.IPluginFactory">
+ <summary>
+ Interface used to create plugins.
+ </summary>
+ <remarks>
+ <para>
+ Interface used to create a plugin.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Plugin.IPluginFactory.CreatePlugin">
+ <summary>
+ Creates the plugin object.
+ </summary>
+ <returns>the new plugin instance</returns>
+ <remarks>
+ <para>
+ Create and return a new plugin instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class
+ with the specified type.
+ </summary>
+ <param name="typeName">The type name of plugin to create.</param>
+ <remarks>
+ <para>
+ Create the attribute with the plugin type specified.
+ </para>
+ <para>
+ Where possible use the constructor that takes a <see cref="T:System.Type"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class
+ with the specified type.
+ </summary>
+ <param name="type">The type of plugin to create.</param>
+ <remarks>
+ <para>
+ Create the attribute with the plugin type specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.CreatePlugin">
+ <summary>
+ Creates the plugin object defined by this attribute.
+ </summary>
+ <remarks>
+ <para>
+ Creates the instance of the <see cref="T:log4net.Plugin.IPlugin"/> object as
+ specified by this attribute.
+ </para>
+ </remarks>
+ <returns>The plugin object.</returns>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.ToString">
+ <summary>
+ Returns a representation of the properties of this object.
+ </summary>
+ <remarks>
+ <para>
+ Overrides base class <see cref="M:Object.ToString()" /> method to
+ return a representation of the properties of this object.
+ </para>
+ </remarks>
+ <returns>A representation of the properties of this object</returns>
+ </member>
+ <member name="P:log4net.Config.PluginAttribute.Type">
+ <summary>
+ Gets or sets the type for the plugin.
+ </summary>
+ <value>
+ The type for the plugin.
+ </value>
+ <remarks>
+ <para>
+ The type for the plugin.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.PluginAttribute.TypeName">
+ <summary>
+ Gets or sets the type name for the plugin.
+ </summary>
+ <value>
+ The type name for the plugin.
+ </value>
+ <remarks>
+ <para>
+ The type name for the plugin.
+ </para>
+ <para>
+ Where possible use the <see cref="P:log4net.Config.PluginAttribute.Type"/> property instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.SecurityContextProviderAttribute">
+ <summary>
+ Assembly level attribute to configure the <see cref="T:log4net.Core.SecurityContextProvider"/>.
+ </summary>
+ <remarks>
+ <para>
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+ </para>
+ <para>
+ Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
+ without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
+ methods.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)">
+ <summary>
+ Construct provider attribute with type specified
+ </summary>
+ <param name="providerType">the type of the provider to use</param>
+ <remarks>
+ <para>
+ The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/>
+ class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the SecurityContextProvider
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Creates a provider instance from the <see cref="P:log4net.Config.SecurityContextProviderAttribute.ProviderType"/> specified.
+ Sets this as the default security context provider <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Config.SecurityContextProviderAttribute.declaringType">
+ <summary>
+ The fully qualified type of the SecurityContextProviderAttribute class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.SecurityContextProviderAttribute.ProviderType">
+ <summary>
+ Gets or sets the type of the provider to use.
+ </summary>
+ <value>
+ the type of the provider to use.
+ </value>
+ <remarks>
+ <para>
+ The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/>
+ class.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.XmlConfigurator">
+ <summary>
+ Use this class to initialize the log4net environment using an Xml tree.
+ </summary>
+ <remarks>
+ <para>
+ Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.#ctor">
+ <summary>
+ Private constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure">
+ <summary>
+ Automatically configures the log4net system based on the
+ application's configuration settings.
+ </summary>
+ <remarks>
+ <para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </para>
+ <para>
+ To use this method to configure log4net you must specify
+ the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section
+ handler for the <c>log4net</c> configuration section. See the
+ <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings
+ stored in the application's configuration file.
+ </summary>
+ <remarks>
+ <para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </para>
+ <para>
+ To use this method to configure log4net you must specify
+ the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section
+ handler for the <c>log4net</c> configuration section. See the
+ <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example.
+ </para>
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)">
+ <summary>
+ Configures log4net using a <c>log4net</c> element
+ </summary>
+ <remarks>
+ <para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </para>
+ </remarks>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML
+ element.
+ </summary>
+ <remarks>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the specified configuration file.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <para>
+ The first element matching <c><configuration></c> will be read as the
+ configuration. If this file is also a .NET .config file then you must specify
+ a configuration section for the <c>log4net</c> element otherwise .NET will
+ complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example:
+ <code lang="XML" escaped="true">
+ <configSections>
+ <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
+ </configSections>
+ </code>
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.Uri)">
+ <summary>
+ Configures log4net using the specified configuration URI.
+ </summary>
+ <param name="configUri">A URI to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)">
+ <summary>
+ Configures log4net using the specified configuration data stream.
+ </summary>
+ <param name="configStream">A stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <para>
+ The first element matching <c><configuration></c> will be read as the
+ configuration. If this file is also a .NET .config file then you must specify
+ a configuration section for the <c>log4net</c> element otherwise .NET will
+ complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example:
+ <code lang="XML" escaped="true">
+ <configSections>
+ <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
+ </configSections>
+ </code>
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ URI.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configUri">A URI to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configStream">The stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the file specified, monitors the file for changes
+ and reloads the configuration if a change is detected.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified,
+ monitors the file for changes and reloads the configuration if a change
+ is detected.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
+ <summary>
+ Configures the specified repository using a <c>log4net</c> element.
+ </summary>
+ <param name="repository">The hierarchy to configure.</param>
+ <param name="element">The element to parse.</param>
+ <remarks>
+ <para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </para>
+ <para>
+ This method is ultimately called by one of the Configure methods
+ to load the configuration from an <see cref="T:System.Xml.XmlElement"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler">
+ <summary>
+ Maps repository names to ConfigAndWatchHandler instances to allow a particular
+ ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is
+ reconfigured.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.declaringType">
+ <summary>
+ The fully qualified type of the XmlConfigurator class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler">
+ <summary>
+ Class used to watch config files.
+ </summary>
+ <remarks>
+ <para>
+ Uses the <see cref="T:System.IO.FileSystemWatcher"/> to monitor
+ changes to a specified file. Because multiple change notifications
+ may be raised when the file is modified, a timer is used to
+ compress the notifications into a single event. The timer
+ waits for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> time before delivering
+ the event notification. If any further <see cref="T:System.IO.FileSystemWatcher"/>
+ change notifications arrive while the timer is waiting it
+ is reset and waits again for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> to
+ elapse.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis">
+ <summary>
+ The default amount of time to wait after receiving notification
+ before reloading the config file.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile">
+ <summary>
+ Holds the FileInfo used to configure the XmlConfigurator
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository">
+ <summary>
+ Holds the repository being configured.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer">
+ <summary>
+ The timer used to compress the notification events.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher">
+ <summary>
+ Watches file for changes. This object should be disposed when no longer
+ needed to free system handles on the watched resources.
+ </summary>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class to
+ watch a specified config file used to configure a repository.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The configuration file to watch.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)">
+ <summary>
+ Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>.
+ </summary>
+ <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param>
+ <param name="e">The argument indicates the file that caused the event to be fired.</param>
+ <remarks>
+ <para>
+ This handler reloads the configuration from the file when the event is fired.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)">
+ <summary>
+ Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>.
+ </summary>
+ <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param>
+ <param name="e">The argument indicates the file that caused the event to be fired.</param>
+ <remarks>
+ <para>
+ This handler reloads the configuration from the file when the event is fired.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)">
+ <summary>
+ Called by the timer when the configuration has been updated.
+ </summary>
+ <param name="state">null</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose">
+ <summary>
+ Release the handles held by the watcher and timer.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.CompactRepositorySelector">
+ <summary>
+ The implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface suitable
+ for use with the compact framework
+ </summary>
+ <remarks>
+ <para>
+ This <see cref="T:log4net.Core.IRepositorySelector"/> implementation is a simple
+ mapping between repository name and <see cref="T:log4net.Repository.ILoggerRepository"/>
+ object.
+ </para>
+ <para>
+ The .NET Compact Framework 1.0 does not support retrieving assembly
+ level attributes therefore unlike the <c>DefaultRepositorySelector</c>
+ this selector does not examine the calling assembly for attributes.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Core.IRepositorySelector">
+ <summary>
+ Interface used by the <see cref="T:log4net.LogManager"/> to select the <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.LogManager"/> uses a <see cref="T:log4net.Core.IRepositorySelector"/>
+ to specify the policy for selecting the correct <see cref="T:log4net.Repository.ILoggerRepository"/>
+ to return to the caller.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="assembly">The assembly to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly.</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </para>
+ <para>
+ How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/>
+ is made is not defined. The implementation may choose any method for
+ this association. The results of this method must be repeatable, i.e.
+ when called again with the same arguments the result must be the
+ save value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.String)">
+ <summary>
+ Gets the named <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </summary>
+ <param name="repositoryName">The name to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
+ <remarks>
+ Lookup a named <see cref="T:log4net.Repository.ILoggerRepository"/>. This is the repository created by
+ calling <see cref="M:CreateRepository(string,Type)"/>.
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a new repository for the assembly specified.
+ </summary>
+ <param name="assembly">The assembly to use to create the domain to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the domain
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ <para>
+ How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/>
+ is made is not defined. The implementation may choose any method for
+ this association.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)">
+ <summary>
+ Creates a new repository with the name specified.
+ </summary>
+ <param name="repositoryName">The name to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the name
+ specified such that a call to <see cref="M:GetRepository(string)"/> with the
+ same name will return the same repository instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)">
+ <summary>
+ Test if a named repository exists
+ </summary>
+ <param name="repositoryName">the named repository to check</param>
+ <returns><c>true</c> if the repository exists</returns>
+ <remarks>
+ <para>
+ Test if a named repository exists. Use <see cref="M:CreateRepository(Assembly, Type)"/>
+ to create a new repository and <see cref="M:GetRepository(Assembly)"/> to retrieve
+ a repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.GetAllRepositories">
+ <summary>
+ Gets an array of all currently defined repositories.
+ </summary>
+ <returns>
+ An array of the <see cref="T:log4net.Repository.ILoggerRepository"/> instances created by
+ this <see cref="T:log4net.Core.IRepositorySelector"/>.</returns>
+ <remarks>
+ <para>
+ Gets an array of all of the repositories created by this selector.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent">
+ <summary>
+ Event to notify that a logger repository has been created.
+ </summary>
+ <value>
+ Event to notify that a logger repository has been created.
+ </value>
+ <remarks>
+ <para>
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
+ holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)">
+ <summary>
+ Create a new repository selector
+ </summary>
+ <param name="defaultRepositoryType">the type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <remarks>
+ <para>
+ Create an new compact repository selector.
+ The default type for repositories must be specified,
+ an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">throw if <paramref name="defaultRepositoryType"/> is null</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException">throw if <paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/></exception>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Get the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly
+ </summary>
+ <param name="assembly">not used</param>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
+ <remarks>
+ <para>
+ The <paramref name="assembly"/> argument is not used. This selector does not create a
+ separate repository for each assembly.
+ </para>
+ <para>
+ As a named repository is not specified the default repository is
+ returned. The default repository is named <c>log4net-default-repository</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)">
+ <summary>
+ Get the named <see cref="T:log4net.Repository.ILoggerRepository"/>
+ </summary>
+ <param name="repositoryName">the name of the repository to lookup</param>
+ <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
+ <remarks>
+ <para>
+ Get the named <see cref="T:log4net.Repository.ILoggerRepository"/>. The default
+ repository is <c>log4net-default-repository</c>. Other repositories
+ must be created using the <see cref="M:CreateRepository(string, Type)"/>.
+ If the named repository does not exist an exception is thrown.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception>
+ <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> does not exist</exception>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Create a new repository for the assembly specified
+ </summary>
+ <param name="assembly">not used</param>
+ <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <returns>the repository created</returns>
+ <remarks>
+ <para>
+ The <paramref name="assembly"/> argument is not used. This selector does not create a
+ separate repository for each assembly.
+ </para>
+ <para>
+ If the <paramref name="repositoryType"/> is <c>null</c> then the
+ default repository type specified to the constructor is used.
+ </para>
+ <para>
+ As a named repository is not specified the default repository is
+ returned. The default repository is named <c>log4net-default-repository</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)">
+ <summary>
+ Create a new repository for the repository specified
+ </summary>
+ <param name="repositoryName">the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ If this param is null then the default repository type is used.</param>
+ <returns>the repository created</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(string)"/> with the
+ same repository specified will return the same repository instance.
+ </para>
+ <para>
+ If the named repository already exists an exception will be thrown.
+ </para>
+ <para>
+ If <paramref name="repositoryType"/> is <c>null</c> then the default
+ repository type specified to the constructor is used.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception>
+ <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> already exists</exception>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)">
+ <summary>
+ Test if a named repository exists
+ </summary>
+ <param name="repositoryName">the named repository to check</param>
+ <returns><c>true</c> if the repository exists</returns>
+ <remarks>
+ <para>
+ Test if a named repository exists. Use <see cref="M:CreateRepository(string, Type)"/>
+ to create a new repository and <see cref="M:GetRepository(string)"/> to retrieve
+ a repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.GetAllRepositories">
+ <summary>
+ Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects
+ </summary>
+ <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns>
+ <remarks>
+ <para>
+ Gets an array of all of the repositories created by this selector.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.CompactRepositorySelector.declaringType">
+ <summary>
+ The fully qualified type of the CompactRepositorySelector class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Notify the registered listeners that the repository has been created
+ </summary>
+ <param name="repository">The repository that has been created</param>
+ <remarks>
+ <para>
+ Raises the <event cref="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent">LoggerRepositoryCreatedEvent</event>
+ event.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent">
+ <summary>
+ Event to notify that a logger repository has been created.
+ </summary>
+ <value>
+ Event to notify that a logger repository has been created.
+ </value>
+ <remarks>
+ <para>
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
+ holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.DefaultRepositorySelector">
+ <summary>
+ The default implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface.
+ </summary>
+ <remarks>
+ <para>
+ Uses attributes defined on the calling assembly to determine how to
+ configure the hierarchy for the repository.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)">
+ <summary>
+ Creates a new repository selector.
+ </summary>
+ <param name="defaultRepositoryType">The type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <remarks>
+ <para>
+ Create an new repository selector.
+ The default type for repositories must be specified,
+ an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="defaultRepositoryType"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="repositoryAssembly">The assembly use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <remarks>
+ <para>
+ The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and the repository
+ to create can be overridden by specifying the <see cref="T:log4net.Config.RepositoryAttribute"/>
+ attribute on the <paramref name="repositoryAssembly"/>.
+ </para>
+ <para>
+ The default values are to use the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>
+ implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
+ <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically configured using
+ any <see cref="T:log4net.Config.ConfiguratorAttribute"/> attributes defined on
+ the <paramref name="repositoryAssembly"/>.
+ </para>
+ </remarks>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly</returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository.
+ </summary>
+ <param name="repositoryName">The repository to use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository.</returns>
+ <remarks>
+ <para>
+ Returns the named repository. If <paramref name="repositoryName"/> is <c>null</c>
+ a <see cref="T:System.ArgumentNullException"/> is thrown. If the repository
+ does not exist a <see cref="T:log4net.Core.LogException"/> is thrown.
+ </para>
+ <para>
+ Use <see cref="M:CreateRepository(string, Type)"/> to create a repository.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception>
+ <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> does not exist.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Create a new repository for the assembly specified
+ </summary>
+ <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ <para>
+ The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and
+ the repository to create can be overridden by specifying the
+ <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ <paramref name="repositoryAssembly"/>. The default values are to use the
+ <paramref name="repositoryType"/> implementation of the
+ <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
+ <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically
+ configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/>
+ attributes defined on the <paramref name="repositoryAssembly"/>.
+ </para>
+ <para>
+ If a repository for the <paramref name="repositoryAssembly"/> already exists
+ that repository will be returned. An error will not be raised and that
+ repository may be of a different type to that specified in <paramref name="repositoryType"/>.
+ Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ assembly may be used to override the repository type specified in
+ <paramref name="repositoryType"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)">
+ <summary>
+ Creates a new repository for the assembly specified.
+ </summary>
+ <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryName">The name to assign to the created repository</param>
+ <param name="readAssemblyAttributes">Set to <c>true</c> to read and apply the assembly attributes</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ <para>
+ The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and
+ the repository to create can be overridden by specifying the
+ <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ <paramref name="repositoryAssembly"/>. The default values are to use the
+ <paramref name="repositoryType"/> implementation of the
+ <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
+ <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically
+ configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/>
+ attributes defined on the <paramref name="repositoryAssembly"/>.
+ </para>
+ <para>
+ If a repository for the <paramref name="repositoryAssembly"/> already exists
+ that repository will be returned. An error will not be raised and that
+ repository may be of a different type to that specified in <paramref name="repositoryType"/>.
+ Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ assembly may be used to override the repository type specified in
+ <paramref name="repositoryType"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)">
+ <summary>
+ Creates a new repository for the specified repository.
+ </summary>
+ <param name="repositoryName">The repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ If this param is <see langword="null"/> then the default repository type is used.</param>
+ <returns>The new repository.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(string)"/> with the
+ same repository specified will return the same repository instance.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception>
+ <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)">
+ <summary>
+ Test if a named repository exists
+ </summary>
+ <param name="repositoryName">the named repository to check</param>
+ <returns><c>true</c> if the repository exists</returns>
+ <remarks>
+ <para>
+ Test if a named repository exists. Use <see cref="M:CreateRepository(string, Type)"/>
+ to create a new repository and <see cref="M:GetRepository(string)"/> to retrieve
+ a repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetAllRepositories">
+ <summary>
+ Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects
+ </summary>
+ <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns>
+ <remarks>
+ <para>
+ Gets an array of all of the repositories created by this selector.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Aliases a repository to an existing repository.
+ </summary>
+ <param name="repositoryAlias">The repository to alias.</param>
+ <param name="repositoryTarget">The repository that the repository is aliased to.</param>
+ <remarks>
+ <para>
+ The repository specified will be aliased to the repository when created.
+ The repository must not already exist.
+ </para>
+ <para>
+ When the repository is created it must utilize the same repository type as
+ the repository it is aliased to, otherwise the aliasing will fail.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="repositoryAlias"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repositoryTarget"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Notifies the registered listeners that the repository has been created.
+ </summary>
+ <param name="repository">The repository that has been created.</param>
+ <remarks>
+ <para>
+ Raises the <see cref="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent"/> event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)">
+ <summary>
+ Gets the repository name and repository type for the specified assembly.
+ </summary>
+ <param name="assembly">The assembly that has a <see cref="T:log4net.Config.RepositoryAttribute"/>.</param>
+ <param name="repositoryName">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>
+ <param name="repositoryType">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="assembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the repository using information from the assembly.
+ </summary>
+ <param name="assembly">The assembly containing <see cref="T:log4net.Config.ConfiguratorAttribute"/>
+ attributes which define the configuration for the repository.</param>
+ <param name="repository">The repository to configure.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="assembly"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repository"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Loads the attribute defined plugins on the assembly.
+ </summary>
+ <param name="assembly">The assembly that contains the attributes.</param>
+ <param name="repository">The repository to add the plugins to.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="assembly"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repository"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Loads the attribute defined aliases on the assembly.
+ </summary>
+ <param name="assembly">The assembly that contains the attributes.</param>
+ <param name="repository">The repository to alias to.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="assembly"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repository"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="F:log4net.Core.DefaultRepositorySelector.declaringType">
+ <summary>
+ The fully qualified type of the DefaultRepositorySelector class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent">
+ <summary>
+ Event to notify that a logger repository has been created.
+ </summary>
+ <value>
+ Event to notify that a logger repository has been created.
+ </value>
+ <remarks>
+ <para>
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
+ holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.ErrorCode">
+ <summary>
+ Defined error codes that can be passed to the <see cref="M:IErrorHandler.Error(string, Exception, ErrorCode)"/> method.
+ </summary>
+ <remarks>
+ <para>
+ Values passed to the <see cref="M:IErrorHandler.Error(string, Exception, ErrorCode)"/> method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.GenericFailure">
+ <summary>
+ A general error
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.WriteFailure">
+ <summary>
+ Error while writing output
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.FlushFailure">
+ <summary>
+ Failed to flush file
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.CloseFailure">
+ <summary>
+ Failed to close file
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.FileOpenFailure">
+ <summary>
+ Unable to open output file
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.MissingLayout">
+ <summary>
+ No layout specified
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.AddressParseFailure">
+ <summary>
+ Failed to parse address
+ </summary>
+ </member>
+ <member name="T:log4net.Core.ExceptionEvaluator">
+ <summary>
+ An evaluator that triggers on an Exception type
+ </summary>
+ <remarks>
+ <para>
+ This evaluator will trigger if the type of the Exception
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to a Type in <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>. ///
+ </para>
+ </remarks>
+ <author>Drew Schaeffer</author>
+ </member>
+ <member name="T:log4net.Core.ITriggeringEventEvaluator">
+ <summary>
+ Test if an <see cref="T:log4net.Core.LoggingEvent"/> triggers an action
+ </summary>
+ <remarks>
+ <para>
+ Implementations of this interface allow certain appenders to decide
+ when to perform an appender specific action.
+ </para>
+ <para>
+ The action or behavior triggered is defined by the implementation.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Test if this event triggers the action
+ </summary>
+ <param name="loggingEvent">The event to check</param>
+ <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>
+ <remarks>
+ <para>
+ Return <c>true</c> if this event triggers the action
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.ExceptionEvaluator.m_type">
+ <summary>
+ The type that causes the trigger to fire.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass">
+ <summary>
+ Causes subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/> to cause the trigger to fire.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.ExceptionEvaluator.#ctor">
+ <summary>
+ Default ctor to allow dynamic creation through a configurator.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)">
+ <summary>
+ Constructs an evaluator and initializes to trigger on <paramref name="exType"/>
+ </summary>
+ <param name="exType">the type that triggers this evaluator.</param>
+ <param name="triggerOnSubClass">If true, this evaluator will trigger on subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.</param>
+ </member>
+ <member name="M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Is this <paramref name="loggingEvent"/> the triggering event?
+ </summary>
+ <param name="loggingEvent">The event to check</param>
+ <returns>This method returns <c>true</c>, if the logging event Exception
+ Type is <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
+ Otherwise it returns <c>false</c></returns>
+ <remarks>
+ <para>
+ This evaluator will trigger if the Exception Type of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.ExceptionEvaluator.ExceptionType">
+ <summary>
+ The type that triggers this evaluator.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass">
+ <summary>
+ If true, this evaluator will trigger on subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.IErrorHandler">
+ <summary>
+ Appenders may delegate their error handling to an <see cref="T:log4net.Core.IErrorHandler"/>.
+ </summary>
+ <remarks>
+ <para>
+ Error handling is a particularly tedious to get right because by
+ definition errors are hard to predict and to reproduce.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)">
+ <summary>
+ Handles the error and information about the error condition is passed as
+ a parameter.
+ </summary>
+ <param name="message">The message associated with the error.</param>
+ <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param>
+ <param name="errorCode">The error code associated with the error.</param>
+ <remarks>
+ <para>
+ Handles the error and information about the error condition is passed as
+ a parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)">
+ <summary>
+ Prints the error message passed as a parameter.
+ </summary>
+ <param name="message">The message associated with the error.</param>
+ <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param>
+ <remarks>
+ <para>
+ See <see cref="M:Error(string,Exception,ErrorCode)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IErrorHandler.Error(System.String)">
+ <summary>
+ Prints the error message passed as a parameter.
+ </summary>
+ <param name="message">The message associated with the error.</param>
+ <remarks>
+ <para>
+ See <see cref="M:Error(string,Exception,ErrorCode)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.IFixingRequired">
+ <summary>
+ Interface for objects that require fixing.
+ </summary>
+ <remarks>
+ <para>
+ Interface that indicates that the object requires fixing before it
+ can be taken outside the context of the appender's
+ <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method.
+ </para>
+ <para>
+ When objects that implement this interface are stored
+ in the context properties maps <see cref="T:log4net.GlobalContext"/>
+ <see cref="P:log4net.GlobalContext.Properties"/> and <see cref="T:log4net.ThreadContext"/>
+ <see cref="P:log4net.ThreadContext.Properties"/> are fixed
+ (see <see cref="P:log4net.Core.LoggingEvent.Fix"/>) the <see cref="M:log4net.Core.IFixingRequired.GetFixedObject"/>
+ method will be called.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.IFixingRequired.GetFixedObject">
+ <summary>
+ Get a portable version of this object
+ </summary>
+ <returns>the portable instance of this object</returns>
+ <remarks>
+ <para>
+ Get a portable instance object that represents the current
+ state of this object. The portable object can be stored
+ and logged from any thread with identical results.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.ILogger">
+ <summary>
+ Interface that all loggers implement
+ </summary>
+ <remarks>
+ <para>
+ This interface supports logging events and testing if a level
+ is enabled for logging.
+ </para>
+ <para>
+ These methods will not throw exceptions. Note to implementor, ensure
+ that the implementation of these methods cannot allow an exception
+ to be thrown to the caller.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)">
+ <summary>
+ This generic form is intended to be used by wrappers.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="level">The level of the message to be logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>
+ <remarks>
+ <para>
+ Generates a logging event for the specified <paramref name="level"/> using
+ the <paramref name="message"/> and <paramref name="exception"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)">
+ <summary>
+ This is the most generic printing method that is intended to be used
+ by wrappers.
+ </summary>
+ <param name="logEvent">The event being logged.</param>
+ <remarks>
+ <para>
+ Logs the specified logging event through this logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)">
+ <summary>
+ Checks if this logger is enabled for a given <see cref="T:log4net.Core.Level"/> passed as parameter.
+ </summary>
+ <param name="level">The level to check.</param>
+ <returns>
+ <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Test if this logger is going to log events of the specified <paramref name="level"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.ILogger.Name">
+ <summary>
+ Gets the name of the logger.
+ </summary>
+ <value>
+ The name of the logger.
+ </value>
+ <remarks>
+ <para>
+ The name of this logger
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.ILogger.Repository">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this
+ <c>Logger</c> instance is attached to.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this logger belongs to.
+ </value>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this
+ <c>Logger</c> instance is attached to.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.ILoggerWrapper">
+ <summary>
+ Base interface for all wrappers
+ </summary>
+ <remarks>
+ <para>
+ Base interface for all wrappers.
+ </para>
+ <para>
+ All wrappers must implement this interface.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="P:log4net.Core.ILoggerWrapper.Logger">
+ <summary>
+ Get the implementation behind this wrapper object.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.ILogger"/> object that in implementing this object.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Core.ILogger"/> object that in implementing this
+ object. The <c>Logger</c> object may not
+ be the same object as this object because of logger decorators.
+ This gets the actual underlying objects that is used to process
+ the log events.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggerRepositoryCreationEventHandler">
+ <summary>
+ Delegate used to handle logger repository creation event notifications
+ </summary>
+ <param name="sender">The <see cref="T:log4net.Core.IRepositorySelector"/> which created the repository.</param>
+ <param name="e">The <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> event args
+ that holds the <see cref="T:log4net.Repository.ILoggerRepository"/> instance that has been created.</param>
+ <remarks>
+ <para>
+ Delegate used to handle logger repository creation event notifications.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggerRepositoryCreationEventArgs">
+ <summary>
+ Provides data for the <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/> event.
+ </summary>
+ <remarks>
+ <para>
+ A <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/>
+ event is raised every time a <see cref="T:log4net.Repository.ILoggerRepository"/> is created.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository">
+ <summary>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified
+ </summary>
+ <param name="repository">the <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created</param>
+ <remarks>
+ <para>
+ Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository">
+ <summary>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
+ </summary>
+ <value>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
+ </value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.Level">
+ <summary>
+ Defines the default set of levels recognized by the system.
+ </summary>
+ <remarks>
+ <para>
+ Each <see cref="T:log4net.Core.LoggingEvent"/> has an associated <see cref="T:log4net.Core.Level"/>.
+ </para>
+ <para>
+ Levels have a numeric <see cref="P:log4net.Core.Level.Value"/> that defines the relative
+ ordering between levels. Two Levels with the same <see cref="P:log4net.Core.Level.Value"/>
+ are deemed to be equivalent.
+ </para>
+ <para>
+ The levels that are recognized by log4net are set for each <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and each repository can have different levels defined. The levels are stored
+ in the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/> on the repository. Levels are
+ looked up by name from the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>.
+ </para>
+ <para>
+ When logging at level INFO the actual level used is not <see cref="F:log4net.Core.Level.Info"/> but
+ the value of <c>LoggerRepository.LevelMap["INFO"]</c>. The default value for this is
+ <see cref="F:log4net.Core.Level.Info"/>, but this can be changed by reconfiguring the level map.
+ </para>
+ <para>
+ Each level has a <see cref="P:log4net.Core.Level.DisplayName"/> in addition to its <see cref="P:log4net.Core.Level.Name"/>. The
+ <see cref="P:log4net.Core.Level.DisplayName"/> is the string that is written into the output log. By default
+ the display name is the same as the level name, but this can be used to alias levels
+ or to localize the log output.
+ </para>
+ <para>
+ Some of the predefined levels recognized by the system are:
+ </para>
+ <list type="bullet">
+ <item>
+ <description><see cref="F:log4net.Core.Level.Off"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Fatal"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Error"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Warn"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Info"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Debug"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.All"/>.</description>
+ </item>
+ </list>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="level">Integer value for this level, higher values represent more severe levels.</param>
+ <param name="levelName">The string name of this level.</param>
+ <param name="displayName">The display name for this level. This may be localized or otherwise different from the name</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with
+ the specified level name and value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="level">Integer value for this level, higher values represent more severe levels.</param>
+ <param name="levelName">The string name of this level.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with
+ the specified level name and value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.ToString">
+ <summary>
+ Returns the <see cref="T:System.String"/> representation of the current
+ <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> representation of the current <see cref="T:log4net.Core.Level"/>.
+ </returns>
+ <remarks>
+ <para>
+ Returns the level <see cref="P:log4net.Core.Level.Name"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.Equals(System.Object)">
+ <summary>
+ Compares levels.
+ </summary>
+ <param name="o">The object to compare against.</param>
+ <returns><c>true</c> if the objects are equal.</returns>
+ <remarks>
+ <para>
+ Compares the levels of <see cref="T:log4net.Core.Level"/> instances, and
+ defers to base class if the target object is not a <see cref="T:log4net.Core.Level"/>
+ instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.GetHashCode">
+ <summary>
+ Returns a hash code
+ </summary>
+ <returns>A hash code for the current <see cref="T:log4net.Core.Level"/>.</returns>
+ <remarks>
+ <para>
+ Returns a hash code suitable for use in hashing algorithms and data
+ structures like a hash table.
+ </para>
+ <para>
+ Returns the hash code of the level <see cref="P:log4net.Core.Level.Value"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.CompareTo(System.Object)">
+ <summary>
+ Compares this instance to a specified object and returns an
+ indication of their relative values.
+ </summary>
+ <param name="r">A <see cref="T:log4net.Core.Level"/> instance or <see langword="null"/> to compare with this instance.</param>
+ <returns>
+ A 32-bit signed integer that indicates the relative order of the
+ values compared. The return value has these meanings:
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Meaning</description>
+ </listheader>
+ <item>
+ <term>Less than zero</term>
+ <description>This instance is less than <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Zero</term>
+ <description>This instance is equal to <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Greater than zero</term>
+ <description>
+ <para>This instance is greater than <paramref name="r"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="r"/> is <see langword="null"/>.</para>
+ </description>
+ </item>
+ </list>
+ </returns>
+ <remarks>
+ <para>
+ <paramref name="r"/> must be an instance of <see cref="T:log4net.Core.Level"/>
+ or <see langword="null"/>; otherwise, an exception is thrown.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentException"><paramref name="r"/> is not a <see cref="T:log4net.Core.Level"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is greater than another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is greater than
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is less than another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is less than
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is greater than or equal to another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is greater than or equal to
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is less than or equal to another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is less than or equal to
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/>
+ objects have the same value.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <returns>
+ <c>true</c> if the value of <paramref name="l"/> is the same as the
+ value of <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/>
+ objects have different values.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <returns>
+ <c>true</c> if the value of <paramref name="l"/> is different from
+ the value of <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Compares two specified <see cref="T:log4net.Core.Level"/> instances.
+ </summary>
+ <param name="l">The first <see cref="T:log4net.Core.Level"/> to compare.</param>
+ <param name="r">The second <see cref="T:log4net.Core.Level"/> to compare.</param>
+ <returns>
+ A 32-bit signed integer that indicates the relative order of the
+ two values compared. The return value has these meanings:
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Meaning</description>
+ </listheader>
+ <item>
+ <term>Less than zero</term>
+ <description><paramref name="l"/> is less than <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Zero</term>
+ <description><paramref name="l"/> is equal to <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Greater than zero</term>
+ <description><paramref name="l"/> is greater than <paramref name="r"/>.</description>
+ </item>
+ </list>
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.Level.Off">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Off"/> level designates a higher level than all the rest.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Log4Net_Debug">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Emergency"/> level designates very severe error events.
+ System unusable, emergencies.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Emergency">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Emergency"/> level designates very severe error events.
+ System unusable, emergencies.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Fatal">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Fatal"/> level designates very severe error events
+ that will presumably lead the application to abort.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Alert">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Alert"/> level designates very severe error events.
+ Take immediate action, alerts.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Critical">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Critical"/> level designates very severe error events.
+ Critical condition, critical.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Severe">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Severe"/> level designates very severe error events.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Error">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Error"/> level designates error events that might
+ still allow the application to continue running.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Warn">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Warn"/> level designates potentially harmful
+ situations.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Notice">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Notice"/> level designates informational messages
+ that highlight the progress of the application at the highest level.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Info">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Info"/> level designates informational messages that
+ highlight the progress of the application at coarse-grained level.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Debug">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Debug"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Fine">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Fine"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Trace">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Trace"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Finer">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Finer"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Verbose">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Verbose"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Finest">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Finest"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.All">
+ <summary>
+ The <see cref="F:log4net.Core.Level.All"/> level designates the lowest level possible.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.Level.Name">
+ <summary>
+ Gets the name of this level.
+ </summary>
+ <value>
+ The name of this level.
+ </value>
+ <remarks>
+ <para>
+ Gets the name of this level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.Level.Value">
+ <summary>
+ Gets the value of this level.
+ </summary>
+ <value>
+ The value of this level.
+ </value>
+ <remarks>
+ <para>
+ Gets the value of this level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.Level.DisplayName">
+ <summary>
+ Gets the display name of this level.
+ </summary>
+ <value>
+ The display name of this level.
+ </value>
+ <remarks>
+ <para>
+ Gets the display name of this level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LevelCollection">
+ <summary>
+ A strongly-typed collection of <see cref="T:log4net.Core.Level"/> objects.
+ </summary>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)">
+ <summary>
+ Creates a read-only wrapper for a <c>LevelCollection</c> instance.
+ </summary>
+ <param name="list">list to create a readonly wrapper arround</param>
+ <returns>
+ A <c>LevelCollection</c> wrapper that is read-only.
+ </returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that is empty and has the default initial capacity.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that has the specified initial capacity.
+ </summary>
+ <param name="capacity">
+ The number of elements that the new <c>LevelCollection</c> is initially capable of storing.
+ </param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that contains elements copied from the specified <c>LevelCollection</c>.
+ </summary>
+ <param name="c">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> array.
+ </summary>
+ <param name="a">The <see cref="T:log4net.Core.Level"/> array whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> collection.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)">
+ <summary>
+ Allow subclasses to avoid our default constructors
+ </summary>
+ <param name="tag"></param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])">
+ <summary>
+ Copies the entire <c>LevelCollection</c> to a one-dimensional
+ <see cref="T:log4net.Core.Level"/> array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)">
+ <summary>
+ Copies the entire <c>LevelCollection</c> to a one-dimensional
+ <see cref="T:log4net.Core.Level"/> array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param>
+ <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Add(log4net.Core.Level)">
+ <summary>
+ Adds a <see cref="T:log4net.Core.Level"/> to the end of the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to be added to the end of the <c>LevelCollection</c>.</param>
+ <returns>The index at which the value has been added.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Clear">
+ <summary>
+ Removes all elements from the <c>LevelCollection</c>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:log4net.Core.LevelCollection"/>.
+ </summary>
+ <returns>A new <see cref="T:log4net.Core.LevelCollection"/> with a shallow copy of the collection data.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)">
+ <summary>
+ Determines whether a given <see cref="T:log4net.Core.Level"/> is in the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to check for.</param>
+ <returns><c>true</c> if <paramref name="item"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)">
+ <summary>
+ Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Core.Level"/>
+ in the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to locate in the <c>LevelCollection</c>.</param>
+ <returns>
+ The zero-based index of the first occurrence of <paramref name="item"/>
+ in the entire <c>LevelCollection</c>, if found; otherwise, -1.
+ </returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)">
+ <summary>
+ Inserts an element into the <c>LevelCollection</c> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to insert.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)">
+ <summary>
+ Removes the first occurrence of a specific <see cref="T:log4net.Core.Level"/> from the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to remove from the <c>LevelCollection</c>.</param>
+ <exception cref="T:System.ArgumentException">
+ The specified <see cref="T:log4net.Core.Level"/> was not found in the <c>LevelCollection</c>.
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.RemoveAt(System.Int32)">
+ <summary>
+ Removes the element at the specified index of the <c>LevelCollection</c>.
+ </summary>
+ <param name="index">The zero-based index of the element to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the <c>LevelCollection</c>.
+ </summary>
+ <returns>An <see cref="T:log4net.Core.LevelCollection.Enumerator"/> for the entire <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)">
+ <summary>
+ Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.
+ </summary>
+ <param name="x">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Core.Level"/> array to the current <c>LevelCollection</c>.
+ </summary>
+ <param name="x">The <see cref="T:log4net.Core.Level"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Core.Level"/> collection to the current <c>LevelCollection</c>.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.TrimToSize">
+ <summary>
+ Sets the capacity to the actual number of elements.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Count">
+ <summary>
+ Gets the number of elements actually contained in the <c>LevelCollection</c>.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.IsSynchronized">
+ <summary>
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+ </summary>
+ <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Core.Level"/> at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>true if the collection has a fixed size; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the IList is read-only.
+ </summary>
+ <value>true if the collection is read-only; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Capacity">
+ <summary>
+ Gets or sets the number of elements the <c>LevelCollection</c> can contain.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelCollection.ILevelCollectionEnumerator">
+ <summary>
+ Supports type-safe iteration over a <see cref="T:log4net.Core.LevelCollection"/>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelCollection.Tag">
+ <summary>
+ Type visible only to our subclasses
+ Used to access protected constructor
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LevelCollection.Tag.Default">
+ <summary>
+ A value
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelCollection.Enumerator">
+ <summary>
+ Supports simple iteration over a <see cref="T:log4net.Core.LevelCollection"/>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)">
+ <summary>
+ Initializes a new instance of the <c>Enumerator</c> class.
+ </summary>
+ <param name="tc"></param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Enumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Enumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Enumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelEvaluator">
+ <summary>
+ An evaluator that triggers at a threshold level
+ </summary>
+ <remarks>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.LevelEvaluator.m_threshold">
+ <summary>
+ The threshold for triggering
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelEvaluator.#ctor">
+ <summary>
+ Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold.
+ </summary>
+ <remarks>
+ <para>
+ Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold.
+ </para>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)">
+ <summary>
+ Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold.
+ </summary>
+ <param name="threshold">the threshold to trigger at</param>
+ <remarks>
+ <para>
+ Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold.
+ </para>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Is this <paramref name="loggingEvent"/> the triggering event?
+ </summary>
+ <param name="loggingEvent">The event to check</param>
+ <returns>This method returns <c>true</c>, if the event level
+ is equal or higher than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>.
+ Otherwise it returns <c>false</c></returns>
+ <remarks>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LevelEvaluator.Threshold">
+ <summary>
+ the threshold to trigger at
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.Level"/> that will cause this evaluator to trigger
+ </value>
+ <remarks>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LevelMap">
+ <summary>
+ Mapping between string name and Level object
+ </summary>
+ <remarks>
+ <para>
+ Mapping between string name and <see cref="T:log4net.Core.Level"/> object.
+ This mapping is held separately for each <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ The level name is case insensitive.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.LevelMap.m_mapName2Level">
+ <summary>
+ Mapping from level name to Level object. The
+ level name is case insensitive
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelMap.#ctor">
+ <summary>
+ Construct the level map
+ </summary>
+ <remarks>
+ <para>
+ Construct the level map.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Clear">
+ <summary>
+ Clear the internal maps of all levels
+ </summary>
+ <remarks>
+ <para>
+ Clear the internal maps of all levels
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32)">
+ <summary>
+ Create a new Level and add it to the map
+ </summary>
+ <param name="name">the string to display for the Level</param>
+ <param name="value">the level value to give to the Level</param>
+ <remarks>
+ <para>
+ Create a new Level and add it to the map
+ </para>
+ </remarks>
+ <seealso cref="M:Add(string,int,string)"/>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)">
+ <summary>
+ Create a new Level and add it to the map
+ </summary>
+ <param name="name">the string to display for the Level</param>
+ <param name="value">the level value to give to the Level</param>
+ <param name="displayName">the display name to give to the Level</param>
+ <remarks>
+ <para>
+ Create a new Level and add it to the map
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Add(log4net.Core.Level)">
+ <summary>
+ Add a Level to the map
+ </summary>
+ <param name="level">the Level to add</param>
+ <remarks>
+ <para>
+ Add a Level to the map
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)">
+ <summary>
+ Lookup a named level from the map
+ </summary>
+ <param name="defaultLevel">the name of the level to lookup is taken from this level.
+ If the level is not set on the map then this level is added</param>
+ <returns>the level in the map with the name specified</returns>
+ <remarks>
+ <para>
+ Lookup a named level from the map. The name of the level to lookup is taken
+ from the <see cref="P:log4net.Core.Level.Name"/> property of the <paramref name="defaultLevel"/>
+ argument.
+ </para>
+ <para>
+ If no level with the specified name is found then the
+ <paramref name="defaultLevel"/> argument is added to the level map
+ and returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LevelMap.Item(System.String)">
+ <summary>
+ Lookup a <see cref="T:log4net.Core.Level"/> by name
+ </summary>
+ <param name="name">The name of the Level to lookup</param>
+ <returns>a Level from the map with the name specified</returns>
+ <remarks>
+ <para>
+ Returns the <see cref="T:log4net.Core.Level"/> from the
+ map with the name specified. If the no level is
+ found then <c>null</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LevelMap.AllLevels">
+ <summary>
+ Return all possible levels as a list of Level objects.
+ </summary>
+ <returns>all possible levels as a list of Level objects</returns>
+ <remarks>
+ <para>
+ Return all possible levels as a list of Level objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LocationInfo">
+ <summary>
+ The internal representation of caller location information.
+ </summary>
+ <remarks>
+ <para>
+ This class uses the <c>System.Diagnostics.StackTrace</c> class to generate
+ a call stack. The caller's information is then extracted from this stack.
+ </para>
+ <para>
+ The <c>System.Diagnostics.StackTrace</c> class is not supported on the
+ .NET Compact Framework 1.0 therefore caller location information is not
+ available on that framework.
+ </para>
+ <para>
+ The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:
+ </para>
+ <para>
+ "StackTrace information will be most informative with Debug build configurations.
+ By default, Debug builds include debug symbols, while Release builds do not. The
+ debug symbols contain most of the file, method name, line number, and column
+ information used in constructing StackFrame and StackTrace objects. StackTrace
+ might not report as many method calls as expected, due to code transformations
+ that occur during optimization."
+ </para>
+ <para>
+ This means that in a Release build the caller information may be incomplete or may
+ not exist at all! Therefore caller location information cannot be relied upon in a Release build.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Core.LocationInfo.NA">
+ <summary>
+ When location information is not available the constant
+ <c>NA</c> is returned. Current value of this string
+ constant is <b>?</b>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LocationInfo.#ctor(System.Type)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LocationInfo"/>
+ class based on the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="className">The fully qualified class name.</param>
+ <param name="methodName">The method name.</param>
+ <param name="fileName">The file name.</param>
+ <param name="lineNumber">The line number of the method within the file.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LocationInfo"/>
+ class with the specified data.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LocationInfo.declaringType">
+ <summary>
+ The fully qualified type of the LocationInfo class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.ClassName">
+ <summary>
+ Gets the fully qualified class name of the caller making the logging
+ request.
+ </summary>
+ <value>
+ The fully qualified class name of the caller making the logging
+ request.
+ </value>
+ <remarks>
+ <para>
+ Gets the fully qualified class name of the caller making the logging
+ request.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.FileName">
+ <summary>
+ Gets the file name of the caller.
+ </summary>
+ <value>
+ The file name of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the file name of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.LineNumber">
+ <summary>
+ Gets the line number of the caller.
+ </summary>
+ <value>
+ The line number of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the line number of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.MethodName">
+ <summary>
+ Gets the method name of the caller.
+ </summary>
+ <value>
+ The method name of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the method name of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.FullInfo">
+ <summary>
+ Gets all available caller information
+ </summary>
+ <value>
+ All available caller information, in the format
+ <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
+ </value>
+ <remarks>
+ <para>
+ Gets all available caller information, in the format
+ <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.StackFrames">
+ <summary>
+ Gets the stack frames from the stack trace of the caller making the log request
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LoggerManager">
+ <summary>
+ Static manager that controls the creation of repositories
+ </summary>
+ <remarks>
+ <para>
+ Static manager that controls the creation of repositories
+ </para>
+ <para>
+ This class is used by the wrapper managers (e.g. <see cref="T:log4net.LogManager"/>)
+ to provide access to the <see cref="T:log4net.Core.ILogger"/> objects.
+ </para>
+ <para>
+ This manager also holds the <see cref="T:log4net.Core.IRepositorySelector"/> that is used to
+ lookup and create repositories. The selector can be set either programmatically using
+ the <see cref="P:log4net.Core.LoggerManager.RepositorySelector"/> property, or by setting the <c>log4net.RepositorySelector</c>
+ AppSetting in the applications config file to the fully qualified type name of the
+ selector to use.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.#ctor">
+ <summary>
+ Private constructor to prevent instances. Only static methods should be used.
+ </summary>
+ <remarks>
+ <para>
+ Private constructor to prevent instances. Only static methods should be used.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.#cctor">
+ <summary>
+ Hook the shutdown event
+ </summary>
+ <remarks>
+ <para>
+ On the full .NET runtime, the static constructor hooks up the
+ <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events.
+ These are used to shutdown the log4net system as the application exits.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.RegisterAppDomainEvents">
+ <summary>
+ Register for ProcessExit and DomainUnload events on the AppDomain
+ </summary>
+ <remarks>
+ <para>
+ This needs to be in a separate method because the events make
+ a LinkDemand for the ControlAppDomain SecurityPermission. Because
+ this is a LinkDemand it is demanded at JIT time. Therefore we cannot
+ catch the exception in the method itself, we have to catch it in the
+ caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)">
+ <summary>
+ Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repository">the repository to lookup in</param>
+ <returns>Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repository"/> argument.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetRepository(System.String)">
+ <summary>
+ Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repository">the repository to lookup in</param>
+ <returns>Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repository"/> argument.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ <remarks>
+ <para>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.Exists(System.String,System.String)">
+ <summary>
+ Returns the named logger if it exists.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="name">The fully qualified logger name to look for.</param>
+ <returns>
+ The logger found, or <c>null</c> if the named logger does not exist in the
+ specified repository.
+ </returns>
+ <remarks>
+ <para>
+ If the named logger exists (in the specified repository) then it
+ returns a reference to the logger, otherwise it returns
+ <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)">
+ <summary>
+ Returns the named logger if it exists.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <param name="name">The fully qualified logger name to look for.</param>
+ <returns>
+ The logger found, or <c>null</c> if the named logger does not exist in the
+ specified assembly's repository.
+ </returns>
+ <remarks>
+ <para>
+ If the named logger exists (in the specified assembly's repository) then it
+ returns a reference to the logger, otherwise it returns
+ <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)">
+ <summary>
+ Returns all the currently defined loggers in the specified repository.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <returns>All the defined loggers.</returns>
+ <remarks>
+ <para>
+ The root logger is <b>not</b> included in the returned array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)">
+ <summary>
+ Returns all the currently defined loggers in the specified assembly's repository.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <returns>All the defined loggers.</returns>
+ <remarks>
+ <para>
+ The root logger is <b>not</b> included in the returned array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)">
+ <summary>
+ Retrieves or creates a named logger.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="name">The name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Retrieves a logger named as the <paramref name="name"/>
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+ </para>
+ <para>
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)">
+ <summary>
+ Retrieves or creates a named logger.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <param name="name">The name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Retrieves a logger named as the <paramref name="name"/>
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+ </para>
+ <para>
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)">
+ <summary>
+ Shorthand for <see cref="M:LogManager.GetLogger(string)"/>.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Gets the logger for the fully qualified name of the type specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Shorthand for <see cref="M:LogManager.GetLogger(string)"/>.
+ </summary>
+ <param name="repositoryAssembly">the assembly to use to lookup the repository</param>
+ <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Gets the logger for the fully qualified name of the type specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.Shutdown">
+ <summary>
+ Shuts down the log4net system.
+ </summary>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in all the
+ default repositories.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>
+ The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ShutdownRepository(System.String)">
+ <summary>
+ Shuts down the repository for the repository specified.
+ </summary>
+ <param name="repository">The repository to shutdown.</param>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in the
+ repository for the <paramref name="repository"/> specified.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>
+ The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)">
+ <summary>
+ Shuts down the repository for the repository specified.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in the
+ repository for the repository. The repository is looked up using
+ the <paramref name="repositoryAssembly"/> specified.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>
+ The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ResetConfiguration(System.String)">
+ <summary>
+ Resets all values contained in this repository instance to their defaults.
+ </summary>
+ <param name="repository">The repository to reset.</param>
+ <remarks>
+ <para>
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set its default "off" value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)">
+ <summary>
+ Resets all values contained in this repository instance to their defaults.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository to reset.</param>
+ <remarks>
+ <para>
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set its default "off" value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateDomain(System.String)">
+ <summary>
+ Creates a repository with the specified name.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a
+ <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object.
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateRepository(System.String)">
+ <summary>
+ Creates a repository with the specified name.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a
+ <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object.
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)">
+ <summary>
+ Creates a repository with the specified name and repository type.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique to the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An Exception will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)">
+ <summary>
+ Creates a repository with the specified name and repository type.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique to the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An Exception will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a repository for the specified assembly and repository type.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a repository for the specified assembly and repository type.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetAllRepositories">
+ <summary>
+ Gets an array of all currently defined repositories.
+ </summary>
+ <returns>An array of all the known <see cref="T:log4net.Repository.ILoggerRepository"/> objects.</returns>
+ <remarks>
+ <para>
+ Gets an array of all currently defined repositories.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetVersionInfo">
+ <summary>
+ Internal method to get pertinent version info.
+ </summary>
+ <returns>A string of version info.</returns>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)">
+ <summary>
+ Called when the <see cref="E:System.AppDomain.DomainUnload"/> event fires
+ </summary>
+ <param name="sender">the <see cref="T:System.AppDomain"/> that is exiting</param>
+ <param name="e">null</param>
+ <remarks>
+ <para>
+ Called when the <see cref="E:System.AppDomain.DomainUnload"/> event fires.
+ </para>
+ <para>
+ When the event is triggered the log4net system is <see cref="M:Shutdown()"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)">
+ <summary>
+ Called when the <see cref="E:System.AppDomain.ProcessExit"/> event fires
+ </summary>
+ <param name="sender">the <see cref="T:System.AppDomain"/> that is exiting</param>
+ <param name="e">null</param>
+ <remarks>
+ <para>
+ Called when the <see cref="E:System.AppDomain.ProcessExit"/> event fires.
+ </para>
+ <para>
+ When the event is triggered the log4net system is <see cref="M:Shutdown()"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerManager.declaringType">
+ <summary>
+ The fully qualified type of the LoggerManager class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerManager.s_repositorySelector">
+ <summary>
+ Initialize the default repository selector
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LoggerManager.RepositorySelector">
+ <summary>
+ Gets or sets the repository selector used by the <see cref="T:log4net.LogManager"/>.
+ </summary>
+ <value>
+ The repository selector used by the <see cref="T:log4net.LogManager"/>.
+ </value>
+ <remarks>
+ <para>
+ The repository selector (<see cref="T:log4net.Core.IRepositorySelector"/>) is used by
+ the <see cref="T:log4net.LogManager"/> to create and select repositories
+ (<see cref="T:log4net.Repository.ILoggerRepository"/>).
+ </para>
+ <para>
+ The caller to <see cref="T:log4net.LogManager"/> supplies either a string name
+ or an assembly (if not supplied the assembly is inferred using
+ <see cref="M:Assembly.GetCallingAssembly()"/>).
+ </para>
+ <para>
+ This context is used by the selector to lookup a specific repository.
+ </para>
+ <para>
+ For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>;
+ for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default
+ repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggerWrapperImpl">
+ <summary>
+ Implementation of the <see cref="T:log4net.Core.ILoggerWrapper"/> interface.
+ </summary>
+ <remarks>
+ <para>
+ This class should be used as the base for all wrapper implementations.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)">
+ <summary>
+ Constructs a new wrapper for the specified logger.
+ </summary>
+ <param name="logger">The logger to wrap.</param>
+ <remarks>
+ <para>
+ Constructs a new wrapper for the specified logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerWrapperImpl.m_logger">
+ <summary>
+ The logger that this object is wrapping
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LoggerWrapperImpl.Logger">
+ <summary>
+ Gets the implementation behind this wrapper object.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.ILogger"/> object that this object is implementing.
+ </value>
+ <remarks>
+ <para>
+ The <c>Logger</c> object may not be the same object as this object
+ because of logger decorators.
+ </para>
+ <para>
+ This gets the actual underlying objects that is used to process
+ the log events.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggingEventData">
+ <summary>
+ Portable data structure used by <see cref="T:log4net.Core.LoggingEvent"/>
+ </summary>
+ <remarks>
+ <para>
+ Portable data structure used by <see cref="T:log4net.Core.LoggingEvent"/>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.LoggerName">
+ <summary>
+ The logger name.
+ </summary>
+ <remarks>
+ <para>
+ The logger name.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Level">
+ <summary>
+ Level of logging event.
+ </summary>
+ <remarks>
+ <para>
+ Level of logging event. Level cannot be Serializable
+ because it is a flyweight. Due to its special serialization it
+ cannot be declared final either.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Message">
+ <summary>
+ The application supplied message.
+ </summary>
+ <remarks>
+ <para>
+ The application supplied message of logging event.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.ThreadName">
+ <summary>
+ The name of thread
+ </summary>
+ <remarks>
+ <para>
+ The name of thread in which this logging event was generated
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.TimeStamp">
+ <summary>
+ The time the event was logged
+ </summary>
+ <remarks>
+ <para>
+ The TimeStamp is stored in the local time zone for this computer.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.LocationInfo">
+ <summary>
+ Location information for the caller.
+ </summary>
+ <remarks>
+ <para>
+ Location information for the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.UserName">
+ <summary>
+ String representation of the user
+ </summary>
+ <remarks>
+ <para>
+ String representation of the user's windows name,
+ like DOMAIN\username
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Identity">
+ <summary>
+ String representation of the identity.
+ </summary>
+ <remarks>
+ <para>
+ String representation of the current thread's principal identity.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.ExceptionString">
+ <summary>
+ The string representation of the exception
+ </summary>
+ <remarks>
+ <para>
+ The string representation of the exception
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Domain">
+ <summary>
+ String representation of the AppDomain.
+ </summary>
+ <remarks>
+ <para>
+ String representation of the AppDomain.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Properties">
+ <summary>
+ Additional event specific properties
+ </summary>
+ <remarks>
+ <para>
+ A logger or an appender may attach additional
+ properties to specific events. These properties
+ have a string key and an object value.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.FixFlags">
+ <summary>
+ Flags passed to the <see cref="P:log4net.Core.LoggingEvent.Fix"/> property
+ </summary>
+ <remarks>
+ <para>
+ Flags passed to the <see cref="P:log4net.Core.LoggingEvent.Fix"/> property
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Mdc">
+ <summary>
+ Fix the MDC
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Ndc">
+ <summary>
+ Fix the NDC
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Message">
+ <summary>
+ Fix the rendered message
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.ThreadName">
+ <summary>
+ Fix the thread name
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.LocationInfo">
+ <summary>
+ Fix the callers location information
+ </summary>
+ <remarks>
+ CAUTION: Very slow to generate
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.FixFlags.UserName">
+ <summary>
+ Fix the callers windows user name
+ </summary>
+ <remarks>
+ CAUTION: Slow to generate
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Domain">
+ <summary>
+ Fix the domain friendly name
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Identity">
+ <summary>
+ Fix the callers principal name
+ </summary>
+ <remarks>
+ CAUTION: May be slow to generate
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Exception">
+ <summary>
+ Fix the exception text
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Properties">
+ <summary>
+ Fix the event properties. Active properties must implement <see cref="T:log4net.Core.IFixingRequired"/> in order to be eligible for fixing.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.None">
+ <summary>
+ No fields fixed
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.All">
+ <summary>
+ All fields fixed
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Partial">
+ <summary>
+ Partial fields fixed
+ </summary>
+ <remarks>
+ <para>
+ This set of partial fields gives good performance. The following fields are fixed:
+ </para>
+ <list type="bullet">
+ <item><description><see cref="F:log4net.Core.FixFlags.Message"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.ThreadName"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.Exception"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.Domain"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.Properties"/></description></item>
+ </list>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggingEvent">
+ <summary>
+ The internal representation of logging events.
+ </summary>
+ <remarks>
+ <para>
+ When an affirmative decision is made to log then a
+ <see cref="T:log4net.Core.LoggingEvent"/> instance is created. This instance
+ is passed around to the different log4net components.
+ </para>
+ <para>
+ This class is of concern to those wishing to extend log4net.
+ </para>
+ <para>
+ Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/>
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ <see cref="M:FixVolatileData()"/>. There is a performance penalty
+ for incurred by calling <see cref="M:FixVolatileData()"/> but it
+ is essential to maintaining data consistency.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Douglas de la Torre</author>
+ <author>Daniel Cazzulino</author>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.HostNameProperty">
+ <summary>
+ The key into the Properties map for the host name value.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.IdentityProperty">
+ <summary>
+ The key into the Properties map for the thread identity value.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.UserNameProperty">
+ <summary>
+ The key into the Properties map for the user name value.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ from the supplied parameters.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="repository">The repository this event is logged in.</param>
+ <param name="loggerName">The name of the logger of this event.</param>
+ <param name="level">The level of this event.</param>
+ <param name="message">The message of this event.</param>
+ <param name="exception">The exception for this event.</param>
+ <remarks>
+ <para>
+ Except <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/>, <see cref="P:log4net.Core.LoggingEvent.Level"/> and <see cref="P:log4net.Core.LoggingEvent.LoggerName"/>,
+ all fields of <c>LoggingEvent</c> are filled when actually needed. Call
+ <see cref="M:FixVolatileData()"/> to cache all data locally
+ to prevent inconsistencies.
+ </para>
+ <para>This method is called by the log4net framework
+ to create a logging event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ using specific data.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="repository">The repository this event is logged in.</param>
+ <param name="data">Data used to initialize the logging event.</param>
+ <param name="fixedData">The fields in the <paranref name="data"/> struct that have already been fixed.</param>
+ <remarks>
+ <para>
+ This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/>
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+ </para>
+ <para>
+ Use the <see cref="M:GetLoggingEventData(FixFlags)"/> method to obtain an
+ instance of the <see cref="T:log4net.Core.LoggingEventData"/> class.
+ </para>
+ <para>
+ The <paramref name="fixedData"/> parameter should be used to specify which fields in the
+ <paramref name="data"/> struct have been preset. Fields not specified in the <paramref name="fixedData"/>
+ will be captured from the environment if requested or fixed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ using specific data.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="repository">The repository this event is logged in.</param>
+ <param name="data">Data used to initialize the logging event.</param>
+ <remarks>
+ <para>
+ This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/>
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+ </para>
+ <para>
+ Use the <see cref="M:GetLoggingEventData(FixFlags)"/> method to obtain an
+ instance of the <see cref="T:log4net.Core.LoggingEventData"/> class.
+ </para>
+ <para>
+ This constructor sets this objects <see cref="P:log4net.Core.LoggingEvent.Fix"/> flags to <see cref="F:log4net.Core.FixFlags.All"/>,
+ this assumes that all the data relating to this event is passed in via the <paramref name="data"/>
+ parameter and no other data should be captured from the environment.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ using specific data.
+ </summary>
+ <param name="data">Data used to initialize the logging event.</param>
+ <remarks>
+ <para>
+ This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/>
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+ </para>
+ <para>
+ Use the <see cref="M:GetLoggingEventData(FixFlags)"/> method to obtain an
+ instance of the <see cref="T:log4net.Core.LoggingEventData"/> class.
+ </para>
+ <para>
+ This constructor sets this objects <see cref="P:log4net.Core.LoggingEvent.Fix"/> flags to <see cref="F:log4net.Core.FixFlags.All"/>,
+ this assumes that all the data relating to this event is passed in via the <paramref name="data"/>
+ parameter and no other data should be captured from the environment.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serialization constructor
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ with serialized data.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Ensure that the repository is set.
+ </summary>
+ <param name="repository">the value for the repository</param>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)">
+ <summary>
+ Write the rendered message to a TextWriter
+ </summary>
+ <param name="writer">the writer to write the message to</param>
+ <remarks>
+ <para>
+ Unlike the <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property this method
+ does store the message data in the internal cache. Therefore
+ if called only once this method should be faster than the
+ <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property, however if the message is
+ to be accessed multiple times then the property will be more efficient.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
+ <param name="context">The destination for this serialization.</param>
+ <remarks>
+ <para>
+ The data in this event must be fixed before it can be serialized.
+ </para>
+ <para>
+ The <see cref="M:FixVolatileData()"/> method must be called during the
+ <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method call if this event
+ is to be used outside that method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetLoggingEventData">
+ <summary>
+ Gets the portable data for this <see cref="T:log4net.Core.LoggingEvent"/>.
+ </summary>
+ <returns>The <see cref="T:log4net.Core.LoggingEventData"/> for this event.</returns>
+ <remarks>
+ <para>
+ A new <see cref="T:log4net.Core.LoggingEvent"/> can be constructed using a
+ <see cref="T:log4net.Core.LoggingEventData"/> instance.
+ </para>
+ <para>
+ Does a <see cref="F:log4net.Core.FixFlags.Partial"/> fix of the data
+ in the logging event before returning the event data.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)">
+ <summary>
+ Gets the portable data for this <see cref="T:log4net.Core.LoggingEvent"/>.
+ </summary>
+ <param name="fixFlags">The set of data to ensure is fixed in the LoggingEventData</param>
+ <returns>The <see cref="T:log4net.Core.LoggingEventData"/> for this event.</returns>
+ <remarks>
+ <para>
+ A new <see cref="T:log4net.Core.LoggingEvent"/> can be constructed using a
+ <see cref="T:log4net.Core.LoggingEventData"/> instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetExceptionStrRep">
+ <summary>
+ Returns this event's exception's rendered using the
+ <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </summary>
+ <returns>
+ This event's exception's rendered using the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </returns>
+ <remarks>
+ <para>
+ <b>Obsolete. Use <see cref="M:log4net.Core.LoggingEvent.GetExceptionString"/> instead.</b>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetExceptionString">
+ <summary>
+ Returns this event's exception's rendered using the
+ <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </summary>
+ <returns>
+ This event's exception's rendered using the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </returns>
+ <remarks>
+ <para>
+ Returns this event's exception's rendered using the
+ <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.FixVolatileData">
+ <summary>
+ Fix instance fields that hold volatile data.
+ </summary>
+ <remarks>
+ <para>
+ Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/>
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ <see cref="M:FixVolatileData()"/>. There is a performance penalty
+ incurred by calling <see cref="M:FixVolatileData()"/> but it
+ is essential to maintaining data consistency.
+ </para>
+ <para>
+ Calling <see cref="M:FixVolatileData()"/> is equivalent to
+ calling <see cref="M:FixVolatileData(bool)"/> passing the parameter
+ <c>false</c>.
+ </para>
+ <para>
+ See <see cref="M:FixVolatileData(bool)"/> for more
+ information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)">
+ <summary>
+ Fixes instance fields that hold volatile data.
+ </summary>
+ <param name="fastButLoose">Set to <c>true</c> to not fix data that takes a long time to fix.</param>
+ <remarks>
+ <para>
+ Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/>
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ <see cref="M:FixVolatileData()"/>. There is a performance penalty
+ for incurred by calling <see cref="M:FixVolatileData()"/> but it
+ is essential to maintaining data consistency.
+ </para>
+ <para>
+ The <paramref name="fastButLoose"/> param controls the data that
+ is fixed. Some of the data that can be fixed takes a long time to
+ generate, therefore if you do not require those settings to be fixed
+ they can be ignored by setting the <paramref name="fastButLoose"/> param
+ to <c>true</c>. This setting will ignore the <see cref="P:log4net.Core.LoggingEvent.LocationInformation"/>
+ and <see cref="P:log4net.Core.LoggingEvent.UserName"/> settings.
+ </para>
+ <para>
+ Set <paramref name="fastButLoose"/> to <c>false</c> to ensure that all
+ settings are fixed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)">
+ <summary>
+ Fix the fields specified by the <see cref="T:log4net.Core.FixFlags"/> parameter
+ </summary>
+ <param name="flags">the fields to fix</param>
+ <remarks>
+ <para>
+ Only fields specified in the <paramref name="flags"/> will be fixed.
+ Fields will not be fixed if they have previously been fixed.
+ It is not possible to 'unfix' a field.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.LookupProperty(System.String)">
+ <summary>
+ Lookup a composite property in this event
+ </summary>
+ <param name="key">the key for the property to lookup</param>
+ <returns>the value for the property</returns>
+ <remarks>
+ <para>
+ This event has composite properties that combine together properties from
+ several different contexts in the following order:
+ <list type="definition">
+ <item>
+ <term>this events properties</term>
+ <description>
+ This event has <see cref="P:log4net.Core.LoggingEvent.Properties"/> that can be set. These
+ properties are specific to this event only.
+ </description>
+ </item>
+ <item>
+ <term>the thread properties</term>
+ <description>
+ The <see cref="P:log4net.ThreadContext.Properties"/> that are set on the current
+ thread. These properties are shared by all events logged on this thread.
+ </description>
+ </item>
+ <item>
+ <term>the global properties</term>
+ <description>
+ The <see cref="P:log4net.GlobalContext.Properties"/> that are set globally. These
+ properties are shared by all the threads in the AppDomain.
+ </description>
+ </item>
+ </list>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetProperties">
+ <summary>
+ Get all the composite properties in this event
+ </summary>
+ <returns>the <see cref="T:log4net.Util.PropertiesDictionary"/> containing all the properties</returns>
+ <remarks>
+ <para>
+ See <see cref="M:log4net.Core.LoggingEvent.LookupProperty(System.String)"/> for details of the composite properties
+ stored by the event.
+ </para>
+ <para>
+ This method returns a single <see cref="T:log4net.Util.PropertiesDictionary"/> containing all the
+ properties defined for this event.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_data">
+ <summary>
+ The internal logging event data.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_compositeProperties">
+ <summary>
+ The internal logging event data.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_eventProperties">
+ <summary>
+ The internal logging event data.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType">
+ <summary>
+ The fully qualified Type of the calling
+ logger class in the stack frame (i.e. the declaring type of the method).
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_message">
+ <summary>
+ The application supplied message of logging event.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_thrownException">
+ <summary>
+ The exception that was thrown.
+ </summary>
+ <remarks>
+ This is not serialized. The string representation
+ is serialized instead.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_repository">
+ <summary>
+ The repository that generated the logging event
+ </summary>
+ <remarks>
+ This is not serialized.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_fixFlags">
+ <summary>
+ The fix state for this event
+ </summary>
+ <remarks>
+ These flags indicate which fields have been fixed.
+ Not serialized.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_cacheUpdatable">
+ <summary>
+ Indicated that the internal cache is updateable (ie not fixed)
+ </summary>
+ <remarks>
+ This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler
+ changes in the caching strategy.
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.StartTime">
+ <summary>
+ Gets the time when the current process started.
+ </summary>
+ <value>
+ This is the time when this process started.
+ </value>
+ <remarks>
+ <para>
+ The TimeStamp is stored in the local time zone for this computer.
+ </para>
+ <para>
+ Tries to get the start time for the current process.
+ Failing that it returns the time of the first call to
+ this property.
+ </para>
+ <para>
+ Note that AppDomains may be loaded and unloaded within the
+ same process without the process terminating and therefore
+ without the process start time being reset.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Level">
+ <summary>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event.
+ </value>
+ <remarks>
+ <para>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.TimeStamp">
+ <summary>
+ Gets the time of the logging event.
+ </summary>
+ <value>
+ The time of the logging event.
+ </value>
+ <remarks>
+ <para>
+ The TimeStamp is stored in the local time zone for this computer.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.LoggerName">
+ <summary>
+ Gets the name of the logger that logged the event.
+ </summary>
+ <value>
+ The name of the logger that logged the event.
+ </value>
+ <remarks>
+ <para>
+ Gets the name of the logger that logged the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.LocationInformation">
+ <summary>
+ Gets the location information for this logging event.
+ </summary>
+ <value>
+ The location information for this logging event.
+ </value>
+ <remarks>
+ <para>
+ The collected information is cached for future use.
+ </para>
+ <para>
+ See the <see cref="T:log4net.Core.LocationInfo"/> class for more information on
+ supported frameworks and the different behavior in Debug and
+ Release builds.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.MessageObject">
+ <summary>
+ Gets the message object used to initialize this event.
+ </summary>
+ <value>
+ The message object used to initialize this event.
+ </value>
+ <remarks>
+ <para>
+ Gets the message object used to initialize this event.
+ Note that this event may not have a valid message object.
+ If the event is serialized the message object will not
+ be transferred. To get the text of the message the
+ <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property must be used
+ not this property.
+ </para>
+ <para>
+ If there is no defined message object for this event then
+ null will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.ExceptionObject">
+ <summary>
+ Gets the exception object used to initialize this event.
+ </summary>
+ <value>
+ The exception object used to initialize this event.
+ </value>
+ <remarks>
+ <para>
+ Gets the exception object used to initialize this event.
+ Note that this event may not have a valid exception object.
+ If the event is serialized the exception object will not
+ be transferred. To get the text of the exception the
+ <see cref="M:log4net.Core.LoggingEvent.GetExceptionString"/> method must be used
+ not this property.
+ </para>
+ <para>
+ If there is no defined exception object for this event then
+ null will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Repository">
+ <summary>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this event was created in.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this event was created in.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.RenderedMessage">
+ <summary>
+ Gets the message, rendered through the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </summary>
+ <value>
+ The message rendered through the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </value>
+ <remarks>
+ <para>
+ The collected information is cached for future use.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.ThreadName">
+ <summary>
+ Gets the name of the current thread.
+ </summary>
+ <value>
+ The name of the current thread, or the thread ID when
+ the name is not available.
+ </value>
+ <remarks>
+ <para>
+ The collected information is cached for future use.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.UserName">
+ <summary>
+ Gets the name of the current user.
+ </summary>
+ <value>
+ The name of the current user, or <c>NOT AVAILABLE</c> when the
+ underlying runtime has no support for retrieving the name of the
+ current user.
+ </value>
+ <remarks>
+ <para>
+ Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of
+ the current windows user.
+ </para>
+ <para>
+ To improve performance, we could cache the string representation of
+ the name, and reuse that as long as the identity stayed constant.
+ Once the identity changed, we would need to re-assign and re-render
+ the string.
+ </para>
+ <para>
+ However, the <c>WindowsIdentity.GetCurrent()</c> call seems to
+ return different objects every time, so the current implementation
+ doesn't do this type of caching.
+ </para>
+ <para>
+ Timing for these operations:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Method</term>
+ <description>Results</description>
+ </listheader>
+ <item>
+ <term><c>WindowsIdentity.GetCurrent()</c></term>
+ <description>10000 loops, 00:00:00.2031250 seconds</description>
+ </item>
+ <item>
+ <term><c>WindowsIdentity.GetCurrent().Name</c></term>
+ <description>10000 loops, 00:00:08.0468750 seconds</description>
+ </item>
+ </list>
+ <para>
+ This means we could speed things up almost 40 times by caching the
+ value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since
+ this takes (8.04-0.20) = 7.84375 seconds.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Identity">
+ <summary>
+ Gets the identity of the current thread principal.
+ </summary>
+ <value>
+ The string name of the identity of the current thread principal.
+ </value>
+ <remarks>
+ <para>
+ Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get
+ the name of the current thread principal.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Domain">
+ <summary>
+ Gets the AppDomain friendly name.
+ </summary>
+ <value>
+ The AppDomain friendly name.
+ </value>
+ <remarks>
+ <para>
+ Gets the AppDomain friendly name.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Properties">
+ <summary>
+ Additional event specific properties.
+ </summary>
+ <value>
+ Additional event specific properties.
+ </value>
+ <remarks>
+ <para>
+ A logger or an appender may attach additional
+ properties to specific events. These properties
+ have a string key and an object value.
+ </para>
+ <para>
+ This property is for events that have been added directly to
+ this event. The aggregate properties (which include these
+ event properties) can be retrieved using <see cref="M:log4net.Core.LoggingEvent.LookupProperty(System.String)"/>
+ and <see cref="M:log4net.Core.LoggingEvent.GetProperties"/>.
+ </para>
+ <para>
+ Once the properties have been fixed <see cref="P:log4net.Core.LoggingEvent.Fix"/> this property
+ returns the combined cached properties. This ensures that updates to
+ this property are always reflected in the underlying storage. When
+ returning the combined properties there may be more keys in the
+ Dictionary than expected.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Fix">
+ <summary>
+ The fixed fields in this event
+ </summary>
+ <value>
+ The set of fields that are fixed in this event
+ </value>
+ <remarks>
+ <para>
+ Fields will not be fixed if they have previously been fixed.
+ It is not possible to 'unfix' a field.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LogImpl">
+ <summary>
+ Implementation of <see cref="T:log4net.ILog"/> wrapper interface.
+ </summary>
+ <remarks>
+ <para>
+ This implementation of the <see cref="T:log4net.ILog"/> interface
+ forwards to the <see cref="T:log4net.Core.ILogger"/> held by the base class.
+ </para>
+ <para>
+ This logger has methods to allow the caller to log at the following
+ levels:
+ </para>
+ <list type="definition">
+ <item>
+ <term>DEBUG</term>
+ <description>
+ The <see cref="M:Debug(object)"/> and <see cref="M:DebugFormat(string, object[])"/> methods log messages
+ at the <c>DEBUG</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Debug"/>. The <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>INFO</term>
+ <description>
+ The <see cref="M:Info(object)"/> and <see cref="M:InfoFormat(string, object[])"/> methods log messages
+ at the <c>INFO</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Info"/>. The <see cref="P:log4net.Core.LogImpl.IsInfoEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>WARN</term>
+ <description>
+ The <see cref="M:Warn(object)"/> and <see cref="M:WarnFormat(string, object[])"/> methods log messages
+ at the <c>WARN</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Warn"/>. The <see cref="P:log4net.Core.LogImpl.IsWarnEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>ERROR</term>
+ <description>
+ The <see cref="M:Error(object)"/> and <see cref="M:ErrorFormat(string, object[])"/> methods log messages
+ at the <c>ERROR</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Error"/>. The <see cref="P:log4net.Core.LogImpl.IsErrorEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>FATAL</term>
+ <description>
+ The <see cref="M:Fatal(object)"/> and <see cref="M:FatalFormat(string, object[])"/> methods log messages
+ at the <c>FATAL</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Fatal"/>. The <see cref="P:log4net.Core.LogImpl.IsFatalEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ </list>
+ <para>
+ The values for these levels and their semantic meanings can be changed by
+ configuring the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/> for the repository.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.ILog">
+ <summary>
+ The ILog interface is use by application to log messages into
+ the log4net framework.
+ </summary>
+ <remarks>
+ <para>
+ Use the <see cref="T:log4net.LogManager"/> to obtain logger instances
+ that implement this interface. The <see cref="M:LogManager.GetLogger(Assembly,Type)"/>
+ static method is used to get logger instances.
+ </para>
+ <para>
+ This class contains methods for logging at different levels and also
+ has properties for determining if those logging levels are
+ enabled in the current configuration.
+ </para>
+ <para>
+ This interface can be implemented in different ways. This documentation
+ specifies reasonable behavior that a caller can expect from the actual
+ implementation, however different implementations reserve the right to
+ do things differently.
+ </para>
+ </remarks>
+ <example>Simple example of logging messages
+ <code lang="C#">
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.Info("Application Start");
+ log.Debug("This is a debug message");
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is another debug message");
+ }
+ </code>
+ </example>
+ <seealso cref="T:log4net.LogManager"/>
+ <seealso cref="M:LogManager.GetLogger(Assembly, Type)"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.ILog.Debug(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.</overloads>
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>DEBUG</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Debug"/> level. If this logger is
+ <c>DEBUG</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Debug(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Debug(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Debug(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object[])">
+ <overloads>Log a formatted string with the <see cref="F:log4net.Core.Level.Debug"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Info(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level.</overloads>
+ <summary>
+ Logs a message object with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Info"/> level. If this logger is
+ <c>INFO</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Info(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <param name="message">The message object to log.</param>
+ <seealso cref="M:Info(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Info(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>INFO</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Info(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Warn(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.</overloads>
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>WARN</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Warn"/> level. If this logger is
+ <c>WARN</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Warn(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <param name="message">The message object to log.</param>
+ <seealso cref="M:Warn(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Warn(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Warn(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Error(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level.</overloads>
+ <summary>
+ Logs a message object with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>ERROR</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Error"/> level. If this logger is
+ <c>ERROR</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Error(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Error(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Error(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Fatal(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.</overloads>
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>FATAL</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Fatal"/> level. If this logger is
+ <c>FATAL</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Fatal(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <param name="message">The message object to log.</param>
+ <seealso cref="M:Fatal(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Fatal(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Fatal(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsDebugEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Debug"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ This function is intended to lessen the computational cost of
+ disabled log debug statements.
+ </para>
+ <para> For some ILog interface <c>log</c>, when you write:</para>
+ <code lang="C#">
+ log.Debug("This is entry number: " + i );
+ </code>
+ <para>
+ You incur the cost constructing the message, string construction and concatenation in
+ this case, regardless of whether the message is logged or not.
+ </para>
+ <para>
+ If you are worried about speed (who isn't), then you should write:
+ </para>
+ <code lang="C#">
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+ </code>
+ <para>
+ This way you will not incur the cost of parameter
+ construction if debugging is disabled for <c>log</c>. On
+ the other hand, if the <c>log</c> is debug enabled, you
+ will incur the cost of evaluating whether the logger is debug
+ enabled twice. Once in <see cref="P:log4net.ILog.IsDebugEnabled"/> and once in
+ the <see cref="M:Debug(object)"/>. This is an insignificant overhead
+ since evaluating a logger takes about 1% of the time it
+ takes to actually log. This is the preferred style of logging.
+ </para>
+ <para>Alternatively if your logger is available statically then the is debug
+ enabled state can be stored in a static variable like this:
+ </para>
+ <code lang="C#">
+ private static readonly bool isDebugEnabled = log.IsDebugEnabled;
+ </code>
+ <para>
+ Then when you come to log you can write:
+ </para>
+ <code lang="C#">
+ if (isDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+ </code>
+ <para>
+ This way the debug enabled state is only queried once
+ when the class is loaded. Using a <c>private static readonly</c>
+ variable is the most efficient because it is a run time constant
+ and can be heavily optimized by the JIT compiler.
+ </para>
+ <para>
+ Of course if you use a static readonly variable to
+ hold the enabled state of the logger then you cannot
+ change the enabled state at runtime to vary the logging
+ that is produced. You have to decide if you need absolute
+ speed or runtime flexibility.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="M:DebugFormat(IFormatProvider, string, object[])"/>
+ </member>
+ <member name="P:log4net.ILog.IsInfoEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Info"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="M:InfoFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsWarnEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Warn"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="M:WarnFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsErrorEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Error"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="M:ErrorFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsFatalEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Fatal"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="M:FatalFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)">
+ <summary>
+ Construct a new wrapper for the specified logger.
+ </summary>
+ <param name="logger">The logger to wrap.</param>
+ <remarks>
+ <para>
+ Construct a new wrapper for the specified logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Virtual method called when the configuration of the repository changes
+ </summary>
+ <param name="repository">the repository holding the levels</param>
+ <remarks>
+ <para>
+ Virtual method called when the configuration of the repository changes
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Debug(System.Object)">
+ <summary>
+ Logs a message object with the <c>DEBUG</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>DEBUG</c>
+ enabled by comparing the level of this logger with the
+ <c>DEBUG</c> level. If this logger is
+ <c>DEBUG</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para>
+ <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Debug(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>DEBUG</c> level
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Logs a message object with the <c>DEBUG</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/> passed
+ as a parameter.
+ </para>
+ <para>
+ See the <see cref="M:Debug(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Info(System.Object)">
+ <summary>
+ Logs a message object with the <c>INFO</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by comparing the level of this logger with the
+ <c>INFO</c> level. If this logger is
+ <c>INFO</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para>
+ <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Info(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Info(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>INFO</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Logs a message object with the <c>INFO</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/>
+ passed as a parameter.
+ </para>
+ <para>
+ See the <see cref="M:Info(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>INFO</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:InfoFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>INFO</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:InfoFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>INFO</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:InfoFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>INFO</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:InfoFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>INFO</c> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Warn(System.Object)">
+ <summary>
+ Logs a message object with the <c>WARN</c> level.
+ </summary>
+ <param name="message">the message object to log</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>WARN</c>
+ enabled by comparing the level of this logger with the
+ <c>WARN</c> level. If this logger is
+ <c>WARN</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger and
+ also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para>
+ <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> to this
+ method will print the name of the <see cref="T:System.Exception"/> but no
+ stack trace. To print a stack trace use the
+ <see cref="M:Warn(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>WARN</c> level
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Logs a message object with the <c>WARN</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/>
+ passed as a parameter.
+ </para>
+ <para>
+ See the <see cref="M:Warn(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>WARN</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:WarnFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>WARN</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:WarnFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>WARN</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:WarnFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>WARN</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:WarnFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>WARN</c> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Error(System.Object)">
+ <summary>
+ Logs a message object with the <c>ERROR</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>ERROR</c>
+ enabled by comparing the level of this logger with the
+ <c>ERROR</c> level. If this logger is
+ <c>ERROR</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger and
+ also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para>
+ <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> to this
+ method will print the name of the <see cref="T:System.Exception"/> but no
+ stack trace. To print a stack trace use the
+ <see cref="M:Error(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Error(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>ERROR</c> level
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Logs a message object with the <c>ERROR</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/>
+ passed as a parameter.
+ </para>
+ <para>
+ See the <see cref="M:Error(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>ERROR</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:ErrorFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>ERROR</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:ErrorFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>ERROR</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:ErrorFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>ERROR</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:ErrorFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>ERROR</c> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Fatal(System.Object)">
+ <summary>
+ Logs a message object with the <c>FATAL</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>FATAL</c>
+ enabled by comparing the level of this logger with the
+ <c>FATAL</c> level. If this logger is
+ <c>FATAL</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger and
+ also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para>
+ <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> to this
+ method will print the name of the <see cref="T:System.Exception"/> but no
+ stack trace. To print a stack trace use the
+ <see cref="M:Fatal(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>FATAL</c> level
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Logs a message object with the <c>FATAL</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/>
+ passed as a parameter.
+ </para>
+ <para>
+ See the <see cref="M:Fatal(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>FATAL</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:FatalFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>FATAL</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:FatalFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>FATAL</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:FatalFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>FATAL</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:FatalFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>FATAL</c> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.LoggerRepositoryConfigurationChanged(System.Object,System.EventArgs)">
+ <summary>
+ Event handler for the <see cref="E:log4net.Repository.ILoggerRepository.ConfigurationChanged"/> event
+ </summary>
+ <param name="sender">the repository</param>
+ <param name="e">Empty</param>
+ </member>
+ <member name="F:log4net.Core.LogImpl.ThisDeclaringType">
+ <summary>
+ The fully qualified name of this declaring type not the type of any subclass.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LogImpl.IsDebugEnabled">
+ <summary>
+ Checks if this logger is enabled for the <c>DEBUG</c>
+ level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <c>DEBUG</c> events,
+ <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ This function is intended to lessen the computational cost of
+ disabled log debug statements.
+ </para>
+ <para>
+ For some <c>log</c> Logger object, when you write:
+ </para>
+ <code lang="C#">
+ log.Debug("This is entry number: " + i );
+ </code>
+ <para>
+ You incur the cost constructing the message, concatenation in
+ this case, regardless of whether the message is logged or not.
+ </para>
+ <para>
+ If you are worried about speed, then you should write:
+ </para>
+ <code lang="C#">
+ if (log.IsDebugEnabled())
+ {
+ log.Debug("This is entry number: " + i );
+ }
+ </code>
+ <para>
+ This way you will not incur the cost of parameter
+ construction if debugging is disabled for <c>log</c>. On
+ the other hand, if the <c>log</c> is debug enabled, you
+ will incur the cost of evaluating whether the logger is debug
+ enabled twice. Once in <c>IsDebugEnabled</c> and once in
+ the <c>Debug</c>. This is an insignificant overhead
+ since evaluating a logger takes about 1% of the time it
+ takes to actually log.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LogImpl.IsInfoEnabled">
+ <summary>
+ Checks if this logger is enabled for the <c>INFO</c> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <c>INFO</c> events,
+ <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples
+ of using this method.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.Core.LogImpl.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.Core.LogImpl.IsWarnEnabled">
+ <summary>
+ Checks if this logger is enabled for the <c>WARN</c> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <c>WARN</c> events,
+ <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples
+ of using this method.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.Core.LogImpl.IsErrorEnabled">
+ <summary>
+ Checks if this logger is enabled for the <c>ERROR</c> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <c>ERROR</c> events,
+ <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples of using this method.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.Core.LogImpl.IsFatalEnabled">
+ <summary>
+ Checks if this logger is enabled for the <c>FATAL</c> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <c>FATAL</c> events,
+ <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples of using this method.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="T:log4net.Core.MethodItem">
+ <summary>
+ provides method information without actually referencing a System.Reflection.MethodBase
+ as that would require that the containing assembly is loaded.
+ </summary>
+
+ </member>
+ <member name="F:log4net.Core.MethodItem.NA">
+ <summary>
+ When location information is not available the constant
+ <c>NA</c> is returned. Current value of this string
+ constant is <b>?</b>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.MethodItem.#ctor">
+ <summary>
+ constructs a method item for an unknown method.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.MethodItem.#ctor(System.String)">
+ <summary>
+ constructs a method item from the name of the method.
+ </summary>
+ <param name="name"></param>
+ </member>
+ <member name="M:log4net.Core.MethodItem.#ctor(System.String,System.String[])">
+ <summary>
+ constructs a method item from the name of the method and its parameters.
+ </summary>
+ <param name="name"></param>
+ <param name="parameters"></param>
+ </member>
+ <member name="M:log4net.Core.MethodItem.#ctor(System.Reflection.MethodBase)">
+ <summary>
+ constructs a method item from a method base by determining the method name and its parameters.
+ </summary>
+ <param name="methodBase"></param>
+ </member>
+ <member name="F:log4net.Core.MethodItem.declaringType">
+ <summary>
+ The fully qualified type of the StackFrameItem class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.MethodItem.Name">
+ <summary>
+ Gets the method name of the caller making the logging
+ request.
+ </summary>
+ <value>
+ The method name of the caller making the logging
+ request.
+ </value>
+ <remarks>
+ <para>
+ Gets the method name of the caller making the logging
+ request.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.MethodItem.Parameters">
+ <summary>
+ Gets the method parameters of the caller making
+ the logging request.
+ </summary>
+ <value>
+ The method parameters of the caller making
+ the logging request
+ </value>
+ <remarks>
+ <para>
+ Gets the method parameters of the caller making
+ the logging request.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.SecurityContext">
+ <summary>
+ A SecurityContext used by log4net when interacting with protected resources
+ </summary>
+ <remarks>
+ <para>
+ A SecurityContext used by log4net when interacting with protected resources
+ for example with operating system services. This can be used to impersonate
+ a principal that has been granted privileges on the system resources.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.SecurityContext.Impersonate(System.Object)">
+ <summary>
+ Impersonate this SecurityContext
+ </summary>
+ <param name="state">State supplied by the caller</param>
+ <returns>An <see cref="T:System.IDisposable"/> instance that will
+ revoke the impersonation of this SecurityContext, or <c>null</c></returns>
+ <remarks>
+ <para>
+ Impersonate this security context. Further calls on the current
+ thread should now be made in the security context provided
+ by this object. When the <see cref="T:System.IDisposable"/> result
+ <see cref="M:System.IDisposable.Dispose"/> method is called the security
+ context of the thread should be reverted to the state it was in
+ before <see cref="M:log4net.Core.SecurityContext.Impersonate(System.Object)"/> was called.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.SecurityContextProvider">
+ <summary>
+ The <see cref="T:log4net.Core.SecurityContextProvider"/> providers default <see cref="T:log4net.Core.SecurityContext"/> instances.
+ </summary>
+ <remarks>
+ <para>
+ A configured component that interacts with potentially protected system
+ resources uses a <see cref="T:log4net.Core.SecurityContext"/> to provide the elevated
+ privileges required. If the <see cref="T:log4net.Core.SecurityContext"/> object has
+ been not been explicitly provided to the component then the component
+ will request one from this <see cref="T:log4net.Core.SecurityContextProvider"/>.
+ </para>
+ <para>
+ By default the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is
+ an instance of <see cref="T:log4net.Core.SecurityContextProvider"/> which returns only
+ <see cref="T:log4net.Util.NullSecurityContext"/> objects. This is a reasonable default
+ where the privileges required are not know by the system.
+ </para>
+ <para>
+ This default behavior can be overridden by subclassing the <see cref="T:log4net.Core.SecurityContextProvider"/>
+ and overriding the <see cref="M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)"/> method to return
+ the desired <see cref="T:log4net.Core.SecurityContext"/> objects. The default provider
+ can be replaced by programmatically setting the value of the
+ <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> property.
+ </para>
+ <para>
+ An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c>
+ This attribute can be applied to an assembly in the same way as the
+ <c>log4net.Config.XmlConfiguratorAttribute"</c>. The attribute takes
+ the type to use as the <see cref="T:log4net.Core.SecurityContextProvider"/> as an argument.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.SecurityContextProvider.s_defaultProvider">
+ <summary>
+ The default provider
+ </summary>
+ </member>
+ <member name="M:log4net.Core.SecurityContextProvider.#ctor">
+ <summary>
+ Protected default constructor to allow subclassing
+ </summary>
+ <remarks>
+ <para>
+ Protected default constructor to allow subclassing
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)">
+ <summary>
+ Create a SecurityContext for a consumer
+ </summary>
+ <param name="consumer">The consumer requesting the SecurityContext</param>
+ <returns>An impersonation context</returns>
+ <remarks>
+ <para>
+ The default implementation is to return a <see cref="T:log4net.Util.NullSecurityContext"/>.
+ </para>
+ <para>
+ Subclasses should override this method to provide their own
+ behavior.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.SecurityContextProvider.DefaultProvider">
+ <summary>
+ Gets or sets the default SecurityContextProvider
+ </summary>
+ <value>
+ The default SecurityContextProvider
+ </value>
+ <remarks>
+ <para>
+ The default provider is used by configured components that
+ require a <see cref="T:log4net.Core.SecurityContext"/> and have not had one
+ given to them.
+ </para>
+ <para>
+ By default this is an instance of <see cref="T:log4net.Core.SecurityContextProvider"/>
+ that returns <see cref="T:log4net.Util.NullSecurityContext"/> objects.
+ </para>
+ <para>
+ The default provider can be set programmatically by setting
+ the value of this property to a sub class of <see cref="T:log4net.Core.SecurityContextProvider"/>
+ that has the desired behavior.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.StackFrameItem">
+ <summary>
+ provides stack frame information without actually referencing a System.Diagnostics.StackFrame
+ as that would require that the containing assembly is loaded.
+ </summary>
+
+ </member>
+ <member name="F:log4net.Core.StackFrameItem.NA">
+ <summary>
+ When location information is not available the constant
+ <c>NA</c> is returned. Current value of this string
+ constant is <b>?</b>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.StackFrameItem.#ctor(System.Diagnostics.StackFrame)">
+ <summary>
+ returns a stack frame item from a stack frame. This
+ </summary>
+ <param name="frame"></param>
+ <returns></returns>
+ </member>
+ <member name="F:log4net.Core.StackFrameItem.declaringType">
+ <summary>
+ The fully qualified type of the StackFrameItem class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.StackFrameItem.ClassName">
+ <summary>
+ Gets the fully qualified class name of the caller making the logging
+ request.
+ </summary>
+ <value>
+ The fully qualified class name of the caller making the logging
+ request.
+ </value>
+ <remarks>
+ <para>
+ Gets the fully qualified class name of the caller making the logging
+ request.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.StackFrameItem.FileName">
+ <summary>
+ Gets the file name of the caller.
+ </summary>
+ <value>
+ The file name of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the file name of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.StackFrameItem.LineNumber">
+ <summary>
+ Gets the line number of the caller.
+ </summary>
+ <value>
+ The line number of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the line number of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.StackFrameItem.Method">
+ <summary>
+ Gets the method name of the caller.
+ </summary>
+ <value>
+ The method name of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the method name of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.StackFrameItem.FullInfo">
+ <summary>
+ Gets all available caller information
+ </summary>
+ <value>
+ All available caller information, in the format
+ <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
+ </value>
+ <remarks>
+ <para>
+ Gets all available caller information, in the format
+ <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.TimeEvaluator">
+ <summary>
+ An evaluator that triggers after specified number of seconds.
+ </summary>
+ <remarks>
+ <para>
+ This evaluator will trigger if the specified time period
+ <see cref="P:log4net.Core.TimeEvaluator.Interval"/> has passed since last check.
+ </para>
+ </remarks>
+ <author>Robert Sevcik</author>
+ </member>
+ <member name="F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL">
+ <summary>
+ The default time threshold for triggering in seconds. Zero means it won't trigger at all.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.TimeEvaluator.m_interval">
+ <summary>
+ The time threshold for triggering in seconds. Zero means it won't trigger at all.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.TimeEvaluator.m_lasttime">
+ <summary>
+ The time of last check. This gets updated when the object is created and when the evaluator triggers.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.TimeEvaluator.#ctor">
+ <summary>
+ Create a new evaluator using the <see cref="F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL"/> time threshold in seconds.
+ </summary>
+ <remarks>
+ <para>
+ Create a new evaluator using the <see cref="F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL"/> time threshold in seconds.
+ </para>
+ <para>
+ This evaluator will trigger if the specified time period
+ <see cref="P:log4net.Core.TimeEvaluator.Interval"/> has passed since last check.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.TimeEvaluator.#ctor(System.Int32)">
+ <summary>
+ Create a new evaluator using the specified time threshold in seconds.
+ </summary>
+ <param name="interval">
+ The time threshold in seconds to trigger after.
+ Zero means it won't trigger at all.
+ </param>
+ <remarks>
+ <para>
+ Create a new evaluator using the specified time threshold in seconds.
+ </para>
+ <para>
+ This evaluator will trigger if the specified time period
+ <see cref="P:log4net.Core.TimeEvaluator.Interval"/> has passed since last check.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.TimeEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Is this <paramref name="loggingEvent"/> the triggering event?
+ </summary>
+ <param name="loggingEvent">The event to check</param>
+ <returns>This method returns <c>true</c>, if the specified time period
+ <see cref="P:log4net.Core.TimeEvaluator.Interval"/> has passed since last check..
+ Otherwise it returns <c>false</c></returns>
+ <remarks>
+ <para>
+ This evaluator will trigger if the specified time period
+ <see cref="P:log4net.Core.TimeEvaluator.Interval"/> has passed since last check.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.TimeEvaluator.Interval">
+ <summary>
+ The time threshold in seconds to trigger after
+ </summary>
+ <value>
+ The time threshold in seconds to trigger after.
+ Zero means it won't trigger at all.
+ </value>
+ <remarks>
+ <para>
+ This evaluator will trigger if the specified time period
+ <see cref="P:log4net.Core.TimeEvaluator.Interval"/> has passed since last check.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.WrapperCreationHandler">
+ <summary>
+ Delegate used to handle creation of new wrappers.
+ </summary>
+ <param name="logger">The logger to wrap in a wrapper.</param>
+ <remarks>
+ <para>
+ Delegate used to handle creation of new wrappers. This delegate
+ is called from the <see cref="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)"/>
+ method to construct the wrapper for the specified logger.
+ </para>
+ <para>
+ The delegate to use is supplied to the <see cref="T:log4net.Core.WrapperMap"/>
+ constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.WrapperMap">
+ <summary>
+ Maps between logger objects and wrapper objects.
+ </summary>
+ <remarks>
+ <para>
+ This class maintains a mapping between <see cref="T:log4net.Core.ILogger"/> objects and
+ <see cref="T:log4net.Core.ILoggerWrapper"/> objects. Use the <see cref="M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)"/> method to
+ lookup the <see cref="T:log4net.Core.ILoggerWrapper"/> for the specified <see cref="T:log4net.Core.ILogger"/>.
+ </para>
+ <para>
+ New wrapper instances are created by the <see cref="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)"/>
+ method. The default behavior is for this method to delegate construction
+ of the wrapper to the <see cref="T:log4net.Core.WrapperCreationHandler"/> delegate supplied
+ to the constructor. This allows specialization of the behavior without
+ requiring subclassing of this type.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.WrapperMap.#ctor(log4net.Core.WrapperCreationHandler)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.WrapperMap"/>
+ </summary>
+ <param name="createWrapperHandler">The handler to use to create the wrapper objects.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.WrapperMap"/> class with
+ the specified handler to create the wrapper objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)">
+ <summary>
+ Gets the wrapper object for the specified logger.
+ </summary>
+ <returns>The wrapper object for the specified logger</returns>
+ <remarks>
+ <para>
+ If the logger is null then the corresponding wrapper is null.
+ </para>
+ <para>
+ Looks up the wrapper it it has previously been requested and
+ returns it. If the wrapper has never been requested before then
+ the <see cref="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)"/> virtual method is
+ called.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)">
+ <summary>
+ Creates the wrapper object for the specified logger.
+ </summary>
+ <param name="logger">The logger to wrap in a wrapper.</param>
+ <returns>The wrapper object for the logger.</returns>
+ <remarks>
+ <para>
+ This implementation uses the <see cref="T:log4net.Core.WrapperCreationHandler"/>
+ passed to the constructor to create the wrapper. This method
+ can be overridden in a subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.WrapperMap.RepositoryShutdown(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Called when a monitored repository shutdown event is received.
+ </summary>
+ <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that is shutting down</param>
+ <remarks>
+ <para>
+ This method is called when a <see cref="T:log4net.Repository.ILoggerRepository"/> that this
+ <see cref="T:log4net.Core.WrapperMap"/> is holding loggers for has signaled its shutdown
+ event <see cref="E:log4net.Repository.ILoggerRepository.ShutdownEvent"/>. The default
+ behavior of this method is to release the references to the loggers
+ and their wrappers generated for this repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.WrapperMap.ILoggerRepository_Shutdown(System.Object,System.EventArgs)">
+ <summary>
+ Event handler for repository shutdown event.
+ </summary>
+ <param name="sender">The sender of the event.</param>
+ <param name="e">The event args.</param>
+ </member>
+ <member name="F:log4net.Core.WrapperMap.m_repositories">
+ <summary>
+ Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings
+ </summary>
+ </member>
+ <member name="F:log4net.Core.WrapperMap.m_createWrapperHandler">
+ <summary>
+ The handler to use to create the extension wrapper objects.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.WrapperMap.m_shutdownHandler">
+ <summary>
+ Internal reference to the delegate used to register for repository shutdown events.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.WrapperMap.Repositories">
+ <summary>
+ Gets the map of logger repositories.
+ </summary>
+ <value>
+ Map of logger repositories.
+ </value>
+ <remarks>
+ <para>
+ Gets the hashtable that is keyed on <see cref="T:log4net.Repository.ILoggerRepository"/>. The
+ values are hashtables keyed on <see cref="T:log4net.Core.ILogger"/> with the
+ value being the corresponding <see cref="T:log4net.Core.ILoggerWrapper"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.DateFormatter.AbsoluteTimeDateFormatter">
+ <summary>
+ Formats a <see cref="T:System.DateTime"/> as <c>"HH:mm:ss,fff"</c>.
+ </summary>
+ <remarks>
+ <para>
+ Formats a <see cref="T:System.DateTime"/> in the format <c>"HH:mm:ss,fff"</c> for example, <c>"15:49:37,459"</c>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.DateFormatter.IDateFormatter">
+ <summary>
+ Render a <see cref="T:System.DateTime"/> as a string.
+ </summary>
+ <remarks>
+ <para>
+ Interface to abstract the rendering of a <see cref="T:System.DateTime"/>
+ instance into a string.
+ </para>
+ <para>
+ The <see cref="M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)"/> method is used to render the
+ date to a text writer.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)">
+ <summary>
+ Formats the specified date as a string.
+ </summary>
+ <param name="dateToFormat">The date to format.</param>
+ <param name="writer">The writer to write to.</param>
+ <remarks>
+ <para>
+ Format the <see cref="T:System.DateTime"/> as a string and write it
+ to the <see cref="T:System.IO.TextWriter"/> provided.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.AbsoluteTimeDateFormat">
+ <summary>
+ String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is <b>ABSOLUTE</b>.
+ </summary>
+ </member>
+ <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.DateAndTimeDateFormat">
+ <summary>
+ String constant used to specify DateTimeDateFormat in layouts. Current value is <b>DATE</b>.
+ </summary>
+ </member>
+ <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.Iso8601TimeDateFormat">
+ <summary>
+ String constant used to specify ISO8601DateFormat in layouts. Current value is <b>ISO8601</b>.
+ </summary>
+ </member>
+ <member name="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)">
+ <summary>
+ Renders the date into a string. Format is <c>"HH:mm:ss"</c>.
+ </summary>
+ <param name="dateToFormat">The date to render into a string.</param>
+ <param name="buffer">The string builder to write to.</param>
+ <remarks>
+ <para>
+ Subclasses should override this method to render the date
+ into a string using a precision up to the second. This method
+ will be called at most once per second and the result will be
+ reused if it is needed again during the same second.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)">
+ <summary>
+ Renders the date into a string. Format is "HH:mm:ss,fff".
+ </summary>
+ <param name="dateToFormat">The date to render into a string.</param>
+ <param name="writer">The writer to write to.</param>
+ <remarks>
+ <para>
+ Uses the <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/> method to generate the
+ time string up to the seconds and then appends the current
+ milliseconds. The results from <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/> are
+ cached and <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/> is called at most once
+ per second.
+ </para>
+ <para>
+ Sub classes should override <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/>
+ rather than <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeToTheSecond">
+ <summary>
+ Last stored time with precision up to the second.
+ </summary>
+ </member>
+ <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeBuf">
+ <summary>
+ Last stored time with precision up to the second, formatted
+ as a string.
+ </summary>
+ </member>
+ <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeStrings">
+ <summary>
+ Last stored time with precision up to the second, formatted
+ as a string.
+ </summary>
+ </member>
+ <member name="T:log4net.DateFormatter.DateTimeDateFormatter">
+ <summary>
+ Formats a <see cref="T:System.DateTime"/> as <c>"dd MMM yyyy HH:mm:ss,fff"</c>
+ </summary>
+ <remarks>
+ <para>
+ Formats a <see cref="T:System.DateTime"/> in the format
+ <c>"dd MMM yyyy HH:mm:ss,fff"</c> for example,
+ <c>"06 Nov 1994 15:49:37,459"</c>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Angelika Schnagl</author>
+ </member>
+ <member name="M:log4net.DateFormatter.DateTimeDateFormatter.#ctor">
+ <summary>
+ Default constructor.
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.DateFormatter.DateTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)">
+ <summary>
+ Formats the date without the milliseconds part
+ </summary>
+ <param name="dateToFormat">The date to format.</param>
+ <param name="buffer">The string builder to write to.</param>
+ <remarks>
+ <para>
+ Formats a DateTime in the format <c>"dd MMM yyyy HH:mm:ss"</c>
+ for example, <c>"06 Nov 1994 15:49:37"</c>.
+ </para>
+ <para>
+ The base class will append the <c>",fff"</c> milliseconds section.
+ This method will only be called at most once per second.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.DateFormatter.DateTimeDateFormatter.m_dateTimeFormatInfo">
+ <summary>
+ The format info for the invariant culture.
+ </summary>
+ </member>
+ <member name="T:log4net.DateFormatter.Iso8601DateFormatter">
+ <summary>
+ Formats the <see cref="T:System.DateTime"/> as <c>"yyyy-MM-dd HH:mm:ss,fff"</c>.
+ </summary>
+ <remarks>
+ <para>
+ Formats the <see cref="T:System.DateTime"/> specified as a string: <c>"yyyy-MM-dd HH:mm:ss,fff"</c>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.DateFormatter.Iso8601DateFormatter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.DateFormatter.Iso8601DateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)">
+ <summary>
+ Formats the date without the milliseconds part
+ </summary>
+ <param name="dateToFormat">The date to format.</param>
+ <param name="buffer">The string builder to write to.</param>
+ <remarks>
+ <para>
+ Formats the date specified as a string: <c>"yyyy-MM-dd HH:mm:ss"</c>.
+ </para>
+ <para>
+ The base class will append the <c>",fff"</c> milliseconds section.
+ This method will only be called at most once per second.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.DateFormatter.SimpleDateFormatter">
+ <summary>
+ Formats the <see cref="T:System.DateTime"/> using the <see cref="M:DateTime.ToString(string, IFormatProvider)"/> method.
+ </summary>
+ <remarks>
+ <para>
+ Formats the <see cref="T:System.DateTime"/> using the <see cref="T:System.DateTime"/> <see cref="M:DateTime.ToString(string, IFormatProvider)"/> method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.DateFormatter.SimpleDateFormatter.#ctor(System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="format">The format string.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/> class
+ with the specified format string.
+ </para>
+ <para>
+ The format string must be compatible with the options
+ that can be supplied to <see cref="M:DateTime.ToString(string, IFormatProvider)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.DateFormatter.SimpleDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)">
+ <summary>
+ Formats the date using <see cref="M:DateTime.ToString(string, IFormatProvider)"/>.
+ </summary>
+ <param name="dateToFormat">The date to convert to a string.</param>
+ <param name="writer">The writer to write to.</param>
+ <remarks>
+ <para>
+ Uses the date format string supplied to the constructor to call
+ the <see cref="M:DateTime.ToString(string, IFormatProvider)"/> method to format the date.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.DateFormatter.SimpleDateFormatter.m_formatString">
+ <summary>
+ The format string used to format the <see cref="T:System.DateTime"/>.
+ </summary>
+ <remarks>
+ <para>
+ The format string must be compatible with the options
+ that can be supplied to <see cref="M:DateTime.ToString(string, IFormatProvider)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Filter.DenyAllFilter">
+ <summary>
+ This filter drops all <see cref="T:log4net.Core.LoggingEvent"/>.
+ </summary>
+ <remarks>
+ <para>
+ You can add this filter to the end of a filter chain to
+ switch from the default "accept all unless instructed otherwise"
+ filtering behavior to a "deny all unless instructed otherwise"
+ behavior.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Filter.FilterSkeleton">
+ <summary>
+ Subclass this type to implement customized logging event filtering
+ </summary>
+ <remarks>
+ <para>
+ Users should extend this class to implement customized logging
+ event filtering. Note that <see cref="T:log4net.Repository.Hierarchy.Logger"/> and
+ <see cref="T:log4net.Appender.AppenderSkeleton"/>, the parent class of all standard
+ appenders, have built-in filtering rules. It is suggested that you
+ first use and understand the built-in rules before rushing to write
+ your own custom filters.
+ </para>
+ <para>
+ This abstract class assumes and also imposes that filters be
+ organized in a linear chain. The <see cref="M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)"/>
+ method of each filter is called sequentially, in the order of their
+ addition to the chain.
+ </para>
+ <para>
+ The <see cref="M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)"/> method must return one
+ of the integer constants <see cref="F:log4net.Filter.FilterDecision.Deny"/>,
+ <see cref="F:log4net.Filter.FilterDecision.Neutral"/> or <see cref="F:log4net.Filter.FilterDecision.Accept"/>.
+ </para>
+ <para>
+ If the value <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned, then the log event is dropped
+ immediately without consulting with the remaining filters.
+ </para>
+ <para>
+ If the value <see cref="F:log4net.Filter.FilterDecision.Neutral"/> is returned, then the next filter
+ in the chain is consulted. If there are no more filters in the
+ chain, then the log event is logged. Thus, in the presence of no
+ filters, the default behavior is to log all logging events.
+ </para>
+ <para>
+ If the value <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned, then the log
+ event is logged without consulting the remaining filters.
+ </para>
+ <para>
+ The philosophy of log4net filters is largely inspired from the
+ Linux ipchains.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Filter.IFilter">
+ <summary>
+ Implement this interface to provide customized logging event filtering
+ </summary>
+ <remarks>
+ <para>
+ Users should implement this interface to implement customized logging
+ event filtering. Note that <see cref="T:log4net.Repository.Hierarchy.Logger"/> and
+ <see cref="T:log4net.Appender.AppenderSkeleton"/>, the parent class of all standard
+ appenders, have built-in filtering rules. It is suggested that you
+ first use and understand the built-in rules before rushing to write
+ your own custom filters.
+ </para>
+ <para>
+ This abstract class assumes and also imposes that filters be
+ organized in a linear chain. The <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/>
+ method of each filter is called sequentially, in the order of their
+ addition to the chain.
+ </para>
+ <para>
+ The <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/> method must return one
+ of the integer constants <see cref="F:log4net.Filter.FilterDecision.Deny"/>,
+ <see cref="F:log4net.Filter.FilterDecision.Neutral"/> or <see cref="F:log4net.Filter.FilterDecision.Accept"/>.
+ </para>
+ <para>
+ If the value <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned, then the log event is dropped
+ immediately without consulting with the remaining filters.
+ </para>
+ <para>
+ If the value <see cref="F:log4net.Filter.FilterDecision.Neutral"/> is returned, then the next filter
+ in the chain is consulted. If there are no more filters in the
+ chain, then the log event is logged. Thus, in the presence of no
+ filters, the default behavior is to log all logging events.
+ </para>
+ <para>
+ If the value <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned, then the log
+ event is logged without consulting the remaining filters.
+ </para>
+ <para>
+ The philosophy of log4net filters is largely inspired from the
+ Linux ipchains.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Decide if the logging event should be logged through an appender.
+ </summary>
+ <param name="loggingEvent">The LoggingEvent to decide upon</param>
+ <returns>The decision of the filter</returns>
+ <remarks>
+ <para>
+ If the decision is <see cref="F:log4net.Filter.FilterDecision.Deny"/>, then the event will be
+ dropped. If the decision is <see cref="F:log4net.Filter.FilterDecision.Neutral"/>, then the next
+ filter, if any, will be invoked. If the decision is <see cref="F:log4net.Filter.FilterDecision.Accept"/> then
+ the event will be logged without consulting with other filters in
+ the chain.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.IFilter.Next">
+ <summary>
+ Property to get and set the next filter
+ </summary>
+ <value>
+ The next filter in the chain
+ </value>
+ <remarks>
+ <para>
+ Filters are typically composed into chains. This property allows the next filter in
+ the chain to be accessed.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Filter.FilterSkeleton.m_next">
+ <summary>
+ Points to the next filter in the filter chain.
+ </summary>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Filter.FilterSkeleton.Next"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Filter.FilterSkeleton.ActivateOptions">
+ <summary>
+ Initialize the filter with the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Filter.FilterSkeleton.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Filter.FilterSkeleton.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Filter.FilterSkeleton.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ Typically filter's options become active immediately on set,
+ however this method must still be called.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Decide if the <see cref="T:log4net.Core.LoggingEvent"/> should be logged through an appender.
+ </summary>
+ <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> to decide upon</param>
+ <returns>The decision of the filter</returns>
+ <remarks>
+ <para>
+ If the decision is <see cref="F:log4net.Filter.FilterDecision.Deny"/>, then the event will be
+ dropped. If the decision is <see cref="F:log4net.Filter.FilterDecision.Neutral"/>, then the next
+ filter, if any, will be invoked. If the decision is <see cref="F:log4net.Filter.FilterDecision.Accept"/> then
+ the event will be logged without consulting with other filters in
+ the chain.
+ </para>
+ <para>
+ This method is marked <c>abstract</c> and must be implemented
+ in a subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.FilterSkeleton.Next">
+ <summary>
+ Property to get and set the next filter
+ </summary>
+ <value>
+ The next filter in the chain
+ </value>
+ <remarks>
+ <para>
+ Filters are typically composed into chains. This property allows the next filter in
+ the chain to be accessed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Filter.DenyAllFilter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.DenyAllFilter.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Always returns the integer constant <see cref="F:log4net.Filter.FilterDecision.Deny"/>
+ </summary>
+ <param name="loggingEvent">the LoggingEvent to filter</param>
+ <returns>Always returns <see cref="F:log4net.Filter.FilterDecision.Deny"/></returns>
+ <remarks>
+ <para>
+ Ignores the event being logged and just returns
+ <see cref="F:log4net.Filter.FilterDecision.Deny"/>. This can be used to change the default filter
+ chain behavior from <see cref="F:log4net.Filter.FilterDecision.Accept"/> to <see cref="F:log4net.Filter.FilterDecision.Deny"/>. This filter
+ should only be used as the last filter in the chain
+ as any further filters will be ignored!
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Filter.FilterDecision">
+ <summary>
+ The return result from <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/>
+ </summary>
+ <remarks>
+ <para>
+ The return result from <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/>
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Filter.FilterDecision.Deny">
+ <summary>
+ The log event must be dropped immediately without
+ consulting with the remaining filters, if any, in the chain.
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.FilterDecision.Neutral">
+ <summary>
+ This filter is neutral with respect to the log event.
+ The remaining filters, if any, should be consulted for a final decision.
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.FilterDecision.Accept">
+ <summary>
+ The log event must be logged immediately without
+ consulting with the remaining filters, if any, in the chain.
+ </summary>
+ </member>
+ <member name="T:log4net.Filter.LevelMatchFilter">
+ <summary>
+ This is a very simple filter based on <see cref="T:log4net.Core.Level"/> matching.
+ </summary>
+ <remarks>
+ <para>
+ The filter admits two options <see cref="P:log4net.Filter.LevelMatchFilter.LevelToMatch"/> and
+ <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/>. If there is an exact match between the value
+ of the <see cref="P:log4net.Filter.LevelMatchFilter.LevelToMatch"/> option and the <see cref="T:log4net.Core.Level"/> of the
+ <see cref="T:log4net.Core.LoggingEvent"/>, then the <see cref="M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)"/> method returns <see cref="F:log4net.Filter.FilterDecision.Accept"/> in
+ case the <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/> option value is set
+ to <c>true</c>, if it is <c>false</c> then
+ <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. If the <see cref="T:log4net.Core.Level"/> does not match then
+ the result will be <see cref="F:log4net.Filter.FilterDecision.Neutral"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Filter.LevelMatchFilter.m_acceptOnMatch">
+ <summary>
+ flag to indicate if the filter should <see cref="F:log4net.Filter.FilterDecision.Accept"/> on a match
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.LevelMatchFilter.m_levelToMatch">
+ <summary>
+ the <see cref="T:log4net.Core.Level"/> to match against
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.LevelMatchFilter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Tests if the <see cref="T:log4net.Core.Level"/> of the logging event matches that of the filter
+ </summary>
+ <param name="loggingEvent">the event to filter</param>
+ <returns>see remarks</returns>
+ <remarks>
+ <para>
+ If the <see cref="T:log4net.Core.Level"/> of the event matches the level of the
+ filter then the result of the function depends on the
+ value of <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/>. If it is true then
+ the function will return <see cref="F:log4net.Filter.FilterDecision.Accept"/>, it it is false then it
+ will return <see cref="F:log4net.Filter.FilterDecision.Deny"/>. If the <see cref="T:log4net.Core.Level"/> does not match then
+ the result will be <see cref="F:log4net.Filter.FilterDecision.Neutral"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch">
+ <summary>
+ <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.LevelMatchFilter.LevelToMatch"/>
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/> property is a flag that determines
+ the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the
+ flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the
+ logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Deny"/> the event.
+ </para>
+ <para>
+ The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.LevelMatchFilter.LevelToMatch">
+ <summary>
+ The <see cref="T:log4net.Core.Level"/> that the filter will match
+ </summary>
+ <remarks>
+ <para>
+ The level that this filter will attempt to match against the
+ <see cref="T:log4net.Core.LoggingEvent"/> level. If a match is found then
+ the result depends on the value of <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Filter.LevelRangeFilter">
+ <summary>
+ This is a simple filter based on <see cref="T:log4net.Core.Level"/> matching.
+ </summary>
+ <remarks>
+ <para>
+ The filter admits three options <see cref="P:log4net.Filter.LevelRangeFilter.LevelMin"/> and <see cref="P:log4net.Filter.LevelRangeFilter.LevelMax"/>
+ that determine the range of priorities that are matched, and
+ <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/>. If there is a match between the range
+ of priorities and the <see cref="T:log4net.Core.Level"/> of the <see cref="T:log4net.Core.LoggingEvent"/>, then the
+ <see cref="M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)"/> method returns <see cref="F:log4net.Filter.FilterDecision.Accept"/> in case the <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/>
+ option value is set to <c>true</c>, if it is <c>false</c>
+ then <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. If there is no match, <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Filter.LevelRangeFilter.m_acceptOnMatch">
+ <summary>
+ Flag to indicate the behavior when matching a <see cref="T:log4net.Core.Level"/>
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.LevelRangeFilter.m_levelMin">
+ <summary>
+ the minimum <see cref="T:log4net.Core.Level"/> value to match
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.LevelRangeFilter.m_levelMax">
+ <summary>
+ the maximum <see cref="T:log4net.Core.Level"/> value to match
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.LevelRangeFilter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Check if the event should be logged.
+ </summary>
+ <param name="loggingEvent">the logging event to check</param>
+ <returns>see remarks</returns>
+ <remarks>
+ <para>
+ If the <see cref="T:log4net.Core.Level"/> of the logging event is outside the range
+ matched by this filter then <see cref="F:log4net.Filter.FilterDecision.Deny"/>
+ is returned. If the <see cref="T:log4net.Core.Level"/> is matched then the value of
+ <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/> is checked. If it is true then
+ <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned, otherwise
+ <see cref="F:log4net.Filter.FilterDecision.Neutral"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch">
+ <summary>
+ <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.LevelRangeFilter.LevelMin"/> and <see cref="P:log4net.Filter.LevelRangeFilter.LevelMax"/>
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/> property is a flag that determines
+ the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the
+ flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the
+ logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Neutral"/> the event.
+ </para>
+ <para>
+ The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.LevelRangeFilter.LevelMin">
+ <summary>
+ Set the minimum matched <see cref="T:log4net.Core.Level"/>
+ </summary>
+ <remarks>
+ <para>
+ The minimum level that this filter will attempt to match against the
+ <see cref="T:log4net.Core.LoggingEvent"/> level. If a match is found then
+ the result depends on the value of <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.LevelRangeFilter.LevelMax">
+ <summary>
+ Sets the maximum matched <see cref="T:log4net.Core.Level"/>
+ </summary>
+ <remarks>
+ <para>
+ The maximum level that this filter will attempt to match against the
+ <see cref="T:log4net.Core.LoggingEvent"/> level. If a match is found then
+ the result depends on the value of <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Filter.LoggerMatchFilter">
+ <summary>
+ Simple filter to match a string in the event's logger name.
+ </summary>
+ <remarks>
+ <para>
+ The works very similar to the <see cref="T:log4net.Filter.LevelMatchFilter"/>. It admits two
+ options <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/> and <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/>. If the
+ <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> of the <see cref="T:log4net.Core.LoggingEvent"/> starts
+ with the value of the <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/> option, then the
+ <see cref="M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)"/> method returns <see cref="F:log4net.Filter.FilterDecision.Accept"/> in
+ case the <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/> option value is set to <c>true</c>,
+ if it is <c>false</c> then <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned.
+ </para>
+ </remarks>
+ <author>Daniel Cazzulino</author>
+ </member>
+ <member name="F:log4net.Filter.LoggerMatchFilter.m_acceptOnMatch">
+ <summary>
+ Flag to indicate the behavior when we have a match
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.LoggerMatchFilter.m_loggerToMatch">
+ <summary>
+ The logger name string to substring match against the event
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.LoggerMatchFilter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Check if this filter should allow the event to be logged
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <returns>see remarks</returns>
+ <remarks>
+ <para>
+ The rendered message is matched against the <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/>.
+ If the <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/> equals the beginning of
+ the incoming <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> (<see cref="M:String.StartsWith(string)"/>)
+ then a match will have occurred. If no match occurs
+ this function will return <see cref="F:log4net.Filter.FilterDecision.Neutral"/>
+ allowing other filters to check the event. If a match occurs then
+ the value of <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/> is checked. If it is
+ true then <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned otherwise
+ <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch">
+ <summary>
+ <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/>
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/> property is a flag that determines
+ the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the
+ flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the
+ logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Deny"/> the event.
+ </para>
+ <para>
+ The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch">
+ <summary>
+ The <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> that the filter will match
+ </summary>
+ <remarks>
+ <para>
+ This filter will attempt to match this value against logger name in
+ the following way. The match will be done against the beginning of the
+ logger name (using <see cref="M:String.StartsWith(string)"/>). The match is
+ case sensitive. If a match is found then
+ the result depends on the value of <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Filter.MdcFilter">
+ <summary>
+ Simple filter to match a keyed string in the <see cref="T:log4net.MDC"/>
+ </summary>
+ <remarks>
+ <para>
+ Simple filter to match a keyed string in the <see cref="T:log4net.MDC"/>
+ </para>
+ <para>
+ As the MDC has been replaced with layered properties the
+ <see cref="T:log4net.Filter.PropertyFilter"/> should be used instead.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Filter.PropertyFilter">
+ <summary>
+ Simple filter to match a string an event property
+ </summary>
+ <remarks>
+ <para>
+ Simple filter to match a string in the value for a
+ specific event property
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Filter.StringMatchFilter">
+ <summary>
+ Simple filter to match a string in the rendered message
+ </summary>
+ <remarks>
+ <para>
+ Simple filter to match a string in the rendered message
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Filter.StringMatchFilter.m_acceptOnMatch">
+ <summary>
+ Flag to indicate the behavior when we have a match
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.StringMatchFilter.m_stringToMatch">
+ <summary>
+ The string to substring match against the message
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.StringMatchFilter.m_stringRegexToMatch">
+ <summary>
+ A string regex to match
+ </summary>
+ </member>
+ <member name="F:log4net.Filter.StringMatchFilter.m_regexToMatch">
+ <summary>
+ A regex object to match (generated from m_stringRegexToMatch)
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.StringMatchFilter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.StringMatchFilter.ActivateOptions">
+ <summary>
+ Initialize and precompile the Regex if required
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Filter.StringMatchFilter.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Filter.StringMatchFilter.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Filter.StringMatchFilter.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Filter.StringMatchFilter.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Check if this filter should allow the event to be logged
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <returns>see remarks</returns>
+ <remarks>
+ <para>
+ The rendered message is matched against the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/>.
+ If the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> occurs as a substring within
+ the message then a match will have occurred. If no match occurs
+ this function will return <see cref="F:log4net.Filter.FilterDecision.Neutral"/>
+ allowing other filters to check the event. If a match occurs then
+ the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/> is checked. If it is
+ true then <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned otherwise
+ <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.StringMatchFilter.AcceptOnMatch">
+ <summary>
+ <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> or <see cref="P:log4net.Filter.StringMatchFilter.RegexToMatch"/>
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/> property is a flag that determines
+ the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the
+ flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the
+ logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Neutral"/> the event.
+ </para>
+ <para>
+ The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.StringMatchFilter.StringToMatch">
+ <summary>
+ Sets the static string to match
+ </summary>
+ <remarks>
+ <para>
+ The string that will be substring matched against
+ the rendered message. If the message contains this
+ string then the filter will match. If a match is found then
+ the result depends on the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/>.
+ </para>
+ <para>
+ One of <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> or <see cref="P:log4net.Filter.StringMatchFilter.RegexToMatch"/>
+ must be specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.StringMatchFilter.RegexToMatch">
+ <summary>
+ Sets the regular expression to match
+ </summary>
+ <remarks>
+ <para>
+ The regular expression pattern that will be matched against
+ the rendered message. If the message matches this
+ pattern then the filter will match. If a match is found then
+ the result depends on the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/>.
+ </para>
+ <para>
+ One of <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> or <see cref="P:log4net.Filter.StringMatchFilter.RegexToMatch"/>
+ must be specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Filter.PropertyFilter.m_key">
+ <summary>
+ The key to use to lookup the string from the event properties
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.PropertyFilter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Filter.PropertyFilter.Decide(log4net.Core.LoggingEvent)">
+ <summary>
+ Check if this filter should allow the event to be logged
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <returns>see remarks</returns>
+ <remarks>
+ <para>
+ The event property for the <see cref="P:log4net.Filter.PropertyFilter.Key"/> is matched against
+ the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/>.
+ If the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> occurs as a substring within
+ the property value then a match will have occurred. If no match occurs
+ this function will return <see cref="F:log4net.Filter.FilterDecision.Neutral"/>
+ allowing other filters to check the event. If a match occurs then
+ the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/> is checked. If it is
+ true then <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned otherwise
+ <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Filter.PropertyFilter.Key">
+ <summary>
+ The key to lookup in the event properties and then match against.
+ </summary>
+ <remarks>
+ <para>
+ The key name to use to lookup in the properties map of the
+ <see cref="T:log4net.Core.LoggingEvent"/>. The match will be performed against
+ the value of this property if it exists.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Filter.NdcFilter">
+ <summary>
+ Simple filter to match a string in the <see cref="T:log4net.NDC"/>
+ </summary>
+ <remarks>
+ <para>
+ Simple filter to match a string in the <see cref="T:log4net.NDC"/>
+ </para>
+ <para>
+ As the MDC has been replaced with named stacks stored in the
+ properties collections the <see cref="T:log4net.Filter.PropertyFilter"/> should
+ be used instead.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Filter.NdcFilter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Sets the <see cref="P:log4net.Filter.PropertyFilter.Key"/> to <c>"NDC"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.AppDomainPatternConverter">
+ <summary>
+ Write the event appdomain name to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LoggingEvent.Domain"/> to the output writer.
+ </para>
+ </remarks>
+ <author>Daniel Cazzulino</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Layout.Pattern.PatternLayoutConverter">
+ <summary>
+ Abstract class that provides the formatting functionality that
+ derived classes need.
+ </summary>
+ <remarks>
+ Conversion specifiers in a conversion patterns are parsed to
+ individual PatternConverters. Each of which is responsible for
+ converting a logging event in a converter specific manner.
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Util.PatternConverter">
+ <summary>
+ Abstract class that provides the formatting functionality that
+ derived classes need.
+ </summary>
+ <remarks>
+ <para>
+ Conversion specifiers in a conversion patterns are parsed to
+ individual PatternConverters. Each of which is responsible for
+ converting a logging event in a converter specific manner.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Util.PatternConverter.c_renderBufferSize">
+ <summary>
+ Initial buffer size
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternConverter.c_renderBufferMaxCapacity">
+ <summary>
+ Maximum buffer size before it is recycled
+ </summary>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.#ctor">
+ <summary>
+ Protected constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.PatternConverter"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Evaluate this pattern converter and write the output to a writer.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="state">The state object on which the pattern converter should be executed.</param>
+ <remarks>
+ <para>
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the appropriate way.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.SetNext(log4net.Util.PatternConverter)">
+ <summary>
+ Set the next pattern converter in the chains
+ </summary>
+ <param name="patternConverter">the pattern converter that should follow this converter in the chain</param>
+ <returns>the next converter</returns>
+ <remarks>
+ <para>
+ The PatternConverter can merge with its neighbor during this method (or a sub class).
+ Therefore the return value may or may not be the value of the argument passed in.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.Format(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the pattern converter to the writer with appropriate formatting
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="state">The state object on which the pattern converter should be executed.</param>
+ <remarks>
+ <para>
+ This method calls <see cref="M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)"/> to allow the subclass to perform
+ appropriate conversion of the pattern converter. If formatting options have
+ been specified via the <see cref="P:log4net.Util.PatternConverter.FormattingInfo"/> then this method will
+ apply those formattings before writing the output.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.SpacePad(System.IO.TextWriter,System.Int32)">
+ <summary>
+ Fast space padding method.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> to which the spaces will be appended.</param>
+ <param name="length">The number of spaces to be padded.</param>
+ <remarks>
+ <para>
+ Fast space padding method.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternConverter.m_option">
+ <summary>
+ The option string to the converter
+ </summary>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionary)">
+ <summary>
+ Write an dictionary to a <see cref="T:System.IO.TextWriter"/>
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="repository">a <see cref="T:log4net.Repository.ILoggerRepository"/> to use for object conversion</param>
+ <param name="value">the value to write to the writer</param>
+ <remarks>
+ <para>
+ Writes the <see cref="T:System.Collections.IDictionary"/> to a writer in the form:
+ </para>
+ <code>
+ {key1=value1, key2=value2, key3=value3}
+ </code>
+ <para>
+ If the <see cref="T:log4net.Repository.ILoggerRepository"/> specified
+ is not null then it is used to render the key and value to text, otherwise
+ the object's ToString method is called.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionaryEnumerator)">
+ <summary>
+ Write an dictionary to a <see cref="T:System.IO.TextWriter"/>
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="repository">a <see cref="T:log4net.Repository.ILoggerRepository"/> to use for object conversion</param>
+ <param name="value">the value to write to the writer</param>
+ <remarks>
+ <para>
+ Writes the <see cref="T:System.Collections.IDictionaryEnumerator"/> to a writer in the form:
+ </para>
+ <code>
+ {key1=value1, key2=value2, key3=value3}
+ </code>
+ <para>
+ If the <see cref="T:log4net.Repository.ILoggerRepository"/> specified
+ is not null then it is used to render the key and value to text, otherwise
+ the object's ToString method is called.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternConverter.WriteObject(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Object)">
+ <summary>
+ Write an object to a <see cref="T:System.IO.TextWriter"/>
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="repository">a <see cref="T:log4net.Repository.ILoggerRepository"/> to use for object conversion</param>
+ <param name="value">the value to write to the writer</param>
+ <remarks>
+ <para>
+ Writes the Object to a writer. If the <see cref="T:log4net.Repository.ILoggerRepository"/> specified
+ is not null then it is used to render the object to text, otherwise
+ the object's ToString method is called.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PatternConverter.Next">
+ <summary>
+ Get the next pattern converter in the chain
+ </summary>
+ <value>
+ the next pattern converter in the chain
+ </value>
+ <remarks>
+ <para>
+ Get the next pattern converter in the chain
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PatternConverter.FormattingInfo">
+ <summary>
+ Gets or sets the formatting info for this converter
+ </summary>
+ <value>
+ The formatting info for this converter
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the formatting info for this converter
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PatternConverter.Option">
+ <summary>
+ Gets or sets the option value for this converter
+ </summary>
+ <summary>
+ The option for this converter
+ </summary>
+ <remarks>
+ <para>
+ Gets or sets the option value for this converter
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PatternConverter.Properties">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.Pattern.PatternLayoutConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Layout.Pattern.PatternLayoutConverter"/> class.
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the correct way.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> on which the pattern converter should be executed.</param>
+ </member>
+ <member name="M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the correct way.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="state">The state object on which the pattern converter should be executed.</param>
+ </member>
+ <member name="F:log4net.Layout.Pattern.PatternLayoutConverter.m_ignoresException">
+ <summary>
+ Flag indicating if this converter handles exceptions
+ </summary>
+ <remarks>
+ <c>false</c> if this converter handles exceptions
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.Pattern.PatternLayoutConverter.IgnoresException">
+ <summary>
+ Flag indicating if this converter handles the logging event exception
+ </summary>
+ <value><c>false</c> if this converter handles the logging event exception</value>
+ <remarks>
+ <para>
+ If this converter handles the exception object contained within
+ <see cref="T:log4net.Core.LoggingEvent"/>, then this property should be set to
+ <c>false</c>. Otherwise, if the layout ignores the exception
+ object, then the property should be set to <c>true</c>.
+ </para>
+ <para>
+ Set this value to override a this default setting. The default
+ value is <c>true</c>, this converter does not handle the exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.AppDomainPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the event appdomain name to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LoggingEvent.Domain"/> to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.AspNetCachePatternConverter">
+ <summary>
+ Converter for items in the ASP.Net Cache.
+ </summary>
+ <remarks>
+ <para>
+ Outputs an item from the <see cref="P:System.Web.HttpRuntime.Cache"/>.
+ </para>
+ </remarks>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="T:log4net.Layout.Pattern.AspNetPatternLayoutConverter">
+ <summary>
+ Abstract class that provides access to the current HttpContext (<see cref="P:System.Web.HttpContext.Current"/>) that
+ derived classes need.
+ </summary>
+ <remarks>
+ This class handles the case when HttpContext.Current is null by writing
+ <see cref="P:log4net.Util.SystemInfo.NotAvailableText"/> to the writer.
+ </remarks>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.AspNetPatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)">
+ <summary>
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the correct way.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> on which the pattern converter should be executed.</param>
+ <param name="httpContext">The <see cref="T:System.Web.HttpContext"/> under which the ASP.Net request is running.</param>
+ </member>
+ <member name="M:log4net.Layout.Pattern.AspNetCachePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)">
+ <summary>
+ Write the ASP.Net Cache item to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> on which the pattern converter should be executed.</param>
+ <param name="httpContext">The <see cref="T:System.Web.HttpContext"/> under which the ASP.Net request is running.</param>
+ <remarks>
+ <para>
+ Writes out the value of a named property. The property name
+ should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property. If no property has been set, all key value pairs from the Cache will
+ be written to the output.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.AspNetContextPatternConverter">
+ <summary>
+ Converter for items in the <see cref="T:System.Web.HttpContext"/>.
+ </summary>
+ <remarks>
+ <para>
+ Outputs an item from the <see cref="T:System.Web.HttpContext"/>.
+ </para>
+ </remarks>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.AspNetContextPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)">
+ <summary>
+ Write the ASP.Net HttpContext item to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> on which the pattern converter should be executed.</param>
+ <param name="httpContext">The <see cref="T:System.Web.HttpContext"/> under which the ASP.Net request is running.</param>
+ <remarks>
+ <para>
+ Writes out the value of a named property. The property name
+ should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.AspNetRequestPatternConverter">
+ <summary>
+ Converter for items in the ASP.Net Cache.
+ </summary>
+ <remarks>
+ <para>
+ Outputs an item from the <see cref="P:System.Web.HttpRuntime.Cache"/>.
+ </para>
+ </remarks>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.AspNetRequestPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)">
+ <summary>
+ Write the ASP.Net Cache item to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> on which the pattern converter should be executed.</param>
+ <param name="httpContext">The <see cref="T:System.Web.HttpContext"/> under which the ASP.Net request is running.</param>
+ <remarks>
+ <para>
+ Writes out the value of a named property. The property name
+ should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.AspNetSessionPatternConverter">
+ <summary>
+ Converter for items in the ASP.Net Cache.
+ </summary>
+ <remarks>
+ <para>
+ Outputs an item from the <see cref="P:System.Web.HttpRuntime.Cache"/>.
+ </para>
+ </remarks>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.AspNetSessionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)">
+ <summary>
+ Write the ASP.Net Cache item to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> on which the pattern converter should be executed.</param>
+ <param name="httpContext">The <see cref="T:System.Web.HttpContext"/> under which the ASP.Net request is running.</param>
+ <remarks>
+ <para>
+ Writes out the value of a named property. The property name
+ should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property. If no property has been set, all key value pairs from the Session will
+ be written to the output.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.DatePatternConverter">
+ <summary>
+ Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format
+ the date of a <see cref="T:log4net.Core.LoggingEvent"/>.
+ </summary>
+ <remarks>
+ <para>
+ Render the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> to the writer as a string.
+ </para>
+ <para>
+ The value of the <see cref="P:log4net.Util.PatternConverter.Option"/> determines
+ the formatting of the date. The following values are allowed:
+ <list type="definition">
+ <listheader>
+ <term>Option value</term>
+ <description>Output</description>
+ </listheader>
+ <item>
+ <term>ISO8601</term>
+ <description>
+ Uses the <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/> formatter.
+ Formats using the <c>"yyyy-MM-dd HH:mm:ss,fff"</c> pattern.
+ </description>
+ </item>
+ <item>
+ <term>DATE</term>
+ <description>
+ Uses the <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> formatter.
+ Formats using the <c>"dd MMM yyyy HH:mm:ss,fff"</c> for example, <c>"06 Nov 1994 15:49:37,459"</c>.
+ </description>
+ </item>
+ <item>
+ <term>ABSOLUTE</term>
+ <description>
+ Uses the <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/> formatter.
+ Formats using the <c>"HH:mm:ss,yyyy"</c> for example, <c>"15:49:37,459"</c>.
+ </description>
+ </item>
+ <item>
+ <term>other</term>
+ <description>
+ Any other pattern string uses the <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/> formatter.
+ This formatter passes the pattern string to the <see cref="T:System.DateTime"/>
+ <see cref="M:DateTime.ToString(string)"/> method.
+ For details on valid patterns see
+ <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp">DateTimeFormatInfo Class</a>.
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ The <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> is in the local time zone and is rendered in that zone.
+ To output the time in Universal time see <see cref="T:log4net.Layout.Pattern.UtcDatePatternConverter"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Layout.Pattern.DatePatternConverter.m_dateFormatter">
+ <summary>
+ The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions">
+ <summary>
+ Initialize the converter pattern based on the <see cref="P:log4net.Util.PatternConverter.Option"/> property.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.DatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Convert the pattern into the rendered message
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Pass the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> to the <see cref="T:log4net.DateFormatter.IDateFormatter"/>
+ for it to render it to the writer.
+ </para>
+ <para>
+ The <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> passed is in the local time zone.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.Pattern.DatePatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the DatePatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.ExceptionPatternConverter">
+ <summary>
+ Write the exception text to the output
+ </summary>
+ <remarks>
+ <para>
+ If an exception object is stored in the logging event
+ it will be rendered into the pattern output with a
+ trailing newline.
+ </para>
+ <para>
+ If there is no exception then nothing will be output
+ and no trailing newline will be appended.
+ It is typical to put a newline before the exception
+ and to have the exception as the last data in the pattern.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.ExceptionPatternConverter.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.Pattern.ExceptionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the exception text to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ If an exception object is stored in the logging event
+ it will be rendered into the pattern output with a
+ trailing newline.
+ </para>
+ <para>
+ If there is no exception or the exception property specified
+ by the Option value does not exist then nothing will be output
+ and no trailing newline will be appended.
+ It is typical to put a newline before the exception
+ and to have the exception as the last data in the pattern.
+ </para>
+ <para>
+ Recognized values for the Option parameter are:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>Message</description>
+ </item>
+ <item>
+ <description>Source</description>
+ </item>
+ <item>
+ <description>StackTrace</description>
+ </item>
+ <item>
+ <description>TargetSite</description>
+ </item>
+ <item>
+ <description>HelpLink</description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.FileLocationPatternConverter">
+ <summary>
+ Writes the caller location file name to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the value of the <see cref="P:log4net.Core.LocationInfo.FileName"/> for
+ the event to the output writer.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.FileLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the caller location file name to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the value of the <see cref="P:log4net.Core.LocationInfo.FileName"/> for
+ the <paramref name="loggingEvent"/> to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.FullLocationPatternConverter">
+ <summary>
+ Write the caller location info to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LocationInfo.FullInfo"/> to the output writer.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.FullLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the caller location info to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LocationInfo.FullInfo"/> to the output writer.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.IdentityPatternConverter">
+ <summary>
+ Writes the event identity to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the value of the <see cref="P:log4net.Core.LoggingEvent.Identity"/> to
+ the output writer.
+ </para>
+ </remarks>
+ <author>Daniel Cazzulino</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.IdentityPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the event identity to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the value of the <paramref name="loggingEvent"/>
+ <see cref="P:log4net.Core.LoggingEvent.Identity"/> to
+ the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.LevelPatternConverter">
+ <summary>
+ Write the event level to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the display name of the event <see cref="P:log4net.Core.LoggingEvent.Level"/>
+ to the writer.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.LevelPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the event level to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.Level.DisplayName"/> of the <paramref name="loggingEvent"/> <see cref="P:log4net.Core.LoggingEvent.Level"/>
+ to the <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.LineLocationPatternConverter">
+ <summary>
+ Write the caller location line number to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the value of the <see cref="P:log4net.Core.LocationInfo.LineNumber"/> for
+ the event to the output writer.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.LineLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the caller location line number to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the value of the <see cref="P:log4net.Core.LocationInfo.LineNumber"/> for
+ the <paramref name="loggingEvent"/> to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.LoggerPatternConverter">
+ <summary>
+ Converter for logger name
+ </summary>
+ <remarks>
+ <para>
+ Outputs the <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> of the event.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Layout.Pattern.NamedPatternConverter">
+ <summary>
+ Converter to output and truncate <c>'.'</c> separated strings
+ </summary>
+ <remarks>
+ <para>
+ This abstract class supports truncating a <c>'.'</c> separated string
+ to show a specified number of elements from the right hand side.
+ This is used to truncate class names that are fully qualified.
+ </para>
+ <para>
+ Subclasses should override the <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)"/> method to
+ return the fully qualified string.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions">
+ <summary>
+ Initialize the converter
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)">
+ <summary>
+ Get the fully qualified string data
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <returns>the fully qualified name</returns>
+ <remarks>
+ <para>
+ Overridden by subclasses to get the fully qualified name before the
+ precision is applied to it.
+ </para>
+ <para>
+ Return the fully qualified <c>'.'</c> (dot/period) separated string.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.NamedPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Convert the pattern to the rendered message
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ Render the <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)"/> to the precision
+ specified by the <see cref="P:log4net.Util.PatternConverter.Option"/> property.
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.Pattern.NamedPatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the NamedPatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.LoggerPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)">
+ <summary>
+ Gets the fully qualified name of the logger
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <returns>The fully qualified logger name</returns>
+ <remarks>
+ <para>
+ Returns the <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> of the <paramref name="loggingEvent"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.MessagePatternConverter">
+ <summary>
+ Writes the event message to the output
+ </summary>
+ <remarks>
+ <para>
+ Uses the <see cref="M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)"/> method
+ to write out the event message.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.MessagePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the event message to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Uses the <see cref="M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)"/> method
+ to write out the event message.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.MethodLocationPatternConverter">
+ <summary>
+ Write the method name to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the caller location <see cref="P:log4net.Core.LocationInfo.MethodName"/> to
+ the output.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.MethodLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the method name to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the caller location <see cref="P:log4net.Core.LocationInfo.MethodName"/> to
+ the output.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.NdcPatternConverter">
+ <summary>
+ Converter to include event NDC
+ </summary>
+ <remarks>
+ <para>
+ Outputs the value of the event property named <c>NDC</c>.
+ </para>
+ <para>
+ The <see cref="T:log4net.Layout.Pattern.PropertyPatternConverter"/> should be used instead.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.NdcPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the event NDC to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ As the thread context stacks are now stored in named event properties
+ this converter simply looks up the value of the <c>NDC</c> property.
+ </para>
+ <para>
+ The <see cref="T:log4net.Layout.Pattern.PropertyPatternConverter"/> should be used instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.PropertyPatternConverter">
+ <summary>
+ Property pattern converter
+ </summary>
+ <remarks>
+ <para>
+ Writes out the value of a named property. The property name
+ should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Util.PatternConverter.Option"/> is set to <c>null</c>
+ then all the properties are written as key value pairs.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.PropertyPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the property value to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes out the value of a named property. The property name
+ should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Util.PatternConverter.Option"/> is set to <c>null</c>
+ then all the properties are written as key value pairs.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.RelativeTimePatternConverter">
+ <summary>
+ Converter to output the relative time of the event
+ </summary>
+ <remarks>
+ <para>
+ Converter to output the time of the event relative to the start of the program.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.RelativeTimePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the relative time to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes out the relative time of the event in milliseconds.
+ That is the number of milliseconds between the event <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/>
+ and the <see cref="P:log4net.Core.LoggingEvent.StartTime"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.RelativeTimePatternConverter.TimeDifferenceInMillis(System.DateTime,System.DateTime)">
+ <summary>
+ Helper method to get the time difference between two DateTime objects
+ </summary>
+ <param name="start">start time (in the current local time zone)</param>
+ <param name="end">end time (in the current local time zone)</param>
+ <returns>the time difference in milliseconds</returns>
+ </member>
+ <member name="T:log4net.Layout.Pattern.StackTraceDetailPatternConverter">
+ <summary>
+ Write the caller stack frames to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LocationInfo.StackFrames"/> to the output writer, using format:
+ type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...)
+ </para>
+ </remarks>
+ <author>Adam Davies</author>
+ </member>
+ <member name="T:log4net.Layout.Pattern.StackTracePatternConverter">
+ <summary>
+ Write the caller stack frames to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LocationInfo.StackFrames"/> to the output writer, using format:
+ type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1
+ </para>
+ </remarks>
+ <author>Michael Cromwell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions">
+ <summary>
+ Initialize the converter
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.StackTracePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the strack frames to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LocationInfo.StackFrames"/> to the output writer.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Pattern.StackTracePatternConverter.GetMethodInformation(log4net.Core.MethodItem)">
+ <summary>
+ Returns the Name of the method
+ </summary>
+ <param name="method"></param>
+ <remarks>This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter</remarks>
+ <returns>string</returns>
+ </member>
+ <member name="F:log4net.Layout.Pattern.StackTracePatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the StackTracePatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.Pattern.StackTraceDetailPatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the StackTraceDetailPatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.ThreadPatternConverter">
+ <summary>
+ Converter to include event thread name
+ </summary>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LoggingEvent.ThreadName"/> to the output.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.ThreadPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the ThreadName to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Core.LoggingEvent.ThreadName"/> to the <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.TypeNamePatternConverter">
+ <summary>
+ Pattern converter for the class name
+ </summary>
+ <remarks>
+ <para>
+ Outputs the <see cref="P:log4net.Core.LocationInfo.ClassName"/> of the event.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.TypeNamePatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)">
+ <summary>
+ Gets the fully qualified name of the class
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <returns>The fully qualified type name for the caller location</returns>
+ <remarks>
+ <para>
+ Returns the <see cref="P:log4net.Core.LocationInfo.ClassName"/> of the <paramref name="loggingEvent"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Pattern.UserNamePatternConverter">
+ <summary>
+ Converter to include event user name
+ </summary>
+ <author>Douglas de la Torre</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.UserNamePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Convert the pattern to the rendered message
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ </member>
+ <member name="T:log4net.Layout.Pattern.UtcDatePatternConverter">
+ <summary>
+ Write the TimeStamp to the output
+ </summary>
+ <remarks>
+ <para>
+ Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format
+ the date of a <see cref="T:log4net.Core.LoggingEvent"/>.
+ </para>
+ <para>
+ Uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/>
+ in Universal time.
+ </para>
+ <para>
+ See the <see cref="T:log4net.Layout.Pattern.DatePatternConverter"/> for details on the date pattern syntax.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Layout.Pattern.DatePatternConverter"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.Pattern.UtcDatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Write the TimeStamp to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Pass the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> to the <see cref="T:log4net.DateFormatter.IDateFormatter"/>
+ for it to render it to the writer.
+ </para>
+ <para>
+ The <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> passed is in the local time zone, this is converted
+ to Universal time before it is rendered.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Layout.Pattern.DatePatternConverter"/>
+ </member>
+ <member name="F:log4net.Layout.Pattern.UtcDatePatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the UtcDatePatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.DynamicPatternLayout">
+ <summary>
+ A flexible layout configurable with pattern string that re-evaluates on each call.
+ </summary>
+ <remarks>
+ <para>This class is built on <see cref="T:log4net.Layout.PatternLayout"></see> and provides all the
+ features and capabilities of PatternLayout. PatternLayout is a 'static' class
+ in that its layout is done once at configuration time. This class will recreate
+ the layout on each reference.</para>
+ <para>One important difference between PatternLayout and DynamicPatternLayout is the
+ treatment of the Header and Footer parameters in the configuration. The Header and Footer
+ parameters for DynamicPatternLayout must be syntactically in the form of a PatternString,
+ but should not be marked as type log4net.Util.PatternString. Doing so causes the
+ pattern to be statically converted at configuration time and causes DynamicPatternLayout
+ to perform the same as PatternLayout.</para>
+ <para>Please see <see cref="T:log4net.Layout.PatternLayout"/> for complete documentation.</para>
+ <example>
+ <layout type="log4net.Layout.DynamicPatternLayout">
+ <param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline" />
+ <param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline" />
+ </layout>
+ </example>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.PatternLayout">
+ <summary>
+ A flexible layout configurable with pattern string.
+ </summary>
+ <remarks>
+ <para>
+ The goal of this class is to <see cref="M:PatternLayout.Format(TextWriter,LoggingEvent)"/> a
+ <see cref="T:log4net.Core.LoggingEvent"/> as a string. The results
+ depend on the <i>conversion pattern</i>.
+ </para>
+ <para>
+ The conversion pattern is closely related to the conversion
+ pattern of the printf function in C. A conversion pattern is
+ composed of literal text and format control expressions called
+ <i>conversion specifiers</i>.
+ </para>
+ <para>
+ <i>You are free to insert any literal text within the conversion
+ pattern.</i>
+ </para>
+ <para>
+ Each conversion specifier starts with a percent sign (%) and is
+ followed by optional <i>format modifiers</i> and a <i>conversion
+ pattern name</i>. The conversion pattern name specifies the type of
+ data, e.g. logger, level, date, thread name. The format
+ modifiers control such things as field width, padding, left and
+ right justification. The following is a simple example.
+ </para>
+ <para>
+ Let the conversion pattern be <b>"%-5level [%thread]: %message%newline"</b> and assume
+ that the log4net environment was set to use a PatternLayout. Then the
+ statements
+ </para>
+ <code lang="C#">
+ ILog log = LogManager.GetLogger(typeof(TestApp));
+ log.Debug("Message 1");
+ log.Warn("Message 2");
+ </code>
+ <para>would yield the output</para>
+ <code>
+ DEBUG [main]: Message 1
+ WARN [main]: Message 2
+ </code>
+ <para>
+ Note that there is no explicit separator between text and
+ conversion specifiers. The pattern parser knows when it has reached
+ the end of a conversion specifier when it reads a conversion
+ character. In the example above the conversion specifier
+ <b>%-5level</b> means the level of the logging event should be left
+ justified to a width of five characters.
+ </para>
+ <para>
+ The recognized conversion pattern names are:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Conversion Pattern Name</term>
+ <description>Effect</description>
+ </listheader>
+ <item>
+ <term>a</term>
+ <description>Equivalent to <b>appdomain</b></description>
+ </item>
+ <item>
+ <term>appdomain</term>
+ <description>
+ Used to output the friendly name of the AppDomain where the
+ logging event was generated.
+ </description>
+ </item>
+ <item>
+ <term>aspnet-cache</term>
+ <description>
+ <para>
+ Used to output all cache items in the case of <b>%aspnet-cache</b> or just one named item if used as <b>%aspnet-cache{key}</b>
+ </para>
+ <para>
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>aspnet-context</term>
+ <description>
+ <para>
+ Used to output all context items in the case of <b>%aspnet-context</b> or just one named item if used as <b>%aspnet-context{key}</b>
+ </para>
+ <para>
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>aspnet-request</term>
+ <description>
+ <para>
+ Used to output all request parameters in the case of <b>%aspnet-request</b> or just one named param if used as <b>%aspnet-request{key}</b>
+ </para>
+ <para>
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>aspnet-session</term>
+ <description>
+ <para>
+ Used to output all session items in the case of <b>%aspnet-session</b> or just one named item if used as <b>%aspnet-session{key}</b>
+ </para>
+ <para>
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>c</term>
+ <description>Equivalent to <b>logger</b></description>
+ </item>
+ <item>
+ <term>C</term>
+ <description>Equivalent to <b>type</b></description>
+ </item>
+ <item>
+ <term>class</term>
+ <description>Equivalent to <b>type</b></description>
+ </item>
+ <item>
+ <term>d</term>
+ <description>Equivalent to <b>date</b></description>
+ </item>
+ <item>
+ <term>date</term>
+ <description>
+ <para>
+ Used to output the date of the logging event in the local time zone.
+ To output the date in universal time use the <c>%utcdate</c> pattern.
+ The date conversion
+ specifier may be followed by a <i>date format specifier</i> enclosed
+ between braces. For example, <b>%date{HH:mm:ss,fff}</b> or
+ <b>%date{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is
+ given then ISO8601 format is
+ assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>).
+ </para>
+ <para>
+ The date format specifier admits the same syntax as the
+ time pattern string of the <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ <para>
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>,
+ <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively
+ <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example,
+ <b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.
+ </para>
+ <para>
+ These dedicated date formatters perform significantly
+ better than <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>exception</term>
+ <description>
+ <para>
+ Used to output the exception passed in with the log message.
+ </para>
+ <para>
+ If an exception object is stored in the logging event
+ it will be rendered into the pattern output with a
+ trailing newline.
+ If there is no exception then nothing will be output
+ and no trailing newline will be appended.
+ It is typical to put a newline before the exception
+ and to have the exception as the last data in the pattern.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>F</term>
+ <description>Equivalent to <b>file</b></description>
+ </item>
+ <item>
+ <term>file</term>
+ <description>
+ <para>
+ Used to output the file name where the logging request was
+ issued.
+ </para>
+ <para>
+ <b>WARNING</b> Generating caller location information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+ </para>
+ <para>
+ See the note below on the availability of caller location information.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>identity</term>
+ <description>
+ <para>
+ Used to output the user name for the currently active user
+ (Principal.Identity.Name).
+ </para>
+ <para>
+ <b>WARNING</b> Generating caller information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>l</term>
+ <description>Equivalent to <b>location</b></description>
+ </item>
+ <item>
+ <term>L</term>
+ <description>Equivalent to <b>line</b></description>
+ </item>
+ <item>
+ <term>location</term>
+ <description>
+ <para>
+ Used to output location information of the caller which generated
+ the logging event.
+ </para>
+ <para>
+ The location information depends on the CLI implementation but
+ usually consists of the fully qualified name of the calling
+ method followed by the callers source the file name and line
+ number between parentheses.
+ </para>
+ <para>
+ The location information can be very useful. However, its
+ generation is <b>extremely</b> slow. Its use should be avoided
+ unless execution speed is not an issue.
+ </para>
+ <para>
+ See the note below on the availability of caller location information.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>level</term>
+ <description>
+ <para>
+ Used to output the level of the logging event.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>line</term>
+ <description>
+ <para>
+ Used to output the line number from where the logging request
+ was issued.
+ </para>
+ <para>
+ <b>WARNING</b> Generating caller location information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+ </para>
+ <para>
+ See the note below on the availability of caller location information.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>logger</term>
+ <description>
+ <para>
+ Used to output the logger of the logging event. The
+ logger conversion specifier can be optionally followed by
+ <i>precision specifier</i>, that is a decimal constant in
+ brackets.
+ </para>
+ <para>
+ If a precision specifier is given, then only the corresponding
+ number of right most components of the logger name will be
+ printed. By default the logger name is printed in full.
+ </para>
+ <para>
+ For example, for the logger name "a.b.c" the pattern
+ <b>%logger{2}</b> will output "b.c".
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>m</term>
+ <description>Equivalent to <b>message</b></description>
+ </item>
+ <item>
+ <term>M</term>
+ <description>Equivalent to <b>method</b></description>
+ </item>
+ <item>
+ <term>message</term>
+ <description>
+ <para>
+ Used to output the application supplied message associated with
+ the logging event.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>mdc</term>
+ <description>
+ <para>
+ The MDC (old name for the ThreadContext.Properties) is now part of the
+ combined event properties. This pattern is supported for compatibility
+ but is equivalent to <b>property</b>.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>method</term>
+ <description>
+ <para>
+ Used to output the method name where the logging request was
+ issued.
+ </para>
+ <para>
+ <b>WARNING</b> Generating caller location information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+ </para>
+ <para>
+ See the note below on the availability of caller location information.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>n</term>
+ <description>Equivalent to <b>newline</b></description>
+ </item>
+ <item>
+ <term>newline</term>
+ <description>
+ <para>
+ Outputs the platform dependent line separator character or
+ characters.
+ </para>
+ <para>
+ This conversion pattern offers the same performance as using
+ non-portable line separator strings such as "\n", or "\r\n".
+ Thus, it is the preferred way of specifying a line separator.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>ndc</term>
+ <description>
+ <para>
+ Used to output the NDC (nested diagnostic context) associated
+ with the thread that generated the logging event.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>p</term>
+ <description>Equivalent to <b>level</b></description>
+ </item>
+ <item>
+ <term>P</term>
+ <description>Equivalent to <b>property</b></description>
+ </item>
+ <item>
+ <term>properties</term>
+ <description>Equivalent to <b>property</b></description>
+ </item>
+ <item>
+ <term>property</term>
+ <description>
+ <para>
+ Used to output the an event specific property. The key to
+ lookup must be specified within braces and directly following the
+ pattern specifier, e.g. <b>%property{user}</b> would include the value
+ from the property that is keyed by the string 'user'. Each property value
+ that is to be included in the log must be specified separately.
+ Properties are added to events by loggers or appenders. By default
+ the <c>log4net:HostName</c> property is set to the name of machine on
+ which the event was originally logged.
+ </para>
+ <para>
+ If no key is specified, e.g. <b>%property</b> then all the keys and their
+ values are printed in a comma separated list.
+ </para>
+ <para>
+ The properties of an event are combined from a number of different
+ contexts. These are listed below in the order in which they are searched.
+ </para>
+ <list type="definition">
+ <item>
+ <term>the event properties</term>
+ <description>
+ The event has <see cref="P:log4net.Core.LoggingEvent.Properties"/> that can be set. These
+ properties are specific to this event only.
+ </description>
+ </item>
+ <item>
+ <term>the thread properties</term>
+ <description>
+ The <see cref="P:log4net.ThreadContext.Properties"/> that are set on the current
+ thread. These properties are shared by all events logged on this thread.
+ </description>
+ </item>
+ <item>
+ <term>the global properties</term>
+ <description>
+ The <see cref="P:log4net.GlobalContext.Properties"/> that are set globally. These
+ properties are shared by all the threads in the AppDomain.
+ </description>
+ </item>
+ </list>
+
+ </description>
+ </item>
+ <item>
+ <term>r</term>
+ <description>Equivalent to <b>timestamp</b></description>
+ </item>
+ <item>
+ <term>stacktrace</term>
+ <description>
+ <para>
+ Used to output the stack trace of the logging event
+ The stack trace level specifier may be enclosed
+ between braces. For example, <b>%stacktrace{level}</b>.
+ If no stack trace level specifier is given then 1 is assumed
+ </para>
+ <para>
+ Output uses the format:
+ type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1
+ </para>
+ <para>
+ This pattern is not available for Compact Framework assemblies.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>stacktracedetail</term>
+ <description>
+ <para>
+ Used to output the stack trace of the logging event
+ The stack trace level specifier may be enclosed
+ between braces. For example, <b>%stacktracedetail{level}</b>.
+ If no stack trace level specifier is given then 1 is assumed
+ </para>
+ <para>
+ Output uses the format:
+ type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...)
+ </para>
+ <para>
+ This pattern is not available for Compact Framework assemblies.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>t</term>
+ <description>Equivalent to <b>thread</b></description>
+ </item>
+ <item>
+ <term>timestamp</term>
+ <description>
+ <para>
+ Used to output the number of milliseconds elapsed since the start
+ of the application until the creation of the logging event.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>thread</term>
+ <description>
+ <para>
+ Used to output the name of the thread that generated the
+ logging event. Uses the thread number if no name is available.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>type</term>
+ <description>
+ <para>
+ Used to output the fully qualified type name of the caller
+ issuing the logging request. This conversion specifier
+ can be optionally followed by <i>precision specifier</i>, that
+ is a decimal constant in brackets.
+ </para>
+ <para>
+ If a precision specifier is given, then only the corresponding
+ number of right most components of the class name will be
+ printed. By default the class name is output in fully qualified form.
+ </para>
+ <para>
+ For example, for the class name "log4net.Layout.PatternLayout", the
+ pattern <b>%type{1}</b> will output "PatternLayout".
+ </para>
+ <para>
+ <b>WARNING</b> Generating the caller class information is
+ slow. Thus, its use should be avoided unless execution speed is
+ not an issue.
+ </para>
+ <para>
+ See the note below on the availability of caller location information.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>u</term>
+ <description>Equivalent to <b>identity</b></description>
+ </item>
+ <item>
+ <term>username</term>
+ <description>
+ <para>
+ Used to output the WindowsIdentity for the currently
+ active user.
+ </para>
+ <para>
+ <b>WARNING</b> Generating caller WindowsIdentity information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>utcdate</term>
+ <description>
+ <para>
+ Used to output the date of the logging event in universal time.
+ The date conversion
+ specifier may be followed by a <i>date format specifier</i> enclosed
+ between braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or
+ <b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is
+ given then ISO8601 format is
+ assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>).
+ </para>
+ <para>
+ The date format specifier admits the same syntax as the
+ time pattern string of the <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ <para>
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>,
+ <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively
+ <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example,
+ <b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.
+ </para>
+ <para>
+ These dedicated date formatters perform significantly
+ better than <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>w</term>
+ <description>Equivalent to <b>username</b></description>
+ </item>
+ <item>
+ <term>x</term>
+ <description>Equivalent to <b>ndc</b></description>
+ </item>
+ <item>
+ <term>X</term>
+ <description>Equivalent to <b>mdc</b></description>
+ </item>
+ <item>
+ <term>%</term>
+ <description>
+ <para>
+ The sequence %% outputs a single percent sign.
+ </para>
+ </description>
+ </item>
+ </list>
+ <para>
+ The single letter patterns are deprecated in favor of the
+ longer more descriptive pattern names.
+ </para>
+ <para>
+ By default the relevant information is output as is. However,
+ with the aid of format modifiers it is possible to change the
+ minimum field width, the maximum field width and justification.
+ </para>
+ <para>
+ The optional format modifier is placed between the percent sign
+ and the conversion pattern name.
+ </para>
+ <para>
+ The first optional format modifier is the <i>left justification
+ flag</i> which is just the minus (-) character. Then comes the
+ optional <i>minimum field width</i> modifier. This is a decimal
+ constant that represents the minimum number of characters to
+ output. If the data item requires fewer characters, it is padded on
+ either the left or the right until the minimum width is
+ reached. The default is to pad on the left (right justify) but you
+ can specify right padding with the left justification flag. The
+ padding character is space. If the data item is larger than the
+ minimum field width, the field is expanded to accommodate the
+ data. The value is never truncated.
+ </para>
+ <para>
+ This behavior can be changed using the <i>maximum field
+ width</i> modifier which is designated by a period followed by a
+ decimal constant. If the data item is longer than the maximum
+ field, then the extra characters are removed from the
+ <i>beginning</i> of the data item and not from the end. For
+ example, it the maximum field width is eight and the data item is
+ ten characters long, then the first two characters of the data item
+ are dropped. This behavior deviates from the printf function in C
+ where truncation is done from the end.
+ </para>
+ <para>
+ Below are various format modifier examples for the logger
+ conversion specifier.
+ </para>
+ <div class="tablediv">
+ <table class="dtTABLE" cellspacing="0">
+ <tr>
+ <th>Format modifier</th>
+ <th>left justify</th>
+ <th>minimum width</th>
+ <th>maximum width</th>
+ <th>comment</th>
+ </tr>
+ <tr>
+ <td align="center">%20logger</td>
+ <td align="center">false</td>
+ <td align="center">20</td>
+ <td align="center">none</td>
+ <td>
+ <para>
+ Left pad with spaces if the logger name is less than 20
+ characters long.
+ </para>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">%-20logger</td>
+ <td align="center">true</td>
+ <td align="center">20</td>
+ <td align="center">none</td>
+ <td>
+ <para>
+ Right pad with spaces if the logger
+ name is less than 20 characters long.
+ </para>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">%.30logger</td>
+ <td align="center">NA</td>
+ <td align="center">none</td>
+ <td align="center">30</td>
+ <td>
+ <para>
+ Truncate from the beginning if the logger
+ name is longer than 30 characters.
+ </para>
+ </td>
+ </tr>
+ <tr>
+ <td align="center"><nobr>%20.30logger</nobr></td>
+ <td align="center">false</td>
+ <td align="center">20</td>
+ <td align="center">30</td>
+ <td>
+ <para>
+ Left pad with spaces if the logger name is shorter than 20
+ characters. However, if logger name is longer than 30 characters,
+ then truncate from the beginning.
+ </para>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">%-20.30logger</td>
+ <td align="center">true</td>
+ <td align="center">20</td>
+ <td align="center">30</td>
+ <td>
+ <para>
+ Right pad with spaces if the logger name is shorter than 20
+ characters. However, if logger name is longer than 30 characters,
+ then truncate from the beginning.
+ </para>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <para>
+ <b>Note about caller location information.</b><br/>
+ The following patterns <c>%type %file %line %method %location %class %C %F %L %l %M</c>
+ all generate caller location information.
+ Location information uses the <c>System.Diagnostics.StackTrace</c> class to generate
+ a call stack. The caller's information is then extracted from this stack.
+ </para>
+ <note type="caution">
+ <para>
+ The <c>System.Diagnostics.StackTrace</c> class is not supported on the
+ .NET Compact Framework 1.0 therefore caller location information is not
+ available on that framework.
+ </para>
+ </note>
+ <note type="caution">
+ <para>
+ The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:
+ </para>
+ <para>
+ "StackTrace information will be most informative with Debug build configurations.
+ By default, Debug builds include debug symbols, while Release builds do not. The
+ debug symbols contain most of the file, method name, line number, and column
+ information used in constructing StackFrame and StackTrace objects. StackTrace
+ might not report as many method calls as expected, due to code transformations
+ that occur during optimization."
+ </para>
+ <para>
+ This means that in a Release build the caller information may be incomplete or may
+ not exist at all! Therefore caller location information cannot be relied upon in a Release build.
+ </para>
+ </note>
+ <para>
+ Additional pattern converters may be registered with a specific <see cref="T:log4net.Layout.PatternLayout"/>
+ instance using the <see cref="M:AddConverter(string, Type)"/> method.
+ </para>
+ </remarks>
+ <example>
+ This is a more detailed pattern.
+ <code><b>%timestamp [%thread] %level %logger %ndc - %message%newline</b></code>
+ </example>
+ <example>
+ A similar pattern except that the relative time is
+ right padded if less than 6 digits, thread name is right padded if
+ less than 15 characters and truncated if longer and the logger
+ name is left padded if shorter than 30 characters and truncated if
+ longer.
+ <code><b>%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline</b></code>
+ </example>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Douglas de la Torre</author>
+ <author>Daniel Cazzulino</author>
+ </member>
+ <member name="T:log4net.Layout.LayoutSkeleton">
+ <summary>
+ Extend this abstract class to create your own log layout format.
+ </summary>
+ <remarks>
+ <para>
+ This is the base implementation of the <see cref="T:log4net.Layout.ILayout"/>
+ interface. Most layout objects should extend this class.
+ </para>
+ </remarks>
+ <remarks>
+ <note type="inheritinfo">
+ <para>
+ Subclasses must implement the <see cref="M:Format(TextWriter,LoggingEvent)"/>
+ method.
+ </para>
+ <para>
+ Subclasses should set the <see cref="P:log4net.Layout.LayoutSkeleton.IgnoresException"/> in their default
+ constructor.
+ </para>
+ </note>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Layout.ILayout">
+ <summary>
+ Interface implemented by layout objects
+ </summary>
+ <remarks>
+ <para>
+ An <see cref="T:log4net.Layout.ILayout"/> object is used to format a <see cref="T:log4net.Core.LoggingEvent"/>
+ as text. The <see cref="M:Format(TextWriter,LoggingEvent)"/> method is called by an
+ appender to transform the <see cref="T:log4net.Core.LoggingEvent"/> into a string.
+ </para>
+ <para>
+ The layout can also supply <see cref="P:log4net.Layout.ILayout.Header"/> and <see cref="P:log4net.Layout.ILayout.Footer"/>
+ text that is appender before any events and after all the events respectively.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Implement this method to create your own layout format.
+ </summary>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <param name="loggingEvent">The event to format</param>
+ <remarks>
+ <para>
+ This method is called by an appender to format
+ the <paramref name="loggingEvent"/> as text and output to a writer.
+ </para>
+ <para>
+ If the caller does not have a <see cref="T:System.IO.TextWriter"/> and prefers the
+ event to be formatted as a <see cref="T:System.String"/> then the following
+ code can be used to format the event into a <see cref="T:System.IO.StringWriter"/>.
+ </para>
+ <code lang="C#">
+ StringWriter writer = new StringWriter();
+ Layout.Format(writer, loggingEvent);
+ string formattedEvent = writer.ToString();
+ </code>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.ILayout.ContentType">
+ <summary>
+ The content type output by this layout.
+ </summary>
+ <value>The content type</value>
+ <remarks>
+ <para>
+ The content type output by this layout.
+ </para>
+ <para>
+ This is a MIME type e.g. <c>"text/plain"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.ILayout.Header">
+ <summary>
+ The header for the layout format.
+ </summary>
+ <value>the layout header</value>
+ <remarks>
+ <para>
+ The Header text will be appended before any logging events
+ are formatted and appended.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.ILayout.Footer">
+ <summary>
+ The footer for the layout format.
+ </summary>
+ <value>the layout footer</value>
+ <remarks>
+ <para>
+ The Footer text will be appended after all the logging events
+ have been formatted and appended.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.ILayout.IgnoresException">
+ <summary>
+ Flag indicating if this layout handle exceptions
+ </summary>
+ <value><c>false</c> if this layout handles exceptions</value>
+ <remarks>
+ <para>
+ If this layout handles the exception object contained within
+ <see cref="T:log4net.Core.LoggingEvent"/>, then the layout should return
+ <c>false</c>. Otherwise, if the layout ignores the exception
+ object, then the layout should return <c>true</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.LayoutSkeleton.m_header">
+ <summary>
+ The header text
+ </summary>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Layout.LayoutSkeleton.Header"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.LayoutSkeleton.m_footer">
+ <summary>
+ The footer text
+ </summary>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Layout.LayoutSkeleton.Footer"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.LayoutSkeleton.m_ignoresException">
+ <summary>
+ Flag indicating if this layout handles exceptions
+ </summary>
+ <remarks>
+ <para>
+ <c>false</c> if this layout handles exceptions
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.LayoutSkeleton.#ctor">
+ <summary>
+ Empty default constructor
+ </summary>
+ <remarks>
+ <para>
+ Empty default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.LayoutSkeleton.ActivateOptions">
+ <summary>
+ Activate component options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.LayoutSkeleton.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.LayoutSkeleton.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.LayoutSkeleton.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ This method must be implemented by the subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Implement this method to create your own layout format.
+ </summary>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <param name="loggingEvent">The event to format</param>
+ <remarks>
+ <para>
+ This method is called by an appender to format
+ the <paramref name="loggingEvent"/> as text.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.LayoutSkeleton.Format(log4net.Core.LoggingEvent)">
+ <summary>
+ Convenience method for easily formatting the logging event into a string variable.
+ </summary>
+ <param name="loggingEvent"></param>
+ <remarks>
+ Creates a new StringWriter instance to store the formatted logging event.
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.LayoutSkeleton.ContentType">
+ <summary>
+ The content type output by this layout.
+ </summary>
+ <value>The content type is <c>"text/plain"</c></value>
+ <remarks>
+ <para>
+ The content type output by this layout.
+ </para>
+ <para>
+ This base class uses the value <c>"text/plain"</c>.
+ To change this value a subclass must override this
+ property.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.LayoutSkeleton.Header">
+ <summary>
+ The header for the layout format.
+ </summary>
+ <value>the layout header</value>
+ <remarks>
+ <para>
+ The Header text will be appended before any logging events
+ are formatted and appended.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.LayoutSkeleton.Footer">
+ <summary>
+ The footer for the layout format.
+ </summary>
+ <value>the layout footer</value>
+ <remarks>
+ <para>
+ The Footer text will be appended after all the logging events
+ have been formatted and appended.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.LayoutSkeleton.IgnoresException">
+ <summary>
+ Flag indicating if this layout handles exceptions
+ </summary>
+ <value><c>false</c> if this layout handles exceptions</value>
+ <remarks>
+ <para>
+ If this layout handles the exception object contained within
+ <see cref="T:log4net.Core.LoggingEvent"/>, then the layout should return
+ <c>false</c>. Otherwise, if the layout ignores the exception
+ object, then the layout should return <c>true</c>.
+ </para>
+ <para>
+ Set this value to override a this default setting. The default
+ value is <c>true</c>, this layout does not handle the exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.PatternLayout.DefaultConversionPattern">
+ <summary>
+ Default pattern string for log output.
+ </summary>
+ <remarks>
+ <para>
+ Default pattern string for log output.
+ Currently set to the string <b>"%message%newline"</b>
+ which just prints the application supplied message.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.PatternLayout.DetailConversionPattern">
+ <summary>
+ A detailed conversion pattern
+ </summary>
+ <remarks>
+ <para>
+ A conversion pattern which includes Time, Thread, Logger, and Nested Context.
+ Current value is <b>%timestamp [%thread] %level %logger %ndc - %message%newline</b>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.PatternLayout.s_globalRulesRegistry">
+ <summary>
+ Internal map of converter identifiers to converter types.
+ </summary>
+ <remarks>
+ <para>
+ This static map is overridden by the m_converterRegistry instance map
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.PatternLayout.m_pattern">
+ <summary>
+ the pattern
+ </summary>
+ </member>
+ <member name="F:log4net.Layout.PatternLayout.m_head">
+ <summary>
+ the head of the pattern converter chain
+ </summary>
+ </member>
+ <member name="F:log4net.Layout.PatternLayout.m_instanceRulesRegistry">
+ <summary>
+ patterns defined on this PatternLayout only
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.#cctor">
+ <summary>
+ Initialize the global registry
+ </summary>
+ <remarks>
+ <para>
+ Defines the builtin global rules.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.#ctor">
+ <summary>
+ Constructs a PatternLayout using the DefaultConversionPattern
+ </summary>
+ <remarks>
+ <para>
+ The default pattern just produces the application supplied message.
+ </para>
+ <para>
+ Note to Inheritors: This constructor calls the virtual method
+ <see cref="M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)"/>. If you override this method be
+ aware that it will be called before your is called constructor.
+ </para>
+ <para>
+ As per the <see cref="T:log4net.Core.IOptionHandler"/> contract the <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/>
+ method must be called after the properties on this object have been
+ configured.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.#ctor(System.String)">
+ <summary>
+ Constructs a PatternLayout using the supplied conversion pattern
+ </summary>
+ <param name="pattern">the pattern to use</param>
+ <remarks>
+ <para>
+ Note to Inheritors: This constructor calls the virtual method
+ <see cref="M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)"/>. If you override this method be
+ aware that it will be called before your is called constructor.
+ </para>
+ <para>
+ When using this constructor the <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> method
+ need not be called. This may not be the case when using a subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)">
+ <summary>
+ Create the pattern parser instance
+ </summary>
+ <param name="pattern">the pattern to parse</param>
+ <returns>The <see cref="T:log4net.Util.PatternParser"/> that will format the event</returns>
+ <remarks>
+ <para>
+ Creates the <see cref="T:log4net.Util.PatternParser"/> used to parse the conversion string. Sets the
+ global and instance rules on the <see cref="T:log4net.Util.PatternParser"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.ActivateOptions">
+ <summary>
+ Initialize layout options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Produces a formatted string as specified by the conversion pattern.
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <remarks>
+ <para>
+ Parse the <see cref="T:log4net.Core.LoggingEvent"/> using the patter format
+ specified in the <see cref="P:log4net.Layout.PatternLayout.ConversionPattern"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.AddConverter(log4net.Util.ConverterInfo)">
+ <summary>
+ Add a converter to this PatternLayout
+ </summary>
+ <param name="converterInfo">the converter info</param>
+ <remarks>
+ <para>
+ This version of the method is used by the configurator.
+ Programmatic users should use the alternative <see cref="M:AddConverter(string,Type)"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)">
+ <summary>
+ Add a converter to this PatternLayout
+ </summary>
+ <param name="name">the name of the conversion pattern for this converter</param>
+ <param name="type">the type of the converter</param>
+ <remarks>
+ <para>
+ Add a named pattern converter to this instance. This
+ converter will be used in the formatting of the event.
+ This method must be called before <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/>.
+ </para>
+ <para>
+ The <paramref name="type"/> specified must extend the
+ <see cref="T:log4net.Util.PatternConverter"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.PatternLayout.ConversionPattern">
+ <summary>
+ The pattern formatting string
+ </summary>
+ <remarks>
+ <para>
+ The <b>ConversionPattern</b> option. This is the string which
+ controls formatting and consists of a mix of literal content and
+ conversion specifiers.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.DynamicPatternLayout.m_headerPatternString">
+ <summary>
+ The header PatternString
+ </summary>
+ </member>
+ <member name="F:log4net.Layout.DynamicPatternLayout.m_footerPatternString">
+ <summary>
+ The footer PatternString
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.DynamicPatternLayout.#ctor">
+ <summary>
+ Constructs a DynamicPatternLayout using the DefaultConversionPattern
+ </summary>
+ <remarks>
+ <para>
+ The default pattern just produces the application supplied message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.DynamicPatternLayout.#ctor(System.String)">
+ <summary>
+ Constructs a DynamicPatternLayout using the supplied conversion pattern
+ </summary>
+ <param name="pattern">the pattern to use</param>
+ <remarks>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.DynamicPatternLayout.Header">
+ <summary>
+ The header for the layout format.
+ </summary>
+ <value>the layout header</value>
+ <remarks>
+ <para>
+ The Header text will be appended before any logging events
+ are formatted and appended.
+ </para>
+ The pattern will be formatted on each get operation.
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.DynamicPatternLayout.Footer">
+ <summary>
+ The footer for the layout format.
+ </summary>
+ <value>the layout footer</value>
+ <remarks>
+ <para>
+ The Footer text will be appended after all the logging events
+ have been formatted and appended.
+ </para>
+ The pattern will be formatted on each get operation.
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.ExceptionLayout">
+ <summary>
+ A Layout that renders only the Exception text from the logging event
+ </summary>
+ <remarks>
+ <para>
+ A Layout that renders only the Exception text from the logging event.
+ </para>
+ <para>
+ This Layout should only be used with appenders that utilize multiple
+ layouts (e.g. <see cref="T:log4net.Appender.AdoNetAppender"/>).
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Layout.ExceptionLayout.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Constructs a ExceptionLayout
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.ExceptionLayout.ActivateOptions">
+ <summary>
+ Activate component options
+ </summary>
+ <remarks>
+ <para>
+ Part of the <see cref="T:log4net.Core.IOptionHandler"/> component activation
+ framework.
+ </para>
+ <para>
+ This method does nothing as options become effective immediately.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.ExceptionLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Gets the exception text from the logging event
+ </summary>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <param name="loggingEvent">the event being logged</param>
+ <remarks>
+ <para>
+ Write the exception string to the <see cref="T:System.IO.TextWriter"/>.
+ The exception string is retrieved from <see cref="M:LoggingEvent.GetExceptionString()"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.IRawLayout">
+ <summary>
+ Interface for raw layout objects
+ </summary>
+ <remarks>
+ <para>
+ Interface used to format a <see cref="T:log4net.Core.LoggingEvent"/>
+ to an object.
+ </para>
+ <para>
+ This interface should not be confused with the
+ <see cref="T:log4net.Layout.ILayout"/> interface. This interface is used in
+ only certain specialized situations where a raw object is
+ required rather than a formatted string. The <see cref="T:log4net.Layout.ILayout"/>
+ is not generally useful than this interface.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Layout.IRawLayout.Format(log4net.Core.LoggingEvent)">
+ <summary>
+ Implement this method to create your own layout format.
+ </summary>
+ <param name="loggingEvent">The event to format</param>
+ <returns>returns the formatted event</returns>
+ <remarks>
+ <para>
+ Implement this method to create your own layout format.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.Layout2RawLayoutAdapter">
+ <summary>
+ Adapts any <see cref="T:log4net.Layout.ILayout"/> to a <see cref="T:log4net.Layout.IRawLayout"/>
+ </summary>
+ <remarks>
+ <para>
+ Where an <see cref="T:log4net.Layout.IRawLayout"/> is required this adapter
+ allows a <see cref="T:log4net.Layout.ILayout"/> to be specified.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Layout.Layout2RawLayoutAdapter.m_layout">
+ <summary>
+ The layout to adapt
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.Layout2RawLayoutAdapter.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Construct a new adapter
+ </summary>
+ <param name="layout">the layout to adapt</param>
+ <remarks>
+ <para>
+ Create the adapter for the specified <paramref name="layout"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.Layout2RawLayoutAdapter.Format(log4net.Core.LoggingEvent)">
+ <summary>
+ Format the logging event as an object.
+ </summary>
+ <param name="loggingEvent">The event to format</param>
+ <returns>returns the formatted event</returns>
+ <remarks>
+ <para>
+ Format the logging event as an object.
+ </para>
+ <para>
+ Uses the <see cref="T:log4net.Layout.ILayout"/> object supplied to
+ the constructor to perform the formatting.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.RawLayoutConverter">
+ <summary>
+ Type converter for the <see cref="T:log4net.Layout.IRawLayout"/> interface
+ </summary>
+ <remarks>
+ <para>
+ Used to convert objects to the <see cref="T:log4net.Layout.IRawLayout"/> interface.
+ Supports converting from the <see cref="T:log4net.Layout.ILayout"/> interface to
+ the <see cref="T:log4net.Layout.IRawLayout"/> interface using the <see cref="T:log4net.Layout.Layout2RawLayoutAdapter"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.IConvertFrom">
+ <summary>
+ Interface supported by type converters
+ </summary>
+ <remarks>
+ <para>
+ This interface supports conversion from arbitrary types
+ to a single target type. See <see cref="T:log4net.Util.TypeConverters.TypeConverterAttribute"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.IConvertFrom.CanConvertFrom(System.Type)">
+ <summary>
+ Can the source type be converted to the type supported by this object
+ </summary>
+ <param name="sourceType">the type to convert</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Test if the <paramref name="sourceType"/> can be converted to the
+ type supported by this converter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.IConvertFrom.ConvertFrom(System.Object)">
+ <summary>
+ Convert the source object to the type supported by this object
+ </summary>
+ <param name="source">the object to convert</param>
+ <returns>the converted object</returns>
+ <remarks>
+ <para>
+ Converts the <paramref name="source"/> to the type supported
+ by this converter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.RawLayoutConverter.CanConvertFrom(System.Type)">
+ <summary>
+ Can the sourceType be converted to an <see cref="T:log4net.Layout.IRawLayout"/>
+ </summary>
+ <param name="sourceType">the source to be to be converted</param>
+ <returns><c>true</c> if the source type can be converted to <see cref="T:log4net.Layout.IRawLayout"/></returns>
+ <remarks>
+ <para>
+ Test if the <paramref name="sourceType"/> can be converted to a
+ <see cref="T:log4net.Layout.IRawLayout"/>. Only <see cref="T:log4net.Layout.ILayout"/> is supported
+ as the <paramref name="sourceType"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.RawLayoutConverter.ConvertFrom(System.Object)">
+ <summary>
+ Convert the value to a <see cref="T:log4net.Layout.IRawLayout"/> object
+ </summary>
+ <param name="source">the value to convert</param>
+ <returns>the <see cref="T:log4net.Layout.IRawLayout"/> object</returns>
+ <remarks>
+ <para>
+ Convert the <paramref name="source"/> object to a
+ <see cref="T:log4net.Layout.IRawLayout"/> object. If the <paramref name="source"/> object
+ is a <see cref="T:log4net.Layout.ILayout"/> then the <see cref="T:log4net.Layout.Layout2RawLayoutAdapter"/>
+ is used to adapt between the two interfaces, otherwise an
+ exception is thrown.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.RawPropertyLayout">
+ <summary>
+ Extract the value of a property from the <see cref="T:log4net.Core.LoggingEvent"/>
+ </summary>
+ <remarks>
+ <para>
+ Extract the value of a property from the <see cref="T:log4net.Core.LoggingEvent"/>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Layout.RawPropertyLayout.#ctor">
+ <summary>
+ Constructs a RawPropertyLayout
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.RawPropertyLayout.Format(log4net.Core.LoggingEvent)">
+ <summary>
+ Lookup the property for <see cref="P:log4net.Layout.RawPropertyLayout.Key"/>
+ </summary>
+ <param name="loggingEvent">The event to format</param>
+ <returns>returns property value</returns>
+ <remarks>
+ <para>
+ Looks up and returns the object value of the property
+ named <see cref="P:log4net.Layout.RawPropertyLayout.Key"/>. If there is no property defined
+ with than name then <c>null</c> will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.RawPropertyLayout.Key">
+ <summary>
+ The name of the value to lookup in the LoggingEvent Properties collection.
+ </summary>
+ <value>
+ Value to lookup in the LoggingEvent Properties collection
+ </value>
+ <remarks>
+ <para>
+ String name of the property to lookup in the <see cref="T:log4net.Core.LoggingEvent"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.RawTimeStampLayout">
+ <summary>
+ Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/>
+ </summary>
+ <remarks>
+ <para>
+ Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Layout.RawTimeStampLayout.#ctor">
+ <summary>
+ Constructs a RawTimeStampLayout
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.RawTimeStampLayout.Format(log4net.Core.LoggingEvent)">
+ <summary>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>.
+ </summary>
+ <param name="loggingEvent">The event to format</param>
+ <returns>returns the time stamp</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>.
+ </para>
+ <para>
+ The time stamp is in local time. To format the time stamp
+ in universal time use <see cref="T:log4net.Layout.RawUtcTimeStampLayout"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.RawUtcTimeStampLayout">
+ <summary>
+ Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/>
+ </summary>
+ <remarks>
+ <para>
+ Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Layout.RawUtcTimeStampLayout.#ctor">
+ <summary>
+ Constructs a RawUtcTimeStampLayout
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.RawUtcTimeStampLayout.Format(log4net.Core.LoggingEvent)">
+ <summary>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>.
+ </summary>
+ <param name="loggingEvent">The event to format</param>
+ <returns>returns the time stamp</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>.
+ </para>
+ <para>
+ The time stamp is in universal time. To format the time stamp
+ in local time use <see cref="T:log4net.Layout.RawTimeStampLayout"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.SimpleLayout">
+ <summary>
+ A very simple layout
+ </summary>
+ <remarks>
+ <para>
+ SimpleLayout consists of the level of the log statement,
+ followed by " - " and then the log message itself. For example,
+ <code>
+ DEBUG - Hello world
+ </code>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Layout.SimpleLayout.#ctor">
+ <summary>
+ Constructs a SimpleLayout
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.SimpleLayout.ActivateOptions">
+ <summary>
+ Initialize layout options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.SimpleLayout.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.SimpleLayout.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.SimpleLayout.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.SimpleLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Produces a simple formatted output.
+ </summary>
+ <param name="loggingEvent">the event being logged</param>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <remarks>
+ <para>
+ Formats the event as the level of the even,
+ followed by " - " and then the log message itself. The
+ output is terminated by a newline.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.XmlLayout">
+ <summary>
+ Layout that formats the log events as XML elements.
+ </summary>
+ <remarks>
+ <para>
+ The output of the <see cref="T:log4net.Layout.XmlLayout"/> consists of a series of
+ log4net:event elements. It does not output a complete well-formed XML
+ file. The output is designed to be included as an <em>external entity</em>
+ in a separate file to form a correct XML file.
+ </para>
+ <para>
+ For example, if <c>abc</c> is the name of the file where
+ the <see cref="T:log4net.Layout.XmlLayout"/> output goes, then a well-formed XML file would
+ be:
+ </para>
+ <code lang="XML">
+ <?xml version="1.0" ?>
+
+ <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]>
+
+ <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2>
+ &data;
+ </log4net:events>
+ </code>
+ <para>
+ This approach enforces the independence of the <see cref="T:log4net.Layout.XmlLayout"/>
+ and the appender where it is embedded.
+ </para>
+ <para>
+ The <c>version</c> attribute helps components to correctly
+ interpret output generated by <see cref="T:log4net.Layout.XmlLayout"/>. The value of
+ this attribute should be "1.2" for release 1.2 and later.
+ </para>
+ <para>
+ Alternatively the <c>Header</c> and <c>Footer</c> properties can be
+ configured to output the correct XML header, open tag and close tag.
+ When setting the <c>Header</c> and <c>Footer</c> properties it is essential
+ that the underlying data store not be appendable otherwise the data
+ will become invalid XML.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Layout.XmlLayoutBase">
+ <summary>
+ Layout that formats the log events as XML elements.
+ </summary>
+ <remarks>
+ <para>
+ This is an abstract class that must be subclassed by an implementation
+ to conform to a specific schema.
+ </para>
+ <para>
+ Deriving classes must implement the <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutBase.#ctor">
+ <summary>
+ Protected constructor to support subclasses
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Layout.XmlLayoutBase"/> class
+ with no location info.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutBase.#ctor(System.Boolean)">
+ <summary>
+ Protected constructor to support subclasses
+ </summary>
+ <remarks>
+ <para>
+ The <paramref name="locationInfo" /> parameter determines whether
+ location information will be output by the layout. If
+ <paramref name="locationInfo" /> is set to <c>true</c>, then the
+ file name and line number of the statement at the origin of the log
+ statement will be output.
+ </para>
+ <para>
+ If you are embedding this layout within an SMTPAppender
+ then make sure to set the <b>LocationInfo</b> option of that
+ appender as well.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutBase.ActivateOptions">
+ <summary>
+ Initialize layout options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.XmlLayoutBase.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.XmlLayoutBase.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.XmlLayoutBase.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutBase.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Produces a formatted string.
+ </summary>
+ <param name="loggingEvent">The event being logged.</param>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <remarks>
+ <para>
+ Format the <see cref="T:log4net.Core.LoggingEvent"/> and write it to the <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ <para>
+ This method creates an <see cref="T:System.Xml.XmlTextWriter"/> that writes to the
+ <paramref name="writer"/>. The <see cref="T:System.Xml.XmlTextWriter"/> is passed
+ to the <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method. Subclasses should override the
+ <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method rather than this method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Does the actual writing of the XML.
+ </summary>
+ <param name="writer">The writer to use to output the event to.</param>
+ <param name="loggingEvent">The event to write.</param>
+ <remarks>
+ <para>
+ Subclasses should override this method to format
+ the <see cref="T:log4net.Core.LoggingEvent"/> as XML.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.XmlLayoutBase.m_locationInfo">
+ <summary>
+ Flag to indicate if location information should be included in
+ the XML events.
+ </summary>
+ </member>
+ <member name="F:log4net.Layout.XmlLayoutBase.m_invalidCharReplacement">
+ <summary>
+ The string to replace invalid chars with
+ </summary>
+ </member>
+ <member name="P:log4net.Layout.XmlLayoutBase.LocationInfo">
+ <summary>
+ Gets a value indicating whether to include location information in
+ the XML events.
+ </summary>
+ <value>
+ <c>true</c> if location information should be included in the XML
+ events; otherwise, <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ If <see cref="P:log4net.Layout.XmlLayoutBase.LocationInfo"/> is set to <c>true</c>, then the file
+ name and line number of the statement at the origin of the log
+ statement will be output.
+ </para>
+ <para>
+ If you are embedding this layout within an <c>SMTPAppender</c>
+ then make sure to set the <b>LocationInfo</b> option of that
+ appender as well.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement">
+ <summary>
+ The string to replace characters that can not be expressed in XML with.
+ <remarks>
+ <para>
+ Not all characters may be expressed in XML. This property contains the
+ string to replace those that can not with. This defaults to a ?. Set it
+ to the empty string to simply remove offending characters. For more
+ details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets
+ Character replacement will occur in the log message, the property names
+ and the property values.
+ </para>
+ </remarks>
+ </summary>
+ </member>
+ <member name="P:log4net.Layout.XmlLayoutBase.ContentType">
+ <summary>
+ Gets the content type output by this layout.
+ </summary>
+ <value>
+ As this is the XML layout, the value is always <c>"text/xml"</c>.
+ </value>
+ <remarks>
+ <para>
+ As this is the XML layout, the value is always <c>"text/xml"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayout.#ctor">
+ <summary>
+ Constructs an XmlLayout
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.XmlLayout.#ctor(System.Boolean)">
+ <summary>
+ Constructs an XmlLayout.
+ </summary>
+ <remarks>
+ <para>
+ The <b>LocationInfo</b> option takes a boolean value. By
+ default, it is set to false which means there will be no location
+ information output by this layout. If the the option is set to
+ true, then the file name and line number of the statement
+ at the origin of the log statement will be output.
+ </para>
+ <para>
+ If you are embedding this layout within an SmtpAppender
+ then make sure to set the <b>LocationInfo</b> option of that
+ appender as well.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayout.ActivateOptions">
+ <summary>
+ Initialize layout options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Layout.XmlLayout.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Layout.XmlLayout.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Layout.XmlLayout.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ Builds a cache of the element names
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayout.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Does the actual writing of the XML.
+ </summary>
+ <param name="writer">The writer to use to output the event to.</param>
+ <param name="loggingEvent">The event to write.</param>
+ <remarks>
+ <para>
+ Override the base class <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method
+ to write the <see cref="T:log4net.Core.LoggingEvent"/> to the <see cref="T:System.Xml.XmlWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Layout.XmlLayout.m_prefix">
+ <summary>
+ The prefix to use for all generated element names
+ </summary>
+ </member>
+ <member name="P:log4net.Layout.XmlLayout.Prefix">
+ <summary>
+ The prefix to use for all element names
+ </summary>
+ <remarks>
+ <para>
+ The default prefix is <b>log4net</b>. Set this property
+ to change the prefix. If the prefix is set to an empty string
+ then no prefix will be written.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.XmlLayout.Base64EncodeMessage">
+ <summary>
+ Set whether or not to base64 encode the message.
+ </summary>
+ <remarks>
+ <para>
+ By default the log message will be written as text to the xml
+ output. This can cause problems when the message contains binary
+ data. By setting this to true the contents of the message will be
+ base64 encoded. If this is set then invalid character replacement
+ (see <see cref="P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement"/>) will not be performed
+ on the log message.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.XmlLayout.Base64EncodeProperties">
+ <summary>
+ Set whether or not to base64 encode the property values.
+ </summary>
+ <remarks>
+ <para>
+ By default the properties will be written as text to the xml
+ output. This can cause problems when one or more properties contain
+ binary data. By setting this to true the values of the properties
+ will be base64 encoded. If this is set then invalid character replacement
+ (see <see cref="P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement"/>) will not be performed
+ on the property values.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Layout.XmlLayoutSchemaLog4j">
+ <summary>
+ Layout that formats the log events as XML elements compatible with the log4j schema
+ </summary>
+ <remarks>
+ <para>
+ Formats the log events according to the http://logging.apache.org/log4j schema.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Layout.XmlLayoutSchemaLog4j.s_date1970">
+ <summary>
+ The 1st of January 1970 in UTC
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor">
+ <summary>
+ Constructs an XMLLayoutSchemaLog4j
+ </summary>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor(System.Boolean)">
+ <summary>
+ Constructs an XMLLayoutSchemaLog4j.
+ </summary>
+ <remarks>
+ <para>
+ The <b>LocationInfo</b> option takes a boolean value. By
+ default, it is set to false which means there will be no location
+ information output by this layout. If the the option is set to
+ true, then the file name and line number of the statement
+ at the origin of the log statement will be output.
+ </para>
+ <para>
+ If you are embedding this layout within an SMTPAppender
+ then make sure to set the <b>LocationInfo</b> option of that
+ appender as well.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Actually do the writing of the xml
+ </summary>
+ <param name="writer">the writer to use</param>
+ <param name="loggingEvent">the event to write</param>
+ <remarks>
+ <para>
+ Generate XML that is compatible with the log4j schema.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Layout.XmlLayoutSchemaLog4j.Version">
+ <summary>
+ The version of the log4j schema to use.
+ </summary>
+ <remarks>
+ <para>
+ Only version 1.2 of the log4j schema is supported.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.ObjectRenderer.DefaultRenderer">
+ <summary>
+ The default object Renderer.
+ </summary>
+ <remarks>
+ <para>
+ The default renderer supports rendering objects and collections to strings.
+ </para>
+ <para>
+ See the <see cref="M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)"/> method for details of the output.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.ObjectRenderer.IObjectRenderer">
+ <summary>
+ Implement this interface in order to render objects as strings
+ </summary>
+ <remarks>
+ <para>
+ Certain types require special case conversion to
+ string form. This conversion is done by an object renderer.
+ Object renderers implement the <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>
+ interface.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.ObjectRenderer.IObjectRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)">
+ <summary>
+ Render the object <paramref name="obj"/> to a string
+ </summary>
+ <param name="rendererMap">The map used to lookup renderers</param>
+ <param name="obj">The object to render</param>
+ <param name="writer">The writer to render to</param>
+ <remarks>
+ <para>
+ Render the object <paramref name="obj"/> to a
+ string.
+ </para>
+ <para>
+ The <paramref name="rendererMap"/> parameter is
+ provided to lookup and render other objects. This is
+ very useful where <paramref name="obj"/> contains
+ nested objects of unknown type. The <see cref="M:RendererMap.FindAndRender(object, TextWriter)"/>
+ method can be used to render these objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.DefaultRenderer.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)">
+ <summary>
+ Render the object <paramref name="obj"/> to a string
+ </summary>
+ <param name="rendererMap">The map used to lookup renderers</param>
+ <param name="obj">The object to render</param>
+ <param name="writer">The writer to render to</param>
+ <remarks>
+ <para>
+ Render the object <paramref name="obj"/> to a string.
+ </para>
+ <para>
+ The <paramref name="rendererMap"/> parameter is
+ provided to lookup and render other objects. This is
+ very useful where <paramref name="obj"/> contains
+ nested objects of unknown type. The <see cref="M:RendererMap.FindAndRender(object)"/>
+ method can be used to render these objects.
+ </para>
+ <para>
+ The default renderer supports rendering objects to strings as follows:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Rendered String</description>
+ </listheader>
+ <item>
+ <term><c>null</c></term>
+ <description>
+ <para>"(null)"</para>
+ </description>
+ </item>
+ <item>
+ <term><see cref="T:System.Array"/></term>
+ <description>
+ <para>
+ For a one dimensional array this is the
+ array type name, an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace.
+ </para>
+ <para>
+ For example: <c>int[] {1, 2, 3}</c>.
+ </para>
+ <para>
+ If the array is not one dimensional the
+ <c>Array.ToString()</c> is returned.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term><see cref="T:System.Collections.IEnumerable"/>, <see cref="T:System.Collections.ICollection"/> & <see cref="T:System.Collections.IEnumerator"/></term>
+ <description>
+ <para>
+ Rendered as an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace.
+ </para>
+ <para>
+ For example: <c>{a, b, c}</c>.
+ </para>
+ <para>
+ All collection classes that implement <see cref="T:System.Collections.ICollection"/> its subclasses,
+ or generic equivalents all implement the <see cref="T:System.Collections.IEnumerable"/> interface.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term><see cref="T:System.Collections.DictionaryEntry"/></term>
+ <description>
+ <para>
+ Rendered as the key, an equals sign ('='), and the value (using the appropriate
+ renderer).
+ </para>
+ <para>
+ For example: <c>key=value</c>.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>other</term>
+ <description>
+ <para><c>Object.ToString()</c></para>
+ </description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderArray(log4net.ObjectRenderer.RendererMap,System.Array,System.IO.TextWriter)">
+ <summary>
+ Render the array argument into a string
+ </summary>
+ <param name="rendererMap">The map used to lookup renderers</param>
+ <param name="array">the array to render</param>
+ <param name="writer">The writer to render to</param>
+ <remarks>
+ <para>
+ For a one dimensional array this is the
+ array type name, an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace. For example:
+ <c>int[] {1, 2, 3}</c>.
+ </para>
+ <para>
+ If the array is not one dimensional the
+ <c>Array.ToString()</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderEnumerator(log4net.ObjectRenderer.RendererMap,System.Collections.IEnumerator,System.IO.TextWriter)">
+ <summary>
+ Render the enumerator argument into a string
+ </summary>
+ <param name="rendererMap">The map used to lookup renderers</param>
+ <param name="enumerator">the enumerator to render</param>
+ <param name="writer">The writer to render to</param>
+ <remarks>
+ <para>
+ Rendered as an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace. For example:
+ <c>{a, b, c}</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderDictionaryEntry(log4net.ObjectRenderer.RendererMap,System.Collections.DictionaryEntry,System.IO.TextWriter)">
+ <summary>
+ Render the DictionaryEntry argument into a string
+ </summary>
+ <param name="rendererMap">The map used to lookup renderers</param>
+ <param name="entry">the DictionaryEntry to render</param>
+ <param name="writer">The writer to render to</param>
+ <remarks>
+ <para>
+ Render the key, an equals sign ('='), and the value (using the appropriate
+ renderer). For example: <c>key=value</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.ObjectRenderer.RendererMap">
+ <summary>
+ Map class objects to an <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>.
+ </summary>
+ <remarks>
+ <para>
+ Maintains a mapping between types that require special
+ rendering and the <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> that
+ is used to render them.
+ </para>
+ <para>
+ The <see cref="M:FindAndRender(object)"/> method is used to render an
+ <c>object</c> using the appropriate renderers defined in this map.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.#ctor">
+ <summary>
+ Default Constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)">
+ <summary>
+ Render <paramref name="obj"/> using the appropriate renderer.
+ </summary>
+ <param name="obj">the object to render to a string</param>
+ <returns>the object rendered as a string</returns>
+ <remarks>
+ <para>
+ This is a convenience method used to render an object to a string.
+ The alternative method <see cref="M:FindAndRender(object,TextWriter)"/>
+ should be used when streaming output to a <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)">
+ <summary>
+ Render <paramref name="obj"/> using the appropriate renderer.
+ </summary>
+ <param name="obj">the object to render to a string</param>
+ <param name="writer">The writer to render to</param>
+ <remarks>
+ <para>
+ Find the appropriate renderer for the type of the
+ <paramref name="obj"/> parameter. This is accomplished by calling the
+ <see cref="M:Get(Type)"/> method. Once a renderer is found, it is
+ applied on the object <paramref name="obj"/> and the result is returned
+ as a <see cref="T:System.String"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.Get(System.Object)">
+ <summary>
+ Gets the renderer for the specified object type
+ </summary>
+ <param name="obj">the object to lookup the renderer for</param>
+ <returns>the renderer for <paramref name="obj"/></returns>
+ <remarks>
+ <param>
+ Gets the renderer for the specified object type.
+ </param>
+ <param>
+ Syntactic sugar method that calls <see cref="M:Get(Type)"/>
+ with the type of the object parameter.
+ </param>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.Get(System.Type)">
+ <summary>
+ Gets the renderer for the specified type
+ </summary>
+ <param name="type">the type to lookup the renderer for</param>
+ <returns>the renderer for the specified type</returns>
+ <remarks>
+ <para>
+ Returns the renderer for the specified type.
+ If no specific renderer has been defined the
+ <see cref="P:log4net.ObjectRenderer.RendererMap.DefaultRenderer"/> will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.SearchTypeAndInterfaces(System.Type)">
+ <summary>
+ Internal function to recursively search interfaces
+ </summary>
+ <param name="type">the type to lookup the renderer for</param>
+ <returns>the renderer for the specified type</returns>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.Clear">
+ <summary>
+ Clear the map of renderers
+ </summary>
+ <remarks>
+ <para>
+ Clear the custom renderers defined by using
+ <see cref="M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)"/>. The <see cref="P:log4net.ObjectRenderer.RendererMap.DefaultRenderer"/>
+ cannot be removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)">
+ <summary>
+ Register an <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> for <paramref name="typeToRender"/>.
+ </summary>
+ <param name="typeToRender">the type that will be rendered by <paramref name="renderer"/></param>
+ <param name="renderer">the renderer for <paramref name="typeToRender"/></param>
+ <remarks>
+ <para>
+ Register an object renderer for a specific source type.
+ This renderer will be returned from a call to <see cref="M:Get(Type)"/>
+ specifying the same <paramref name="typeToRender"/> as an argument.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.ObjectRenderer.RendererMap.DefaultRenderer">
+ <summary>
+ Get the default renderer instance
+ </summary>
+ <value>the default renderer</value>
+ <remarks>
+ <para>
+ Get the default renderer
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Plugin.IPlugin">
+ <summary>
+ Interface implemented by logger repository plugins.
+ </summary>
+ <remarks>
+ <para>
+ Plugins define additional behavior that can be associated
+ with a <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ The <see cref="T:log4net.Plugin.PluginMap"/> held by the <see cref="P:log4net.Repository.ILoggerRepository.PluginMap"/>
+ property is used to store the plugins for a repository.
+ </para>
+ <para>
+ The <c>log4net.Config.PluginAttribute</c> can be used to
+ attach plugins to repositories created using configuration
+ attributes.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Plugin.IPlugin.Attach(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Attaches the plugin to the specified <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </summary>
+ <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin should be attached to.</param>
+ <remarks>
+ <para>
+ A plugin may only be attached to a single repository.
+ </para>
+ <para>
+ This method is called when the plugin is attached to the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.IPlugin.Shutdown">
+ <summary>
+ Is called when the plugin is to shutdown.
+ </summary>
+ <remarks>
+ <para>
+ This method is called to notify the plugin that
+ it should stop operating and should detach from
+ the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Plugin.IPlugin.Name">
+ <summary>
+ Gets the name of the plugin.
+ </summary>
+ <value>
+ The name of the plugin.
+ </value>
+ <remarks>
+ <para>
+ Plugins are stored in the <see cref="T:log4net.Plugin.PluginMap"/>
+ keyed by name. Each plugin instance attached to a
+ repository must be a unique name.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Plugin.PluginCollection">
+ <summary>
+ A strongly-typed collection of <see cref="T:log4net.Plugin.IPlugin"/> objects.
+ </summary>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.ReadOnly(log4net.Plugin.PluginCollection)">
+ <summary>
+ Creates a read-only wrapper for a <c>PluginCollection</c> instance.
+ </summary>
+ <param name="list">list to create a readonly wrapper arround</param>
+ <returns>
+ A <c>PluginCollection</c> wrapper that is read-only.
+ </returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <c>PluginCollection</c> class
+ that is empty and has the default initial capacity.
+ </summary>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <c>PluginCollection</c> class
+ that has the specified initial capacity.
+ </summary>
+ <param name="capacity">
+ The number of elements that the new <c>PluginCollection</c> is initially capable of storing.
+ </param>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection)">
+ <summary>
+ Initializes a new instance of the <c>PluginCollection</c> class
+ that contains elements copied from the specified <c>PluginCollection</c>.
+ </summary>
+ <param name="c">The <c>PluginCollection</c> whose elements are copied to the new collection.</param>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.IPlugin[])">
+ <summary>
+ Initializes a new instance of the <c>PluginCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Plugin.IPlugin"/> array.
+ </summary>
+ <param name="a">The <see cref="T:log4net.Plugin.IPlugin"/> array whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.#ctor(System.Collections.ICollection)">
+ <summary>
+ Initializes a new instance of the <c>PluginCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Plugin.IPlugin"/> collection.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Plugin.IPlugin"/> collection whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection.Tag)">
+ <summary>
+ Allow subclasses to avoid our default constructors
+ </summary>
+ <param name="tag"></param>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[])">
+ <summary>
+ Copies the entire <c>PluginCollection</c> to a one-dimensional
+ <see cref="T:log4net.Plugin.IPlugin"/> array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Plugin.IPlugin"/> array to copy to.</param>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[],System.Int32)">
+ <summary>
+ Copies the entire <c>PluginCollection</c> to a one-dimensional
+ <see cref="T:log4net.Plugin.IPlugin"/> array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Plugin.IPlugin"/> array to copy to.</param>
+ <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Add(log4net.Plugin.IPlugin)">
+ <summary>
+ Adds a <see cref="T:log4net.Plugin.IPlugin"/> to the end of the <c>PluginCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to be added to the end of the <c>PluginCollection</c>.</param>
+ <returns>The index at which the value has been added.</returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Clear">
+ <summary>
+ Removes all elements from the <c>PluginCollection</c>.
+ </summary>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:log4net.Plugin.PluginCollection"/>.
+ </summary>
+ <returns>A new <see cref="T:log4net.Plugin.PluginCollection"/> with a shallow copy of the collection data.</returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Contains(log4net.Plugin.IPlugin)">
+ <summary>
+ Determines whether a given <see cref="T:log4net.Plugin.IPlugin"/> is in the <c>PluginCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to check for.</param>
+ <returns><c>true</c> if <paramref name="item"/> is found in the <c>PluginCollection</c>; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.IndexOf(log4net.Plugin.IPlugin)">
+ <summary>
+ Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Plugin.IPlugin"/>
+ in the <c>PluginCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to locate in the <c>PluginCollection</c>.</param>
+ <returns>
+ The zero-based index of the first occurrence of <paramref name="item"/>
+ in the entire <c>PluginCollection</c>, if found; otherwise, -1.
+ </returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Insert(System.Int32,log4net.Plugin.IPlugin)">
+ <summary>
+ Inserts an element into the <c>PluginCollection</c> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to insert.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Remove(log4net.Plugin.IPlugin)">
+ <summary>
+ Removes the first occurrence of a specific <see cref="T:log4net.Plugin.IPlugin"/> from the <c>PluginCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to remove from the <c>PluginCollection</c>.</param>
+ <exception cref="T:System.ArgumentException">
+ The specified <see cref="T:log4net.Plugin.IPlugin"/> was not found in the <c>PluginCollection</c>.
+ </exception>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.RemoveAt(System.Int32)">
+ <summary>
+ Removes the element at the specified index of the <c>PluginCollection</c>.
+ </summary>
+ <param name="index">The zero-based index of the element to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero.</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the <c>PluginCollection</c>.
+ </summary>
+ <returns>An <see cref="T:log4net.Plugin.PluginCollection.Enumerator"/> for the entire <c>PluginCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.PluginCollection)">
+ <summary>
+ Adds the elements of another <c>PluginCollection</c> to the current <c>PluginCollection</c>.
+ </summary>
+ <param name="x">The <c>PluginCollection</c> whose elements should be added to the end of the current <c>PluginCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Plugin.PluginCollection.Count"/> of the <c>PluginCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.IPlugin[])">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Plugin.IPlugin"/> array to the current <c>PluginCollection</c>.
+ </summary>
+ <param name="x">The <see cref="T:log4net.Plugin.IPlugin"/> array whose elements should be added to the end of the <c>PluginCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Plugin.PluginCollection.Count"/> of the <c>PluginCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.AddRange(System.Collections.ICollection)">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Plugin.IPlugin"/> collection to the current <c>PluginCollection</c>.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Plugin.IPlugin"/> collection whose elements should be added to the end of the <c>PluginCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Plugin.PluginCollection.Count"/> of the <c>PluginCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.TrimToSize">
+ <summary>
+ Sets the capacity to the actual number of elements.
+ </summary>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero.</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32,System.Boolean)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero.</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.Count">
+ <summary>
+ Gets the number of elements actually contained in the <c>PluginCollection</c>.
+ </summary>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.IsSynchronized">
+ <summary>
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+ </summary>
+ <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the collection.
+ </summary>
+ <value>
+ An object that can be used to synchronize access to the collection.
+ </value>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Plugin.IPlugin"/> at the specified index.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Plugin.IPlugin"/> at the specified index.
+ </value>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero.</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value><c>true</c> if the collection has a fixed size; otherwise, <c>false</c>. The default is <c>false</c>.</value>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the IList is read-only.
+ </summary>
+ <value><c>true</c> if the collection is read-only; otherwise, <c>false</c>. The default is <c>false</c>.</value>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.Capacity">
+ <summary>
+ Gets or sets the number of elements the <c>PluginCollection</c> can contain.
+ </summary>
+ <value>
+ The number of elements the <c>PluginCollection</c> can contain.
+ </value>
+ </member>
+ <member name="T:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator">
+ <summary>
+ Supports type-safe iteration over a <see cref="T:log4net.Plugin.PluginCollection"/>.
+ </summary>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Plugin.PluginCollection.Tag">
+ <summary>
+ Type visible only to our subclasses
+ Used to access protected constructor
+ </summary>
+ <exclude/>
+ </member>
+ <member name="F:log4net.Plugin.PluginCollection.Tag.Default">
+ <summary>
+ A value
+ </summary>
+ </member>
+ <member name="T:log4net.Plugin.PluginCollection.Enumerator">
+ <summary>
+ Supports simple iteration over a <see cref="T:log4net.Plugin.PluginCollection"/>.
+ </summary>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Enumerator.#ctor(log4net.Plugin.PluginCollection)">
+ <summary>
+ Initializes a new instance of the <c>Enumerator</c> class.
+ </summary>
+ <param name="tc"></param>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Enumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Plugin.PluginCollection.Enumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Plugin.PluginCollection.Enumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <value>
+ The current element in the collection.
+ </value>
+ </member>
+ <member name="T:log4net.Plugin.PluginCollection.ReadOnlyPluginCollection">
+ <exclude/>
+ </member>
+ <member name="T:log4net.Plugin.PluginMap">
+ <summary>
+ Map of repository plugins.
+ </summary>
+ <remarks>
+ <para>
+ This class is a name keyed map of the plugins that are
+ attached to a repository.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Plugin.PluginMap.#ctor(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="repository">The repository that the plugins should be attached to.</param>
+ <remarks>
+ <para>
+ Initialize a new instance of the <see cref="T:log4net.Plugin.PluginMap"/> class with a
+ repository that the plugins should be attached to.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.PluginMap.Add(log4net.Plugin.IPlugin)">
+ <summary>
+ Adds a <see cref="T:log4net.Plugin.IPlugin"/> to the map.
+ </summary>
+ <param name="plugin">The <see cref="T:log4net.Plugin.IPlugin"/> to add to the map.</param>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Plugin.IPlugin"/> will be attached to the repository when added.
+ </para>
+ <para>
+ If there already exists a plugin with the same name
+ attached to the repository then the old plugin will
+ be <see cref="M:log4net.Plugin.IPlugin.Shutdown"/> and replaced with
+ the new plugin.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.PluginMap.Remove(log4net.Plugin.IPlugin)">
+ <summary>
+ Removes a <see cref="T:log4net.Plugin.IPlugin"/> from the map.
+ </summary>
+ <param name="plugin">The <see cref="T:log4net.Plugin.IPlugin"/> to remove from the map.</param>
+ <remarks>
+ <para>
+ Remove a specific plugin from this map.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Plugin.PluginMap.Item(System.String)">
+ <summary>
+ Gets a <see cref="T:log4net.Plugin.IPlugin"/> by name.
+ </summary>
+ <param name="name">The name of the <see cref="T:log4net.Plugin.IPlugin"/> to lookup.</param>
+ <returns>
+ The <see cref="T:log4net.Plugin.IPlugin"/> from the map with the name specified, or
+ <c>null</c> if no plugin is found.
+ </returns>
+ <remarks>
+ <para>
+ Lookup a plugin by name. If the plugin is not found <c>null</c>
+ will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Plugin.PluginMap.AllPlugins">
+ <summary>
+ Gets all possible plugins as a list of <see cref="T:log4net.Plugin.IPlugin"/> objects.
+ </summary>
+ <value>All possible plugins as a list of <see cref="T:log4net.Plugin.IPlugin"/> objects.</value>
+ <remarks>
+ <para>
+ Get a collection of all the plugins defined in this map.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Plugin.PluginSkeleton">
+ <summary>
+ Base implementation of <see cref="T:log4net.Plugin.IPlugin"/>
+ </summary>
+ <remarks>
+ <para>
+ Default abstract implementation of the <see cref="T:log4net.Plugin.IPlugin"/>
+ interface. This base class can be used by implementors
+ of the <see cref="T:log4net.Plugin.IPlugin"/> interface.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Plugin.PluginSkeleton.#ctor(System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="name">the name of the plugin</param>
+ <remarks>
+ Initializes a new Plugin with the specified name.
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.PluginSkeleton.Attach(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Attaches this plugin to a <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </summary>
+ <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin should be attached to.</param>
+ <remarks>
+ <para>
+ A plugin may only be attached to a single repository.
+ </para>
+ <para>
+ This method is called when the plugin is attached to the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.PluginSkeleton.Shutdown">
+ <summary>
+ Is called when the plugin is to shutdown.
+ </summary>
+ <remarks>
+ <para>
+ This method is called to notify the plugin that
+ it should stop operating and should detach from
+ the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Plugin.PluginSkeleton.m_name">
+ <summary>
+ The name of this plugin.
+ </summary>
+ </member>
+ <member name="F:log4net.Plugin.PluginSkeleton.m_repository">
+ <summary>
+ The repository this plugin is attached to.
+ </summary>
+ </member>
+ <member name="P:log4net.Plugin.PluginSkeleton.Name">
+ <summary>
+ Gets or sets the name of the plugin.
+ </summary>
+ <value>
+ The name of the plugin.
+ </value>
+ <remarks>
+ <para>
+ Plugins are stored in the <see cref="T:log4net.Plugin.PluginMap"/>
+ keyed by name. Each plugin instance attached to a
+ repository must be a unique name.
+ </para>
+ <para>
+ The name of the plugin must not change one the
+ plugin has been attached to a repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Plugin.PluginSkeleton.LoggerRepository">
+ <summary>
+ The repository for this plugin
+ </summary>
+ <value>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin is attached to.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin is
+ attached to.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Plugin.RemoteLoggingServerPlugin">
+ <summary>
+ Plugin that listens for events from the <see cref="T:log4net.Appender.RemotingAppender"/>
+ </summary>
+ <remarks>
+ <para>
+ This plugin publishes an instance of <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
+ on a specified <see cref="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri"/>. This listens for logging events delivered from
+ a remote <see cref="T:log4net.Appender.RemotingAppender"/>.
+ </para>
+ <para>
+ When an event is received it is relogged within the attached repository
+ as if it had been raised locally.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Plugin.RemoteLoggingServerPlugin"/> class.
+ </para>
+ <para>
+ The <see cref="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri"/> property must be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor(System.String)">
+ <summary>
+ Construct with sink Uri.
+ </summary>
+ <param name="sinkUri">The name to publish the sink under in the remoting infrastructure.
+ See <see cref="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri"/> for more details.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Plugin.RemoteLoggingServerPlugin"/> class
+ with specified name.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.Attach(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Attaches this plugin to a <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </summary>
+ <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin should be attached to.</param>
+ <remarks>
+ <para>
+ A plugin may only be attached to a single repository.
+ </para>
+ <para>
+ This method is called when the plugin is attached to the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.Shutdown">
+ <summary>
+ Is called when the plugin is to shutdown.
+ </summary>
+ <remarks>
+ <para>
+ When the plugin is shutdown the remote logging
+ sink is disconnected.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Plugin.RemoteLoggingServerPlugin.declaringType">
+ <summary>
+ The fully qualified type of the RemoteLoggingServerPlugin class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri">
+ <summary>
+ Gets or sets the URI of this sink.
+ </summary>
+ <value>
+ The URI of this sink.
+ </value>
+ <remarks>
+ <para>
+ This is the name under which the object is marshaled.
+ <see cref="M:RemotingServices.Marshal(MarshalByRefObject,String,Type)"/>
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl">
+ <summary>
+ Delivers <see cref="T:log4net.Core.LoggingEvent"/> objects to a remote sink.
+ </summary>
+ <remarks>
+ <para>
+ Internal class used to listen for logging events
+ and deliver them to the local repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.#ctor(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="repository">The repository to log to.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl"/> for the
+ specified <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.LogEvents(log4net.Core.LoggingEvent[])">
+ <summary>
+ Logs the events to the repository.
+ </summary>
+ <param name="events">The events to log.</param>
+ <remarks>
+ <para>
+ The events passed are logged to the <see cref="T:log4net.Repository.ILoggerRepository"/>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime
+ policy for this instance.
+ </summary>
+ <returns><c>null</c> to indicate that this instance should live forever.</returns>
+ <remarks>
+ <para>
+ Obtains a lifetime service object to control the lifetime
+ policy for this instance. This object should live forever
+ therefore this implementation returns <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.m_repository">
+ <summary>
+ The underlying <see cref="T:log4net.Repository.ILoggerRepository"/> that events should
+ be logged to.
+ </summary>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.DefaultLoggerFactory">
+ <summary>
+ Default implementation of <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>
+ </summary>
+ <remarks>
+ <para>
+ This default implementation of the <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>
+ interface is used to create the default subclass
+ of the <see cref="T:log4net.Repository.Hierarchy.Logger"/> object.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.ILoggerFactory">
+ <summary>
+ Interface abstracts creation of <see cref="T:log4net.Repository.Hierarchy.Logger"/> instances
+ </summary>
+ <remarks>
+ <para>
+ This interface is used by the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> to
+ create new <see cref="T:log4net.Repository.Hierarchy.Logger"/> objects.
+ </para>
+ <para>
+ The <see cref="M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)"/> method is called
+ to create a named <see cref="T:log4net.Repository.Hierarchy.Logger"/>.
+ </para>
+ <para>
+ Implement this interface to create new subclasses of <see cref="T:log4net.Repository.Hierarchy.Logger"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)">
+ <summary>
+ Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance
+ </summary>
+ <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that will own the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param>
+ <param name="name">The name of the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param>
+ <returns>The <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance for the specified name.</returns>
+ <remarks>
+ <para>
+ Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance with the
+ specified name.
+ </para>
+ <para>
+ Called by the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> to create
+ new named <see cref="T:log4net.Repository.Hierarchy.Logger"/> instances.
+ </para>
+ <para>
+ If the <paramref name="name"/> is <c>null</c> then the root logger
+ must be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.DefaultLoggerFactory.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.DefaultLoggerFactory"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.DefaultLoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)">
+ <summary>
+ Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance
+ </summary>
+ <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that will own the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param>
+ <param name="name">The name of the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param>
+ <returns>The <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance for the specified name.</returns>
+ <remarks>
+ <para>
+ Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance with the
+ specified name.
+ </para>
+ <para>
+ Called by the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> to create
+ new named <see cref="T:log4net.Repository.Hierarchy.Logger"/> instances.
+ </para>
+ <para>
+ If the <paramref name="name"/> is <c>null</c> then the root logger
+ must be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl">
+ <summary>
+ Default internal subclass of <see cref="T:log4net.Repository.Hierarchy.Logger"/>
+ </summary>
+ <remarks>
+ <para>
+ This subclass has no additional behavior over the
+ <see cref="T:log4net.Repository.Hierarchy.Logger"/> class but does allow instances
+ to be created.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.Logger">
+ <summary>
+ Implementation of <see cref="T:log4net.Core.ILogger"/> used by <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/>
+ </summary>
+ <remarks>
+ <para>
+ Internal class used to provide implementation of <see cref="T:log4net.Core.ILogger"/>
+ interface. Applications should use <see cref="T:log4net.LogManager"/> to get
+ logger instances.
+ </para>
+ <para>
+ This is one of the central classes in the log4net implementation. One of the
+ distinctive features of log4net are hierarchical loggers and their
+ evaluation. The <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/> organizes the <see cref="T:log4net.Repository.Hierarchy.Logger"/>
+ instances into a rooted tree hierarchy.
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.Hierarchy.Logger"/> class is abstract. Only concrete subclasses of
+ <see cref="T:log4net.Repository.Hierarchy.Logger"/> can be created. The <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>
+ is used to create instances of this type for the <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Aspi Havewala</author>
+ <author>Douglas de la Torre</author>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.#ctor(System.String)">
+ <summary>
+ This constructor created a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance and
+ sets its name.
+ </summary>
+ <param name="name">The name of the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param>
+ <remarks>
+ <para>
+ This constructor is protected and designed to be used by
+ a subclass that is not abstract.
+ </para>
+ <para>
+ Loggers are constructed by <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>
+ objects. See <see cref="T:log4net.Repository.Hierarchy.DefaultLoggerFactory"/> for the default
+ logger creator.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Add <paramref name="newAppender"/> to the list of appenders of this
+ Logger instance.
+ </summary>
+ <param name="newAppender">An appender to add to this logger</param>
+ <remarks>
+ <para>
+ Add <paramref name="newAppender"/> to the list of appenders of this
+ Logger instance.
+ </para>
+ <para>
+ If <paramref name="newAppender"/> is already in the list of
+ appenders, then it won't be added again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.GetAppender(System.String)">
+ <summary>
+ Look for the appender named as <c>name</c>
+ </summary>
+ <param name="name">The name of the appender to lookup</param>
+ <returns>The appender with the name specified, or <c>null</c>.</returns>
+ <remarks>
+ <para>
+ Returns the named appender, or null if the appender is not found.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.RemoveAllAppenders">
+ <summary>
+ Remove all previously added appenders from this Logger instance.
+ </summary>
+ <remarks>
+ <para>
+ Remove all previously added appenders from this Logger instance.
+ </para>
+ <para>
+ This is useful when re-reading configuration information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Remove the appender passed as parameter form the list of appenders.
+ </summary>
+ <param name="appender">The appender to remove</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ Remove the appender passed as parameter form the list of appenders.
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.RemoveAppender(System.String)">
+ <summary>
+ Remove the appender passed as parameter form the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ Remove the named appender passed as parameter form the list of appenders.
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)">
+ <summary>
+ This generic form is intended to be used by wrappers.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="level">The level of the message to be logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Generate a logging event for the specified <paramref name="level"/> using
+ the <paramref name="message"/> and <paramref name="exception"/>.
+ </para>
+ <para>
+ This method must not throw any exception to the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.LoggingEvent)">
+ <summary>
+ This is the most generic printing method that is intended to be used
+ by wrappers.
+ </summary>
+ <param name="logEvent">The event being logged.</param>
+ <remarks>
+ <para>
+ Logs the specified logging event through this logger.
+ </para>
+ <para>
+ This method must not throw any exception to the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.IsEnabledFor(log4net.Core.Level)">
+ <summary>
+ Checks if this logger is enabled for a given <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/> passed as parameter.
+ </summary>
+ <param name="level">The level to check.</param>
+ <returns>
+ <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Test if this logger is going to log events of the specified <paramref name="level"/>.
+ </para>
+ <para>
+ This method must not throw any exception to the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent)">
+ <summary>
+ Deliver the <see cref="T:log4net.Core.LoggingEvent"/> to the attached appenders.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Call the appenders in the hierarchy starting at
+ <c>this</c>. If no appenders could be found, emit a
+ warning.
+ </para>
+ <para>
+ This method calls all the appenders inherited from the
+ hierarchy circumventing any evaluation of whether to log or not
+ to log the particular log request.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.CloseNestedAppenders">
+ <summary>
+ Closes all attached appenders implementing the <see cref="T:log4net.Core.IAppenderAttachable"/> interface.
+ </summary>
+ <remarks>
+ <para>
+ Used to ensure that the appenders are correctly shutdown.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.Level,System.Object,System.Exception)">
+ <summary>
+ This is the most generic printing method. This generic form is intended to be used by wrappers
+ </summary>
+ <param name="level">The level of the message to be logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Generate a logging event for the specified <paramref name="level"/> using
+ the <paramref name="message"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type,log4net.Core.Level,System.Object,System.Exception)">
+ <summary>
+ Creates a new logging event and logs the event without further checks.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="level">The level of the message to be logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Generates a logging event and delivers it to the attached
+ appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Logger.ForcedLog(log4net.Core.LoggingEvent)">
+ <summary>
+ Creates a new logging event and logs the event without further checks.
+ </summary>
+ <param name="logEvent">The event being logged.</param>
+ <remarks>
+ <para>
+ Delivers the logging event to the attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.declaringType">
+ <summary>
+ The fully qualified type of the Logger class.
+ </summary>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.m_name">
+ <summary>
+ The name of this logger.
+ </summary>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.m_level">
+ <summary>
+ The assigned level of this logger.
+ </summary>
+ <remarks>
+ <para>
+ The <c>level</c> variable need not be
+ assigned a value in which case it is inherited
+ form the hierarchy.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.m_parent">
+ <summary>
+ The parent of this logger.
+ </summary>
+ <remarks>
+ <para>
+ The parent of this logger.
+ All loggers have at least one ancestor which is the root logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.m_hierarchy">
+ <summary>
+ Loggers need to know what Hierarchy they are in.
+ </summary>
+ <remarks>
+ <para>
+ Loggers need to know what Hierarchy they are in.
+ The hierarchy that this logger is a member of is stored
+ here.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.m_appenderAttachedImpl">
+ <summary>
+ Helper implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
+ </summary>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.m_additive">
+ <summary>
+ Flag indicating if child loggers inherit their parents appenders
+ </summary>
+ <remarks>
+ <para>
+ Additivity is set to true by default, that is children inherit
+ the appenders of their ancestors by default. If this variable is
+ set to <c>false</c> then the appenders found in the
+ ancestors of this logger are not used. However, the children
+ of this logger will inherit its appenders, unless the children
+ have their additivity flag set to <c>false</c> too. See
+ the user manual for more details.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Logger.m_appenderLock">
+ <summary>
+ Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl
+ </summary>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.Parent">
+ <summary>
+ Gets or sets the parent logger in the hierarchy.
+ </summary>
+ <value>
+ The parent logger in the hierarchy.
+ </value>
+ <remarks>
+ <para>
+ Part of the Composite pattern that makes the hierarchy.
+ The hierarchy is parent linked rather than child linked.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.Additivity">
+ <summary>
+ Gets or sets a value indicating if child loggers inherit their parent's appenders.
+ </summary>
+ <value>
+ <c>true</c> if child loggers inherit their parent's appenders.
+ </value>
+ <remarks>
+ <para>
+ Additivity is set to <c>true</c> by default, that is children inherit
+ the appenders of their ancestors by default. If this variable is
+ set to <c>false</c> then the appenders found in the
+ ancestors of this logger are not used. However, the children
+ of this logger will inherit its appenders, unless the children
+ have their additivity flag set to <c>false</c> too. See
+ the user manual for more details.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.EffectiveLevel">
+ <summary>
+ Gets the effective level for this logger.
+ </summary>
+ <returns>The nearest level in the logger hierarchy.</returns>
+ <remarks>
+ <para>
+ Starting from this logger, searches the logger hierarchy for a
+ non-null level and returns it. Otherwise, returns the level of the
+ root logger.
+ </para>
+ <para>The Logger class is designed so that this method executes as
+ quickly as possible.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.Hierarchy">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/> where this
+ <c>Logger</c> instance is attached to.
+ </summary>
+ <value>The hierarchy that this logger belongs to.</value>
+ <remarks>
+ <para>
+ This logger must be attached to a single <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.Level">
+ <summary>
+ Gets or sets the assigned <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/>, if any, for this Logger.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/> of this logger.
+ </value>
+ <remarks>
+ <para>
+ The assigned <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/> can be <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.Appenders">
+ <summary>
+ Get the appenders contained in this logger as an
+ <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <returns>A collection of the appenders in this logger</returns>
+ <remarks>
+ <para>
+ Get the appenders contained in this logger as an
+ <see cref="T:System.Collections.ICollection"/>. If no appenders
+ can be found, then a <see cref="T:log4net.Util.EmptyCollection"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.Name">
+ <summary>
+ Gets the logger name.
+ </summary>
+ <value>
+ The name of the logger.
+ </value>
+ <remarks>
+ <para>
+ The name of this logger
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Logger.Repository">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this
+ <c>Logger</c> instance is attached to.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this logger belongs to.
+ </value>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this
+ <c>Logger</c> instance is attached to.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl.#ctor(System.String)">
+ <summary>
+ Construct a new Logger
+ </summary>
+ <param name="name">the name of the logger</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl"/> class
+ with the specified name.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.LoggerCreationEventHandler">
+ <summary>
+ Delegate used to handle logger creation event notifications.
+ </summary>
+ <param name="sender">The <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> in which the <see cref="T:log4net.Repository.Hierarchy.Logger"/> has been created.</param>
+ <param name="e">The <see cref="T:log4net.Repository.Hierarchy.LoggerCreationEventArgs"/> event args that hold the <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance that has been created.</param>
+ <remarks>
+ <para>
+ Delegate used to handle logger creation event notifications.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.LoggerCreationEventArgs">
+ <summary>
+ Provides data for the <see cref="E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent"/> event.
+ </summary>
+ <remarks>
+ <para>
+ A <see cref="E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent"/> event is raised every time a
+ <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> is created.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.LoggerCreationEventArgs.m_log">
+ <summary>
+ The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> created
+ </summary>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.LoggerCreationEventArgs.#ctor(log4net.Repository.Hierarchy.Logger)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="log">The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.LoggerCreationEventArgs"/> event argument
+ class,with the specified <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger">
+ <summary>
+ Gets the <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.Hierarchy">
+ <summary>
+ Hierarchical organization of loggers
+ </summary>
+ <remarks>
+ <para>
+ <i>The casual user should not have to deal with this class
+ directly.</i>
+ </para>
+ <para>
+ This class is specialized in retrieving loggers by name and
+ also maintaining the logger hierarchy. Implements the
+ <see cref="T:log4net.Repository.ILoggerRepository"/> interface.
+ </para>
+ <para>
+ The structure of the logger hierarchy is maintained by the
+ <see cref="M:GetLogger(string)"/> method. The hierarchy is such that children
+ link to their parent but parents do not have any references to their
+ children. Moreover, loggers can be instantiated in any order, in
+ particular descendant before ancestor.
+ </para>
+ <para>
+ In case a descendant is created before a particular ancestor,
+ then it creates a provision node for the ancestor and adds itself
+ to the provision node. Other descendants of the same ancestor add
+ themselves to the previously created provision node.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Repository.LoggerRepositorySkeleton">
+ <summary>
+ Base implementation of <see cref="T:log4net.Repository.ILoggerRepository"/>
+ </summary>
+ <remarks>
+ <para>
+ Default abstract implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface.
+ </para>
+ <para>
+ Skeleton implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface.
+ All <see cref="T:log4net.Repository.ILoggerRepository"/> types can extend this type.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Repository.ILoggerRepository">
+ <summary>
+ Interface implemented by logger repositories.
+ </summary>
+ <remarks>
+ <para>
+ This interface is implemented by logger repositories. e.g.
+ <see cref="N:log4net.Repository.Hierarchy"/>.
+ </para>
+ <para>
+ This interface is used by the <see cref="T:log4net.LogManager"/>
+ to obtain <see cref="T:log4net.ILog"/> interfaces.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.ILoggerRepository.Exists(System.String)">
+ <summary>
+ Check if the named logger exists in the repository. If so return
+ its reference, otherwise returns <c>null</c>.
+ </summary>
+ <param name="name">The name of the logger to lookup</param>
+ <returns>The Logger object with the name specified</returns>
+ <remarks>
+ <para>
+ If the names logger exists it is returned, otherwise
+ <c>null</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.ILoggerRepository.GetCurrentLoggers">
+ <summary>
+ Returns all the currently defined loggers as an Array.
+ </summary>
+ <returns>All the defined loggers</returns>
+ <remarks>
+ <para>
+ Returns all the currently defined loggers as an Array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.ILoggerRepository.GetLogger(System.String)">
+ <summary>
+ Returns a named logger instance
+ </summary>
+ <param name="name">The name of the logger to retrieve</param>
+ <returns>The logger object with the name specified</returns>
+ <remarks>
+ <para>
+ Returns a named logger instance.
+ </para>
+ <para>
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated and
+ then linked with its existing ancestors as well as children.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.ILoggerRepository.Shutdown">
+ <summary>Shutdown the repository</summary>
+ <remarks>
+ <para>
+ Shutting down a repository will <i>safely</i> close and remove
+ all appenders in all loggers including the root logger.
+ </para>
+ <para>
+ Some appenders need to be closed before the
+ application exists. Otherwise, pending logging events might be
+ lost.
+ </para>
+ <para>
+ The <see cref="M:Shutdown()"/> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.ILoggerRepository.ResetConfiguration">
+ <summary>
+ Reset the repositories configuration to a default state
+ </summary>
+ <remarks>
+ <para>
+ Reset all values contained in this instance to their
+ default state.
+ </para>
+ <para>
+ Existing loggers are not removed. They are just reset.
+ </para>
+ <para>
+ This method should be used sparingly and with care as it will
+ block all logging until it is completed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.ILoggerRepository.Log(log4net.Core.LoggingEvent)">
+ <summary>
+ Log the <see cref="T:log4net.Core.LoggingEvent"/> through this repository.
+ </summary>
+ <param name="logEvent">the event to log</param>
+ <remarks>
+ <para>
+ This method should not normally be used to log.
+ The <see cref="T:log4net.ILog"/> interface should be used
+ for routine logging. This interface can be obtained
+ using the <see cref="M:log4net.LogManager.GetLogger(string)"/> method.
+ </para>
+ <para>
+ The <c>logEvent</c> is delivered to the appropriate logger and
+ that logger is then responsible for logging the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.ILoggerRepository.GetAppenders">
+ <summary>
+ Returns all the Appenders that are configured as an Array.
+ </summary>
+ <returns>All the Appenders</returns>
+ <remarks>
+ <para>
+ Returns all the Appenders that are configured as an Array.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.Name">
+ <summary>
+ The name of the repository
+ </summary>
+ <value>
+ The name of the repository
+ </value>
+ <remarks>
+ <para>
+ The name of the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.RendererMap">
+ <summary>
+ RendererMap accesses the object renderer map for this repository.
+ </summary>
+ <value>
+ RendererMap accesses the object renderer map for this repository.
+ </value>
+ <remarks>
+ <para>
+ RendererMap accesses the object renderer map for this repository.
+ </para>
+ <para>
+ The RendererMap holds a mapping between types and
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.PluginMap">
+ <summary>
+ The plugin map for this repository.
+ </summary>
+ <value>
+ The plugin map for this repository.
+ </value>
+ <remarks>
+ <para>
+ The plugin map holds the <see cref="T:log4net.Plugin.IPlugin"/> instances
+ that have been attached to this repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.LevelMap">
+ <summary>
+ Get the level map for the Repository.
+ </summary>
+ <remarks>
+ <para>
+ Get the level map for the Repository.
+ </para>
+ <para>
+ The level map defines the mappings between
+ level names and <see cref="T:log4net.Core.Level"/> objects in
+ this repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.Threshold">
+ <summary>
+ The threshold for all events in this repository
+ </summary>
+ <value>
+ The threshold for all events in this repository
+ </value>
+ <remarks>
+ <para>
+ The threshold for all events in this repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.Configured">
+ <summary>
+ Flag indicates if this repository has been configured.
+ </summary>
+ <value>
+ Flag indicates if this repository has been configured.
+ </value>
+ <remarks>
+ <para>
+ Flag indicates if this repository has been configured.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.ConfigurationMessages">
+ <summary>
+ Collection of internal messages captured during the most
+ recent configuration process.
+ </summary>
+ </member>
+ <member name="E:log4net.Repository.ILoggerRepository.ShutdownEvent">
+ <summary>
+ Event to notify that the repository has been shutdown.
+ </summary>
+ <value>
+ Event to notify that the repository has been shutdown.
+ </value>
+ <remarks>
+ <para>
+ Event raised when the repository has been shutdown.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Repository.ILoggerRepository.ConfigurationReset">
+ <summary>
+ Event to notify that the repository has had its configuration reset.
+ </summary>
+ <value>
+ Event to notify that the repository has had its configuration reset.
+ </value>
+ <remarks>
+ <para>
+ Event raised when the repository's configuration has been
+ reset to default.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Repository.ILoggerRepository.ConfigurationChanged">
+ <summary>
+ Event to notify that the repository has had its configuration changed.
+ </summary>
+ <value>
+ Event to notify that the repository has had its configuration changed.
+ </value>
+ <remarks>
+ <para>
+ Event raised when the repository's configuration has been changed.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.ILoggerRepository.Properties">
+ <summary>
+ Repository specific properties
+ </summary>
+ <value>
+ Repository specific properties
+ </value>
+ <remarks>
+ <para>
+ These properties can be specified on a repository specific basis.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.#ctor">
+ <summary>
+ Default Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes the repository with default (empty) properties.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.#ctor(log4net.Util.PropertiesDictionary)">
+ <summary>
+ Construct the repository using specific properties
+ </summary>
+ <param name="properties">the properties to set for this repository</param>
+ <remarks>
+ <para>
+ Initializes the repository with specified properties.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.Exists(System.String)">
+ <summary>
+ Test if logger exists
+ </summary>
+ <param name="name">The name of the logger to lookup</param>
+ <returns>The Logger object with the name specified</returns>
+ <remarks>
+ <para>
+ Check if the named logger exists in the repository. If so return
+ its reference, otherwise returns <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.GetCurrentLoggers">
+ <summary>
+ Returns all the currently defined loggers in the repository
+ </summary>
+ <returns>All the defined loggers</returns>
+ <remarks>
+ <para>
+ Returns all the currently defined loggers in the repository as an Array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.GetLogger(System.String)">
+ <summary>
+ Return a new logger instance
+ </summary>
+ <param name="name">The name of the logger to retrieve</param>
+ <returns>The logger object with the name specified</returns>
+ <remarks>
+ <para>
+ Return a new logger instance.
+ </para>
+ <para>
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated and
+ then linked with its existing ancestors as well as children.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.Shutdown">
+ <summary>
+ Shutdown the repository
+ </summary>
+ <remarks>
+ <para>
+ Shutdown the repository. Can be overridden in a subclass.
+ This base class implementation notifies the <see cref="E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent"/>
+ listeners and all attached plugins of the shutdown event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.ResetConfiguration">
+ <summary>
+ Reset the repositories configuration to a default state
+ </summary>
+ <remarks>
+ <para>
+ Reset all values contained in this instance to their
+ default state.
+ </para>
+ <para>
+ Existing loggers are not removed. They are just reset.
+ </para>
+ <para>
+ This method should be used sparingly and with care as it will
+ block all logging until it is completed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.Log(log4net.Core.LoggingEvent)">
+ <summary>
+ Log the logEvent through this repository.
+ </summary>
+ <param name="logEvent">the event to log</param>
+ <remarks>
+ <para>
+ This method should not normally be used to log.
+ The <see cref="T:log4net.ILog"/> interface should be used
+ for routine logging. This interface can be obtained
+ using the <see cref="M:log4net.LogManager.GetLogger(string)"/> method.
+ </para>
+ <para>
+ The <c>logEvent</c> is delivered to the appropriate logger and
+ that logger is then responsible for logging the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.GetAppenders">
+ <summary>
+ Returns all the Appenders that are configured as an Array.
+ </summary>
+ <returns>All the Appenders</returns>
+ <remarks>
+ <para>
+ Returns all the Appenders that are configured as an Array.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.LoggerRepositorySkeleton.declaringType">
+ <summary>
+ The fully qualified type of the LoggerRepositorySkeleton class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.AddRenderer(System.Type,log4net.ObjectRenderer.IObjectRenderer)">
+ <summary>
+ Adds an object renderer for a specific class.
+ </summary>
+ <param name="typeToRender">The type that will be rendered by the renderer supplied.</param>
+ <param name="rendererInstance">The object renderer used to render the object.</param>
+ <remarks>
+ <para>
+ Adds an object renderer for a specific class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.OnShutdown(System.EventArgs)">
+ <summary>
+ Notify the registered listeners that the repository is shutting down
+ </summary>
+ <param name="e">Empty EventArgs</param>
+ <remarks>
+ <para>
+ Notify any listeners that this repository is shutting down.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationReset(System.EventArgs)">
+ <summary>
+ Notify the registered listeners that the repository has had its configuration reset
+ </summary>
+ <param name="e">Empty EventArgs</param>
+ <remarks>
+ <para>
+ Notify any listeners that this repository's configuration has been reset.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationChanged(System.EventArgs)">
+ <summary>
+ Notify the registered listeners that the repository has had its configuration changed
+ </summary>
+ <param name="e">Empty EventArgs</param>
+ <remarks>
+ <para>
+ Notify any listeners that this repository's configuration has changed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.LoggerRepositorySkeleton.RaiseConfigurationChanged(System.EventArgs)">
+ <summary>
+ Raise a configuration changed event on this repository
+ </summary>
+ <param name="e">EventArgs.Empty</param>
+ <remarks>
+ <para>
+ Applications that programmatically change the configuration of the repository should
+ raise this event notification to notify listeners.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.Name">
+ <summary>
+ The name of the repository
+ </summary>
+ <value>
+ The string name of the repository
+ </value>
+ <remarks>
+ <para>
+ The name of this repository. The name is
+ used to store and lookup the repositories
+ stored by the <see cref="T:log4net.Core.IRepositorySelector"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.Threshold">
+ <summary>
+ The threshold for all events in this repository
+ </summary>
+ <value>
+ The threshold for all events in this repository
+ </value>
+ <remarks>
+ <para>
+ The threshold for all events in this repository
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.RendererMap">
+ <summary>
+ RendererMap accesses the object renderer map for this repository.
+ </summary>
+ <value>
+ RendererMap accesses the object renderer map for this repository.
+ </value>
+ <remarks>
+ <para>
+ RendererMap accesses the object renderer map for this repository.
+ </para>
+ <para>
+ The RendererMap holds a mapping between types and
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.PluginMap">
+ <summary>
+ The plugin map for this repository.
+ </summary>
+ <value>
+ The plugin map for this repository.
+ </value>
+ <remarks>
+ <para>
+ The plugin map holds the <see cref="T:log4net.Plugin.IPlugin"/> instances
+ that have been attached to this repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.LevelMap">
+ <summary>
+ Get the level map for the Repository.
+ </summary>
+ <remarks>
+ <para>
+ Get the level map for the Repository.
+ </para>
+ <para>
+ The level map defines the mappings between
+ level names and <see cref="T:log4net.Core.Level"/> objects in
+ this repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.Configured">
+ <summary>
+ Flag indicates if this repository has been configured.
+ </summary>
+ <value>
+ Flag indicates if this repository has been configured.
+ </value>
+ <remarks>
+ <para>
+ Flag indicates if this repository has been configured.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.ConfigurationMessages">
+ <summary>
+ Contains a list of internal messages captures during the
+ last configuration.
+ </summary>
+ </member>
+ <member name="E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent">
+ <summary>
+ Event to notify that the repository has been shutdown.
+ </summary>
+ <value>
+ Event to notify that the repository has been shutdown.
+ </value>
+ <remarks>
+ <para>
+ Event raised when the repository has been shutdown.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationReset">
+ <summary>
+ Event to notify that the repository has had its configuration reset.
+ </summary>
+ <value>
+ Event to notify that the repository has had its configuration reset.
+ </value>
+ <remarks>
+ <para>
+ Event raised when the repository's configuration has been
+ reset to default.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationChanged">
+ <summary>
+ Event to notify that the repository has had its configuration changed.
+ </summary>
+ <value>
+ Event to notify that the repository has had its configuration changed.
+ </value>
+ <remarks>
+ <para>
+ Event raised when the repository's configuration has been changed.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.LoggerRepositorySkeleton.Properties">
+ <summary>
+ Repository specific properties
+ </summary>
+ <value>
+ Repository specific properties
+ </value>
+ <remarks>
+ These properties can be specified on a repository specific basis
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.IBasicRepositoryConfigurator">
+ <summary>
+ Basic Configurator interface for repositories
+ </summary>
+ <remarks>
+ <para>
+ Interface used by basic configurator to configure a <see cref="T:log4net.Repository.ILoggerRepository"/>
+ with a default <see cref="T:log4net.Appender.IAppender"/>.
+ </para>
+ <para>
+ A <see cref="T:log4net.Repository.ILoggerRepository"/> should implement this interface to support
+ configuration by the <see cref="T:log4net.Config.BasicConfigurator"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)">
+ <summary>
+ Initialize the repository using the specified appender
+ </summary>
+ <param name="appender">the appender to use to log all logging events</param>
+ <remarks>
+ <para>
+ Configure the repository to route all logging events to the
+ specified appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender[])">
+ <summary>
+ Initialize the repository using the specified appenders
+ </summary>
+ <param name="appenders">the appenders to use to log all logging events</param>
+ <remarks>
+ <para>
+ Configure the repository to route all logging events to the
+ specified appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.IXmlRepositoryConfigurator">
+ <summary>
+ Configure repository using XML
+ </summary>
+ <remarks>
+ <para>
+ Interface used by Xml configurator to configure a <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ <para>
+ A <see cref="T:log4net.Repository.ILoggerRepository"/> should implement this interface to support
+ configuration by the <see cref="T:log4net.Config.XmlConfigurator"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.IXmlRepositoryConfigurator.Configure(System.Xml.XmlElement)">
+ <summary>
+ Initialize the repository using the specified config
+ </summary>
+ <param name="element">the element containing the root of the config</param>
+ <remarks>
+ <para>
+ The schema for the XML configuration data is defined by
+ the implementation.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary)">
+ <summary>
+ Construct with properties
+ </summary>
+ <param name="properties">The properties to pass to this repository.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Repository.Hierarchy.ILoggerFactory)">
+ <summary>
+ Construct with a logger factory
+ </summary>
+ <param name="loggerFactory">The factory to use to create new logger instances.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class with
+ the specified <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary,log4net.Repository.Hierarchy.ILoggerFactory)">
+ <summary>
+ Construct with properties and a logger factory
+ </summary>
+ <param name="properties">The properties to pass to this repository.</param>
+ <param name="loggerFactory">The factory to use to create new logger instances.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class with
+ the specified <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.Exists(System.String)">
+ <summary>
+ Test if a logger exists
+ </summary>
+ <param name="name">The name of the logger to lookup</param>
+ <returns>The Logger object with the name specified</returns>
+ <remarks>
+ <para>
+ Check if the named logger exists in the hierarchy. If so return
+ its reference, otherwise returns <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetCurrentLoggers">
+ <summary>
+ Returns all the currently defined loggers in the hierarchy as an Array
+ </summary>
+ <returns>All the defined loggers</returns>
+ <remarks>
+ <para>
+ Returns all the currently defined loggers in the hierarchy as an Array.
+ The root logger is <b>not</b> included in the returned
+ enumeration.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)">
+ <summary>
+ Return a new logger instance named as the first parameter using
+ the default factory.
+ </summary>
+ <remarks>
+ <para>
+ Return a new logger instance named as the first parameter using
+ the default factory.
+ </para>
+ <para>
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated and
+ then linked with its existing ancestors as well as children.
+ </para>
+ </remarks>
+ <param name="name">The name of the logger to retrieve</param>
+ <returns>The logger object with the name specified</returns>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.Shutdown">
+ <summary>
+ Shutting down a hierarchy will <i>safely</i> close and remove
+ all appenders in all loggers including the root logger.
+ </summary>
+ <remarks>
+ <para>
+ Shutting down a hierarchy will <i>safely</i> close and remove
+ all appenders in all loggers including the root logger.
+ </para>
+ <para>
+ Some appenders need to be closed before the
+ application exists. Otherwise, pending logging events might be
+ lost.
+ </para>
+ <para>
+ The <c>Shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.ResetConfiguration">
+ <summary>
+ Reset all values contained in this hierarchy instance to their default.
+ </summary>
+ <remarks>
+ <para>
+ Reset all values contained in this hierarchy instance to their
+ default. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set its default "off" value.
+ </para>
+ <para>
+ Existing loggers are not removed. They are just reset.
+ </para>
+ <para>
+ This method should be used sparingly and with care as it will
+ block all logging until it is completed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.Log(log4net.Core.LoggingEvent)">
+ <summary>
+ Log the logEvent through this hierarchy.
+ </summary>
+ <param name="logEvent">the event to log</param>
+ <remarks>
+ <para>
+ This method should not normally be used to log.
+ The <see cref="T:log4net.ILog"/> interface should be used
+ for routine logging. This interface can be obtained
+ using the <see cref="M:log4net.LogManager.GetLogger(string)"/> method.
+ </para>
+ <para>
+ The <c>logEvent</c> is delivered to the appropriate logger and
+ that logger is then responsible for logging the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetAppenders">
+ <summary>
+ Returns all the Appenders that are currently configured
+ </summary>
+ <returns>An array containing all the currently configured appenders</returns>
+ <remarks>
+ <para>
+ Returns all the <see cref="T:log4net.Appender.IAppender"/> instances that are currently configured.
+ All the loggers are searched for appenders. The appenders may also be containers
+ for appenders and these are also searched for additional loggers.
+ </para>
+ <para>
+ The list returned is unordered but does not contain duplicates.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.CollectAppender(System.Collections.ArrayList,log4net.Appender.IAppender)">
+ <summary>
+ Collect the appenders from an <see cref="T:log4net.Core.IAppenderAttachable"/>.
+ The appender may also be a container.
+ </summary>
+ <param name="appenderList"></param>
+ <param name="appender"></param>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.CollectAppenders(System.Collections.ArrayList,log4net.Core.IAppenderAttachable)">
+ <summary>
+ Collect the appenders from an <see cref="T:log4net.Core.IAppenderAttachable"/> container
+ </summary>
+ <param name="appenderList"></param>
+ <param name="container"></param>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender)">
+ <summary>
+ Initialize the log4net system using the specified appender
+ </summary>
+ <param name="appender">the appender to use to log all logging events</param>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender[])">
+ <summary>
+ Initialize the log4net system using the specified appenders
+ </summary>
+ <param name="appenders">the appenders to use to log all logging events</param>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.BasicRepositoryConfigure(log4net.Appender.IAppender[])">
+ <summary>
+ Initialize the log4net system using the specified appenders
+ </summary>
+ <param name="appenders">the appenders to use to log all logging events</param>
+ <remarks>
+ <para>
+ This method provides the same functionality as the
+ <see cref="M:IBasicRepositoryConfigurator.Configure(IAppender)"/> method implemented
+ on this object, but it is protected and therefore can be called by subclasses.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IXmlRepositoryConfigurator#Configure(System.Xml.XmlElement)">
+ <summary>
+ Initialize the log4net system using the specified config
+ </summary>
+ <param name="element">the element containing the root of the config</param>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.XmlRepositoryConfigure(System.Xml.XmlElement)">
+ <summary>
+ Initialize the log4net system using the specified config
+ </summary>
+ <param name="element">the element containing the root of the config</param>
+ <remarks>
+ <para>
+ This method provides the same functionality as the
+ <see cref="M:IBasicRepositoryConfigurator.Configure(IAppender)"/> method implemented
+ on this object, but it is protected and therefore can be called by subclasses.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.IsDisabled(log4net.Core.Level)">
+ <summary>
+ Test if this hierarchy is disabled for the specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="level">The level to check against.</param>
+ <returns>
+ <c>true</c> if the repository is disabled for the level argument, <c>false</c> otherwise.
+ </returns>
+ <remarks>
+ <para>
+ If this hierarchy has not been configured then this method will
+ always return <c>true</c>.
+ </para>
+ <para>
+ This method will return <c>true</c> if this repository is
+ disabled for <c>level</c> object passed as parameter and
+ <c>false</c> otherwise.
+ </para>
+ <para>
+ See also the <see cref="P:log4net.Repository.ILoggerRepository.Threshold"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.Clear">
+ <summary>
+ Clear all logger definitions from the internal hashtable
+ </summary>
+ <remarks>
+ <para>
+ This call will clear all logger definitions from the internal
+ hashtable. Invoking this method will irrevocably mess up the
+ logger hierarchy.
+ </para>
+ <para>
+ You should <b>really</b> know what you are doing before
+ invoking this method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String,log4net.Repository.Hierarchy.ILoggerFactory)">
+ <summary>
+ Return a new logger instance named as the first parameter using
+ <paramref name="factory"/>.
+ </summary>
+ <param name="name">The name of the logger to retrieve</param>
+ <param name="factory">The factory that will make the new logger instance</param>
+ <returns>The logger object with the name specified</returns>
+ <remarks>
+ <para>
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated by the
+ <paramref name="factory"/> parameter and linked with its existing
+ ancestors as well as children.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.OnLoggerCreationEvent(log4net.Repository.Hierarchy.Logger)">
+ <summary>
+ Sends a logger creation event to all registered listeners
+ </summary>
+ <param name="logger">The newly created logger</param>
+ <remarks>
+ Raises the logger creation event.
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.UpdateParents(log4net.Repository.Hierarchy.Logger)">
+ <summary>
+ Updates all the parents of the specified logger
+ </summary>
+ <param name="log">The logger to update the parents for</param>
+ <remarks>
+ <para>
+ This method loops through all the <i>potential</i> parents of
+ <paramref name="log"/>. There 3 possible cases:
+ </para>
+ <list type="number">
+ <item>
+ <term>No entry for the potential parent of <paramref name="log"/> exists</term>
+ <description>
+ We create a ProvisionNode for this potential
+ parent and insert <paramref name="log"/> in that provision node.
+ </description>
+ </item>
+ <item>
+ <term>The entry is of type Logger for the potential parent.</term>
+ <description>
+ The entry is <paramref name="log"/>'s nearest existing parent. We
+ update <paramref name="log"/>'s parent field with this entry. We also break from
+ he loop because updating our parent's parent is our parent's
+ responsibility.
+ </description>
+ </item>
+ <item>
+ <term>The entry is of type ProvisionNode for this potential parent.</term>
+ <description>
+ We add <paramref name="log"/> to the list of children for this
+ potential parent.
+ </description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.UpdateChildren(log4net.Repository.Hierarchy.ProvisionNode,log4net.Repository.Hierarchy.Logger)">
+ <summary>
+ Replace a <see cref="T:log4net.Repository.Hierarchy.ProvisionNode"/> with a <see cref="T:log4net.Repository.Hierarchy.Logger"/> in the hierarchy.
+ </summary>
+ <param name="pn"></param>
+ <param name="log"></param>
+ <remarks>
+ <para>
+ We update the links for all the children that placed themselves
+ in the provision node 'pn'. The second argument 'log' is a
+ reference for the newly created Logger, parent of all the
+ children in 'pn'.
+ </para>
+ <para>
+ We loop on all the children 'c' in 'pn'.
+ </para>
+ <para>
+ If the child 'c' has been already linked to a child of
+ 'log' then there is no need to update 'c'.
+ </para>
+ <para>
+ Otherwise, we set log's parent field to c's parent and set
+ c's parent field to log.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.AddLevel(log4net.Repository.Hierarchy.Hierarchy.LevelEntry)">
+ <summary>
+ Define or redefine a Level using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument
+ </summary>
+ <param name="levelEntry">the level values</param>
+ <remarks>
+ <para>
+ Define or redefine a Level using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument
+ </para>
+ <para>
+ Supports setting levels via the configuration file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.AddProperty(log4net.Util.PropertyEntry)">
+ <summary>
+ Set a Property using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument
+ </summary>
+ <param name="propertyEntry">the property value</param>
+ <remarks>
+ <para>
+ Set a Property using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument.
+ </para>
+ <para>
+ Supports setting property values via the configuration file.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.Hierarchy.declaringType">
+ <summary>
+ The fully qualified type of the Hierarchy class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent">
+ <summary>
+ Event used to notify that a logger has been created.
+ </summary>
+ <remarks>
+ <para>
+ Event raised when a logger is created.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning">
+ <summary>
+ Has no appender warning been emitted
+ </summary>
+ <remarks>
+ <para>
+ Flag to indicate if we have already issued a warning
+ about not having an appender warning.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Hierarchy.Root">
+ <summary>
+ Get the root of this hierarchy
+ </summary>
+ <remarks>
+ <para>
+ Get the root of this hierarchy.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Hierarchy.LoggerFactory">
+ <summary>
+ Gets or sets the default <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/> instance.
+ </summary>
+ <value>The default <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/></value>
+ <remarks>
+ <para>
+ The logger factory is used to create logger instances.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry">
+ <summary>
+ A class to hold the value, name and display name for a level
+ </summary>
+ <remarks>
+ <para>
+ A class to hold the value, name and display name for a level
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.ToString">
+ <summary>
+ Override <c>Object.ToString</c> to return sensible debug info
+ </summary>
+ <returns>string info about this object</returns>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Value">
+ <summary>
+ Value of the level
+ </summary>
+ <remarks>
+ <para>
+ If the value is not set (defaults to -1) the value will be looked
+ up for the current level with the same name.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Name">
+ <summary>
+ Name of the level
+ </summary>
+ <value>
+ The name of the level
+ </value>
+ <remarks>
+ <para>
+ The name of the level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.DisplayName">
+ <summary>
+ Display name for the level
+ </summary>
+ <value>
+ The display name of the level
+ </value>
+ <remarks>
+ <para>
+ The display name of the level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.LoggerKey">
+ <summary>
+ Used internally to accelerate hash table searches.
+ </summary>
+ <remarks>
+ <para>
+ Internal class used to improve performance of
+ string keyed hashtables.
+ </para>
+ <para>
+ The hashcode of the string is cached for reuse.
+ The string is stored as an interned value.
+ When comparing two <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/> objects for equality
+ the reference equality of the interned strings is compared.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.LoggerKey.#ctor(System.String)">
+ <summary>
+ Construct key with string name
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/> class
+ with the specified name.
+ </para>
+ <para>
+ Stores the hashcode of the string and interns
+ the string key to optimize comparisons.
+ </para>
+ <note>
+ The Compact Framework 1.0 the <see cref="M:System.String.Intern(System.String)"/>
+ method does not work. On the Compact Framework
+ the string keys are not interned nor are they
+ compared by reference.
+ </note>
+ </remarks>
+ <param name="name">The name of the logger.</param>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.LoggerKey.GetHashCode">
+ <summary>
+ Returns a hash code for the current instance.
+ </summary>
+ <returns>A hash code for the current instance.</returns>
+ <remarks>
+ <para>
+ Returns the cached hashcode.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.LoggerKey.Equals(System.Object)">
+ <summary>
+ Determines whether two <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/> instances
+ are equal.
+ </summary>
+ <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/>.</param>
+ <returns>
+ <c>true</c> if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares the references of the interned strings.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.ProvisionNode">
+ <summary>
+ Provision nodes are used where no logger instance has been specified
+ </summary>
+ <remarks>
+ <para>
+ <see cref="T:log4net.Repository.Hierarchy.ProvisionNode"/> instances are used in the
+ <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> when there is no specified
+ <see cref="T:log4net.Repository.Hierarchy.Logger"/> for that node.
+ </para>
+ <para>
+ A provision node holds a list of child loggers on behalf of
+ a logger that does not exist.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.ProvisionNode.#ctor(log4net.Repository.Hierarchy.Logger)">
+ <summary>
+ Create a new provision node with child node
+ </summary>
+ <param name="log">A child logger to add to this node.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.ProvisionNode"/> class
+ with the specified child logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.RootLogger">
+ <summary>
+ The <see cref="T:log4net.Repository.Hierarchy.RootLogger"/> sits at the root of the logger hierarchy tree.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.Hierarchy.RootLogger"/> is a regular <see cref="T:log4net.Repository.Hierarchy.Logger"/> except
+ that it provides several guarantees.
+ </para>
+ <para>
+ First, it cannot be assigned a <c>null</c>
+ level. Second, since the root logger cannot have a parent, the
+ <see cref="P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel"/> property always returns the value of the
+ level field without walking the hierarchy.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.RootLogger.#ctor(log4net.Core.Level)">
+ <summary>
+ Construct a <see cref="T:log4net.Repository.Hierarchy.RootLogger"/>
+ </summary>
+ <param name="level">The level to assign to the root logger.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.RootLogger"/> class with
+ the specified logging level.
+ </para>
+ <para>
+ The root logger names itself as "root". However, the root
+ logger cannot be retrieved by name.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.RootLogger.declaringType">
+ <summary>
+ The fully qualified type of the RootLogger class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel">
+ <summary>
+ Gets the assigned level value without walking the logger hierarchy.
+ </summary>
+ <value>The assigned level value without walking the logger hierarchy.</value>
+ <remarks>
+ <para>
+ Because the root logger cannot have a parent and its level
+ must not be <c>null</c> this property just returns the
+ value of <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Repository.Hierarchy.RootLogger.Level">
+ <summary>
+ Gets or sets the assigned <see cref="P:log4net.Repository.Hierarchy.RootLogger.Level"/> for the root logger.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Repository.Hierarchy.RootLogger.Level"/> of the root logger.
+ </value>
+ <remarks>
+ <para>
+ Setting the level of the root logger to a <c>null</c> reference
+ may have catastrophic results. We prevent this here.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator">
+ <summary>
+ Initializes the log4net environment using an XML DOM.
+ </summary>
+ <remarks>
+ <para>
+ Configures a <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> using an XML DOM.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.#ctor(log4net.Repository.Hierarchy.Hierarchy)">
+ <summary>
+ Construct the configurator for a hierarchy
+ </summary>
+ <param name="hierarchy">The hierarchy to build.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator"/> class
+ with the specified <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.Configure(System.Xml.XmlElement)">
+ <summary>
+ Configure the hierarchy by parsing a DOM tree of XML elements.
+ </summary>
+ <param name="element">The root element to parse.</param>
+ <remarks>
+ <para>
+ Configure the hierarchy by parsing a DOM tree of XML elements.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindAppenderByReference(System.Xml.XmlElement)">
+ <summary>
+ Parse appenders by IDREF.
+ </summary>
+ <param name="appenderRef">The appender ref element.</param>
+ <returns>The instance of the appender that the ref refers to.</returns>
+ <remarks>
+ <para>
+ Parse an XML element that represents an appender and return
+ the appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(System.Xml.XmlElement)">
+ <summary>
+ Parses an appender element.
+ </summary>
+ <param name="appenderElement">The appender element.</param>
+ <returns>The appender instance or <c>null</c> when parsing failed.</returns>
+ <remarks>
+ <para>
+ Parse an XML element that represents an appender and return
+ the appender instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLogger(System.Xml.XmlElement)">
+ <summary>
+ Parses a logger element.
+ </summary>
+ <param name="loggerElement">The logger element.</param>
+ <remarks>
+ <para>
+ Parse an XML element that represents a logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRoot(System.Xml.XmlElement)">
+ <summary>
+ Parses the root logger element.
+ </summary>
+ <param name="rootElement">The root element.</param>
+ <remarks>
+ <para>
+ Parse an XML element that represents the root logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseChildrenOfLoggerElement(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)">
+ <summary>
+ Parses the children of a logger element.
+ </summary>
+ <param name="catElement">The category element.</param>
+ <param name="log">The logger instance.</param>
+ <param name="isRoot">Flag to indicate if the logger is the root logger.</param>
+ <remarks>
+ <para>
+ Parse the child elements of a <logger> element.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRenderer(System.Xml.XmlElement)">
+ <summary>
+ Parses an object renderer.
+ </summary>
+ <param name="element">The renderer element.</param>
+ <remarks>
+ <para>
+ Parse an XML element that represents a renderer.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLevel(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)">
+ <summary>
+ Parses a level element.
+ </summary>
+ <param name="element">The level element.</param>
+ <param name="log">The logger object to set the level on.</param>
+ <param name="isRoot">Flag to indicate if the logger is the root logger.</param>
+ <remarks>
+ <para>
+ Parse an XML element that represents a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(System.Xml.XmlElement,System.Object)">
+ <summary>
+ Sets a parameter on an object.
+ </summary>
+ <param name="element">The parameter element.</param>
+ <param name="target">The object to set the parameter on.</param>
+ <remarks>
+ The parameter name must correspond to a writable property
+ on the object. The value of the parameter is a string,
+ therefore this function will attempt to set a string
+ property first. If unable to set a string property it
+ will inspect the property and its argument type. It will
+ attempt to call a static method called <c>Parse</c> on the
+ type of the property. This method will take a single
+ string argument and return a value that can be used to
+ set the property.
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.HasAttributesOrElements(System.Xml.XmlElement)">
+ <summary>
+ Test if an element has no attributes or child elements
+ </summary>
+ <param name="element">the element to inspect</param>
+ <returns><c>true</c> if the element has any attributes or child elements, <c>false</c> otherwise</returns>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.IsTypeConstructible(System.Type)">
+ <summary>
+ Test if a <see cref="T:System.Type"/> is constructible with <c>Activator.CreateInstance</c>.
+ </summary>
+ <param name="type">the type to inspect</param>
+ <returns><c>true</c> if the type is creatable using a default constructor, <c>false</c> otherwise</returns>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindMethodInfo(System.Type,System.String)">
+ <summary>
+ Look for a method on the <paramref name="targetType"/> that matches the <paramref name="name"/> supplied
+ </summary>
+ <param name="targetType">the type that has the method</param>
+ <param name="name">the name of the method</param>
+ <returns>the method info found</returns>
+ <remarks>
+ <para>
+ The method must be a public instance method on the <paramref name="targetType"/>.
+ The method must be named <paramref name="name"/> or "Add" followed by <paramref name="name"/>.
+ The method must take a single parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(System.Type,System.String)">
+ <summary>
+ Converts a string value to a target type.
+ </summary>
+ <param name="type">The type of object to convert the string to.</param>
+ <param name="value">The string value to use as the value of the object.</param>
+ <returns>
+ <para>
+ An object of type <paramref name="type"/> with value <paramref name="value"/> or
+ <c>null</c> when the conversion could not be performed.
+ </para>
+ </returns>
+ </member>
+ <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(System.Xml.XmlElement,System.Type,System.Type)">
+ <summary>
+ Creates an object as specified in XML.
+ </summary>
+ <param name="element">The XML element that contains the definition of the object.</param>
+ <param name="defaultTargetType">The object type to use if not explicitly specified.</param>
+ <param name="typeConstraint">The type that the returned object must be or must inherit from.</param>
+ <returns>The object or <c>null</c></returns>
+ <remarks>
+ <para>
+ Parse an XML element and create an object instance based on the configuration
+ data.
+ </para>
+ <para>
+ The type of the instance may be specified in the XML. If not
+ specified then the <paramref name="defaultTargetType"/> is used
+ as the type. However the type is specified it must support the
+ <paramref name="typeConstraint"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_appenderBag">
+ <summary>
+ key: appenderName, value: appender.
+ </summary>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_hierarchy">
+ <summary>
+ The Hierarchy being configured.
+ </summary>
+ </member>
+ <member name="F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.declaringType">
+ <summary>
+ The fully qualified type of the XmlHierarchyConfigurator class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.ConfigurationChangedEventArgs">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:log4net.Repository.ConfigurationChangedEventArgs.#ctor(System.Collections.ICollection)">
+ <summary>
+
+ </summary>
+ <param name="configurationMessages"></param>
+ </member>
+ <member name="P:log4net.Repository.ConfigurationChangedEventArgs.ConfigurationMessages">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:log4net.Repository.LoggerRepositoryShutdownEventHandler">
+ <summary>
+ Delegate used to handle logger repository shutdown event notifications
+ </summary>
+ <param name="sender">The <see cref="T:log4net.Repository.ILoggerRepository"/> that is shutting down.</param>
+ <param name="e">Empty event args</param>
+ <remarks>
+ <para>
+ Delegate used to handle logger repository shutdown event notifications.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.LoggerRepositoryConfigurationResetEventHandler">
+ <summary>
+ Delegate used to handle logger repository configuration reset event notifications
+ </summary>
+ <param name="sender">The <see cref="T:log4net.Repository.ILoggerRepository"/> that has had its configuration reset.</param>
+ <param name="e">Empty event args</param>
+ <remarks>
+ <para>
+ Delegate used to handle logger repository configuration reset event notifications.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Repository.LoggerRepositoryConfigurationChangedEventHandler">
+ <summary>
+ Delegate used to handle event notifications for logger repository configuration changes.
+ </summary>
+ <param name="sender">The <see cref="T:log4net.Repository.ILoggerRepository"/> that has had its configuration changed.</param>
+ <param name="e">Empty event arguments.</param>
+ <remarks>
+ <para>
+ Delegate used to handle event notifications for logger repository configuration changes.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.AppDomainPatternConverter">
+ <summary>
+ Write the name of the current AppDomain to the output
+ </summary>
+ <remarks>
+ <para>
+ Write the name of the current AppDomain to the output writer
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.AppDomainPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the name of the current AppDomain to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Writes name of the current AppDomain to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.DatePatternConverter">
+ <summary>
+ Write the current date to the output
+ </summary>
+ <remarks>
+ <para>
+ Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format
+ the current date and time to the writer as a string.
+ </para>
+ <para>
+ The value of the <see cref="P:log4net.Util.PatternConverter.Option"/> determines
+ the formatting of the date. The following values are allowed:
+ <list type="definition">
+ <listheader>
+ <term>Option value</term>
+ <description>Output</description>
+ </listheader>
+ <item>
+ <term>ISO8601</term>
+ <description>
+ Uses the <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/> formatter.
+ Formats using the <c>"yyyy-MM-dd HH:mm:ss,fff"</c> pattern.
+ </description>
+ </item>
+ <item>
+ <term>DATE</term>
+ <description>
+ Uses the <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> formatter.
+ Formats using the <c>"dd MMM yyyy HH:mm:ss,fff"</c> for example, <c>"06 Nov 1994 15:49:37,459"</c>.
+ </description>
+ </item>
+ <item>
+ <term>ABSOLUTE</term>
+ <description>
+ Uses the <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/> formatter.
+ Formats using the <c>"HH:mm:ss,fff"</c> for example, <c>"15:49:37,459"</c>.
+ </description>
+ </item>
+ <item>
+ <term>other</term>
+ <description>
+ Any other pattern string uses the <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/> formatter.
+ This formatter passes the pattern string to the <see cref="T:System.DateTime"/>
+ <see cref="M:DateTime.ToString(string)"/> method.
+ For details on valid patterns see
+ <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp">DateTimeFormatInfo Class</a>.
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ The date and time is in the local time zone and is rendered in that zone.
+ To output the time in Universal time see <see cref="T:log4net.Util.PatternStringConverters.UtcDatePatternConverter"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.DatePatternConverter.m_dateFormatter">
+ <summary>
+ The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions">
+ <summary>
+ Initialize the converter options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.DatePatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the current date to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Pass the current date and time to the <see cref="T:log4net.DateFormatter.IDateFormatter"/>
+ for it to render it to the writer.
+ </para>
+ <para>
+ The date and time passed is in the local time zone.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.DatePatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the DatePatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter">
+ <summary>
+ Write an <see cref="T:System.Environment.SpecialFolder"/> folder path to the output
+ </summary>
+ <remarks>
+ <para>
+ Write an special path environment folder path to the output writer.
+ The value of the <see cref="P:log4net.Util.PatternConverter.Option"/> determines
+ the name of the variable to output. <see cref="P:log4net.Util.PatternConverter.Option"/>
+ should be a value in the <see cref="T:System.Environment.SpecialFolder"/> enumeration.
+ </para>
+ </remarks>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write an special path environment folder path to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Writes the special path environment folder path to the output <paramref name="writer"/>.
+ The name of the special path environment folder path to output must be set
+ using the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the EnvironmentFolderPathPatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.EnvironmentPatternConverter">
+ <summary>
+ Write an environment variable to the output
+ </summary>
+ <remarks>
+ <para>
+ Write an environment variable to the output writer.
+ The value of the <see cref="P:log4net.Util.PatternConverter.Option"/> determines
+ the name of the variable to output.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write an environment variable to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Writes the environment variable to the output <paramref name="writer"/>.
+ The name of the environment variable to output must be set
+ using the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the EnvironmentPatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.IdentityPatternConverter">
+ <summary>
+ Write the current thread identity to the output
+ </summary>
+ <remarks>
+ <para>
+ Write the current thread identity to the output writer
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.IdentityPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the current thread identity to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Writes the current thread identity to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.IdentityPatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the IdentityPatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.LiteralPatternConverter">
+ <summary>
+ Pattern converter for literal string instances in the pattern
+ </summary>
+ <remarks>
+ <para>
+ Writes the literal string value specified in the
+ <see cref="P:log4net.Util.PatternConverter.Option"/> property to
+ the output.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.LiteralPatternConverter.SetNext(log4net.Util.PatternConverter)">
+ <summary>
+ Set the next converter in the chain
+ </summary>
+ <param name="pc">The next pattern converter in the chain</param>
+ <returns>The next pattern converter</returns>
+ <remarks>
+ <para>
+ Special case the building of the pattern converter chain
+ for <see cref="T:log4net.Util.PatternStringConverters.LiteralPatternConverter"/> instances. Two adjacent
+ literals in the pattern can be represented by a single combined
+ pattern converter. This implementation detects when a
+ <see cref="T:log4net.Util.PatternStringConverters.LiteralPatternConverter"/> is added to the chain
+ after this converter and combines its value with this converter's
+ literal value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Format(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the literal to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, not set</param>
+ <remarks>
+ <para>
+ Override the formatting behavior to ignore the FormattingInfo
+ because we have a literal instead.
+ </para>
+ <para>
+ Writes the value of <see cref="P:log4net.Util.PatternConverter.Option"/>
+ to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Convert this pattern into the rendered message
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="state">null, not set</param>
+ <remarks>
+ <para>
+ This method is not used.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.NewLinePatternConverter">
+ <summary>
+ Writes a newline to the output
+ </summary>
+ <remarks>
+ <para>
+ Writes the system dependent line terminator to the output.
+ This behavior can be overridden by setting the <see cref="P:log4net.Util.PatternConverter.Option"/>:
+ </para>
+ <list type="definition">
+ <listheader>
+ <term>Option Value</term>
+ <description>Output</description>
+ </listheader>
+ <item>
+ <term>DOS</term>
+ <description>DOS or Windows line terminator <c>"\r\n"</c></description>
+ </item>
+ <item>
+ <term>UNIX</term>
+ <description>UNIX line terminator <c>"\n"</c></description>
+ </item>
+ </list>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions">
+ <summary>
+ Initialize the converter
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.ProcessIdPatternConverter">
+ <summary>
+ Write the current process ID to the output
+ </summary>
+ <remarks>
+ <para>
+ Write the current process ID to the output writer
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the current process ID to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Write the current process ID to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the ProcessIdPatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.PropertyPatternConverter">
+ <summary>
+ Property pattern converter
+ </summary>
+ <remarks>
+ <para>
+ This pattern converter reads the thread and global properties.
+ The thread properties take priority over global properties.
+ See <see cref="P:log4net.ThreadContext.Properties"/> for details of the
+ thread properties. See <see cref="P:log4net.GlobalContext.Properties"/> for
+ details of the global properties.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Util.PatternConverter.Option"/> is specified then that will be used to
+ lookup a single property. If no <see cref="P:log4net.Util.PatternConverter.Option"/> is specified
+ then all properties will be dumped as a list of key value pairs.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.PropertyPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the property value to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Writes out the value of a named property. The property name
+ should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ property.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Util.PatternConverter.Option"/> is set to <c>null</c>
+ then all the properties are written as key value pairs.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.RandomStringPatternConverter">
+ <summary>
+ A Pattern converter that generates a string of random characters
+ </summary>
+ <remarks>
+ <para>
+ The converter generates a string of random characters. By default
+ the string is length 4. This can be changed by setting the <see cref="P:log4net.Util.PatternConverter.Option"/>
+ to the string value of the length required.
+ </para>
+ <para>
+ The random characters in the string are limited to uppercase letters
+ and numbers only.
+ </para>
+ <para>
+ The random number generator used by this class is not cryptographically secure.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.s_random">
+ <summary>
+ Shared random number generator
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.m_length">
+ <summary>
+ Length of random string to generate. Default length 4.
+ </summary>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions">
+ <summary>
+ Initialize the converter options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write a randoim string to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Write a randoim string to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the RandomStringPatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.UserNamePatternConverter">
+ <summary>
+ Write the current threads username to the output
+ </summary>
+ <remarks>
+ <para>
+ Write the current threads username to the output writer
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.UserNamePatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the current threads username to the output
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Write the current threads username to the output <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.UserNamePatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the UserNamePatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternStringConverters.UtcDatePatternConverter">
+ <summary>
+ Write the UTC date time to the output
+ </summary>
+ <remarks>
+ <para>
+ Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format
+ the current date and time in Universal time.
+ </para>
+ <para>
+ See the <see cref="T:log4net.Util.PatternStringConverters.DatePatternConverter"/> for details on the date pattern syntax.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.PatternStringConverters.DatePatternConverter"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.PatternStringConverters.UtcDatePatternConverter.Convert(System.IO.TextWriter,System.Object)">
+ <summary>
+ Write the current date and time to the output
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param>
+ <param name="state">null, state is not set</param>
+ <remarks>
+ <para>
+ Pass the current date and time to the <see cref="T:log4net.DateFormatter.IDateFormatter"/>
+ for it to render it to the writer.
+ </para>
+ <para>
+ The date is in Universal time when it is rendered.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.PatternStringConverters.DatePatternConverter"/>
+ </member>
+ <member name="F:log4net.Util.PatternStringConverters.UtcDatePatternConverter.declaringType">
+ <summary>
+ The fully qualified type of the UtcDatePatternConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.BooleanConverter">
+ <summary>
+ Type converter for Boolean.
+ </summary>
+ <remarks>
+ <para>
+ Supports conversion from string to <c>bool</c> type.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)">
+ <summary>
+ Can the source type be converted to the type supported by this object
+ </summary>
+ <param name="sourceType">the type to convert</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Returns <c>true</c> if the <paramref name="sourceType"/> is
+ the <see cref="T:System.String"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.BooleanConverter.ConvertFrom(System.Object)">
+ <summary>
+ Convert the source object to the type supported by this object
+ </summary>
+ <param name="source">the object to convert</param>
+ <returns>the converted object</returns>
+ <remarks>
+ <para>
+ Uses the <see cref="M:System.Boolean.Parse(System.String)"/> method to convert the
+ <see cref="T:System.String"/> argument to a <see cref="T:System.Boolean"/>.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ The <paramref name="source"/> object cannot be converted to the
+ target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)"/>
+ method.
+ </exception>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ <summary>
+ Exception base type for conversion errors.
+ </summary>
+ <remarks>
+ <para>
+ This type extends <see cref="T:System.ApplicationException"/>. It
+ does not add any new functionality but does differentiate the
+ type of exception being thrown.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="message">A message to include with the exception.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class
+ with the specified message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String,System.Exception)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="message">A message to include with the exception.</param>
+ <param name="innerException">A nested exception to include.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class
+ with the specified message and inner exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serialization constructor
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class
+ with serialized data.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object)">
+ <summary>
+ Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class.
+ </summary>
+ <param name="destinationType">The conversion destination type.</param>
+ <param name="sourceValue">The value to convert.</param>
+ <returns>An instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/>.</returns>
+ <remarks>
+ <para>
+ Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object,System.Exception)">
+ <summary>
+ Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class.
+ </summary>
+ <param name="destinationType">The conversion destination type.</param>
+ <param name="sourceValue">The value to convert.</param>
+ <param name="innerException">A nested exception to include.</param>
+ <returns>An instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/>.</returns>
+ <remarks>
+ <para>
+ Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.ConverterRegistry">
+ <summary>
+ Register of type converters for specific types.
+ </summary>
+ <remarks>
+ <para>
+ Maintains a registry of type converters used to convert between
+ types.
+ </para>
+ <para>
+ Use the <see cref="M:AddConverter(Type, object)"/> and
+ <see cref="M:AddConverter(Type, Type)"/> methods to register new converters.
+ The <see cref="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)"/> and <see cref="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)"/> methods
+ lookup appropriate converters to use.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.#ctor">
+ <summary>
+ Private constructor
+ </summary>
+ <remarks>
+ Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> class.
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.#cctor">
+ <summary>
+ Static constructor.
+ </summary>
+ <remarks>
+ <para>
+ This constructor defines the intrinsic type converters.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)">
+ <summary>
+ Adds a converter for a specific type.
+ </summary>
+ <param name="destinationType">The type being converted to.</param>
+ <param name="converter">The type converter to use to convert to the destination type.</param>
+ <remarks>
+ <para>
+ Adds a converter instance for a specific type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)">
+ <summary>
+ Adds a converter for a specific type.
+ </summary>
+ <param name="destinationType">The type being converted to.</param>
+ <param name="converterType">The type of the type converter to use to convert to the destination type.</param>
+ <remarks>
+ <para>
+ Adds a converter <see cref="T:System.Type"/> for a specific type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)">
+ <summary>
+ Gets the type converter to use to convert values to the destination type.
+ </summary>
+ <param name="sourceType">The type being converted from.</param>
+ <param name="destinationType">The type being converted to.</param>
+ <returns>
+ The type converter instance to use for type conversions or <c>null</c>
+ if no type converter is found.
+ </returns>
+ <remarks>
+ <para>
+ Gets the type converter to use to convert values to the destination type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)">
+ <summary>
+ Gets the type converter to use to convert values to the destination type.
+ </summary>
+ <param name="destinationType">The type being converted to.</param>
+ <returns>
+ The type converter instance to use for type conversions or <c>null</c>
+ if no type converter is found.
+ </returns>
+ <remarks>
+ <para>
+ Gets the type converter to use to convert values to the destination type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(System.Type)">
+ <summary>
+ Lookups the type converter to use as specified by the attributes on the
+ destination type.
+ </summary>
+ <param name="destinationType">The type being converted to.</param>
+ <returns>
+ The type converter instance to use for type conversions or <c>null</c>
+ if no type converter is found.
+ </returns>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(System.Type)">
+ <summary>
+ Creates the instance of the type converter.
+ </summary>
+ <param name="converterType">The type of the type converter.</param>
+ <returns>
+ The type converter instance to use for type conversions or <c>null</c>
+ if no type converter is found.
+ </returns>
+ <remarks>
+ <para>
+ The type specified for the type converter must implement
+ the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/> or <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces
+ and must have a public default (no argument) constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.TypeConverters.ConverterRegistry.declaringType">
+ <summary>
+ The fully qualified type of the ConverterRegistry class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.TypeConverters.ConverterRegistry.s_type2converter">
+ <summary>
+ Mapping from <see cref="T:System.Type"/> to type converter.
+ </summary>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.EncodingConverter">
+ <summary>
+ Supports conversion from string to <see cref="T:System.Text.Encoding"/> type.
+ </summary>
+ <remarks>
+ <para>
+ Supports conversion from string to <see cref="T:System.Text.Encoding"/> type.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)">
+ <summary>
+ Can the source type be converted to the type supported by this object
+ </summary>
+ <param name="sourceType">the type to convert</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Returns <c>true</c> if the <paramref name="sourceType"/> is
+ the <see cref="T:System.String"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.EncodingConverter.ConvertFrom(System.Object)">
+ <summary>
+ Overrides the ConvertFrom method of IConvertFrom.
+ </summary>
+ <param name="source">the object to convert to an encoding</param>
+ <returns>the encoding</returns>
+ <remarks>
+ <para>
+ Uses the <see cref="M:Encoding.GetEncoding(string)"/> method to
+ convert the <see cref="T:System.String"/> argument to an <see cref="T:System.Text.Encoding"/>.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ The <paramref name="source"/> object cannot be converted to the
+ target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)"/>
+ method.
+ </exception>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.IConvertTo">
+ <summary>
+ Interface supported by type converters
+ </summary>
+ <remarks>
+ <para>
+ This interface supports conversion from a single type to arbitrary types.
+ See <see cref="T:log4net.Util.TypeConverters.TypeConverterAttribute"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.IConvertTo.CanConvertTo(System.Type)">
+ <summary>
+ Returns whether this converter can convert the object to the specified type
+ </summary>
+ <param name="targetType">A Type that represents the type you want to convert to</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Test if the type supported by this converter can be converted to the
+ <paramref name="targetType"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.IConvertTo.ConvertTo(System.Object,System.Type)">
+ <summary>
+ Converts the given value object to the specified type, using the arguments
+ </summary>
+ <param name="source">the object to convert</param>
+ <param name="targetType">The Type to convert the value parameter to</param>
+ <returns>the converted object</returns>
+ <remarks>
+ <para>
+ Converts the <paramref name="source"/> (which must be of the type supported
+ by this converter) to the <paramref name="targetType"/> specified..
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.IPAddressConverter">
+ <summary>
+ Supports conversion from string to <see cref="T:System.Net.IPAddress"/> type.
+ </summary>
+ <remarks>
+ <para>
+ Supports conversion from string to <see cref="T:System.Net.IPAddress"/> type.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)">
+ <summary>
+ Can the source type be converted to the type supported by this object
+ </summary>
+ <param name="sourceType">the type to convert</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Returns <c>true</c> if the <paramref name="sourceType"/> is
+ the <see cref="T:System.String"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.IPAddressConverter.ConvertFrom(System.Object)">
+ <summary>
+ Overrides the ConvertFrom method of IConvertFrom.
+ </summary>
+ <param name="source">the object to convert to an IPAddress</param>
+ <returns>the IPAddress</returns>
+ <remarks>
+ <para>
+ Uses the <see cref="M:System.Net.IPAddress.Parse(System.String)"/> method to convert the
+ <see cref="T:System.String"/> argument to an <see cref="T:System.Net.IPAddress"/>.
+ If that fails then the string is resolved as a DNS hostname.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ The <paramref name="source"/> object cannot be converted to the
+ target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)"/>
+ method.
+ </exception>
+ </member>
+ <member name="F:log4net.Util.TypeConverters.IPAddressConverter.validIpAddressChars">
+ <summary>
+ Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)
+ </summary>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.PatternLayoutConverter">
+ <summary>
+ Supports conversion from string to <see cref="T:log4net.Layout.PatternLayout"/> type.
+ </summary>
+ <remarks>
+ <para>
+ Supports conversion from string to <see cref="T:log4net.Layout.PatternLayout"/> type.
+ </para>
+ <para>
+ The string is used as the <see cref="P:log4net.Layout.PatternLayout.ConversionPattern"/>
+ of the <see cref="T:log4net.Layout.PatternLayout"/>.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)">
+ <summary>
+ Can the source type be converted to the type supported by this object
+ </summary>
+ <param name="sourceType">the type to convert</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Returns <c>true</c> if the <paramref name="sourceType"/> is
+ the <see cref="T:System.String"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.PatternLayoutConverter.ConvertFrom(System.Object)">
+ <summary>
+ Overrides the ConvertFrom method of IConvertFrom.
+ </summary>
+ <param name="source">the object to convert to a PatternLayout</param>
+ <returns>the PatternLayout</returns>
+ <remarks>
+ <para>
+ Creates and returns a new <see cref="T:log4net.Layout.PatternLayout"/> using
+ the <paramref name="source"/> <see cref="T:System.String"/> as the
+ <see cref="P:log4net.Layout.PatternLayout.ConversionPattern"/>.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ The <paramref name="source"/> object cannot be converted to the
+ target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)"/>
+ method.
+ </exception>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.PatternStringConverter">
+ <summary>
+ Convert between string and <see cref="T:log4net.Util.PatternString"/>
+ </summary>
+ <remarks>
+ <para>
+ Supports conversion from string to <see cref="T:log4net.Util.PatternString"/> type,
+ and from a <see cref="T:log4net.Util.PatternString"/> type to a string.
+ </para>
+ <para>
+ The string is used as the <see cref="P:log4net.Util.PatternString.ConversionPattern"/>
+ of the <see cref="T:log4net.Util.PatternString"/>.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)">
+ <summary>
+ Can the target type be converted to the type supported by this object
+ </summary>
+ <param name="targetType">A <see cref="T:System.Type"/> that represents the type you want to convert to</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Returns <c>true</c> if the <paramref name="targetType"/> is
+ assignable from a <see cref="T:System.String"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.PatternStringConverter.ConvertTo(System.Object,System.Type)">
+ <summary>
+ Converts the given value object to the specified type, using the arguments
+ </summary>
+ <param name="source">the object to convert</param>
+ <param name="targetType">The Type to convert the value parameter to</param>
+ <returns>the converted object</returns>
+ <remarks>
+ <para>
+ Uses the <see cref="M:PatternString.Format()"/> method to convert the
+ <see cref="T:log4net.Util.PatternString"/> argument to a <see cref="T:System.String"/>.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ The <paramref name="source"/> object cannot be converted to the
+ <paramref name="targetType"/>. To check for this condition use the
+ <see cref="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)"/> method.
+ </exception>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)">
+ <summary>
+ Can the source type be converted to the type supported by this object
+ </summary>
+ <param name="sourceType">the type to convert</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Returns <c>true</c> if the <paramref name="sourceType"/> is
+ the <see cref="T:System.String"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.PatternStringConverter.ConvertFrom(System.Object)">
+ <summary>
+ Overrides the ConvertFrom method of IConvertFrom.
+ </summary>
+ <param name="source">the object to convert to a PatternString</param>
+ <returns>the PatternString</returns>
+ <remarks>
+ <para>
+ Creates and returns a new <see cref="T:log4net.Util.PatternString"/> using
+ the <paramref name="source"/> <see cref="T:System.String"/> as the
+ <see cref="P:log4net.Util.PatternString.ConversionPattern"/>.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ The <paramref name="source"/> object cannot be converted to the
+ target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)"/>
+ method.
+ </exception>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.TypeConverter">
+ <summary>
+ Supports conversion from string to <see cref="T:System.Type"/> type.
+ </summary>
+ <remarks>
+ <para>
+ Supports conversion from string to <see cref="T:System.Type"/> type.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)">
+ <summary>
+ Can the source type be converted to the type supported by this object
+ </summary>
+ <param name="sourceType">the type to convert</param>
+ <returns>true if the conversion is possible</returns>
+ <remarks>
+ <para>
+ Returns <c>true</c> if the <paramref name="sourceType"/> is
+ the <see cref="T:System.String"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.TypeConverter.ConvertFrom(System.Object)">
+ <summary>
+ Overrides the ConvertFrom method of IConvertFrom.
+ </summary>
+ <param name="source">the object to convert to a Type</param>
+ <returns>the Type</returns>
+ <remarks>
+ <para>
+ Uses the <see cref="M:Type.GetType(string,bool)"/> method to convert the
+ <see cref="T:System.String"/> argument to a <see cref="T:System.Type"/>.
+ Additional effort is made to locate partially specified types
+ by searching the loaded assemblies.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException">
+ The <paramref name="source"/> object cannot be converted to the
+ target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)"/>
+ method.
+ </exception>
+ </member>
+ <member name="T:log4net.Util.TypeConverters.TypeConverterAttribute">
+ <summary>
+ Attribute used to associate a type converter
+ </summary>
+ <remarks>
+ <para>
+ Class and Interface level attribute that specifies a type converter
+ to use with the associated type.
+ </para>
+ <para>
+ To associate a type converter with a target type apply a
+ <c>TypeConverterAttribute</c> to the target type. Specify the
+ type of the type converter on the attribute.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Util.TypeConverters.TypeConverterAttribute.m_typeName">
+ <summary>
+ The string type name of the type converter
+ </summary>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.String)">
+ <summary>
+ Create a new type converter attribute for the specified type name
+ </summary>
+ <param name="typeName">The string type name of the type converter</param>
+ <remarks>
+ <para>
+ The type specified must implement the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ or the <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.Type)">
+ <summary>
+ Create a new type converter attribute for the specified type
+ </summary>
+ <param name="converterType">The type of the type converter</param>
+ <remarks>
+ <para>
+ The type specified must implement the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ or the <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.TypeConverters.TypeConverterAttribute.ConverterTypeName">
+ <summary>
+ The string type name of the type converter
+ </summary>
+ <value>
+ The string type name of the type converter
+ </value>
+ <remarks>
+ <para>
+ The type specified must implement the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/>
+ or the <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.AppenderAttachedImpl">
+ <summary>
+ A straightforward implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface.
+ </summary>
+ <remarks>
+ <para>
+ This is the default implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/>
+ interface. Implementors of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
+ should aggregate an instance of this type.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.AppenderAttachedImpl"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent)">
+ <summary>
+ Append on on all attached appenders.
+ </summary>
+ <param name="loggingEvent">The event being logged.</param>
+ <returns>The number of appenders called.</returns>
+ <remarks>
+ <para>
+ Calls the <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method on all
+ attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent[])">
+ <summary>
+ Append on on all attached appenders.
+ </summary>
+ <param name="loggingEvents">The array of events being logged.</param>
+ <returns>The number of appenders called.</returns>
+ <remarks>
+ <para>
+ Calls the <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method on all
+ attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.CallAppend(log4net.Appender.IAppender,log4net.Core.LoggingEvent[])">
+ <summary>
+ Calls the DoAppende method on the <see cref="T:log4net.Appender.IAppender"/> with
+ the <see cref="T:log4net.Core.LoggingEvent"/> objects supplied.
+ </summary>
+ <param name="appender">The appender</param>
+ <param name="loggingEvents">The events</param>
+ <remarks>
+ <para>
+ If the <paramref name="appender"/> supports the <see cref="T:log4net.Appender.IBulkAppender"/>
+ interface then the <paramref name="loggingEvents"/> will be passed
+ through using that interface. Otherwise the <see cref="T:log4net.Core.LoggingEvent"/>
+ objects in the array will be passed one at a time.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Attaches an appender.
+ </summary>
+ <param name="newAppender">The appender to add.</param>
+ <remarks>
+ <para>
+ If the appender is already in the list it won't be added again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.GetAppender(System.String)">
+ <summary>
+ Gets an attached appender with the specified name.
+ </summary>
+ <param name="name">The name of the appender to get.</param>
+ <returns>
+ The appender with the name specified, or <c>null</c> if no appender with the
+ specified name is found.
+ </returns>
+ <remarks>
+ <para>
+ Lookup an attached appender by name.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.RemoveAllAppenders">
+ <summary>
+ Removes all attached appenders.
+ </summary>
+ <remarks>
+ <para>
+ Removes and closes all attached appenders
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Removes the specified appender from the list of attached appenders.
+ </summary>
+ <param name="appender">The appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.AppenderAttachedImpl.RemoveAppender(System.String)">
+ <summary>
+ Removes the appender with the specified name from the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.AppenderAttachedImpl.m_appenderList">
+ <summary>
+ List of appenders
+ </summary>
+ </member>
+ <member name="F:log4net.Util.AppenderAttachedImpl.m_appenderArray">
+ <summary>
+ Array of appenders, used to cache the m_appenderList
+ </summary>
+ </member>
+ <member name="F:log4net.Util.AppenderAttachedImpl.declaringType">
+ <summary>
+ The fully qualified type of the AppenderAttachedImpl class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.AppenderAttachedImpl.Appenders">
+ <summary>
+ Gets all attached appenders.
+ </summary>
+ <returns>
+ A collection of attached appenders, or <c>null</c> if there
+ are no attached appenders.
+ </returns>
+ <remarks>
+ <para>
+ The read only collection of all currently attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.CompositeProperties">
+ <summary>
+ This class aggregates several PropertiesDictionary collections together.
+ </summary>
+ <remarks>
+ <para>
+ Provides a dictionary style lookup over an ordered list of
+ <see cref="T:log4net.Util.PropertiesDictionary"/> collections.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.CompositeProperties.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.CompositeProperties"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CompositeProperties.Add(log4net.Util.ReadOnlyPropertiesDictionary)">
+ <summary>
+ Add a Properties Dictionary to this composite collection
+ </summary>
+ <param name="properties">the properties to add</param>
+ <remarks>
+ <para>
+ Properties dictionaries added first take precedence over dictionaries added
+ later.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CompositeProperties.Flatten">
+ <summary>
+ Flatten this composite collection into a single properties dictionary
+ </summary>
+ <returns>the flattened dictionary</returns>
+ <remarks>
+ <para>
+ Reduces the collection of ordered dictionaries to a single dictionary
+ containing the resultant values for the keys.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.CompositeProperties.Item(System.String)">
+ <summary>
+ Gets the value of a property
+ </summary>
+ <value>
+ The value for the property with the specified key
+ </value>
+ <remarks>
+ <para>
+ Looks up the value for the <paramref name="key"/> specified.
+ The <see cref="T:log4net.Util.PropertiesDictionary"/> collections are searched
+ in the order in which they were added to this collection. The value
+ returned is the value held by the first collection that contains
+ the specified key.
+ </para>
+ <para>
+ If none of the collections contain the specified key then
+ <c>null</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ContextPropertiesBase">
+ <summary>
+ Base class for Context Properties implementations
+ </summary>
+ <remarks>
+ <para>
+ This class defines a basic property get set accessor
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="P:log4net.Util.ContextPropertiesBase.Item(System.String)">
+ <summary>
+ Gets or sets the value of a property
+ </summary>
+ <value>
+ The value for the property with the specified key
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the value of a property
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ConverterInfo">
+ <summary>
+ Wrapper class used to map converter names to converter types
+ </summary>
+ <remarks>
+ <para>
+ Pattern converter info class used during configuration by custom
+ PatternString and PatternLayer converters.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ConverterInfo.#ctor">
+ <summary>
+ default constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ConverterInfo.AddProperty(log4net.Util.PropertyEntry)">
+ <summary>
+
+ </summary>
+ <param name="entry"></param>
+ </member>
+ <member name="P:log4net.Util.ConverterInfo.Name">
+ <summary>
+ Gets or sets the name of the conversion pattern
+ </summary>
+ <remarks>
+ <para>
+ The name of the pattern in the format string
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ConverterInfo.Type">
+ <summary>
+ Gets or sets the type of the converter
+ </summary>
+ <remarks>
+ <para>
+ The value specified must extend the
+ <see cref="T:log4net.Util.PatternConverter"/> type.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ConverterInfo.Properties">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:log4net.Util.CountingQuietTextWriter">
+ <summary>
+ Subclass of <see cref="T:log4net.Util.QuietTextWriter"/> that maintains a count of
+ the number of bytes written.
+ </summary>
+ <remarks>
+ <para>
+ This writer counts the number of bytes written.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Util.QuietTextWriter">
+ <summary>
+ <see cref="T:System.IO.TextWriter"/> that does not leak exceptions
+ </summary>
+ <remarks>
+ <para>
+ <see cref="T:log4net.Util.QuietTextWriter"/> does not throw exceptions when things go wrong.
+ Instead, it delegates error handling to its <see cref="T:log4net.Core.IErrorHandler"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Util.TextWriterAdapter">
+ <summary>
+ Adapter that extends <see cref="T:System.IO.TextWriter"/> and forwards all
+ messages to an instance of <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ Adapter that extends <see cref="T:System.IO.TextWriter"/> and forwards all
+ messages to an instance of <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.TextWriterAdapter.m_writer">
+ <summary>
+ The writer to forward messages to
+ </summary>
+ </member>
+ <member name="M:log4net.Util.TextWriterAdapter.#ctor(System.IO.TextWriter)">
+ <summary>
+ Create an instance of <see cref="T:log4net.Util.TextWriterAdapter"/> that forwards all
+ messages to a <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to forward to</param>
+ <remarks>
+ <para>
+ Create an instance of <see cref="T:log4net.Util.TextWriterAdapter"/> that forwards all
+ messages to a <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TextWriterAdapter.Close">
+ <summary>
+ Closes the writer and releases any system resources associated with the writer
+ </summary>
+ <remarks>
+ <para>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TextWriterAdapter.Dispose(System.Boolean)">
+ <summary>
+ Dispose this writer
+ </summary>
+ <param name="disposing">flag indicating if we are being disposed</param>
+ <remarks>
+ <para>
+ Dispose this writer
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TextWriterAdapter.Flush">
+ <summary>
+ Flushes any buffered output
+ </summary>
+ <remarks>
+ <para>
+ Clears all buffers for the writer and causes any buffered data to be written
+ to the underlying device
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TextWriterAdapter.Write(System.Char)">
+ <summary>
+ Writes a character to the wrapped TextWriter
+ </summary>
+ <param name="value">the value to write to the TextWriter</param>
+ <remarks>
+ <para>
+ Writes a character to the wrapped TextWriter
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TextWriterAdapter.Write(System.Char[],System.Int32,System.Int32)">
+ <summary>
+ Writes a character buffer to the wrapped TextWriter
+ </summary>
+ <param name="buffer">the data buffer</param>
+ <param name="index">the start index</param>
+ <param name="count">the number of characters to write</param>
+ <remarks>
+ <para>
+ Writes a character buffer to the wrapped TextWriter
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.TextWriterAdapter.Write(System.String)">
+ <summary>
+ Writes a string to the wrapped TextWriter
+ </summary>
+ <param name="value">the value to write to the TextWriter</param>
+ <remarks>
+ <para>
+ Writes a string to the wrapped TextWriter
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.TextWriterAdapter.Writer">
+ <summary>
+ Gets or sets the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <value>
+ The underlying <see cref="T:System.IO.TextWriter"/>.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the underlying <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.TextWriterAdapter.Encoding">
+ <summary>
+ The Encoding in which the output is written
+ </summary>
+ <value>
+ The <see cref="P:log4net.Util.TextWriterAdapter.Encoding"/>
+ </value>
+ <remarks>
+ <para>
+ The Encoding in which the output is written
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.TextWriterAdapter.FormatProvider">
+ <summary>
+ Gets an object that controls formatting
+ </summary>
+ <value>
+ The format provider
+ </value>
+ <remarks>
+ <para>
+ Gets an object that controls formatting
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.TextWriterAdapter.NewLine">
+ <summary>
+ Gets or sets the line terminator string used by the TextWriter
+ </summary>
+ <value>
+ The line terminator to use
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the line terminator string used by the TextWriter
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.QuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="writer">the writer to actually write to</param>
+ <param name="errorHandler">the error handler to report error to</param>
+ <remarks>
+ <para>
+ Create a new QuietTextWriter using a writer and error handler
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.QuietTextWriter.Write(System.Char)">
+ <summary>
+ Writes a character to the underlying writer
+ </summary>
+ <param name="value">the char to write</param>
+ <remarks>
+ <para>
+ Writes a character to the underlying writer
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.QuietTextWriter.Write(System.Char[],System.Int32,System.Int32)">
+ <summary>
+ Writes a buffer to the underlying writer
+ </summary>
+ <param name="buffer">the buffer to write</param>
+ <param name="index">the start index to write from</param>
+ <param name="count">the number of characters to write</param>
+ <remarks>
+ <para>
+ Writes a buffer to the underlying writer
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.QuietTextWriter.Write(System.String)">
+ <summary>
+ Writes a string to the output.
+ </summary>
+ <param name="value">The string data to write to the output.</param>
+ <remarks>
+ <para>
+ Writes a string to the output.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.QuietTextWriter.Close">
+ <summary>
+ Closes the underlying output writer.
+ </summary>
+ <remarks>
+ <para>
+ Closes the underlying output writer.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.QuietTextWriter.m_errorHandler">
+ <summary>
+ The error handler instance to pass all errors to
+ </summary>
+ </member>
+ <member name="F:log4net.Util.QuietTextWriter.m_closed">
+ <summary>
+ Flag to indicate if this writer is closed
+ </summary>
+ </member>
+ <member name="P:log4net.Util.QuietTextWriter.ErrorHandler">
+ <summary>
+ Gets or sets the error handler that all errors are passed to.
+ </summary>
+ <value>
+ The error handler that all errors are passed to.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the error handler that all errors are passed to.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.QuietTextWriter.Closed">
+ <summary>
+ Gets a value indicating whether this writer is closed.
+ </summary>
+ <value>
+ <c>true</c> if this writer is closed, otherwise <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ Gets a value indicating whether this writer is closed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CountingQuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to actually write to.</param>
+ <param name="errorHandler">The <see cref="T:log4net.Core.IErrorHandler"/> to report errors to.</param>
+ <remarks>
+ <para>
+ Creates a new instance of the <see cref="T:log4net.Util.CountingQuietTextWriter"/> class
+ with the specified <see cref="T:System.IO.TextWriter"/> and <see cref="T:log4net.Core.IErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CountingQuietTextWriter.Write(System.Char)">
+ <summary>
+ Writes a character to the underlying writer and counts the number of bytes written.
+ </summary>
+ <param name="value">the char to write</param>
+ <remarks>
+ <para>
+ Overrides implementation of <see cref="T:log4net.Util.QuietTextWriter"/>. Counts
+ the number of bytes written.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CountingQuietTextWriter.Write(System.Char[],System.Int32,System.Int32)">
+ <summary>
+ Writes a buffer to the underlying writer and counts the number of bytes written.
+ </summary>
+ <param name="buffer">the buffer to write</param>
+ <param name="index">the start index to write from</param>
+ <param name="count">the number of characters to write</param>
+ <remarks>
+ <para>
+ Overrides implementation of <see cref="T:log4net.Util.QuietTextWriter"/>. Counts
+ the number of bytes written.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CountingQuietTextWriter.Write(System.String)">
+ <summary>
+ Writes a string to the output and counts the number of bytes written.
+ </summary>
+ <param name="str">The string data to write to the output.</param>
+ <remarks>
+ <para>
+ Overrides implementation of <see cref="T:log4net.Util.QuietTextWriter"/>. Counts
+ the number of bytes written.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.CountingQuietTextWriter.m_countBytes">
+ <summary>
+ Total number of bytes written.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.CountingQuietTextWriter.Count">
+ <summary>
+ Gets or sets the total number of bytes written.
+ </summary>
+ <value>
+ The total number of bytes written.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the total number of bytes written.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.CyclicBuffer">
+ <summary>
+ A fixed size rolling buffer of logging events.
+ </summary>
+ <remarks>
+ <para>
+ An array backed fixed size leaky bucket.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.CyclicBuffer.#ctor(System.Int32)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="maxSize">The maximum number of logging events in the buffer.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.CyclicBuffer"/> class with
+ the specified maximum number of buffered logging events.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="maxSize"/> argument is not a positive integer.</exception>
+ </member>
+ <member name="M:log4net.Util.CyclicBuffer.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Appends a <paramref name="loggingEvent"/> to the buffer.
+ </summary>
+ <param name="loggingEvent">The event to append to the buffer.</param>
+ <returns>The event discarded from the buffer, if the buffer is full, otherwise <c>null</c>.</returns>
+ <remarks>
+ <para>
+ Append an event to the buffer. If the buffer still contains free space then
+ <c>null</c> is returned. If the buffer is full then an event will be dropped
+ to make space for the new event, the event dropped is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CyclicBuffer.PopOldest">
+ <summary>
+ Get and remove the oldest event in the buffer.
+ </summary>
+ <returns>The oldest logging event in the buffer</returns>
+ <remarks>
+ <para>
+ Gets the oldest (first) logging event in the buffer and removes it
+ from the buffer.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CyclicBuffer.PopAll">
+ <summary>
+ Pops all the logging events from the buffer into an array.
+ </summary>
+ <returns>An array of all the logging events in the buffer.</returns>
+ <remarks>
+ <para>
+ Get all the events in the buffer and clear the buffer.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.CyclicBuffer.Clear">
+ <summary>
+ Clear the buffer
+ </summary>
+ <remarks>
+ <para>
+ Clear the buffer of all events. The events in the buffer are lost.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.CyclicBuffer.Item(System.Int32)">
+ <summary>
+ Gets the <paramref name="i"/>th oldest event currently in the buffer.
+ </summary>
+ <value>The <paramref name="i"/>th oldest event currently in the buffer.</value>
+ <remarks>
+ <para>
+ If <paramref name="i"/> is outside the range 0 to the number of events
+ currently in the buffer, then <c>null</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.CyclicBuffer.MaxSize">
+ <summary>
+ Gets the maximum size of the buffer.
+ </summary>
+ <value>The maximum size of the buffer.</value>
+ <remarks>
+ <para>
+ Gets the maximum size of the buffer
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.CyclicBuffer.Length">
+ <summary>
+ Gets the number of logging events in the buffer.
+ </summary>
+ <value>The number of logging events in the buffer.</value>
+ <remarks>
+ <para>
+ This number is guaranteed to be in the range 0 to <see cref="P:log4net.Util.CyclicBuffer.MaxSize"/>
+ (inclusive).
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.EmptyCollection">
+ <summary>
+ An always empty <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <remarks>
+ <para>
+ A singleton implementation of the <see cref="T:System.Collections.ICollection"/>
+ interface that always represents an empty collection.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.EmptyCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.EmptyCollection"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to enforce the singleton pattern.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.EmptyCollection.CopyTo(System.Array,System.Int32)">
+ <summary>
+ Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an
+ <see cref="T:System.Array"/>, starting at a particular Array index.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:System.Array"/>
+ that is the destination of the elements copied from
+ <see cref="T:System.Collections.ICollection"/>. The Array must have zero-based
+ indexing.</param>
+ <param name="index">The zero-based index in array at which
+ copying begins.</param>
+ <remarks>
+ <para>
+ As the collection is empty no values are copied into the array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.EmptyCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through a collection.
+ </summary>
+ <returns>
+ An <see cref="T:System.Collections.IEnumerator"/> that can be used to
+ iterate through the collection.
+ </returns>
+ <remarks>
+ <para>
+ As the collection is empty a <see cref="T:log4net.Util.NullEnumerator"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.EmptyCollection.s_instance">
+ <summary>
+ The singleton instance of the empty collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.EmptyCollection.Instance">
+ <summary>
+ Gets the singleton instance of the empty collection.
+ </summary>
+ <returns>The singleton instance of the empty collection.</returns>
+ <remarks>
+ <para>
+ Gets the singleton instance of the empty collection.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyCollection.IsSynchronized">
+ <summary>
+ Gets a value indicating if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe).
+ </summary>
+ <value>
+ <b>true</b> if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe); otherwise, <b>false</b>.
+ </value>
+ <remarks>
+ <para>
+ For the <see cref="T:log4net.Util.EmptyCollection"/> this property is always <c>true</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyCollection.Count">
+ <summary>
+ Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <value>
+ The number of elements contained in the <see cref="T:System.Collections.ICollection"/>.
+ </value>
+ <remarks>
+ <para>
+ As the collection is empty the <see cref="P:log4net.Util.EmptyCollection.Count"/> is always <c>0</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyCollection.SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <value>
+ An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>.
+ </value>
+ <remarks>
+ <para>
+ As the collection is empty and thread safe and synchronized this instance is also
+ the <see cref="P:log4net.Util.EmptyCollection.SyncRoot"/> object.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.EmptyDictionary">
+ <summary>
+ An always empty <see cref="T:System.Collections.IDictionary"/>.
+ </summary>
+ <remarks>
+ <para>
+ A singleton implementation of the <see cref="T:System.Collections.IDictionary"/>
+ interface that always represents an empty collection.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.EmptyDictionary"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to enforce the singleton pattern.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.CopyTo(System.Array,System.Int32)">
+ <summary>
+ Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an
+ <see cref="T:System.Array"/>, starting at a particular Array index.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:System.Array"/>
+ that is the destination of the elements copied from
+ <see cref="T:System.Collections.ICollection"/>. The Array must have zero-based
+ indexing.</param>
+ <param name="index">The zero-based index in array at which
+ copying begins.</param>
+ <remarks>
+ <para>
+ As the collection is empty no values are copied into the array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through a collection.
+ </summary>
+ <returns>
+ An <see cref="T:System.Collections.IEnumerator"/> that can be used to
+ iterate through the collection.
+ </returns>
+ <remarks>
+ <para>
+ As the collection is empty a <see cref="T:log4net.Util.NullEnumerator"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.Add(System.Object,System.Object)">
+ <summary>
+ Adds an element with the provided key and value to the
+ <see cref="T:log4net.Util.EmptyDictionary"/>.
+ </summary>
+ <param name="key">The <see cref="T:System.Object"/> to use as the key of the element to add.</param>
+ <param name="value">The <see cref="T:System.Object"/> to use as the value of the element to add.</param>
+ <remarks>
+ <para>
+ As the collection is empty no new values can be added. A <see cref="T:System.InvalidOperationException"/>
+ is thrown if this method is called.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.Clear">
+ <summary>
+ Removes all elements from the <see cref="T:log4net.Util.EmptyDictionary"/>.
+ </summary>
+ <remarks>
+ <para>
+ As the collection is empty no values can be removed. A <see cref="T:System.InvalidOperationException"/>
+ is thrown if this method is called.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.Contains(System.Object)">
+ <summary>
+ Determines whether the <see cref="T:log4net.Util.EmptyDictionary"/> contains an element
+ with the specified key.
+ </summary>
+ <param name="key">The key to locate in the <see cref="T:log4net.Util.EmptyDictionary"/>.</param>
+ <returns><c>false</c></returns>
+ <remarks>
+ <para>
+ As the collection is empty the <see cref="M:log4net.Util.EmptyDictionary.Contains(System.Object)"/> method always returns <c>false</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through a collection.
+ </summary>
+ <returns>
+ An <see cref="T:System.Collections.IEnumerator"/> that can be used to
+ iterate through the collection.
+ </returns>
+ <remarks>
+ <para>
+ As the collection is empty a <see cref="T:log4net.Util.NullEnumerator"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.EmptyDictionary.Remove(System.Object)">
+ <summary>
+ Removes the element with the specified key from the <see cref="T:log4net.Util.EmptyDictionary"/>.
+ </summary>
+ <param name="key">The key of the element to remove.</param>
+ <remarks>
+ <para>
+ As the collection is empty no values can be removed. A <see cref="T:System.InvalidOperationException"/>
+ is thrown if this method is called.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception>
+ </member>
+ <member name="F:log4net.Util.EmptyDictionary.s_instance">
+ <summary>
+ The singleton instance of the empty dictionary.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.Instance">
+ <summary>
+ Gets the singleton instance of the <see cref="T:log4net.Util.EmptyDictionary"/>.
+ </summary>
+ <returns>The singleton instance of the <see cref="T:log4net.Util.EmptyDictionary"/>.</returns>
+ <remarks>
+ <para>
+ Gets the singleton instance of the <see cref="T:log4net.Util.EmptyDictionary"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.IsSynchronized">
+ <summary>
+ Gets a value indicating if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe).
+ </summary>
+ <value>
+ <b>true</b> if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe); otherwise, <b>false</b>.
+ </value>
+ <remarks>
+ <para>
+ For the <see cref="T:log4net.Util.EmptyCollection"/> this property is always <b>true</b>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.Count">
+ <summary>
+ Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"/>
+ </summary>
+ <value>
+ The number of elements contained in the <see cref="T:System.Collections.ICollection"/>.
+ </value>
+ <remarks>
+ <para>
+ As the collection is empty the <see cref="P:log4net.Util.EmptyDictionary.Count"/> is always <c>0</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <value>
+ An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>.
+ </value>
+ <remarks>
+ <para>
+ As the collection is empty and thread safe and synchronized this instance is also
+ the <see cref="P:log4net.Util.EmptyDictionary.SyncRoot"/> object.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the <see cref="T:log4net.Util.EmptyDictionary"/> has a fixed size.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ As the collection is empty <see cref="P:log4net.Util.EmptyDictionary.IsFixedSize"/> always returns <c>true</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the <see cref="T:log4net.Util.EmptyDictionary"/> is read-only.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ As the collection is empty <see cref="P:log4net.Util.EmptyDictionary.IsReadOnly"/> always returns <c>true</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.Keys">
+ <summary>
+ Gets an <see cref="T:System.Collections.ICollection"/> containing the keys of the <see cref="T:log4net.Util.EmptyDictionary"/>.
+ </summary>
+ <value>An <see cref="T:System.Collections.ICollection"/> containing the keys of the <see cref="T:log4net.Util.EmptyDictionary"/>.</value>
+ <remarks>
+ <para>
+ As the collection is empty a <see cref="T:log4net.Util.EmptyCollection"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.Values">
+ <summary>
+ Gets an <see cref="T:System.Collections.ICollection"/> containing the values of the <see cref="T:log4net.Util.EmptyDictionary"/>.
+ </summary>
+ <value>An <see cref="T:System.Collections.ICollection"/> containing the values of the <see cref="T:log4net.Util.EmptyDictionary"/>.</value>
+ <remarks>
+ <para>
+ As the collection is empty a <see cref="T:log4net.Util.EmptyCollection"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.EmptyDictionary.Item(System.Object)">
+ <summary>
+ Gets or sets the element with the specified key.
+ </summary>
+ <param name="key">The key of the element to get or set.</param>
+ <value><c>null</c></value>
+ <remarks>
+ <para>
+ As the collection is empty no values can be looked up or stored.
+ If the index getter is called then <c>null</c> is returned.
+ A <see cref="T:System.InvalidOperationException"/> is thrown if the setter is called.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception>
+ </member>
+ <member name="T:log4net.Util.FormattingInfo">
+ <summary>
+ Contain the information obtained when parsing formatting modifiers
+ in conversion modifiers.
+ </summary>
+ <remarks>
+ <para>
+ Holds the formatting information extracted from the format string by
+ the <see cref="T:log4net.Util.PatternParser"/>. This is used by the <see cref="T:log4net.Util.PatternConverter"/>
+ objects when rendering the output.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.FormattingInfo.#ctor">
+ <summary>
+ Defaut Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.FormattingInfo"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.FormattingInfo.#ctor(System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.FormattingInfo"/> class
+ with the specified parameters.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.FormattingInfo.Min">
+ <summary>
+ Gets or sets the minimum value.
+ </summary>
+ <value>
+ The minimum value.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the minimum value.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.FormattingInfo.Max">
+ <summary>
+ Gets or sets the maximum value.
+ </summary>
+ <value>
+ The maximum value.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the maximum value.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.FormattingInfo.LeftAlign">
+ <summary>
+ Gets or sets a flag indicating whether left align is enabled
+ or not.
+ </summary>
+ <value>
+ A flag indicating whether left align is enabled or not.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets a flag indicating whether left align is enabled or not.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.GlobalContextProperties">
+ <summary>
+ Implementation of Properties collection for the <see cref="T:log4net.GlobalContext"/>
+ </summary>
+ <remarks>
+ <para>
+ This class implements a properties collection that is thread safe and supports both
+ storing properties and capturing a read only copy of the current propertied.
+ </para>
+ <para>
+ This class is optimized to the scenario where the properties are read frequently
+ and are modified infrequently.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.GlobalContextProperties.m_readOnlyProperties">
+ <summary>
+ The read only copy of the properties.
+ </summary>
+ <remarks>
+ <para>
+ This variable is declared <c>volatile</c> to prevent the compiler and JIT from
+ reordering reads and writes of this thread performed on different threads.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.GlobalContextProperties.m_syncRoot">
+ <summary>
+ Lock object used to synchronize updates within this instance
+ </summary>
+ </member>
+ <member name="M:log4net.Util.GlobalContextProperties.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.GlobalContextProperties"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.GlobalContextProperties.Remove(System.String)">
+ <summary>
+ Remove a property from the global context
+ </summary>
+ <param name="key">the key for the entry to remove</param>
+ <remarks>
+ <para>
+ Removing an entry from the global context properties is relatively expensive compared
+ with reading a value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.GlobalContextProperties.Clear">
+ <summary>
+ Clear the global context properties
+ </summary>
+ </member>
+ <member name="M:log4net.Util.GlobalContextProperties.GetReadOnlyProperties">
+ <summary>
+ Get a readonly immutable copy of the properties
+ </summary>
+ <returns>the current global context properties</returns>
+ <remarks>
+ <para>
+ This implementation is fast because the GlobalContextProperties class
+ stores a readonly copy of the properties.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.GlobalContextProperties.Item(System.String)">
+ <summary>
+ Gets or sets the value of a property
+ </summary>
+ <value>
+ The value for the property with the specified key
+ </value>
+ <remarks>
+ <para>
+ Reading the value for a key is faster than setting the value.
+ When the value is written a new read only copy of
+ the properties is created.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ILogExtensions">
+ <summary>
+ The static class ILogExtensions contains a set of widely used
+ methods that ease the interaction with the ILog interface implementations.
+ </summary>
+ <remarks>
+ <para>
+ This class contains methods for logging at different levels and checks the
+ properties for determining if those logging levels are enabled in the current
+ configuration.
+ </para>
+ </remarks>
+ <example>Simple example of logging messages
+ <code lang="C#">
+ using log4net.Util;
+
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.InfoExt("Application Start");
+ log.DebugExt("This is a debug message");
+ </code>
+ </example>
+ </member>
+ <member name="F:log4net.Util.ILogExtensions.declaringType">
+ <summary>
+ The fully qualified type of the Logger class.
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Func{System.Object})">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsDebugEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>INFO</c> enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>.
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Func{System.Object},System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Func{System.Object},System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.</overloads> //TODO
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsDebugEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>INFO</c> enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object,System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugFormatExt(log4net.ILog,System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugFormatExt(log4net.ILog,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugFormatExt(log4net.ILog,System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugFormatExt(log4net.ILog,System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.DebugFormatExt(log4net.ILog,System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.DebugExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Debug(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Func{System.Object})">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsInfoEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>INFO</c> enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>.
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Func{System.Object},System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Func{System.Object},System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level.</overloads> //TODO
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsInfoEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>INFO</c> enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object,System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoFormatExt(log4net.ILog,System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoFormatExt(log4net.ILog,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoFormatExt(log4net.ILog,System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoFormatExt(log4net.ILog,System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.InfoFormatExt(log4net.ILog,System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.InfoExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Info(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Func{System.Object})">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>WARN</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsWarnEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>WARN</c> enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>.
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Func{System.Object},System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Func{System.Object},System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.</overloads> //TODO
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>WARN</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsWarnEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>WARN</c> enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object,System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnFormatExt(log4net.ILog,System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnFormatExt(log4net.ILog,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnFormatExt(log4net.ILog,System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnFormatExt(log4net.ILog,System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.WarnFormatExt(log4net.ILog,System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.WarnExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Warn(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Func{System.Object})">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>ERROR</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsErrorEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>ERROR</c> enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>.
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Func{System.Object},System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Func{System.Object},System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level.</overloads> //TODO
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>ERROR</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsErrorEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>ERROR</c> enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object,System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorFormatExt(log4net.ILog,System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorFormatExt(log4net.ILog,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorFormatExt(log4net.ILog,System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorFormatExt(log4net.ILog,System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.ErrorFormatExt(log4net.ILog,System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.ErrorExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Error(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Func{System.Object})">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>FATAL</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsFatalEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>FATAL</c> enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>.
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Func{System.Object},System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Func{System.Object},System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="callback">The lambda expression that gets the object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.</overloads> //TODO
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>FATAL</c>
+ enabled by reading the value <seealso cref="P:log4net.ILog.IsFatalEnabled"/> property.
+ This check happens always and does not depend on the <seealso cref="T:log4net.ILog"/>
+ implementation. If this logger is <c>FATAL</c> enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object,System.Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalFormatExt(log4net.ILog,System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalFormatExt(log4net.ILog,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalFormatExt(log4net.ILog,System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalFormatExt(log4net.ILog,System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.Util.ILogExtensions.FatalFormatExt(log4net.ILog,System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="logger">The logger on which the message is logged.</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Util.ILogExtensions.FatalExt(log4net.ILog,System.Object,System.Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.ILog.Fatal(System.Object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="T:log4net.Util.LevelMapping">
+ <summary>
+ Manages a mapping from levels to <see cref="T:log4net.Util.LevelMappingEntry"/>
+ </summary>
+ <remarks>
+ <para>
+ Manages an ordered mapping from <see cref="T:log4net.Core.Level"/> instances
+ to <see cref="T:log4net.Util.LevelMappingEntry"/> subclasses.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.LevelMapping.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Initialise a new instance of <see cref="T:log4net.Util.LevelMapping"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LevelMapping.Add(log4net.Util.LevelMappingEntry)">
+ <summary>
+ Add a <see cref="T:log4net.Util.LevelMappingEntry"/> to this mapping
+ </summary>
+ <param name="entry">the entry to add</param>
+ <remarks>
+ <para>
+ If a <see cref="T:log4net.Util.LevelMappingEntry"/> has previously been added
+ for the same <see cref="T:log4net.Core.Level"/> then that entry will be
+ overwritten.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LevelMapping.Lookup(log4net.Core.Level)">
+ <summary>
+ Lookup the mapping for the specified level
+ </summary>
+ <param name="level">the level to lookup</param>
+ <returns>the <see cref="T:log4net.Util.LevelMappingEntry"/> for the level or <c>null</c> if no mapping found</returns>
+ <remarks>
+ <para>
+ Lookup the value for the specified level. Finds the nearest
+ mapping value for the level that is equal to or less than the
+ <paramref name="level"/> specified.
+ </para>
+ <para>
+ If no mapping could be found then <c>null</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LevelMapping.ActivateOptions">
+ <summary>
+ Initialize options
+ </summary>
+ <remarks>
+ <para>
+ Caches the sorted list of <see cref="T:log4net.Util.LevelMappingEntry"/> in an array
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.LogicalThreadContextProperties">
+ <summary>
+ Implementation of Properties collection for the <see cref="T:log4net.LogicalThreadContext"/>
+ </summary>
+ <remarks>
+ <para>
+ Class implements a collection of properties that is specific to each thread.
+ The class is not synchronized as each thread has its own <see cref="T:log4net.Util.PropertiesDictionary"/>.
+ </para>
+ <para>
+ This class stores its properties in a slot on the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> named
+ <c>log4net.Util.LogicalThreadContextProperties</c>.
+ </para>
+ <para>
+ The <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> requires a link time
+ <see cref="T:System.Security.Permissions.SecurityPermission"/> for the
+ <see cref="F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure"/>.
+ If the calling code does not have this permission then this context will be disabled.
+ It will not store any property values set on it.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.LogicalThreadContextProperties.m_disabled">
+ <summary>
+ Flag used to disable this context if we don't have permission to access the CallContext.
+ </summary>
+ </member>
+ <member name="M:log4net.Util.LogicalThreadContextProperties.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.LogicalThreadContextProperties"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogicalThreadContextProperties.Remove(System.String)">
+ <summary>
+ Remove a property
+ </summary>
+ <param name="key">the key for the entry to remove</param>
+ <remarks>
+ <para>
+ Remove the value for the specified <paramref name="key"/> from the context.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogicalThreadContextProperties.Clear">
+ <summary>
+ Clear all the context properties
+ </summary>
+ <remarks>
+ <para>
+ Clear all the context properties
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogicalThreadContextProperties.GetProperties(System.Boolean)">
+ <summary>
+ Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread.
+ </summary>
+ <param name="create">create the dictionary if it does not exist, otherwise return null if is does not exist</param>
+ <returns>the properties for this thread</returns>
+ <remarks>
+ <para>
+ The collection returned is only to be used on the calling thread. If the
+ caller needs to share the collection between different threads then the
+ caller must clone the collection before doings so.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogicalThreadContextProperties.GetCallContextData">
+ <summary>
+ Gets the call context get data.
+ </summary>
+ <returns>The peroperties dictionary stored in the call context</returns>
+ <remarks>
+ The <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> method <see cref="M:System.Runtime.Remoting.Messaging.CallContext.GetData(System.String)"/> has a
+ security link demand, therfore we must put the method call in a seperate method
+ that we can wrap in an exception handler.
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogicalThreadContextProperties.SetCallContextData(log4net.Util.PropertiesDictionary)">
+ <summary>
+ Sets the call context data.
+ </summary>
+ <param name="properties">The properties.</param>
+ <remarks>
+ The <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> method <see cref="M:System.Runtime.Remoting.Messaging.CallContext.SetData(System.String,System.Object)"/> has a
+ security link demand, therfore we must put the method call in a seperate method
+ that we can wrap in an exception handler.
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.LogicalThreadContextProperties.declaringType">
+ <summary>
+ The fully qualified type of the LogicalThreadContextProperties class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.LogicalThreadContextProperties.Item(System.String)">
+ <summary>
+ Gets or sets the value of a property
+ </summary>
+ <value>
+ The value for the property with the specified key
+ </value>
+ <remarks>
+ <para>
+ Get or set the property value for the <paramref name="key"/> specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.LogReceivedEventHandler">
+ <summary>
+
+ </summary>
+ <param name="source"></param>
+ <param name="e"></param>
+ </member>
+ <member name="T:log4net.Util.LogLog">
+ <summary>
+ Outputs log statements from within the log4net assembly.
+ </summary>
+ <remarks>
+ <para>
+ Log4net components cannot make log4net logging calls. However, it is
+ sometimes useful for the user to learn about what log4net is
+ doing.
+ </para>
+ <para>
+ All log4net internal debug calls go to the standard output stream
+ whereas internal error messages are sent to the standard error output
+ stream.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.LogLog.ToString">
+ <summary>
+ Formats Prefix, Source, and Message in the same format as the value
+ sent to Console.Out and Trace.Write.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Util.LogLog.#ctor(System.Type,System.String,System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.LogLog"/> class.
+ </summary>
+ <param name="source"></param>
+ <param name="prefix"></param>
+ <param name="message"></param>
+ <param name="exception"></param>
+ </member>
+ <member name="M:log4net.Util.LogLog.#cctor">
+ <summary>
+ Static constructor that initializes logging by reading
+ settings from the application configuration file.
+ </summary>
+ <remarks>
+ <para>
+ The <c>log4net.Internal.Debug</c> application setting
+ controls internal debugging. This setting should be set
+ to <c>true</c> to enable debugging.
+ </para>
+ <para>
+ The <c>log4net.Internal.Quiet</c> application setting
+ suppresses all internal logging including error messages.
+ This setting should be set to <c>true</c> to enable message
+ suppression.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.OnLogReceived(System.Type,System.String,System.String,System.Exception)">
+ <summary>
+ Raises the LogReceived event when an internal messages is received.
+ </summary>
+ <param name="source"></param>
+ <param name="prefix"></param>
+ <param name="message"></param>
+ <param name="exception"></param>
+ </member>
+ <member name="M:log4net.Util.LogLog.Debug(System.Type,System.String)">
+ <summary>
+ Writes log4net internal debug messages to the
+ standard output stream.
+ </summary>
+ <param name="source"></param>
+ <param name="message">The message to log.</param>
+ <remarks>
+ <para>
+ All internal debug messages are prepended with
+ the string "log4net: ".
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.Debug(System.Type,System.String,System.Exception)">
+ <summary>
+ Writes log4net internal debug messages to the
+ standard output stream.
+ </summary>
+ <param name="source">The Type that generated this message.</param>
+ <param name="message">The message to log.</param>
+ <param name="exception">An exception to log.</param>
+ <remarks>
+ <para>
+ All internal debug messages are prepended with
+ the string "log4net: ".
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.Warn(System.Type,System.String)">
+ <summary>
+ Writes log4net internal warning messages to the
+ standard error stream.
+ </summary>
+ <param name="source">The Type that generated this message.</param>
+ <param name="message">The message to log.</param>
+ <remarks>
+ <para>
+ All internal warning messages are prepended with
+ the string "log4net:WARN ".
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.Warn(System.Type,System.String,System.Exception)">
+ <summary>
+ Writes log4net internal warning messages to the
+ standard error stream.
+ </summary>
+ <param name="source">The Type that generated this message.</param>
+ <param name="message">The message to log.</param>
+ <param name="exception">An exception to log.</param>
+ <remarks>
+ <para>
+ All internal warning messages are prepended with
+ the string "log4net:WARN ".
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.Error(System.Type,System.String)">
+ <summary>
+ Writes log4net internal error messages to the
+ standard error stream.
+ </summary>
+ <param name="source">The Type that generated this message.</param>
+ <param name="message">The message to log.</param>
+ <remarks>
+ <para>
+ All internal error messages are prepended with
+ the string "log4net:ERROR ".
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.Error(System.Type,System.String,System.Exception)">
+ <summary>
+ Writes log4net internal error messages to the
+ standard error stream.
+ </summary>
+ <param name="source">The Type that generated this message.</param>
+ <param name="message">The message to log.</param>
+ <param name="exception">An exception to log.</param>
+ <remarks>
+ <para>
+ All internal debug messages are prepended with
+ the string "log4net:ERROR ".
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.EmitOutLine(System.String)">
+ <summary>
+ Writes output to the standard output stream.
+ </summary>
+ <param name="message">The message to log.</param>
+ <remarks>
+ <para>
+ Writes to both Console.Out and System.Diagnostics.Trace.
+ Note that the System.Diagnostics.Trace is not supported
+ on the Compact Framework.
+ </para>
+ <para>
+ If the AppDomain is not configured with a config file then
+ the call to System.Diagnostics.Trace may fail. This is only
+ an issue if you are programmatically creating your own AppDomains.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LogLog.EmitErrorLine(System.String)">
+ <summary>
+ Writes output to the standard error stream.
+ </summary>
+ <param name="message">The message to log.</param>
+ <remarks>
+ <para>
+ Writes to both Console.Error and System.Diagnostics.Trace.
+ Note that the System.Diagnostics.Trace is not supported
+ on the Compact Framework.
+ </para>
+ <para>
+ If the AppDomain is not configured with a config file then
+ the call to System.Diagnostics.Trace may fail. This is only
+ an issue if you are programmatically creating your own AppDomains.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.LogLog.s_debugEnabled">
+ <summary>
+ Default debug level
+ </summary>
+ </member>
+ <member name="F:log4net.Util.LogLog.s_quietMode">
+ <summary>
+ In quietMode not even errors generate any output.
+ </summary>
+ </member>
+ <member name="E:log4net.Util.LogLog.LogReceived">
+ <summary>
+ The event raised when an internal message has been received.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.LogLog.Source">
+ <summary>
+ The Type that generated the internal message.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.LogLog.TimeStamp">
+ <summary>
+ The DateTime stamp of when the internal message was received.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.LogLog.Prefix">
+ <summary>
+ A string indicating the severity of the internal message.
+ </summary>
+ <remarks>
+ "log4net: ",
+ "log4net:ERROR ",
+ "log4net:WARN "
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.LogLog.Message">
+ <summary>
+ The internal log message.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.LogLog.Exception">
+ <summary>
+ The Exception related to the message.
+ </summary>
+ <remarks>
+ Optional. Will be null if no Exception was passed.
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.LogLog.InternalDebugging">
+ <summary>
+ Gets or sets a value indicating whether log4net internal logging
+ is enabled or disabled.
+ </summary>
+ <value>
+ <c>true</c> if log4net internal logging is enabled, otherwise
+ <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ When set to <c>true</c>, internal debug level logging will be
+ displayed.
+ </para>
+ <para>
+ This value can be set by setting the application setting
+ <c>log4net.Internal.Debug</c> in the application configuration
+ file.
+ </para>
+ <para>
+ The default value is <c>false</c>, i.e. debugging is
+ disabled.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ The following example enables internal debugging using the
+ application configuration file :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net.Internal.Debug" value="true" />
+ </appSettings>
+ </configuration>
+ </code>
+ </example>
+ </member>
+ <member name="P:log4net.Util.LogLog.QuietMode">
+ <summary>
+ Gets or sets a value indicating whether log4net should generate no output
+ from internal logging, not even for errors.
+ </summary>
+ <value>
+ <c>true</c> if log4net should generate no output at all from internal
+ logging, otherwise <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ When set to <c>true</c> will cause internal logging at all levels to be
+ suppressed. This means that no warning or error reports will be logged.
+ This option overrides the <see cref="P:log4net.Util.LogLog.InternalDebugging"/> setting and
+ disables all debug also.
+ </para>
+ <para>This value can be set by setting the application setting
+ <c>log4net.Internal.Quiet</c> in the application configuration file.
+ </para>
+ <para>
+ The default value is <c>false</c>, i.e. internal logging is not
+ disabled.
+ </para>
+ </remarks>
+ <example>
+ The following example disables internal logging using the
+ application configuration file :
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net.Internal.Quiet" value="true"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </example>
+ </member>
+ <member name="P:log4net.Util.LogLog.EmitInternalMessages">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:log4net.Util.LogLog.IsDebugEnabled">
+ <summary>
+ Test if LogLog.Debug is enabled for output.
+ </summary>
+ <value>
+ <c>true</c> if Debug is enabled
+ </value>
+ <remarks>
+ <para>
+ Test if LogLog.Debug is enabled for output.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.LogLog.IsWarnEnabled">
+ <summary>
+ Test if LogLog.Warn is enabled for output.
+ </summary>
+ <value>
+ <c>true</c> if Warn is enabled
+ </value>
+ <remarks>
+ <para>
+ Test if LogLog.Warn is enabled for output.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.LogLog.IsErrorEnabled">
+ <summary>
+ Test if LogLog.Error is enabled for output.
+ </summary>
+ <value>
+ <c>true</c> if Error is enabled
+ </value>
+ <remarks>
+ <para>
+ Test if LogLog.Error is enabled for output.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.LogLog.LogReceivedAdapter">
+ <summary>
+ Subscribes to the LogLog.LogReceived event and stores messages
+ to the supplied IList instance.
+ </summary>
+ </member>
+ <member name="M:log4net.Util.LogLog.LogReceivedAdapter.#ctor(System.Collections.IList)">
+ <summary>
+
+ </summary>
+ <param name="items"></param>
+ </member>
+ <member name="M:log4net.Util.LogLog.LogReceivedAdapter.Dispose">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:log4net.Util.LogLog.LogReceivedAdapter.Items">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:log4net.Util.LogReceivedEventArgs">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:log4net.Util.LogReceivedEventArgs.#ctor(log4net.Util.LogLog)">
+ <summary>
+
+ </summary>
+ <param name="loglog"></param>
+ </member>
+ <member name="P:log4net.Util.LogReceivedEventArgs.LogLog">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:log4net.Util.NativeError">
+ <summary>
+ Represents a native error code and message.
+ </summary>
+ <remarks>
+ <para>
+ Represents a Win32 platform native error.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.NativeError.#ctor(System.Int32,System.String)">
+ <summary>
+ Create an instance of the <see cref="T:log4net.Util.NativeError"/> class with the specified
+ error number and message.
+ </summary>
+ <param name="number">The number of the native error.</param>
+ <param name="message">The message of the native error.</param>
+ <remarks>
+ <para>
+ Create an instance of the <see cref="T:log4net.Util.NativeError"/> class with the specified
+ error number and message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NativeError.GetLastError">
+ <summary>
+ Create a new instance of the <see cref="T:log4net.Util.NativeError"/> class for the last Windows error.
+ </summary>
+ <returns>
+ An instance of the <see cref="T:log4net.Util.NativeError"/> class for the last windows error.
+ </returns>
+ <remarks>
+ <para>
+ The message for the <see cref="M:System.Runtime.InteropServices.Marshal.GetLastWin32Error"/> error number is lookup up using the
+ native Win32 <c>FormatMessage</c> function.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NativeError.GetError(System.Int32)">
+ <summary>
+ Create a new instance of the <see cref="T:log4net.Util.NativeError"/> class.
+ </summary>
+ <param name="number">the error number for the native error</param>
+ <returns>
+ An instance of the <see cref="T:log4net.Util.NativeError"/> class for the specified
+ error number.
+ </returns>
+ <remarks>
+ <para>
+ The message for the specified error number is lookup up using the
+ native Win32 <c>FormatMessage</c> function.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NativeError.GetErrorMessage(System.Int32)">
+ <summary>
+ Retrieves the message corresponding with a Win32 message identifier.
+ </summary>
+ <param name="messageId">Message identifier for the requested message.</param>
+ <returns>
+ The message corresponding with the specified message identifier.
+ </returns>
+ <remarks>
+ <para>
+ The message will be searched for in system message-table resource(s)
+ using the native <c>FormatMessage</c> function.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NativeError.ToString">
+ <summary>
+ Return error information string
+ </summary>
+ <returns>error information string</returns>
+ <remarks>
+ <para>
+ Return error information string
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NativeError.FormatMessage(System.Int32,System.IntPtr@,System.Int32,System.Int32,System.String@,System.Int32,System.IntPtr)">
+ <summary>
+ Formats a message string.
+ </summary>
+ <param name="dwFlags">Formatting options, and how to interpret the <paramref name="lpSource" /> parameter.</param>
+ <param name="lpSource">Location of the message definition.</param>
+ <param name="dwMessageId">Message identifier for the requested message.</param>
+ <param name="dwLanguageId">Language identifier for the requested message.</param>
+ <param name="lpBuffer">If <paramref name="dwFlags" /> includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the <c>LocalAlloc</c> function, and places the pointer to the buffer at the address specified in <paramref name="lpBuffer" />.</param>
+ <param name="nSize">If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer.</param>
+ <param name="Arguments">Pointer to an array of values that are used as insert values in the formatted message.</param>
+ <remarks>
+ <para>
+ The function requires a message definition as input. The message definition can come from a
+ buffer passed into the function. It can come from a message table resource in an
+ already-loaded module. Or the caller can ask the function to search the system's message
+ table resource(s) for the message definition. The function finds the message definition
+ in a message table resource based on a message identifier and a language identifier.
+ The function copies the formatted message text to an output buffer, processing any embedded
+ insert sequences if requested.
+ </para>
+ <para>
+ To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message.
+ </para>
+ </remarks>
+ <returns>
+ <para>
+ If the function succeeds, the return value is the number of TCHARs stored in the output
+ buffer, excluding the terminating null character.
+ </para>
+ <para>
+ If the function fails, the return value is zero. To get extended error information,
+ call <see cref="M:Marshal.GetLastWin32Error()" />.
+ </para>
+ </returns>
+ </member>
+ <member name="P:log4net.Util.NativeError.Number">
+ <summary>
+ Gets the number of the native error.
+ </summary>
+ <value>
+ The number of the native error.
+ </value>
+ <remarks>
+ <para>
+ Gets the number of the native error.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.NativeError.Message">
+ <summary>
+ Gets the message of the native error.
+ </summary>
+ <value>
+ The message of the native error.
+ </value>
+ <remarks>
+ <para>
+ </para>
+ Gets the message of the native error.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.NullDictionaryEnumerator">
+ <summary>
+ An always empty <see cref="T:System.Collections.IDictionaryEnumerator"/>.
+ </summary>
+ <remarks>
+ <para>
+ A singleton implementation of the <see cref="T:System.Collections.IDictionaryEnumerator"/> over a collection
+ that is empty and not modifiable.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.NullDictionaryEnumerator.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to enforce the singleton pattern.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NullDictionaryEnumerator.MoveNext">
+ <summary>
+ Test if the enumerator can advance, if so advance.
+ </summary>
+ <returns><c>false</c> as the <see cref="T:log4net.Util.NullDictionaryEnumerator"/> cannot advance.</returns>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ value cannot be moved over a valid position, therefore <see cref="M:log4net.Util.NullDictionaryEnumerator.MoveNext"/>
+ will always return <c>false</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NullDictionaryEnumerator.Reset">
+ <summary>
+ Resets the enumerator back to the start.
+ </summary>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection <see cref="M:log4net.Util.NullDictionaryEnumerator.Reset"/> does nothing.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.NullDictionaryEnumerator.s_instance">
+ <summary>
+ The singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.NullDictionaryEnumerator.Instance">
+ <summary>
+ Gets the singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>.
+ </summary>
+ <returns>The singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>.</returns>
+ <remarks>
+ <para>
+ Gets the singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.NullDictionaryEnumerator.Current">
+ <summary>
+ Gets the current object from the enumerator.
+ </summary>
+ <remarks>
+ Throws an <see cref="T:System.InvalidOperationException"/> because the
+ <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current value.
+ </remarks>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ will throw an <see cref="T:System.InvalidOperationException"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ cannot be positioned over a valid location.</exception>
+ </member>
+ <member name="P:log4net.Util.NullDictionaryEnumerator.Key">
+ <summary>
+ Gets the current key from the enumerator.
+ </summary>
+ <remarks>
+ Throws an exception because the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>
+ never has a current value.
+ </remarks>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Key"/>
+ will throw an <see cref="T:System.InvalidOperationException"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ cannot be positioned over a valid location.</exception>
+ </member>
+ <member name="P:log4net.Util.NullDictionaryEnumerator.Value">
+ <summary>
+ Gets the current value from the enumerator.
+ </summary>
+ <value>The current value from the enumerator.</value>
+ <remarks>
+ Throws an <see cref="T:System.InvalidOperationException"/> because the
+ <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current value.
+ </remarks>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Value"/>
+ will throw an <see cref="T:System.InvalidOperationException"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ cannot be positioned over a valid location.</exception>
+ </member>
+ <member name="P:log4net.Util.NullDictionaryEnumerator.Entry">
+ <summary>
+ Gets the current entry from the enumerator.
+ </summary>
+ <remarks>
+ Throws an <see cref="T:System.InvalidOperationException"/> because the
+ <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current entry.
+ </remarks>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Entry"/>
+ will throw an <see cref="T:System.InvalidOperationException"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/>
+ cannot be positioned over a valid location.</exception>
+ </member>
+ <member name="T:log4net.Util.NullEnumerator">
+ <summary>
+ An always empty <see cref="T:System.Collections.IEnumerator"/>.
+ </summary>
+ <remarks>
+ <para>
+ A singleton implementation of the <see cref="T:System.Collections.IEnumerator"/> over a collection
+ that is empty and not modifiable.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.NullEnumerator.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.NullEnumerator"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to enforce the singleton pattern.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NullEnumerator.MoveNext">
+ <summary>
+ Test if the enumerator can advance, if so advance
+ </summary>
+ <returns><c>false</c> as the <see cref="T:log4net.Util.NullEnumerator"/> cannot advance.</returns>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullEnumerator.Current"/>
+ value cannot be moved over a valid position, therefore <see cref="M:log4net.Util.NullEnumerator.MoveNext"/>
+ will always return <c>false</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NullEnumerator.Reset">
+ <summary>
+ Resets the enumerator back to the start.
+ </summary>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection <see cref="M:log4net.Util.NullEnumerator.Reset"/> does nothing.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.NullEnumerator.s_instance">
+ <summary>
+ The singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.NullEnumerator.Instance">
+ <summary>
+ Get the singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>.
+ </summary>
+ <returns>The singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>.</returns>
+ <remarks>
+ <para>
+ Gets the singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.NullEnumerator.Current">
+ <summary>
+ Gets the current object from the enumerator.
+ </summary>
+ <remarks>
+ Throws an <see cref="T:System.InvalidOperationException"/> because the
+ <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current value.
+ </remarks>
+ <remarks>
+ <para>
+ As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullEnumerator.Current"/>
+ value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullEnumerator.Current"/>
+ will throw an <see cref="T:System.InvalidOperationException"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullEnumerator.Current"/>
+ cannot be positioned over a valid location.</exception>
+ </member>
+ <member name="T:log4net.Util.NullSecurityContext">
+ <summary>
+ A SecurityContext used when a SecurityContext is not required
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Util.NullSecurityContext"/> is a no-op implementation of the
+ <see cref="T:log4net.Core.SecurityContext"/> base class. It is used where a <see cref="T:log4net.Core.SecurityContext"/>
+ is required but one has not been provided.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.NullSecurityContext.Instance">
+ <summary>
+ Singleton instance of <see cref="T:log4net.Util.NullSecurityContext"/>
+ </summary>
+ <remarks>
+ <para>
+ Singleton instance of <see cref="T:log4net.Util.NullSecurityContext"/>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NullSecurityContext.#ctor">
+ <summary>
+ Private constructor
+ </summary>
+ <remarks>
+ <para>
+ Private constructor for singleton pattern.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.NullSecurityContext.Impersonate(System.Object)">
+ <summary>
+ Impersonate this SecurityContext
+ </summary>
+ <param name="state">State supplied by the caller</param>
+ <returns><c>null</c></returns>
+ <remarks>
+ <para>
+ No impersonation is done and <c>null</c> is always returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.OnlyOnceErrorHandler">
+ <summary>
+ Implements log4net's default error handling policy which consists
+ of emitting a message for the first error in an appender and
+ ignoring all subsequent errors.
+ </summary>
+ <remarks>
+ <para>
+ The error message is processed using the LogLog sub-system by default.
+ </para>
+ <para>
+ This policy aims at protecting an otherwise working application
+ from being flooded with error messages when logging fails.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Util.OnlyOnceErrorHandler.#ctor">
+ <summary>
+ Default Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.OnlyOnceErrorHandler"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OnlyOnceErrorHandler.#ctor(System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="prefix">The prefix to use for each message.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.OnlyOnceErrorHandler"/> class
+ with the specified prefix.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OnlyOnceErrorHandler.Reset">
+ <summary>
+ Reset the error handler back to its initial disabled state.
+ </summary>
+ </member>
+ <member name="M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)">
+ <summary>
+ Log an Error
+ </summary>
+ <param name="message">The error message.</param>
+ <param name="e">The exception.</param>
+ <param name="errorCode">The internal error code.</param>
+ <remarks>
+ <para>
+ Invokes <see cref="M:log4net.Util.OnlyOnceErrorHandler.FirstError(System.String,System.Exception,log4net.Core.ErrorCode)"/> if and only if this is the first error or the first error after <see cref="M:log4net.Util.OnlyOnceErrorHandler.Reset"/> has been called.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OnlyOnceErrorHandler.FirstError(System.String,System.Exception,log4net.Core.ErrorCode)">
+ <summary>
+ Log the very first error
+ </summary>
+ <param name="message">The error message.</param>
+ <param name="e">The exception.</param>
+ <param name="errorCode">The internal error code.</param>
+ <remarks>
+ <para>
+ Sends the error information to <see cref="T:log4net.Util.LogLog"/>'s Error method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception)">
+ <summary>
+ Log an Error
+ </summary>
+ <param name="message">The error message.</param>
+ <param name="e">The exception.</param>
+ <remarks>
+ <para>
+ Invokes <see cref="M:log4net.Util.OnlyOnceErrorHandler.FirstError(System.String,System.Exception,log4net.Core.ErrorCode)"/> if and only if this is the first error or the first error after <see cref="M:log4net.Util.OnlyOnceErrorHandler.Reset"/> has been called.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OnlyOnceErrorHandler.Error(System.String)">
+ <summary>
+ Log an error
+ </summary>
+ <param name="message">The error message.</param>
+ <remarks>
+ <para>
+ Invokes <see cref="M:log4net.Util.OnlyOnceErrorHandler.FirstError(System.String,System.Exception,log4net.Core.ErrorCode)"/> if and only if this is the first error or the first error after <see cref="M:log4net.Util.OnlyOnceErrorHandler.Reset"/> has been called.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.OnlyOnceErrorHandler.m_enabledDate">
+ <summary>
+ The date the error was recorded.
+ </summary>
+ </member>
+ <member name="F:log4net.Util.OnlyOnceErrorHandler.m_firstTime">
+ <summary>
+ Flag to indicate if it is the first error
+ </summary>
+ </member>
+ <member name="F:log4net.Util.OnlyOnceErrorHandler.m_message">
+ <summary>
+ The message recorded during the first error.
+ </summary>
+ </member>
+ <member name="F:log4net.Util.OnlyOnceErrorHandler.m_exception">
+ <summary>
+ The exception recorded during the first error.
+ </summary>
+ </member>
+ <member name="F:log4net.Util.OnlyOnceErrorHandler.m_errorCode">
+ <summary>
+ The error code recorded during the first error.
+ </summary>
+ </member>
+ <member name="F:log4net.Util.OnlyOnceErrorHandler.m_prefix">
+ <summary>
+ String to prefix each message with
+ </summary>
+ </member>
+ <member name="F:log4net.Util.OnlyOnceErrorHandler.declaringType">
+ <summary>
+ The fully qualified type of the OnlyOnceErrorHandler class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.OnlyOnceErrorHandler.IsEnabled">
+ <summary>
+ Is error logging enabled
+ </summary>
+ <remarks>
+ <para>
+ Is error logging enabled. Logging is only enabled for the
+ first error delivered to the <see cref="T:log4net.Util.OnlyOnceErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.OnlyOnceErrorHandler.EnabledDate">
+ <summary>
+ The date the first error that trigged this error handler occured.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.OnlyOnceErrorHandler.ErrorMessage">
+ <summary>
+ The message from the first error that trigged this error handler.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.OnlyOnceErrorHandler.Exception">
+ <summary>
+ The exception from the first error that trigged this error handler.
+ </summary>
+ <remarks>
+ May be <see langword="null" />.
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.OnlyOnceErrorHandler.ErrorCode">
+ <summary>
+ The error code from the first error that trigged this error handler.
+ </summary>
+ <remarks>
+ Defaults to <see cref="F:log4net.Core.ErrorCode.GenericFailure"/>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.OptionConverter">
+ <summary>
+ A convenience class to convert property values to specific types.
+ </summary>
+ <remarks>
+ <para>
+ Utility functions for converting types and parsing values.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.OptionConverter"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to prevent instantiation of this class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.ToBoolean(System.String,System.Boolean)">
+ <summary>
+ Converts a string to a <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="argValue">String to convert.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns>The <see cref="T:System.Boolean"/> value of <paramref name="argValue"/>.</returns>
+ <remarks>
+ <para>
+ If <paramref name="argValue"/> is "true", then <c>true</c> is returned.
+ If <paramref name="argValue"/> is "false", then <c>false</c> is returned.
+ Otherwise, <paramref name="defaultValue"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.ToFileSize(System.String,System.Int64)">
+ <summary>
+ Parses a file size into a number.
+ </summary>
+ <param name="argValue">String to parse.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns>The <see cref="T:System.Int64"/> value of <paramref name="argValue"/>.</returns>
+ <remarks>
+ <para>
+ Parses a file size of the form: number[KB|MB|GB] into a
+ long value. It is scaled with the appropriate multiplier.
+ </para>
+ <para>
+ <paramref name="defaultValue"/> is returned when <paramref name="argValue"/>
+ cannot be converted to a <see cref="T:System.Int64"/> value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.ConvertStringTo(System.Type,System.String)">
+ <summary>
+ Converts a string to an object.
+ </summary>
+ <param name="target">The target type to convert to.</param>
+ <param name="txt">The string to convert to an object.</param>
+ <returns>
+ The object converted from a string or <c>null</c> when the
+ conversion failed.
+ </returns>
+ <remarks>
+ <para>
+ Converts a string to an object. Uses the converter registry to try
+ to convert the string value into the specified target type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.CanConvertTypeTo(System.Type,System.Type)">
+ <summary>
+ Checks if there is an appropriate type conversion from the source type to the target type.
+ </summary>
+ <param name="sourceType">The type to convert from.</param>
+ <param name="targetType">The type to convert to.</param>
+ <returns><c>true</c> if there is a conversion from the source type to the target type.</returns>
+ <remarks>
+ Checks if there is an appropriate type conversion from the source type to the target type.
+ <para>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.ConvertTypeTo(System.Object,System.Type)">
+ <summary>
+ Converts an object to the target type.
+ </summary>
+ <param name="sourceInstance">The object to convert to the target type.</param>
+ <param name="targetType">The type to convert to.</param>
+ <returns>The converted object.</returns>
+ <remarks>
+ <para>
+ Converts an object to the target type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.InstantiateByClassName(System.String,System.Type,System.Object)">
+ <summary>
+ Instantiates an object given a class name.
+ </summary>
+ <param name="className">The fully qualified class name of the object to instantiate.</param>
+ <param name="superClass">The class to which the new object should belong.</param>
+ <param name="defaultValue">The object to return in case of non-fulfillment.</param>
+ <returns>
+ An instance of the <paramref name="className"/> or <paramref name="defaultValue"/>
+ if the object could not be instantiated.
+ </returns>
+ <remarks>
+ <para>
+ Checks that the <paramref name="className"/> is a subclass of
+ <paramref name="superClass"/>. If that test fails or the object could
+ not be instantiated, then <paramref name="defaultValue"/> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.SubstituteVariables(System.String,System.Collections.IDictionary)">
+ <summary>
+ Performs variable substitution in string <paramref name="value"/> from the
+ values of keys found in <paramref name="props"/>.
+ </summary>
+ <param name="value">The string on which variable substitution is performed.</param>
+ <param name="props">The dictionary to use to lookup variables.</param>
+ <returns>The result of the substitutions.</returns>
+ <remarks>
+ <para>
+ The variable substitution delimiters are <b>${</b> and <b>}</b>.
+ </para>
+ <para>
+ For example, if props contains <c>key=value</c>, then the call
+ </para>
+ <para>
+ <code lang="C#">
+ string s = OptionConverter.SubstituteVariables("Value of key is ${key}.");
+ </code>
+ </para>
+ <para>
+ will set the variable <c>s</c> to "Value of key is value.".
+ </para>
+ <para>
+ If no value could be found for the specified key, then substitution
+ defaults to an empty string.
+ </para>
+ <para>
+ For example, if system properties contains no value for the key
+ "nonExistentKey", then the call
+ </para>
+ <para>
+ <code lang="C#">
+ string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]");
+ </code>
+ </para>
+ <para>
+ will set <s>s</s> to "Value of nonExistentKey is []".
+ </para>
+ <para>
+ An Exception is thrown if <paramref name="value"/> contains a start
+ delimiter "${" which is not balanced by a stop delimiter "}".
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.OptionConverter.ParseEnum(System.Type,System.String,System.Boolean)">
+ <summary>
+ Converts the string representation of the name or numeric value of one or
+ more enumerated constants to an equivalent enumerated object.
+ </summary>
+ <param name="enumType">The type to convert to.</param>
+ <param name="value">The enum string value.</param>
+ <param name="ignoreCase">If <c>true</c>, ignore case; otherwise, regard case.</param>
+ <returns>An object of type <paramref name="enumType" /> whose value is represented by <paramref name="value" />.</returns>
+ </member>
+ <member name="F:log4net.Util.OptionConverter.declaringType">
+ <summary>
+ The fully qualified type of the OptionConverter class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternParser">
+ <summary>
+ Most of the work of the <see cref="T:log4net.Layout.PatternLayout"/> class
+ is delegated to the PatternParser class.
+ </summary>
+ <remarks>
+ <para>
+ The <c>PatternParser</c> processes a pattern string and
+ returns a chain of <see cref="T:log4net.Util.PatternConverter"/> objects.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.PatternParser.#ctor(System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="pattern">The pattern to parse.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.PatternParser"/> class
+ with the specified pattern string.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternParser.Parse">
+ <summary>
+ Parses the pattern into a chain of pattern converters.
+ </summary>
+ <returns>The head of a chain of pattern converters.</returns>
+ <remarks>
+ <para>
+ Parses the pattern into a chain of pattern converters.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternParser.BuildCache">
+ <summary>
+ Build the unified cache of converters from the static and instance maps
+ </summary>
+ <returns>the list of all the converter names</returns>
+ <remarks>
+ <para>
+ Build the unified cache of converters from the static and instance maps
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternParser.ParseInternal(System.String,System.String[])">
+ <summary>
+ Internal method to parse the specified pattern to find specified matches
+ </summary>
+ <param name="pattern">the pattern to parse</param>
+ <param name="matches">the converter names to match in the pattern</param>
+ <remarks>
+ <para>
+ The matches param must be sorted such that longer strings come before shorter ones.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternParser.ProcessLiteral(System.String)">
+ <summary>
+ Process a parsed literal
+ </summary>
+ <param name="text">the literal text</param>
+ </member>
+ <member name="M:log4net.Util.PatternParser.ProcessConverter(System.String,System.String,log4net.Util.FormattingInfo)">
+ <summary>
+ Process a parsed converter pattern
+ </summary>
+ <param name="converterName">the name of the converter</param>
+ <param name="option">the optional option for the converter</param>
+ <param name="formattingInfo">the formatting info for the converter</param>
+ </member>
+ <member name="M:log4net.Util.PatternParser.AddConverter(log4net.Util.PatternConverter)">
+ <summary>
+ Resets the internal state of the parser and adds the specified pattern converter
+ to the chain.
+ </summary>
+ <param name="pc">The pattern converter to add.</param>
+ </member>
+ <member name="F:log4net.Util.PatternParser.m_head">
+ <summary>
+ The first pattern converter in the chain
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternParser.m_tail">
+ <summary>
+ the last pattern converter in the chain
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternParser.m_pattern">
+ <summary>
+ The pattern
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternParser.m_patternConverters">
+ <summary>
+ Internal map of converter identifiers to converter types
+ </summary>
+ <remarks>
+ <para>
+ This map overrides the static s_globalRulesRegistry map.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.PatternParser.declaringType">
+ <summary>
+ The fully qualified type of the PatternParser class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PatternParser.PatternConverters">
+ <summary>
+ Get the converter registry used by this parser
+ </summary>
+ <value>
+ The converter registry used by this parser
+ </value>
+ <remarks>
+ <para>
+ Get the converter registry used by this parser
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternParser.StringLengthComparer">
+ <summary>
+ Sort strings by length
+ </summary>
+ <remarks>
+ <para>
+ <see cref="T:System.Collections.IComparer"/> that orders strings by string length.
+ The longest strings are placed first
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PatternString">
+ <summary>
+ This class implements a patterned string.
+ </summary>
+ <remarks>
+ <para>
+ This string has embedded patterns that are resolved and expanded
+ when the string is formatted.
+ </para>
+ <para>
+ This class functions similarly to the <see cref="T:log4net.Layout.PatternLayout"/>
+ in that it accepts a pattern and renders it to a string. Unlike the
+ <see cref="T:log4net.Layout.PatternLayout"/> however the <c>PatternString</c>
+ does not render the properties of a specific <see cref="T:log4net.Core.LoggingEvent"/> but
+ of the process in general.
+ </para>
+ <para>
+ The recognized conversion pattern names are:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Conversion Pattern Name</term>
+ <description>Effect</description>
+ </listheader>
+ <item>
+ <term>appdomain</term>
+ <description>
+ <para>
+ Used to output the friendly name of the current AppDomain.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>date</term>
+ <description>
+ <para>
+ Used to output the current date and time in the local time zone.
+ To output the date in universal time use the <c>%utcdate</c> pattern.
+ The date conversion
+ specifier may be followed by a <i>date format specifier</i> enclosed
+ between braces. For example, <b>%date{HH:mm:ss,fff}</b> or
+ <b>%date{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is
+ given then ISO8601 format is
+ assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>).
+ </para>
+ <para>
+ The date format specifier admits the same syntax as the
+ time pattern string of the <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ <para>
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>,
+ <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively
+ <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example,
+ <b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.
+ </para>
+ <para>
+ These dedicated date formatters perform significantly
+ better than <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>env</term>
+ <description>
+ <para>
+ Used to output the a specific environment variable. The key to
+ lookup must be specified within braces and directly following the
+ pattern specifier, e.g. <b>%env{COMPUTERNAME}</b> would include the value
+ of the <c>COMPUTERNAME</c> environment variable.
+ </para>
+ <para>
+ The <c>env</c> pattern is not supported on the .NET Compact Framework.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>identity</term>
+ <description>
+ <para>
+ Used to output the user name for the currently active user
+ (Principal.Identity.Name).
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>newline</term>
+ <description>
+ <para>
+ Outputs the platform dependent line separator character or
+ characters.
+ </para>
+ <para>
+ This conversion pattern name offers the same performance as using
+ non-portable line separator strings such as "\n", or "\r\n".
+ Thus, it is the preferred way of specifying a line separator.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>processid</term>
+ <description>
+ <para>
+ Used to output the system process ID for the current process.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>property</term>
+ <description>
+ <para>
+ Used to output a specific context property. The key to
+ lookup must be specified within braces and directly following the
+ pattern specifier, e.g. <b>%property{user}</b> would include the value
+ from the property that is keyed by the string 'user'. Each property value
+ that is to be included in the log must be specified separately.
+ Properties are stored in logging contexts. By default
+ the <c>log4net:HostName</c> property is set to the name of machine on
+ which the event was originally logged.
+ </para>
+ <para>
+ If no key is specified, e.g. <b>%property</b> then all the keys and their
+ values are printed in a comma separated list.
+ </para>
+ <para>
+ The properties of an event are combined from a number of different
+ contexts. These are listed below in the order in which they are searched.
+ </para>
+ <list type="definition">
+ <item>
+ <term>the thread properties</term>
+ <description>
+ The <see cref="P:log4net.ThreadContext.Properties"/> that are set on the current
+ thread. These properties are shared by all events logged on this thread.
+ </description>
+ </item>
+ <item>
+ <term>the global properties</term>
+ <description>
+ The <see cref="P:log4net.GlobalContext.Properties"/> that are set globally. These
+ properties are shared by all the threads in the AppDomain.
+ </description>
+ </item>
+ </list>
+ </description>
+ </item>
+ <item>
+ <term>random</term>
+ <description>
+ <para>
+ Used to output a random string of characters. The string is made up of
+ uppercase letters and numbers. By default the string is 4 characters long.
+ The length of the string can be specified within braces directly following the
+ pattern specifier, e.g. <b>%random{8}</b> would output an 8 character string.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>username</term>
+ <description>
+ <para>
+ Used to output the WindowsIdentity for the currently
+ active user.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>utcdate</term>
+ <description>
+ <para>
+ Used to output the date of the logging event in universal time.
+ The date conversion
+ specifier may be followed by a <i>date format specifier</i> enclosed
+ between braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or
+ <b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is
+ given then ISO8601 format is
+ assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>).
+ </para>
+ <para>
+ The date format specifier admits the same syntax as the
+ time pattern string of the <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ <para>
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>,
+ <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively
+ <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example,
+ <b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.
+ </para>
+ <para>
+ These dedicated date formatters perform significantly
+ better than <see cref="M:DateTime.ToString(string)"/>.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>%</term>
+ <description>
+ <para>
+ The sequence %% outputs a single percent sign.
+ </para>
+ </description>
+ </item>
+ </list>
+ <para>
+ Additional pattern converters may be registered with a specific <see cref="T:log4net.Util.PatternString"/>
+ instance using <see cref="M:AddConverter(ConverterInfo)"/> or
+ <see cref="M:AddConverter(string, Type)"/>.
+ </para>
+ <para>
+ See the <see cref="T:log4net.Layout.PatternLayout"/> for details on the
+ <i>format modifiers</i> supported by the patterns.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.PatternString.s_globalRulesRegistry">
+ <summary>
+ Internal map of converter identifiers to converter types.
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternString.m_pattern">
+ <summary>
+ the pattern
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternString.m_head">
+ <summary>
+ the head of the pattern converter chain
+ </summary>
+ </member>
+ <member name="F:log4net.Util.PatternString.m_instanceRulesRegistry">
+ <summary>
+ patterns defined on this PatternString only
+ </summary>
+ </member>
+ <member name="M:log4net.Util.PatternString.#cctor">
+ <summary>
+ Initialize the global registry
+ </summary>
+ </member>
+ <member name="M:log4net.Util.PatternString.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Initialize a new instance of <see cref="T:log4net.Util.PatternString"/>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternString.#ctor(System.String)">
+ <summary>
+ Constructs a PatternString
+ </summary>
+ <param name="pattern">The pattern to use with this PatternString</param>
+ <remarks>
+ <para>
+ Initialize a new instance of <see cref="T:log4net.Util.PatternString"/> with the pattern specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternString.ActivateOptions">
+ <summary>
+ Initialize object options
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Util.PatternString.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Util.PatternString.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Util.PatternString.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternString.CreatePatternParser(System.String)">
+ <summary>
+ Create the <see cref="T:log4net.Util.PatternParser"/> used to parse the pattern
+ </summary>
+ <param name="pattern">the pattern to parse</param>
+ <returns>The <see cref="T:log4net.Util.PatternParser"/></returns>
+ <remarks>
+ <para>
+ Returns PatternParser used to parse the conversion string. Subclasses
+ may override this to return a subclass of PatternParser which recognize
+ custom conversion pattern name.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternString.Format(System.IO.TextWriter)">
+ <summary>
+ Produces a formatted string as specified by the conversion pattern.
+ </summary>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <remarks>
+ <para>
+ Format the pattern to the <paramref name="writer"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternString.Format">
+ <summary>
+ Format the pattern as a string
+ </summary>
+ <returns>the pattern formatted as a string</returns>
+ <remarks>
+ <para>
+ Format the pattern to a string.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)">
+ <summary>
+ Add a converter to this PatternString
+ </summary>
+ <param name="converterInfo">the converter info</param>
+ <remarks>
+ <para>
+ This version of the method is used by the configurator.
+ Programmatic users should use the alternative <see cref="M:AddConverter(string,Type)"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PatternString.AddConverter(System.String,System.Type)">
+ <summary>
+ Add a converter to this PatternString
+ </summary>
+ <param name="name">the name of the conversion pattern for this converter</param>
+ <param name="type">the type of the converter</param>
+ <remarks>
+ <para>
+ Add a converter to this PatternString
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PatternString.ConversionPattern">
+ <summary>
+ Gets or sets the pattern formatting string
+ </summary>
+ <value>
+ The pattern formatting string
+ </value>
+ <remarks>
+ <para>
+ The <b>ConversionPattern</b> option. This is the string which
+ controls formatting and consists of a mix of literal content and
+ conversion specifiers.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.PropertiesDictionary">
+ <summary>
+ String keyed object map.
+ </summary>
+ <remarks>
+ <para>
+ While this collection is serializable only member
+ objects that are serializable will
+ be serialized along with this collection.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Util.ReadOnlyPropertiesDictionary">
+ <summary>
+ String keyed object map that is read only.
+ </summary>
+ <remarks>
+ <para>
+ This collection is readonly and cannot be modified.
+ </para>
+ <para>
+ While this collection is serializable only member
+ objects that are serializable will
+ be serialized along with this collection.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Util.ReadOnlyPropertiesDictionary.m_hashtable">
+ <summary>
+ The Hashtable used to store the properties data
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ReadOnlyPropertiesDictionary"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)">
+ <summary>
+ Copy Constructor
+ </summary>
+ <param name="propertiesDictionary">properties to copy</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ReadOnlyPropertiesDictionary"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Deserialization constructor
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ReadOnlyPropertiesDictionary"/> class
+ with serialized data.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.GetKeys">
+ <summary>
+ Gets the key names.
+ </summary>
+ <returns>An array of all the keys.</returns>
+ <remarks>
+ <para>
+ Gets the key names.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.Contains(System.String)">
+ <summary>
+ Test if the dictionary contains a specified key
+ </summary>
+ <param name="key">the key to look for</param>
+ <returns>true if the dictionary contains the specified key</returns>
+ <remarks>
+ <para>
+ Test if the dictionary contains a specified key
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
+ <param name="context">The destination for this serialization.</param>
+ <remarks>
+ <para>
+ Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#GetEnumerator">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.GetEnumerator"/>
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.Remove(System.Object)"/>
+ </summary>
+ <param name="key"></param>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.Contains(System.Object)"/>
+ </summary>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.Clear">
+ <summary>
+ Remove all properties from the properties collection
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.Add(System.Object,System.Object)"/>
+ </summary>
+ <param name="key"></param>
+ <param name="value"></param>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)">
+ <summary>
+ See <see cref="M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)"/>
+ </summary>
+ <param name="array"></param>
+ <param name="index"></param>
+ </member>
+ <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ See <see cref="M:System.Collections.IEnumerable.GetEnumerator"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.Item(System.String)">
+ <summary>
+ Gets or sets the value of the property with the specified key.
+ </summary>
+ <value>
+ The value of the property with the specified key.
+ </value>
+ <param name="key">The key of the property to get or set.</param>
+ <remarks>
+ <para>
+ The property value will only be serialized if it is serializable.
+ If it cannot be serialized it will be silently ignored if
+ a serialization operation is performed.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable">
+ <summary>
+ The hashtable used to store the properties
+ </summary>
+ <value>
+ The internal collection used to store the properties
+ </value>
+ <remarks>
+ <para>
+ The hashtable used to store the properties
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsReadOnly">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.IsReadOnly"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Item(System.Object)">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.Item(System.Object)"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Values">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.Values"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Keys">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.Keys"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsFixedSize">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.IsFixedSize"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#IsSynchronized">
+ <summary>
+ See <see cref="P:System.Collections.ICollection.IsSynchronized"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.Count">
+ <summary>
+ The number of properties in this collection
+ </summary>
+ </member>
+ <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#SyncRoot">
+ <summary>
+ See <see cref="P:System.Collections.ICollection.SyncRoot"/>
+ </summary>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.PropertiesDictionary"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="propertiesDictionary">properties to copy</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.PropertiesDictionary"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.PropertiesDictionary"/> class
+ with serialized data.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ <remarks>
+ <para>
+ Because this class is sealed the serialization constructor is private.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.Remove(System.String)">
+ <summary>
+ Remove the entry with the specified key from this dictionary
+ </summary>
+ <param name="key">the key for the entry to remove</param>
+ <remarks>
+ <para>
+ Remove the entry with the specified key from this dictionary
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#GetEnumerator">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.GetEnumerator"/>
+ </summary>
+ <returns>an enumerator</returns>
+ <remarks>
+ <para>
+ Returns a <see cref="T:System.Collections.IDictionaryEnumerator"/> over the contest of this collection.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.Remove(System.Object)"/>
+ </summary>
+ <param name="key">the key to remove</param>
+ <remarks>
+ <para>
+ Remove the entry with the specified key from this dictionary
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.Contains(System.Object)"/>
+ </summary>
+ <param name="key">the key to lookup in the collection</param>
+ <returns><c>true</c> if the collection contains the specified key</returns>
+ <remarks>
+ <para>
+ Test if this collection contains a specified key.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.Clear">
+ <summary>
+ Remove all properties from the properties collection
+ </summary>
+ <remarks>
+ <para>
+ Remove all properties from the properties collection
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)">
+ <summary>
+ See <see cref="M:System.Collections.IDictionary.Add(System.Object,System.Object)"/>
+ </summary>
+ <param name="key">the key</param>
+ <param name="value">the value to store for the key</param>
+ <remarks>
+ <para>
+ Store a value for the specified <see cref="T:System.String"/> <paramref name="key"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentException">Thrown if the <paramref name="key"/> is not a string</exception>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)">
+ <summary>
+ See <see cref="M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)"/>
+ </summary>
+ <param name="array"></param>
+ <param name="index"></param>
+ </member>
+ <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ See <see cref="M:System.Collections.IEnumerable.GetEnumerator"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.Item(System.String)">
+ <summary>
+ Gets or sets the value of the property with the specified key.
+ </summary>
+ <value>
+ The value of the property with the specified key.
+ </value>
+ <param name="key">The key of the property to get or set.</param>
+ <remarks>
+ <para>
+ The property value will only be serialized if it is serializable.
+ If it cannot be serialized it will be silently ignored if
+ a serialization operation is performed.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsReadOnly">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.IsReadOnly"/>
+ </summary>
+ <value>
+ <c>false</c>
+ </value>
+ <remarks>
+ <para>
+ This collection is modifiable. This property always
+ returns <c>false</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Item(System.Object)">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.Item(System.Object)"/>
+ </summary>
+ <value>
+ The value for the key specified.
+ </value>
+ <remarks>
+ <para>
+ Get or set a value for the specified <see cref="T:System.String"/> <paramref name="key"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentException">Thrown if the <paramref name="key"/> is not a string</exception>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Values">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.Values"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Keys">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.Keys"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsFixedSize">
+ <summary>
+ See <see cref="P:System.Collections.IDictionary.IsFixedSize"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#IsSynchronized">
+ <summary>
+ See <see cref="P:System.Collections.ICollection.IsSynchronized"/>
+ </summary>
+ </member>
+ <member name="P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#SyncRoot">
+ <summary>
+ See <see cref="P:System.Collections.ICollection.SyncRoot"/>
+ </summary>
+ </member>
+ <member name="T:log4net.Util.PropertyEntry">
+ <summary>
+ A class to hold the key and data for a property set in the config file
+ </summary>
+ <remarks>
+ <para>
+ A class to hold the key and data for a property set in the config file
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.PropertyEntry.ToString">
+ <summary>
+ Override <c>Object.ToString</c> to return sensible debug info
+ </summary>
+ <returns>string info about this object</returns>
+ </member>
+ <member name="P:log4net.Util.PropertyEntry.Key">
+ <summary>
+ Property Key
+ </summary>
+ <value>
+ Property Key
+ </value>
+ <remarks>
+ <para>
+ Property Key.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.PropertyEntry.Value">
+ <summary>
+ Property Value
+ </summary>
+ <value>
+ Property Value
+ </value>
+ <remarks>
+ <para>
+ Property Value.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ProtectCloseTextWriter">
+ <summary>
+ A <see cref="T:System.IO.TextWriter"/> that ignores the <see cref="M:log4net.Util.ProtectCloseTextWriter.Close"/> message
+ </summary>
+ <remarks>
+ <para>
+ This writer is used in special cases where it is necessary
+ to protect a writer from being closed by a client.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.ProtectCloseTextWriter.#ctor(System.IO.TextWriter)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="writer">the writer to actually write to</param>
+ <remarks>
+ <para>
+ Create a new ProtectCloseTextWriter using a writer
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ProtectCloseTextWriter.Attach(System.IO.TextWriter)">
+ <summary>
+ Attach this instance to a different underlying <see cref="T:System.IO.TextWriter"/>
+ </summary>
+ <param name="writer">the writer to attach to</param>
+ <remarks>
+ <para>
+ Attach this instance to a different underlying <see cref="T:System.IO.TextWriter"/>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ProtectCloseTextWriter.Close">
+ <summary>
+ Does not close the underlying output writer.
+ </summary>
+ <remarks>
+ <para>
+ Does not close the underlying output writer.
+ This method does nothing.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ReaderWriterLock">
+ <summary>
+ Defines a lock that supports single writers and multiple readers
+ </summary>
+ <remarks>
+ <para>
+ <c>ReaderWriterLock</c> is used to synchronize access to a resource.
+ At any given time, it allows either concurrent read access for
+ multiple threads, or write access for a single thread. In a
+ situation where a resource is changed infrequently, a
+ <c>ReaderWriterLock</c> provides better throughput than a simple
+ one-at-a-time lock, such as <see cref="T:System.Threading.Monitor"/>.
+ </para>
+ <para>
+ If a platform does not support a <c>System.Threading.ReaderWriterLock</c>
+ implementation then all readers and writers are serialized. Therefore
+ the caller must not rely on multiple simultaneous readers.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.ReaderWriterLock.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ReaderWriterLock"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReaderWriterLock.AcquireReaderLock">
+ <summary>
+ Acquires a reader lock
+ </summary>
+ <remarks>
+ <para>
+ <see cref="M:log4net.Util.ReaderWriterLock.AcquireReaderLock"/> blocks if a different thread has the writer
+ lock, or if at least one thread is waiting for the writer lock.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReaderWriterLock.ReleaseReaderLock">
+ <summary>
+ Decrements the lock count
+ </summary>
+ <remarks>
+ <para>
+ <see cref="M:log4net.Util.ReaderWriterLock.ReleaseReaderLock"/> decrements the lock count. When the count
+ reaches zero, the lock is released.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReaderWriterLock.AcquireWriterLock">
+ <summary>
+ Acquires the writer lock
+ </summary>
+ <remarks>
+ <para>
+ This method blocks if another thread has a reader lock or writer lock.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReaderWriterLock.ReleaseWriterLock">
+ <summary>
+ Decrements the lock count on the writer lock
+ </summary>
+ <remarks>
+ <para>
+ ReleaseWriterLock decrements the writer lock count.
+ When the count reaches zero, the writer lock is released.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ReusableStringWriter">
+ <summary>
+ A <see cref="T:System.IO.StringWriter"/> that can be <see cref="M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)"/> and reused
+ </summary>
+ <remarks>
+ <para>
+ A <see cref="T:System.IO.StringWriter"/> that can be <see cref="M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)"/> and reused.
+ This uses a single buffer for string operations.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.ReusableStringWriter.#ctor(System.IFormatProvider)">
+ <summary>
+ Create an instance of <see cref="T:log4net.Util.ReusableStringWriter"/>
+ </summary>
+ <param name="formatProvider">the format provider to use</param>
+ <remarks>
+ <para>
+ Create an instance of <see cref="T:log4net.Util.ReusableStringWriter"/>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReusableStringWriter.Dispose(System.Boolean)">
+ <summary>
+ Override Dispose to prevent closing of writer
+ </summary>
+ <param name="disposing">flag</param>
+ <remarks>
+ <para>
+ Override Dispose to prevent closing of writer
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)">
+ <summary>
+ Reset this string writer so that it can be reused.
+ </summary>
+ <param name="maxCapacity">the maximum buffer capacity before it is trimmed</param>
+ <param name="defaultSize">the default size to make the buffer</param>
+ <remarks>
+ <para>
+ Reset this string writer so that it can be reused.
+ The internal buffers are cleared and reset.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.SystemInfo">
+ <summary>
+ Utility class for system specific information.
+ </summary>
+ <remarks>
+ <para>
+ Utility class of static methods for system specific information.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Alexey Solofnenko</author>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.#ctor">
+ <summary>
+ Private constructor to prevent instances.
+ </summary>
+ <remarks>
+ <para>
+ Only static methods are exposed from this type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.#cctor">
+ <summary>
+ Initialize default values for private static fields.
+ </summary>
+ <remarks>
+ <para>
+ Only static methods are exposed from this type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.AssemblyLocationInfo(System.Reflection.Assembly)">
+ <summary>
+ Gets the assembly location path for the specified assembly.
+ </summary>
+ <param name="myAssembly">The assembly to get the location for.</param>
+ <returns>The location of the assembly.</returns>
+ <remarks>
+ <para>
+ This method does not guarantee to return the correct path
+ to the assembly. If only tries to give an indication as to
+ where the assembly was loaded from.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.AssemblyQualifiedName(System.Type)">
+ <summary>
+ Gets the fully qualified name of the <see cref="T:System.Type"/>, including
+ the name of the assembly from which the <see cref="T:System.Type"/> was
+ loaded.
+ </summary>
+ <param name="type">The <see cref="T:System.Type"/> to get the fully qualified name for.</param>
+ <returns>The fully qualified name for the <see cref="T:System.Type"/>.</returns>
+ <remarks>
+ <para>
+ This is equivalent to the <c>Type.AssemblyQualifiedName</c> property,
+ but this method works on the .NET Compact Framework 1.0 as well as
+ the full .NET runtime.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.AssemblyShortName(System.Reflection.Assembly)">
+ <summary>
+ Gets the short name of the <see cref="T:System.Reflection.Assembly"/>.
+ </summary>
+ <param name="myAssembly">The <see cref="T:System.Reflection.Assembly"/> to get the name for.</param>
+ <returns>The short name of the <see cref="T:System.Reflection.Assembly"/>.</returns>
+ <remarks>
+ <para>
+ The short name of the assembly is the <see cref="P:System.Reflection.Assembly.FullName"/>
+ without the version, culture, or public key. i.e. it is just the
+ assembly's file name without the extension.
+ </para>
+ <para>
+ Use this rather than <c>Assembly.GetName().Name</c> because that
+ is not available on the Compact Framework.
+ </para>
+ <para>
+ Because of a FileIOPermission security demand we cannot do
+ the obvious Assembly.GetName().Name. We are allowed to get
+ the <see cref="P:System.Reflection.Assembly.FullName"/> of the assembly so we
+ start from there and strip out just the assembly name.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.AssemblyFileName(System.Reflection.Assembly)">
+ <summary>
+ Gets the file name portion of the <see cref="T:System.Reflection.Assembly"/>, including the extension.
+ </summary>
+ <param name="myAssembly">The <see cref="T:System.Reflection.Assembly"/> to get the file name for.</param>
+ <returns>The file name of the assembly.</returns>
+ <remarks>
+ <para>
+ Gets the file name portion of the <see cref="T:System.Reflection.Assembly"/>, including the extension.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.GetTypeFromString(System.Type,System.String,System.Boolean,System.Boolean)">
+ <summary>
+ Loads the type specified in the type string.
+ </summary>
+ <param name="relativeType">A sibling type to use to load the type.</param>
+ <param name="typeName">The name of the type to load.</param>
+ <param name="throwOnError">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>
+ <param name="ignoreCase"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>
+ <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>
+ <remarks>
+ <para>
+ If the type name is fully qualified, i.e. if contains an assembly name in
+ the type name, the type will be loaded from the system using
+ <see cref="M:Type.GetType(string,bool)"/>.
+ </para>
+ <para>
+ If the type name is not fully qualified, it will be loaded from the assembly
+ containing the specified relative type. If the type is not found in the assembly
+ then all the loaded assemblies will be searched for the type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.GetTypeFromString(System.String,System.Boolean,System.Boolean)">
+ <summary>
+ Loads the type specified in the type string.
+ </summary>
+ <param name="typeName">The name of the type to load.</param>
+ <param name="throwOnError">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>
+ <param name="ignoreCase"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>
+ <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>
+ <remarks>
+ <para>
+ If the type name is fully qualified, i.e. if contains an assembly name in
+ the type name, the type will be loaded from the system using
+ <see cref="M:Type.GetType(string,bool)"/>.
+ </para>
+ <para>
+ If the type name is not fully qualified it will be loaded from the
+ assembly that is directly calling this method. If the type is not found
+ in the assembly then all the loaded assemblies will be searched for the type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.GetTypeFromString(System.Reflection.Assembly,System.String,System.Boolean,System.Boolean)">
+ <summary>
+ Loads the type specified in the type string.
+ </summary>
+ <param name="relativeAssembly">An assembly to load the type from.</param>
+ <param name="typeName">The name of the type to load.</param>
+ <param name="throwOnError">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>
+ <param name="ignoreCase"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>
+ <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>
+ <remarks>
+ <para>
+ If the type name is fully qualified, i.e. if contains an assembly name in
+ the type name, the type will be loaded from the system using
+ <see cref="M:Type.GetType(string,bool)"/>.
+ </para>
+ <para>
+ If the type name is not fully qualified it will be loaded from the specified
+ assembly. If the type is not found in the assembly then all the loaded assemblies
+ will be searched for the type.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.NewGuid">
+ <summary>
+ Generate a new guid
+ </summary>
+ <returns>A new Guid</returns>
+ <remarks>
+ <para>
+ Generate a new guid
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.CreateArgumentOutOfRangeException(System.String,System.Object,System.String)">
+ <summary>
+ Create an <see cref="T:System.ArgumentOutOfRangeException"/>
+ </summary>
+ <param name="parameterName">The name of the parameter that caused the exception</param>
+ <param name="actualValue">The value of the argument that causes this exception</param>
+ <param name="message">The message that describes the error</param>
+ <returns>the ArgumentOutOfRangeException object</returns>
+ <remarks>
+ <para>
+ Create a new instance of the <see cref="T:System.ArgumentOutOfRangeException"/> class
+ with a specified error message, the parameter name, and the value
+ of the argument.
+ </para>
+ <para>
+ The Compact Framework does not support the 3 parameter constructor for the
+ <see cref="T:System.ArgumentOutOfRangeException"/> type. This method provides an
+ implementation that works for all platforms.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.TryParse(System.String,System.Int32@)">
+ <summary>
+ Parse a string into an <see cref="T:System.Int32"/> value
+ </summary>
+ <param name="s">the string to parse</param>
+ <param name="val">out param where the parsed value is placed</param>
+ <returns><c>true</c> if the string was able to be parsed into an integer</returns>
+ <remarks>
+ <para>
+ Attempts to parse the string into an integer. If the string cannot
+ be parsed then this method returns <c>false</c>. The method does not throw an exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.TryParse(System.String,System.Int64@)">
+ <summary>
+ Parse a string into an <see cref="T:System.Int64"/> value
+ </summary>
+ <param name="s">the string to parse</param>
+ <param name="val">out param where the parsed value is placed</param>
+ <returns><c>true</c> if the string was able to be parsed into an integer</returns>
+ <remarks>
+ <para>
+ Attempts to parse the string into an integer. If the string cannot
+ be parsed then this method returns <c>false</c>. The method does not throw an exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.TryParse(System.String,System.Int16@)">
+ <summary>
+ Parse a string into an <see cref="T:System.Int16"/> value
+ </summary>
+ <param name="s">the string to parse</param>
+ <param name="val">out param where the parsed value is placed</param>
+ <returns><c>true</c> if the string was able to be parsed into an integer</returns>
+ <remarks>
+ <para>
+ Attempts to parse the string into an integer. If the string cannot
+ be parsed then this method returns <c>false</c>. The method does not throw an exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.GetAppSetting(System.String)">
+ <summary>
+ Lookup an application setting
+ </summary>
+ <param name="key">the application settings key to lookup</param>
+ <returns>the value for the key, or <c>null</c></returns>
+ <remarks>
+ <para>
+ Configuration APIs are not supported under the Compact Framework
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.ConvertToFullPath(System.String)">
+ <summary>
+ Convert a path into a fully qualified local file path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>The fully qualified path.</returns>
+ <remarks>
+ <para>
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+ </para>
+ <para>
+ The path specified must be a local file path, a URI is not supported.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemInfo.CreateCaseInsensitiveHashtable">
+ <summary>
+ Creates a new case-insensitive instance of the <see cref="T:System.Collections.Hashtable"/> class with the default initial capacity.
+ </summary>
+ <returns>A new case-insensitive instance of the <see cref="T:System.Collections.Hashtable"/> class with the default initial capacity</returns>
+ <remarks>
+ <para>
+ The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.SystemInfo.EmptyTypes">
+ <summary>
+ Gets an empty array of types.
+ </summary>
+ <remarks>
+ <para>
+ The <c>Type.EmptyTypes</c> field is not available on
+ the .NET Compact Framework 1.0.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.SystemInfo.declaringType">
+ <summary>
+ The fully qualified type of the SystemInfo class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.SystemInfo.s_hostName">
+ <summary>
+ Cache the host name for the current machine
+ </summary>
+ </member>
+ <member name="F:log4net.Util.SystemInfo.s_appFriendlyName">
+ <summary>
+ Cache the application friendly name
+ </summary>
+ </member>
+ <member name="F:log4net.Util.SystemInfo.s_nullText">
+ <summary>
+ Text to output when a <c>null</c> is encountered.
+ </summary>
+ </member>
+ <member name="F:log4net.Util.SystemInfo.s_notAvailableText">
+ <summary>
+ Text to output when an unsupported feature is requested.
+ </summary>
+ </member>
+ <member name="F:log4net.Util.SystemInfo.s_processStartTime">
+ <summary>
+ Start time for the current process.
+ </summary>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.NewLine">
+ <summary>
+ Gets the system dependent line terminator.
+ </summary>
+ <value>
+ The system dependent line terminator.
+ </value>
+ <remarks>
+ <para>
+ Gets the system dependent line terminator.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.ApplicationBaseDirectory">
+ <summary>
+ Gets the base directory for this <see cref="T:System.AppDomain"/>.
+ </summary>
+ <value>The base directory path for the current <see cref="T:System.AppDomain"/>.</value>
+ <remarks>
+ <para>
+ Gets the base directory for this <see cref="T:System.AppDomain"/>.
+ </para>
+ <para>
+ The value returned may be either a local file path or a URI.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.ConfigurationFileLocation">
+ <summary>
+ Gets the path to the configuration file for the current <see cref="T:System.AppDomain"/>.
+ </summary>
+ <value>The path to the configuration file for the current <see cref="T:System.AppDomain"/>.</value>
+ <remarks>
+ <para>
+ The .NET Compact Framework 1.0 does not have a concept of a configuration
+ file. For this runtime, we use the entry assembly location as the root for
+ the configuration file name.
+ </para>
+ <para>
+ The value returned may be either a local file path or a URI.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.EntryAssemblyLocation">
+ <summary>
+ Gets the path to the file that first executed in the current <see cref="T:System.AppDomain"/>.
+ </summary>
+ <value>The path to the entry assembly.</value>
+ <remarks>
+ <para>
+ Gets the path to the file that first executed in the current <see cref="T:System.AppDomain"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.CurrentThreadId">
+ <summary>
+ Gets the ID of the current thread.
+ </summary>
+ <value>The ID of the current thread.</value>
+ <remarks>
+ <para>
+ On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method
+ is used to obtain the thread ID for the current thread. This is the
+ operating system ID for the thread.
+ </para>
+ <para>
+ On the .NET Compact Framework 1.0 it is not possible to get the
+ operating system thread ID for the current thread. The native method
+ <c>GetCurrentThreadId</c> is implemented inline in a header file
+ and cannot be called.
+ </para>
+ <para>
+ On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this
+ gives a stable id unrelated to the operating system thread ID which may
+ change if the runtime is using fibers.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.HostName">
+ <summary>
+ Get the host name or machine name for the current machine
+ </summary>
+ <value>
+ The hostname or machine name
+ </value>
+ <remarks>
+ <para>
+ Get the host name or machine name for the current machine
+ </para>
+ <para>
+ The host name (<see cref="M:System.Net.Dns.GetHostName"/>) or
+ the machine name (<c>Environment.MachineName</c>) for
+ the current machine, or if neither of these are available
+ then <c>NOT AVAILABLE</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.ApplicationFriendlyName">
+ <summary>
+ Get this application's friendly name
+ </summary>
+ <value>
+ The friendly name of this application as a string
+ </value>
+ <remarks>
+ <para>
+ If available the name of the application is retrieved from
+ the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>.
+ </para>
+ <para>
+ Otherwise the file name of the entry assembly is used.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.ProcessStartTime">
+ <summary>
+ Get the start time for the current process.
+ </summary>
+ <remarks>
+ <para>
+ This is the time at which the log4net library was loaded into the
+ AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c>
+ this is not the start time for the current process.
+ </para>
+ <para>
+ The log4net library should be loaded by an application early during its
+ startup, therefore this start time should be a good approximation for
+ the actual start time.
+ </para>
+ <para>
+ Note that AppDomains may be loaded and unloaded within the
+ same process without the process terminating, however this start time
+ will be set per AppDomain.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.NullText">
+ <summary>
+ Text to output when a <c>null</c> is encountered.
+ </summary>
+ <remarks>
+ <para>
+ Use this value to indicate a <c>null</c> has been encountered while
+ outputting a string representation of an item.
+ </para>
+ <para>
+ The default value is <c>(null)</c>. This value can be overridden by specifying
+ a value for the <c>log4net.NullText</c> appSetting in the application's
+ .config file.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.SystemInfo.NotAvailableText">
+ <summary>
+ Text to output when an unsupported feature is requested.
+ </summary>
+ <remarks>
+ <para>
+ Use this value when an unsupported feature is requested.
+ </para>
+ <para>
+ The default value is <c>NOT AVAILABLE</c>. This value can be overridden by specifying
+ a value for the <c>log4net.NotAvailableText</c> appSetting in the application's
+ .config file.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.SystemStringFormat">
+ <summary>
+ Utility class that represents a format string.
+ </summary>
+ <remarks>
+ <para>
+ Utility class that represents a format string.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.SystemStringFormat.#ctor(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Initialise the <see cref="T:log4net.Util.SystemStringFormat"/>
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information.</param>
+ <param name="format">A <see cref="T:System.String"/> containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ </member>
+ <member name="M:log4net.Util.SystemStringFormat.ToString">
+ <summary>
+ Format the string and arguments
+ </summary>
+ <returns>the formatted string</returns>
+ </member>
+ <member name="M:log4net.Util.SystemStringFormat.StringFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Replaces the format item in a specified <see cref="T:System.String"/> with the text equivalent
+ of the value of a corresponding <see cref="T:System.Object"/> instance in a specified array.
+ A specified parameter supplies culture-specific formatting information.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information.</param>
+ <param name="format">A <see cref="T:System.String"/> containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ <returns>
+ A copy of format in which the format items have been replaced by the <see cref="T:System.String"/>
+ equivalent of the corresponding instances of <see cref="T:System.Object"/> in args.
+ </returns>
+ <remarks>
+ <para>
+ This method does not throw exceptions. If an exception thrown while formatting the result the
+ exception and arguments are returned in the result string.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.SystemStringFormat.StringFormatError(System.Exception,System.String,System.Object[])">
+ <summary>
+ Process an error during StringFormat
+ </summary>
+ </member>
+ <member name="M:log4net.Util.SystemStringFormat.RenderArray(System.Array,System.Text.StringBuilder)">
+ <summary>
+ Dump the contents of an array into a string builder
+ </summary>
+ </member>
+ <member name="M:log4net.Util.SystemStringFormat.RenderObject(System.Object,System.Text.StringBuilder)">
+ <summary>
+ Dump an object to a string
+ </summary>
+ </member>
+ <member name="F:log4net.Util.SystemStringFormat.declaringType">
+ <summary>
+ The fully qualified type of the SystemStringFormat class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ThreadContextProperties">
+ <summary>
+ Implementation of Properties collection for the <see cref="T:log4net.ThreadContext"/>
+ </summary>
+ <remarks>
+ <para>
+ Class implements a collection of properties that is specific to each thread.
+ The class is not synchronized as each thread has its own <see cref="T:log4net.Util.PropertiesDictionary"/>.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.ThreadContextProperties._dictionary">
+ <summary>
+ Each thread will automatically have its instance.
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ThreadContextProperties.#ctor">
+ <summary>
+ Internal constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextProperties"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextProperties.Remove(System.String)">
+ <summary>
+ Remove a property
+ </summary>
+ <param name="key">the key for the entry to remove</param>
+ <remarks>
+ <para>
+ Remove a property
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextProperties.GetKeys">
+ <summary>
+ Get the keys stored in the properties.
+ </summary>
+ <para>
+ Gets the keys stored in the properties.
+ </para>
+ <returns>a set of the defined keys</returns>
+ </member>
+ <member name="M:log4net.Util.ThreadContextProperties.Clear">
+ <summary>
+ Clear all properties
+ </summary>
+ <remarks>
+ <para>
+ Clear all properties
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextProperties.GetProperties(System.Boolean)">
+ <summary>
+ Get the <c>PropertiesDictionary</c> for this thread.
+ </summary>
+ <param name="create">create the dictionary if it does not exist, otherwise return null if does not exist</param>
+ <returns>the properties for this thread</returns>
+ <remarks>
+ <para>
+ The collection returned is only to be used on the calling thread. If the
+ caller needs to share the collection between different threads then the
+ caller must clone the collection before doing so.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ThreadContextProperties.Item(System.String)">
+ <summary>
+ Gets or sets the value of a property
+ </summary>
+ <value>
+ The value for the property with the specified key
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the value of a property
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ThreadContextStack">
+ <summary>
+ Implementation of Stack for the <see cref="T:log4net.ThreadContext"/>
+ </summary>
+ <remarks>
+ <para>
+ Implementation of Stack for the <see cref="T:log4net.ThreadContext"/>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Util.ThreadContextStack.m_stack">
+ <summary>
+ The stack store.
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.#ctor">
+ <summary>
+ Internal constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStack"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.Clear">
+ <summary>
+ Clears all the contextual information held in this stack.
+ </summary>
+ <remarks>
+ <para>
+ Clears all the contextual information held in this stack.
+ Only call this if you think that this tread is being reused after
+ a previous call execution which may not have completed correctly.
+ You do not need to use this method if you always guarantee to call
+ the <see cref="M:System.IDisposable.Dispose"/> method of the <see cref="T:System.IDisposable"/>
+ returned from <see cref="M:log4net.Util.ThreadContextStack.Push(System.String)"/> even in exceptional circumstances,
+ for example by using the <c>using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message"))</c>
+ syntax.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.Pop">
+ <summary>
+ Removes the top context from this stack.
+ </summary>
+ <returns>The message in the context that was removed from the top of this stack.</returns>
+ <remarks>
+ <para>
+ Remove the top context from this stack, and return
+ it to the caller. If this stack is empty then an
+ empty string (not <see langword="null"/>) is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.Push(System.String)">
+ <summary>
+ Pushes a new context message into this stack.
+ </summary>
+ <param name="message">The new context message.</param>
+ <returns>
+ An <see cref="T:System.IDisposable"/> that can be used to clean up the context stack.
+ </returns>
+ <remarks>
+ <para>
+ Pushes a new context onto this stack. An <see cref="T:System.IDisposable"/>
+ is returned that can be used to clean up this stack. This
+ can be easily combined with the <c>using</c> keyword to scope the
+ context.
+ </para>
+ </remarks>
+ <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.
+ <code lang="C#">
+ using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message"))
+ {
+ log.Warn("This should have an ThreadContext Stack message");
+ }
+ </code>
+ </example>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.GetFullMessage">
+ <summary>
+ Gets the current context information for this stack.
+ </summary>
+ <returns>The current context information.</returns>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.ToString">
+ <summary>
+ Gets the current context information for this stack.
+ </summary>
+ <returns>Gets the current context information</returns>
+ <remarks>
+ <para>
+ Gets the current context information for this stack.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.log4net#Core#IFixingRequired#GetFixedObject">
+ <summary>
+ Get a portable version of this object
+ </summary>
+ <returns>the portable instance of this object</returns>
+ <remarks>
+ <para>
+ Get a cross thread portable version of this object
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ThreadContextStack.Count">
+ <summary>
+ The number of messages in the stack
+ </summary>
+ <value>
+ The current number of messages in the stack
+ </value>
+ <remarks>
+ <para>
+ The current number of messages in the stack. That is
+ the number of times <see cref="M:log4net.Util.ThreadContextStack.Push(System.String)"/> has been called
+ minus the number of times <see cref="M:log4net.Util.ThreadContextStack.Pop"/> has been called.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ThreadContextStack.InternalStack">
+ <summary>
+ Gets and sets the internal stack used by this <see cref="T:log4net.Util.ThreadContextStack"/>
+ </summary>
+ <value>The internal storage stack</value>
+ <remarks>
+ <para>
+ This property is provided only to support backward compatability
+ of the <see cref="T:log4net.NDC"/>. Tytpically the internal stack should not
+ be modified.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ThreadContextStack.StackFrame">
+ <summary>
+ Inner class used to represent a single context frame in the stack.
+ </summary>
+ <remarks>
+ <para>
+ Inner class used to represent a single context frame in the stack.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.StackFrame.#ctor(System.String,log4net.Util.ThreadContextStack.StackFrame)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="message">The message for this context.</param>
+ <param name="parent">The parent context in the chain.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStack.StackFrame"/> class
+ with the specified message and parent context.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ThreadContextStack.StackFrame.Message">
+ <summary>
+ Get the message.
+ </summary>
+ <value>The message.</value>
+ <remarks>
+ <para>
+ Get the message.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ThreadContextStack.StackFrame.FullMessage">
+ <summary>
+ Gets the full text of the context down to the root level.
+ </summary>
+ <value>
+ The full text of the context down to the root level.
+ </value>
+ <remarks>
+ <para>
+ Gets the full text of the context down to the root level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ThreadContextStack.AutoPopStackFrame">
+ <summary>
+ Struct returned from the <see cref="M:log4net.Util.ThreadContextStack.Push(System.String)"/> method.
+ </summary>
+ <remarks>
+ <para>
+ This struct implements the <see cref="T:System.IDisposable"/> and is designed to be used
+ with the <see langword="using"/> pattern to remove the stack frame at the end of the scope.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameStack">
+ <summary>
+ The ThreadContextStack internal stack
+ </summary>
+ </member>
+ <member name="F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameDepth">
+ <summary>
+ The depth to trim the stack to when this instance is disposed
+ </summary>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.AutoPopStackFrame.#ctor(System.Collections.Stack,System.Int32)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="frameStack">The internal stack used by the ThreadContextStack.</param>
+ <param name="frameDepth">The depth to return the stack to when this object is disposed.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStack.AutoPopStackFrame"/> class with
+ the specified stack and return depth.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStack.AutoPopStackFrame.Dispose">
+ <summary>
+ Returns the stack to the correct depth.
+ </summary>
+ <remarks>
+ <para>
+ Returns the stack to the correct depth.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.ThreadContextStacks">
+ <summary>
+ Implementation of Stacks collection for the <see cref="T:log4net.ThreadContext"/>
+ </summary>
+ <remarks>
+ <para>
+ Implementation of Stacks collection for the <see cref="T:log4net.ThreadContext"/>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.ThreadContextStacks.#ctor(log4net.Util.ContextPropertiesBase)">
+ <summary>
+ Internal constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStacks"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.ThreadContextStacks.declaringType">
+ <summary>
+ The fully qualified type of the ThreadContextStacks class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.ThreadContextStacks.Item(System.String)">
+ <summary>
+ Gets the named thread context stack
+ </summary>
+ <value>
+ The named stack
+ </value>
+ <remarks>
+ <para>
+ Gets the named thread context stack
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.Transform">
+ <summary>
+ Utility class for transforming strings.
+ </summary>
+ <remarks>
+ <para>
+ Utility class for transforming strings.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Util.Transform.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Util.Transform"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to prevent instantiation of this class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.Transform.WriteEscapedXmlString(System.Xml.XmlWriter,System.String,System.String)">
+ <summary>
+ Write a string to an <see cref="T:System.Xml.XmlWriter"/>
+ </summary>
+ <param name="writer">the writer to write to</param>
+ <param name="textData">the string to write</param>
+ <param name="invalidCharReplacement">The string to replace non XML compliant chars with</param>
+ <remarks>
+ <para>
+ The test is escaped either using XML escape entities
+ or using CDATA sections.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.Transform.MaskXmlInvalidCharacters(System.String,System.String)">
+ <summary>
+ Replace invalid XML characters in text string
+ </summary>
+ <param name="textData">the XML text input string</param>
+ <param name="mask">the string to use in place of invalid characters</param>
+ <returns>A string that does not contain invalid XML characters.</returns>
+ <remarks>
+ <para>
+ Certain Unicode code points are not allowed in the XML InfoSet, for
+ details see: <a href="http://www.w3.org/TR/REC-xml/#charsets">http://www.w3.org/TR/REC-xml/#charsets</a>.
+ </para>
+ <para>
+ This method replaces any illegal characters in the input string
+ with the mask string specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.Transform.CountSubstrings(System.String,System.String)">
+ <summary>
+ Count the number of times that the substring occurs in the text
+ </summary>
+ <param name="text">the text to search</param>
+ <param name="substring">the substring to find</param>
+ <returns>the number of times the substring occurs in the text</returns>
+ <remarks>
+ <para>
+ The substring is assumed to be non repeating within itself.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.Transform.INVALIDCHARS">
+ <summary>
+ Characters illegal in XML 1.0
+ </summary>
+ </member>
+ <member name="T:log4net.Util.WindowsSecurityContext">
+ <summary>
+ Impersonate a Windows Account
+ </summary>
+ <remarks>
+ <para>
+ This <see cref="T:log4net.Core.SecurityContext"/> impersonates a Windows account.
+ </para>
+ <para>
+ How the impersonation is done depends on the value of <see cref="M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)"/>.
+ This allows the context to either impersonate a set of user credentials specified
+ using username, domain name and password or to revert to the process credentials.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.WindowsSecurityContext.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.WindowsSecurityContext.ActivateOptions">
+ <summary>
+ Initialize the SecurityContext based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Util.WindowsSecurityContext.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Util.WindowsSecurityContext.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Util.WindowsSecurityContext.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ The security context will try to Logon the specified user account and
+ capture a primary token for impersonation.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">The required <see cref="P:log4net.Util.WindowsSecurityContext.UserName"/>,
+ <see cref="P:log4net.Util.WindowsSecurityContext.DomainName"/> or <see cref="P:log4net.Util.WindowsSecurityContext.Password"/> properties were not specified.</exception>
+ </member>
+ <member name="M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)">
+ <summary>
+ Impersonate the Windows account specified by the <see cref="P:log4net.Util.WindowsSecurityContext.UserName"/> and <see cref="P:log4net.Util.WindowsSecurityContext.DomainName"/> properties.
+ </summary>
+ <param name="state">caller provided state</param>
+ <returns>
+ An <see cref="T:System.IDisposable"/> instance that will revoke the impersonation of this SecurityContext
+ </returns>
+ <remarks>
+ <para>
+ Depending on the <see cref="P:log4net.Util.WindowsSecurityContext.Credentials"/> property either
+ impersonate a user using credentials supplied or revert
+ to the process credentials.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.WindowsSecurityContext.LogonUser(System.String,System.String,System.String)">
+ <summary>
+ Create a <see cref="T:System.Security.Principal.WindowsIdentity"/> given the userName, domainName and password.
+ </summary>
+ <param name="userName">the user name</param>
+ <param name="domainName">the domain name</param>
+ <param name="password">the password</param>
+ <returns>the <see cref="T:System.Security.Principal.WindowsIdentity"/> for the account specified</returns>
+ <remarks>
+ <para>
+ Uses the Windows API call LogonUser to get a principal token for the account. This
+ token is used to initialize the WindowsIdentity.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.WindowsSecurityContext.Credentials">
+ <summary>
+ Gets or sets the impersonation mode for this security context
+ </summary>
+ <value>
+ The impersonation mode for this security context
+ </value>
+ <remarks>
+ <para>
+ Impersonate either a user with user credentials or
+ revert this thread to the credentials of the process.
+ The value is one of the <see cref="T:log4net.Util.WindowsSecurityContext.ImpersonationMode"/>
+ enum.
+ </para>
+ <para>
+ The default value is <see cref="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User"/>
+ </para>
+ <para>
+ When the mode is set to <see cref="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User"/>
+ the user's credentials are established using the
+ <see cref="P:log4net.Util.WindowsSecurityContext.UserName"/>, <see cref="P:log4net.Util.WindowsSecurityContext.DomainName"/> and <see cref="P:log4net.Util.WindowsSecurityContext.Password"/>
+ values.
+ </para>
+ <para>
+ When the mode is set to <see cref="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process"/>
+ no other properties need to be set. If the calling thread is
+ impersonating then it will be reverted back to the process credentials.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.WindowsSecurityContext.UserName">
+ <summary>
+ Gets or sets the Windows username for this security context
+ </summary>
+ <value>
+ The Windows username for this security context
+ </value>
+ <remarks>
+ <para>
+ This property must be set if <see cref="P:log4net.Util.WindowsSecurityContext.Credentials"/>
+ is set to <see cref="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User"/> (the default setting).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.WindowsSecurityContext.DomainName">
+ <summary>
+ Gets or sets the Windows domain name for this security context
+ </summary>
+ <value>
+ The Windows domain name for this security context
+ </value>
+ <remarks>
+ <para>
+ The default value for <see cref="P:log4net.Util.WindowsSecurityContext.DomainName"/> is the local machine name
+ taken from the <see cref="P:System.Environment.MachineName"/> property.
+ </para>
+ <para>
+ This property must be set if <see cref="P:log4net.Util.WindowsSecurityContext.Credentials"/>
+ is set to <see cref="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User"/> (the default setting).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.WindowsSecurityContext.Password">
+ <summary>
+ Sets the password for the Windows account specified by the <see cref="P:log4net.Util.WindowsSecurityContext.UserName"/> and <see cref="P:log4net.Util.WindowsSecurityContext.DomainName"/> properties.
+ </summary>
+ <value>
+ The password for the Windows account specified by the <see cref="P:log4net.Util.WindowsSecurityContext.UserName"/> and <see cref="P:log4net.Util.WindowsSecurityContext.DomainName"/> properties.
+ </value>
+ <remarks>
+ <para>
+ This property must be set if <see cref="P:log4net.Util.WindowsSecurityContext.Credentials"/>
+ is set to <see cref="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User"/> (the default setting).
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.WindowsSecurityContext.ImpersonationMode">
+ <summary>
+ The impersonation modes for the <see cref="T:log4net.Util.WindowsSecurityContext"/>
+ </summary>
+ <remarks>
+ <para>
+ See the <see cref="P:log4net.Util.WindowsSecurityContext.Credentials"/> property for
+ details.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User">
+ <summary>
+ Impersonate a user using the credentials supplied
+ </summary>
+ </member>
+ <member name="F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process">
+ <summary>
+ Revert this the thread to the credentials of the process
+ </summary>
+ </member>
+ <member name="T:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext">
+ <summary>
+ Adds <see cref="T:System.IDisposable"/> to <see cref="T:System.Security.Principal.WindowsImpersonationContext"/>
+ </summary>
+ <remarks>
+ <para>
+ Helper class to expose the <see cref="T:System.Security.Principal.WindowsImpersonationContext"/>
+ through the <see cref="T:System.IDisposable"/> interface.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.#ctor(System.Security.Principal.WindowsImpersonationContext)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="impersonationContext">the impersonation context being wrapped</param>
+ <remarks>
+ <para>
+ Constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.Dispose">
+ <summary>
+ Revert the impersonation
+ </summary>
+ <remarks>
+ <para>
+ Revert the impersonation
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.GlobalContext">
+ <summary>
+ The log4net Global Context.
+ </summary>
+ <remarks>
+ <para>
+ The <c>GlobalContext</c> provides a location for global debugging
+ information to be stored.
+ </para>
+ <para>
+ The global context has a properties map and these properties can
+ be included in the output of log messages. The <see cref="T:log4net.Layout.PatternLayout"/>
+ supports selecting and outputing these properties.
+ </para>
+ <para>
+ By default the <c>log4net:HostName</c> property is set to the name of
+ the current machine.
+ </para>
+ </remarks>
+ <example>
+ <code lang="C#">
+ GlobalContext.Properties["hostname"] = Environment.MachineName;
+ </code>
+ </example>
+ <threadsafety static="true" instance="true"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.GlobalContext.#ctor">
+ <summary>
+ Private Constructor.
+ </summary>
+ <remarks>
+ Uses a private access modifier to prevent instantiation of this class.
+ </remarks>
+ </member>
+ <member name="F:log4net.GlobalContext.s_properties">
+ <summary>
+ The global context properties instance
+ </summary>
+ </member>
+ <member name="P:log4net.GlobalContext.Properties">
+ <summary>
+ The global properties map.
+ </summary>
+ <value>
+ The global properties map.
+ </value>
+ <remarks>
+ <para>
+ The global properties map.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.AssemblyInfo">
+ <summary>
+ Provides information about the environment the assembly has
+ been built for.
+ </summary>
+ </member>
+ <member name="F:log4net.AssemblyInfo.Version">
+ <summary>Version of the assembly</summary>
+ </member>
+ <member name="F:log4net.AssemblyInfo.TargetFrameworkVersion">
+ <summary>Version of the framework targeted</summary>
+ </member>
+ <member name="F:log4net.AssemblyInfo.TargetFramework">
+ <summary>Type of framework targeted</summary>
+ </member>
+ <member name="F:log4net.AssemblyInfo.ClientProfile">
+ <summary>Does it target a client profile?</summary>
+ </member>
+ <member name="P:log4net.AssemblyInfo.Info">
+ <summary>
+ Identifies the version and target for this assembly.
+ </summary>
+ </member>
+ <member name="T:log4net.LogicalThreadContext">
+ <summary>
+ The log4net Logical Thread Context.
+ </summary>
+ <remarks>
+ <para>
+ The <c>LogicalThreadContext</c> provides a location for <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> specific debugging
+ information to be stored.
+ The <c>LogicalThreadContext</c> properties override any <see cref="T:log4net.ThreadContext"/> or <see cref="T:log4net.GlobalContext"/>
+ properties with the same name.
+ </para>
+ <para>
+ The Logical Thread Context has a properties map and a stack.
+ The properties and stack can
+ be included in the output of log messages. The <see cref="T:log4net.Layout.PatternLayout"/>
+ supports selecting and outputting these properties.
+ </para>
+ <para>
+ The Logical Thread Context provides a diagnostic context for the current call context.
+ This is an instrument for distinguishing interleaved log
+ output from different sources. Log output is typically interleaved
+ when a server handles multiple clients near-simultaneously.
+ </para>
+ <para>
+ The Logical Thread Context is managed on a per <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> basis.
+ </para>
+ <para>
+ The <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> requires a link time
+ <see cref="T:System.Security.Permissions.SecurityPermission"/> for the
+ <see cref="F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure"/>.
+ If the calling code does not have this permission then this context will be disabled.
+ It will not store any property values set on it.
+ </para>
+ </remarks>
+ <example>Example of using the thread context properties to store a username.
+ <code lang="C#">
+ LogicalThreadContext.Properties["user"] = userName;
+ log.Info("This log message has a LogicalThreadContext Property called 'user'");
+ </code>
+ </example>
+ <example>Example of how to push a message into the context stack
+ <code lang="C#">
+ using(LogicalThreadContext.Stacks["LDC"].Push("my context message"))
+ {
+ log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'");
+
+ } // at the end of the using block the message is automatically popped
+ </code>
+ </example>
+ <threadsafety static="true" instance="true"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.LogicalThreadContext.#ctor">
+ <summary>
+ Private Constructor.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to prevent instantiation of this class.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.LogicalThreadContext.s_properties">
+ <summary>
+ The thread context properties instance
+ </summary>
+ </member>
+ <member name="F:log4net.LogicalThreadContext.s_stacks">
+ <summary>
+ The thread context stacks instance
+ </summary>
+ </member>
+ <member name="P:log4net.LogicalThreadContext.Properties">
+ <summary>
+ The thread properties map
+ </summary>
+ <value>
+ The thread properties map
+ </value>
+ <remarks>
+ <para>
+ The <c>LogicalThreadContext</c> properties override any <see cref="T:log4net.ThreadContext"/>
+ or <see cref="T:log4net.GlobalContext"/> properties with the same name.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.LogicalThreadContext.Stacks">
+ <summary>
+ The thread stacks
+ </summary>
+ <value>
+ stack map
+ </value>
+ <remarks>
+ <para>
+ The logical thread stacks.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.LogManager">
+ <summary>
+ This class is used by client applications to request logger instances.
+ </summary>
+ <remarks>
+ <para>
+ This class has static methods that are used by a client to request
+ a logger instance. The <see cref="M:GetLogger(string)"/> method is
+ used to retrieve a logger.
+ </para>
+ <para>
+ See the <see cref="T:log4net.ILog"/> interface for more details.
+ </para>
+ </remarks>
+ <example>Simple example of logging messages
+ <code lang="C#">
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.Info("Application Start");
+ log.Debug("This is a debug message");
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is another debug message");
+ }
+ </code>
+ </example>
+ <threadsafety static="true" instance="true"/>
+ <seealso cref="T:log4net.ILog"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.LogManager.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.LogManager"/> class.
+ </summary>
+ <remarks>
+ Uses a private access modifier to prevent instantiation of this class.
+ </remarks>
+ </member>
+ <member name="M:log4net.LogManager.Exists(System.String)">
+ <overloads>Returns the named logger if it exists.</overloads>
+ <summary>
+ Returns the named logger if it exists.
+ </summary>
+ <remarks>
+ <para>
+ If the named logger exists (in the default repository) then it
+ returns a reference to the logger, otherwise it returns <c>null</c>.
+ </para>
+ </remarks>
+ <param name="name">The fully qualified logger name to look for.</param>
+ <returns>The logger found, or <c>null</c> if no logger could be found.</returns>
+ </member>
+ <member name="M:log4net.LogManager.Exists(System.String,System.String)">
+ <summary>
+ Returns the named logger if it exists.
+ </summary>
+ <remarks>
+ <para>
+ If the named logger exists (in the specified repository) then it
+ returns a reference to the logger, otherwise it returns
+ <c>null</c>.
+ </para>
+ </remarks>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="name">The fully qualified logger name to look for.</param>
+ <returns>
+ The logger found, or <c>null</c> if the logger doesn't exist in the specified
+ repository.
+ </returns>
+ </member>
+ <member name="M:log4net.LogManager.Exists(System.Reflection.Assembly,System.String)">
+ <summary>
+ Returns the named logger if it exists.
+ </summary>
+ <remarks>
+ <para>
+ If the named logger exists (in the repository for the specified assembly) then it
+ returns a reference to the logger, otherwise it returns
+ <c>null</c>.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <param name="name">The fully qualified logger name to look for.</param>
+ <returns>
+ The logger, or <c>null</c> if the logger doesn't exist in the specified
+ assembly's repository.
+ </returns>
+ </member>
+ <member name="M:log4net.LogManager.GetCurrentLoggers">
+ <overloads>Get the currently defined loggers.</overloads>
+ <summary>
+ Returns all the currently defined loggers in the default repository.
+ </summary>
+ <remarks>
+ <para>The root logger is <b>not</b> included in the returned array.</para>
+ </remarks>
+ <returns>All the defined loggers.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetCurrentLoggers(System.String)">
+ <summary>
+ Returns all the currently defined loggers in the specified repository.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <remarks>
+ The root logger is <b>not</b> included in the returned array.
+ </remarks>
+ <returns>All the defined loggers.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetCurrentLoggers(System.Reflection.Assembly)">
+ <summary>
+ Returns all the currently defined loggers in the specified assembly's repository.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <remarks>
+ The root logger is <b>not</b> included in the returned array.
+ </remarks>
+ <returns>All the defined loggers.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetLogger(System.String)">
+ <overloads>Get or create a logger.</overloads>
+ <summary>
+ Retrieves or creates a named logger.
+ </summary>
+ <remarks>
+ <para>
+ Retrieves a logger named as the <paramref name="name"/>
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+ </para>
+ <para>By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+ </para>
+ </remarks>
+ <param name="name">The name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetLogger(System.String,System.String)">
+ <summary>
+ Retrieves or creates a named logger.
+ </summary>
+ <remarks>
+ <para>
+ Retrieve a logger named as the <paramref name="name"/>
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+ </para>
+ <para>
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+ </para>
+ </remarks>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="name">The name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.String)">
+ <summary>
+ Retrieves or creates a named logger.
+ </summary>
+ <remarks>
+ <para>
+ Retrieve a logger named as the <paramref name="name"/>
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+ </para>
+ <para>
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <param name="name">The name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetLogger(System.Type)">
+ <summary>
+ Shorthand for <see cref="M:LogManager.GetLogger(string)"/>.
+ </summary>
+ <remarks>
+ Get the logger for the fully qualified name of the type specified.
+ </remarks>
+ <param name="type">The full name of <paramref name="type"/> will be used as the name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetLogger(System.String,System.Type)">
+ <summary>
+ Shorthand for <see cref="M:LogManager.GetLogger(string)"/>.
+ </summary>
+ <remarks>
+ Gets the logger for the fully qualified name of the type specified.
+ </remarks>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="type">The full name of <paramref name="type"/> will be used as the name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Shorthand for <see cref="M:LogManager.GetLogger(string)"/>.
+ </summary>
+ <remarks>
+ Gets the logger for the fully qualified name of the type specified.
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <param name="type">The full name of <paramref name="type"/> will be used as the name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.Shutdown">
+ <summary>
+ Shuts down the log4net system.
+ </summary>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in all the
+ default repositories.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.LogManager.ShutdownRepository">
+ <overloads>Shutdown a logger repository.</overloads>
+ <summary>
+ Shuts down the default repository.
+ </summary>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in the
+ default repository.
+ </para>
+ <para>Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.LogManager.ShutdownRepository(System.String)">
+ <summary>
+ Shuts down the repository for the repository specified.
+ </summary>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in the
+ <paramref name="repository"/> specified.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ <param name="repository">The repository to shutdown.</param>
+ </member>
+ <member name="M:log4net.LogManager.ShutdownRepository(System.Reflection.Assembly)">
+ <summary>
+ Shuts down the repository specified.
+ </summary>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in the
+ repository. The repository is looked up using
+ the <paramref name="repositoryAssembly"/> specified.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>
+ The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ </member>
+ <member name="M:log4net.LogManager.ResetConfiguration">
+ <overloads>Reset the configuration of a repository</overloads>
+ <summary>
+ Resets all values contained in this repository instance to their defaults.
+ </summary>
+ <remarks>
+ <para>
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set to its default "off" value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.LogManager.ResetConfiguration(System.String)">
+ <summary>
+ Resets all values contained in this repository instance to their defaults.
+ </summary>
+ <remarks>
+ <para>
+ Reset all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set to its default "off" value.
+ </para>
+ </remarks>
+ <param name="repository">The repository to reset.</param>
+ </member>
+ <member name="M:log4net.LogManager.ResetConfiguration(System.Reflection.Assembly)">
+ <summary>
+ Resets all values contained in this repository instance to their defaults.
+ </summary>
+ <remarks>
+ <para>
+ Reset all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set to its default "off" value.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository to reset.</param>
+ </member>
+ <member name="M:log4net.LogManager.GetLoggerRepository">
+ <overloads>Get the logger repository.</overloads>
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the callers assembly (<see cref="M:Assembly.GetCallingAssembly()"/>).
+ </para>
+ </remarks>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> instance for the default repository.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetLoggerRepository(System.String)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repository"/> argument.
+ </para>
+ </remarks>
+ <param name="repository">The repository to lookup in.</param>
+ </member>
+ <member name="M:log4net.LogManager.GetLoggerRepository(System.Reflection.Assembly)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repositoryAssembly"/> argument.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ </member>
+ <member name="M:log4net.LogManager.GetRepository">
+ <overloads>Get a logger repository.</overloads>
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the callers assembly (<see cref="M:Assembly.GetCallingAssembly()"/>).
+ </para>
+ </remarks>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> instance for the default repository.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetRepository(System.String)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repository"/> argument.
+ </para>
+ </remarks>
+ <param name="repository">The repository to lookup in.</param>
+ </member>
+ <member name="M:log4net.LogManager.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repositoryAssembly"/> argument.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ </member>
+ <member name="M:log4net.LogManager.CreateDomain(System.Type)">
+ <overloads>Create a domain</overloads>
+ <summary>
+ Creates a repository with the specified repository type.
+ </summary>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository()"/> will return
+ the same repository instance.
+ </para>
+ </remarks>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ </member>
+ <member name="M:log4net.LogManager.CreateRepository(System.Type)">
+ <overloads>Create a logger repository.</overloads>
+ <summary>
+ Creates a repository with the specified repository type.
+ </summary>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository()"/> will return
+ the same repository instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.LogManager.CreateDomain(System.String)">
+ <summary>
+ Creates a repository with the specified name.
+ </summary>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a
+ <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object.
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.LogManager.CreateRepository(System.String)">
+ <summary>
+ Creates a repository with the specified name.
+ </summary>
+ <remarks>
+ <para>
+ Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a
+ <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object.
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.LogManager.CreateDomain(System.String,System.Type)">
+ <summary>
+ Creates a repository with the specified name and repository type.
+ </summary>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <param name="repository">The name of the repository, this must be unique to the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.LogManager.CreateRepository(System.String,System.Type)">
+ <summary>
+ Creates a repository with the specified name and repository type.
+ </summary>
+ <remarks>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <param name="repository">The name of the repository, this must be unique to the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.LogManager.CreateDomain(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a repository for the specified assembly and repository type.
+ </summary>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ </member>
+ <member name="M:log4net.LogManager.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a repository for the specified assembly and repository type.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ </remarks>
+ <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ </member>
+ <member name="M:log4net.LogManager.GetAllRepositories">
+ <summary>
+ Gets the list of currently defined repositories.
+ </summary>
+ <remarks>
+ <para>
+ Get an array of all the <see cref="T:log4net.Repository.ILoggerRepository"/> objects that have been created.
+ </para>
+ </remarks>
+ <returns>An array of all the known <see cref="T:log4net.Repository.ILoggerRepository"/> objects.</returns>
+ </member>
+ <member name="M:log4net.LogManager.WrapLogger(log4net.Core.ILogger)">
+ <summary>
+ Looks up the wrapper object for the logger specified.
+ </summary>
+ <param name="logger">The logger to get the wrapper for.</param>
+ <returns>The wrapper for the logger specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.WrapLoggers(log4net.Core.ILogger[])">
+ <summary>
+ Looks up the wrapper objects for the loggers specified.
+ </summary>
+ <param name="loggers">The loggers to get the wrappers for.</param>
+ <returns>The wrapper objects for the loggers specified.</returns>
+ </member>
+ <member name="M:log4net.LogManager.WrapperCreationHandler(log4net.Core.ILogger)">
+ <summary>
+ Create the <see cref="T:log4net.Core.ILoggerWrapper"/> objects used by
+ this manager.
+ </summary>
+ <param name="logger">The logger to wrap.</param>
+ <returns>The wrapper for the logger specified.</returns>
+ </member>
+ <member name="F:log4net.LogManager.s_wrapperMap">
+ <summary>
+ The wrapper map to use to hold the <see cref="T:log4net.Core.LogImpl"/> objects.
+ </summary>
+ </member>
+ <member name="T:log4net.MDC">
+ <summary>
+ Implementation of Mapped Diagnostic Contexts.
+ </summary>
+ <remarks>
+ <note>
+ <para>
+ The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>.
+ The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.
+ </para>
+ </note>
+ <para>
+ The MDC class is similar to the <see cref="T:log4net.NDC"/> class except that it is
+ based on a map instead of a stack. It provides <i>mapped
+ diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or
+ MDC in short, is an instrument for distinguishing interleaved log
+ output from different sources. Log output is typically interleaved
+ when a server handles multiple clients near-simultaneously.
+ </para>
+ <para>
+ The MDC is managed on a per thread basis.
+ </para>
+ </remarks>
+ <threadsafety static="true" instance="true"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.MDC.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.MDC"/> class.
+ </summary>
+ <remarks>
+ Uses a private access modifier to prevent instantiation of this class.
+ </remarks>
+ </member>
+ <member name="M:log4net.MDC.Get(System.String)">
+ <summary>
+ Gets the context value identified by the <paramref name="key"/> parameter.
+ </summary>
+ <param name="key">The key to lookup in the MDC.</param>
+ <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns>
+ <remarks>
+ <note>
+ <para>
+ The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>.
+ The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.
+ </para>
+ </note>
+ <para>
+ If the <paramref name="key"/> parameter does not look up to a
+ previously defined context then <c>null</c> will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.MDC.Set(System.String,System.String)">
+ <summary>
+ Add an entry to the MDC
+ </summary>
+ <param name="key">The key to store the value under.</param>
+ <param name="value">The value to store.</param>
+ <remarks>
+ <note>
+ <para>
+ The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>.
+ The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.
+ </para>
+ </note>
+ <para>
+ Puts a context value (the <paramref name="value"/> parameter) as identified
+ with the <paramref name="key"/> parameter into the current thread's
+ context map.
+ </para>
+ <para>
+ If a value is already defined for the <paramref name="key"/>
+ specified then the value will be replaced. If the <paramref name="value"/>
+ is specified as <c>null</c> then the key value mapping will be removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.MDC.Remove(System.String)">
+ <summary>
+ Removes the key value mapping for the key specified.
+ </summary>
+ <param name="key">The key to remove.</param>
+ <remarks>
+ <note>
+ <para>
+ The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>.
+ The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.
+ </para>
+ </note>
+ <para>
+ Remove the specified entry from this thread's MDC
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.MDC.Clear">
+ <summary>
+ Clear all entries in the MDC
+ </summary>
+ <remarks>
+ <note>
+ <para>
+ The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>.
+ The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.
+ </para>
+ </note>
+ <para>
+ Remove all the entries from this thread's MDC
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.NDC">
+ <summary>
+ Implementation of Nested Diagnostic Contexts.
+ </summary>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ A Nested Diagnostic Context, or NDC in short, is an instrument
+ to distinguish interleaved log output from different sources. Log
+ output is typically interleaved when a server handles multiple
+ clients near-simultaneously.
+ </para>
+ <para>
+ Interleaved log output can still be meaningful if each log entry
+ from different contexts had a distinctive stamp. This is where NDCs
+ come into play.
+ </para>
+ <para>
+ Note that NDCs are managed on a per thread basis. The NDC class
+ is made up of static methods that operate on the context of the
+ calling thread.
+ </para>
+ </remarks>
+ <example>How to push a message into the context
+ <code lang="C#">
+ using(NDC.Push("my context message"))
+ {
+ ... all log calls will have 'my context message' included ...
+
+ } // at the end of the using block the message is automatically removed
+ </code>
+ </example>
+ <threadsafety static="true" instance="true"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.NDC.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.NDC"/> class.
+ </summary>
+ <remarks>
+ Uses a private access modifier to prevent instantiation of this class.
+ </remarks>
+ </member>
+ <member name="M:log4net.NDC.Clear">
+ <summary>
+ Clears all the contextual information held on the current thread.
+ </summary>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ Clears the stack of NDC data held on the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.NDC.CloneStack">
+ <summary>
+ Creates a clone of the stack of context information.
+ </summary>
+ <returns>A clone of the context info for this thread.</returns>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ The results of this method can be passed to the <see cref="M:log4net.NDC.Inherit(System.Collections.Stack)"/>
+ method to allow child threads to inherit the context of their
+ parent thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.NDC.Inherit(System.Collections.Stack)">
+ <summary>
+ Inherits the contextual information from another thread.
+ </summary>
+ <param name="stack">The context stack to inherit.</param>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ This thread will use the context information from the stack
+ supplied. This can be used to initialize child threads with
+ the same contextual information as their parent threads. These
+ contexts will <b>NOT</b> be shared. Any further contexts that
+ are pushed onto the stack will not be visible to the other.
+ Call <see cref="M:log4net.NDC.CloneStack"/> to obtain a stack to pass to
+ this method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.NDC.Pop">
+ <summary>
+ Removes the top context from the stack.
+ </summary>
+ <returns>
+ The message in the context that was removed from the top
+ of the stack.
+ </returns>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ Remove the top context from the stack, and return
+ it to the caller. If the stack is empty then an
+ empty string (not <c>null</c>) is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.NDC.Push(System.String)">
+ <summary>
+ Pushes a new context message.
+ </summary>
+ <param name="message">The new context message.</param>
+ <returns>
+ An <see cref="T:System.IDisposable"/> that can be used to clean up
+ the context stack.
+ </returns>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ Pushes a new context onto the context stack. An <see cref="T:System.IDisposable"/>
+ is returned that can be used to clean up the context stack. This
+ can be easily combined with the <c>using</c> keyword to scope the
+ context.
+ </para>
+ </remarks>
+ <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.
+ <code lang="C#">
+ using(log4net.NDC.Push("NDC_Message"))
+ {
+ log.Warn("This should have an NDC message");
+ }
+ </code>
+ </example>
+ </member>
+ <member name="M:log4net.NDC.Remove">
+ <summary>
+ Removes the context information for this thread. It is
+ not required to call this method.
+ </summary>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ This method is not implemented.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.NDC.SetMaxDepth(System.Int32)">
+ <summary>
+ Forces the stack depth to be at most <paramref name="maxDepth"/>.
+ </summary>
+ <param name="maxDepth">The maximum depth of the stack</param>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ Forces the stack depth to be at most <paramref name="maxDepth"/>.
+ This may truncate the head of the stack. This only affects the
+ stack in the current thread. Also it does not prevent it from
+ growing, it only sets the maximum depth at the time of the
+ call. This can be used to return to a known context depth.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.NDC.Depth">
+ <summary>
+ Gets the current context depth.
+ </summary>
+ <value>The current context depth.</value>
+ <remarks>
+ <note>
+ <para>
+ The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>.
+ The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>.
+ </para>
+ </note>
+ <para>
+ The number of context values pushed onto the context stack.
+ </para>
+ <para>
+ Used to record the current depth of the context. This can then
+ be restored using the <see cref="M:log4net.NDC.SetMaxDepth(System.Int32)"/> method.
+ </para>
+ </remarks>
+ <seealso cref="M:log4net.NDC.SetMaxDepth(System.Int32)"/>
+ </member>
+ <member name="T:log4net.ThreadContext">
+ <summary>
+ The log4net Thread Context.
+ </summary>
+ <remarks>
+ <para>
+ The <c>ThreadContext</c> provides a location for thread specific debugging
+ information to be stored.
+ The <c>ThreadContext</c> properties override any <see cref="T:log4net.GlobalContext"/>
+ properties with the same name.
+ </para>
+ <para>
+ The thread context has a properties map and a stack.
+ The properties and stack can
+ be included in the output of log messages. The <see cref="T:log4net.Layout.PatternLayout"/>
+ supports selecting and outputting these properties.
+ </para>
+ <para>
+ The Thread Context provides a diagnostic context for the current thread.
+ This is an instrument for distinguishing interleaved log
+ output from different sources. Log output is typically interleaved
+ when a server handles multiple clients near-simultaneously.
+ </para>
+ <para>
+ The Thread Context is managed on a per thread basis.
+ </para>
+ </remarks>
+ <example>Example of using the thread context properties to store a username.
+ <code lang="C#">
+ ThreadContext.Properties["user"] = userName;
+ log.Info("This log message has a ThreadContext Property called 'user'");
+ </code>
+ </example>
+ <example>Example of how to push a message into the context stack
+ <code lang="C#">
+ using(ThreadContext.Stacks["NDC"].Push("my context message"))
+ {
+ log.Info("This log message has a ThreadContext Stack message that includes 'my context message'");
+
+ } // at the end of the using block the message is automatically popped
+ </code>
+ </example>
+ <threadsafety static="true" instance="true"/>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.ThreadContext.#ctor">
+ <summary>
+ Private Constructor.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to prevent instantiation of this class.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.ThreadContext.s_properties">
+ <summary>
+ The thread context properties instance
+ </summary>
+ </member>
+ <member name="F:log4net.ThreadContext.s_stacks">
+ <summary>
+ The thread context stacks instance
+ </summary>
+ </member>
+ <member name="P:log4net.ThreadContext.Properties">
+ <summary>
+ The thread properties map
+ </summary>
+ <value>
+ The thread properties map
+ </value>
+ <remarks>
+ <para>
+ The <c>ThreadContext</c> properties override any <see cref="T:log4net.GlobalContext"/>
+ properties with the same name.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.ThreadContext.Stacks">
+ <summary>
+ The thread stacks
+ </summary>
+ <value>
+ stack map
+ </value>
+ <remarks>
+ <para>
+ The thread local stacks.
+ </para>
+ </remarks>
+ </member>
+ </members>
+</doc>
diff --git a/qqjf-Background/DeviceWCS/App.config b/qqjf-Background/DeviceWCS/App.config
new file mode 100644
index 0000000..65ee95b
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/App.config
@@ -0,0 +1,39 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <configSections>
+ <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <section name="DeviceWCS.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </sectionGroup>
+ <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </configSections>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+ </startup>
+ <applicationSettings>
+ <DeviceWCS.Properties.Settings>
+ <setting name="DeviceWCS_rgvSRM_RgvService" serializeAs="String">
+ <value>http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/</value>
+ </setting>
+ <setting name="DeviceWCS_srmSER_SrmService" serializeAs="String">
+ <value>http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/</value>
+ </setting>
+ <setting name="DeviceWCS_tranSRM_SrmTranService" serializeAs="String">
+ <value>http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/</value>
+ </setting>
+ </DeviceWCS.Properties.Settings>
+ </applicationSettings>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
+ <parameters>
+ <parameter value="mssqllocaldb" />
+ </parameters>
+ </defaultConnectionFactory>
+ <providers>
+ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+ </providers>
+ </entityFramework>
+ <connectionStrings>
+ <add name="Model1" connectionString="data source=PC-S22016\SQLEXPRESS;initial catalog=1102;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
+ </connectionStrings>
+</configuration>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/DeviceWCS.csproj b/qqjf-Background/DeviceWCS/DeviceWCS.csproj
new file mode 100644
index 0000000..f477c99
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/DeviceWCS.csproj
@@ -0,0 +1,221 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{123874E4-8724-4831-854D-D834377AFD88}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>DeviceWCS</RootNamespace>
+ <AssemblyName>DeviceWCS</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <UseVSHostingProcess>true</UseVSHostingProcess>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework">
+ <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer">
+ <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\..\qingdaoyiqi\QingQiDemon\iWareSda_QQJF\DLL\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="Seagull.BarTender.Print, Version=10.1.4.1, Culture=neutral, PublicKeyToken=109ff779a1b4cbc7, processorArchitecture=x86">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\packages\BarTender\Seagull.BarTender.Print.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.EnterpriseServices" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Security" />
+ <Reference Include="System.Web.Services" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Deployment" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="EDM\Base_ProductPosition.cs" />
+ <Compile Include="EDM\Model.cs" />
+ <Compile Include="EDM\Purchase_Order.cs" />
+ <Compile Include="Form1.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Form1.Designer.cs">
+ <DependentUpon>Form1.cs</DependentUpon>
+ </Compile>
+ <Compile Include="FormUpdate.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="FormUpdate.Designer.cs">
+ <DependentUpon>FormUpdate.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="rgvINFO.cs" />
+ <Compile Include="srmInfo.cs" />
+ <Compile Include="taskCommon.cs" />
+ <Compile Include="tranInfo.cs" />
+ <Compile Include="Web References\rgvSRM\Reference.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Reference.map</DependentUpon>
+ </Compile>
+ <Compile Include="Web References\srmSER\Reference.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Reference.map</DependentUpon>
+ </Compile>
+ <Compile Include="Web References\tranSRM\Reference.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Reference.map</DependentUpon>
+ </Compile>
+ <EmbeddedResource Include="Form1.resx">
+ <DependentUpon>Form1.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="FormUpdate.resx">
+ <DependentUpon>FormUpdate.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <None Include="packages.config" />
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ <None Include="Web References\rgvSRM\Reference.map">
+ <Generator>MSDiscoCodeGenerator</Generator>
+ <LastGenOutput>Reference.cs</LastGenOutput>
+ </None>
+ <None Include="Web References\rgvSRM\RgvService.wsdl" />
+ <None Include="Web References\srmSER\item.xsd">
+ <SubType>Designer</SubType>
+ </None>
+ <None Include="Web References\srmSER\Reference.map">
+ <Generator>MSDiscoCodeGenerator</Generator>
+ <LastGenOutput>Reference.cs</LastGenOutput>
+ </None>
+ <None Include="Web References\srmSER\SrmService.wsdl" />
+ <None Include="Web References\tranSRM\item.xsd">
+ <SubType>Designer</SubType>
+ </None>
+ <None Include="Web References\tranSRM\Reference.map">
+ <Generator>MSDiscoCodeGenerator</Generator>
+ <LastGenOutput>Reference.cs</LastGenOutput>
+ </None>
+ <None Include="Web References\tranSRM\SrmTranService.wsdl" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <WCFMetadata Include="Service References\" />
+ </ItemGroup>
+ <ItemGroup>
+ <WebReferences Include="Web References\" />
+ </ItemGroup>
+ <ItemGroup>
+ <WebReferenceUrl Include="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/">
+ <UrlBehavior>Dynamic</UrlBehavior>
+ <RelPath>Web References\rgvSRM\</RelPath>
+ <UpdateFromURL>http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/</UpdateFromURL>
+ <ServiceLocationURL>
+ </ServiceLocationURL>
+ <CachedDynamicPropName>
+ </CachedDynamicPropName>
+ <CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
+ <CachedSettingsPropName>DeviceWCS_rgvSRM_RgvService</CachedSettingsPropName>
+ </WebReferenceUrl>
+ <WebReferenceUrl Include="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/">
+ <UrlBehavior>Dynamic</UrlBehavior>
+ <RelPath>Web References\srmSER\</RelPath>
+ <UpdateFromURL>http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/</UpdateFromURL>
+ <ServiceLocationURL>
+ </ServiceLocationURL>
+ <CachedDynamicPropName>
+ </CachedDynamicPropName>
+ <CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
+ <CachedSettingsPropName>DeviceWCS_srmSER_SrmService</CachedSettingsPropName>
+ </WebReferenceUrl>
+ <WebReferenceUrl Include="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/">
+ <UrlBehavior>Dynamic</UrlBehavior>
+ <RelPath>Web References\tranSRM\</RelPath>
+ <UpdateFromURL>http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/</UpdateFromURL>
+ <ServiceLocationURL>
+ </ServiceLocationURL>
+ <CachedDynamicPropName>
+ </CachedDynamicPropName>
+ <CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
+ <CachedSettingsPropName>DeviceWCS_tranSRM_SrmTranService</CachedSettingsPropName>
+ </WebReferenceUrl>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Web References\srmSER\item.disco" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Web References\rgvSRM\item.disco" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Web References\tranSRM\item.disco" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\EnumType\EnumType.csproj">
+ <Project>{50c2ccc5-0055-49c2-b2f6-b9ce452bc726}</Project>
+ <Name>EnumType</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\IWareDataAccess\IWareDataAccess.csproj">
+ <Project>{56f658b5-5384-414e-8fae-a78c8ee256e8}</Project>
+ <Name>IWareDataAccess</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/EDM/Base_ProductPosition.cs b/qqjf-Background/DeviceWCS/EDM/Base_ProductPosition.cs
new file mode 100644
index 0000000..90a9583
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/EDM/Base_ProductPosition.cs
@@ -0,0 +1,230 @@
+namespace DeviceWCS.EDM
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_ProductPosition
+ {
+ [Key]
+ public long ProductPosition_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ClassName { get; set; }
+
+ [StringLength(50)]
+ public string BillCode { get; set; }
+
+ public int Storage_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string PositionName { get; set; }
+
+ public long Product_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [Required]
+ [StringLength(500)]
+ public string ProductName { get; set; }
+
+ [Required]
+ [StringLength(300)]
+ public string ProductModel { get; set; }
+
+ public decimal? ProductStorage { get; set; }
+
+ public decimal? OrignStorage { get; set; }
+
+ public DateTime InStorageDate { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ public int Consignor_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ConsignorCode { get; set; }
+
+ [Required]
+ [StringLength(150)]
+ public string ConsignorName { get; set; }
+
+ [StringLength(50)]
+ public string SingleSignCode { get; set; }
+
+ public decimal? DynamicWeight { get; set; }
+
+ public int MainID { get; set; }
+
+ public int DetailID { get; set; }
+
+ public int? Provider_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProviderCode { get; set; }
+
+ [StringLength(50)]
+ public string ProviderShortName { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? PurchasePrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? PurchaseMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Rate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? RatePrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? RateMoney { get; set; }
+
+ public string ProductSpec { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? AvgPrice { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ [StringLength(50)]
+ public string DeleteBy { get; set; }
+
+ [StringLength(50)]
+ public string EnterCode { get; set; }
+
+ [StringLength(50)]
+ public string OrderCode { get; set; }
+
+ public int Class_Id { get; set; }
+
+ [StringLength(50)]
+ public string BatchNumber { get; set; }
+
+ public DateTime? ProduceDate { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ [StringLength(50)]
+ public string RelationCode { get; set; }
+
+ public int? ShelfLifeDay { get; set; }
+
+ public DateTime? ShelfLifeDate { get; set; }
+
+ public int? ValidShelfLifeDay { get; set; }
+
+ [StringLength(50)]
+ public string StorageStatus { get; set; }
+
+ [StringLength(50)]
+ public string ProductAttribute { get; set; }
+
+ [StringLength(150)]
+ public string DeclareNo { get; set; }
+
+ public DateTime? LimitDate { get; set; }
+
+ [StringLength(50)]
+ public string AreaCode { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField01 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField02 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField03 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField04 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField05 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField06 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField07 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField08 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField09 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField10 { get; set; }
+
+ public decimal? Weight { get; set; }
+
+ public decimal? TotalWeight { get; set; }
+
+ public decimal? TotalWeightOrign { get; set; }
+
+ [StringLength(50)]
+ public string OriginPlace { get; set; }
+
+ [StringLength(50)]
+ public string ContainerNo { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ public string DetailExpandFields { get; set; }
+
+ [StringLength(50)]
+ public string PartStatus { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ [StringLength(50)]
+ public string PlateTypeCode { get; set; }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/EDM/Model.cs b/qqjf-Background/DeviceWCS/EDM/Model.cs
new file mode 100644
index 0000000..b640182
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/EDM/Model.cs
@@ -0,0 +1,125 @@
+namespace DeviceWCS.EDM
+{
+ using System;
+ using System.Data.Entity;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Linq;
+
+ public partial class Model : DbContext
+ {
+ public Model()
+ : base("name=Model1")
+ {
+ }
+
+ public virtual DbSet<Base_ProductPosition> Base_ProductPosition { get; set; }
+ public virtual DbSet<Purchase_Order> Purchase_Order { get; set; }
+
+ protected override void OnModelCreating(DbModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.ProductStorage)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.OrignStorage)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.DynamicWeight)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.PurchasePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.PurchaseMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.Rate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.RatePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.RateMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.AvgPrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.Weight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.TotalWeight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.TotalWeightOrign)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.CorpURL)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalPaidMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.SurplusTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.ExpressFee)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.Rate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalRateMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.Refund)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TaxAmountTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalWeight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalPaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.Unpaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.DynamicWeight)
+ .HasPrecision(14, 4);
+ }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/EDM/Purchase_Order.cs b/qqjf-Background/DeviceWCS/EDM/Purchase_Order.cs
new file mode 100644
index 0000000..3845b88
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/EDM/Purchase_Order.cs
@@ -0,0 +1,232 @@
+namespace DeviceWCS.EDM
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Purchase_Order
+ {
+ [Key]
+ public int Order_Id { get; set; }
+
+ [StringLength(50)]
+ public string OrderCode { get; set; }
+
+ public int Storage_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ public int? User_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserTrueName { get; set; }
+
+ public int? Dept_Id { get; set; }
+
+ [StringLength(50)]
+ public string DeptName { get; set; }
+
+ public DateTime? ApplyDate { get; set; }
+
+ public DateTime? ArrivedDate { get; set; }
+
+ public int? Provider_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProviderCode { get; set; }
+
+ [StringLength(50)]
+ public string ProviderShortName { get; set; }
+
+ [StringLength(200)]
+ public string CorpURL { get; set; }
+
+ public decimal? TotalQuantity { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalPaidMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? SurplusTotal { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? ExpressFee { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Rate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalRateMoney { get; set; }
+
+ [StringLength(50)]
+ public string ProductionStatus { get; set; }
+
+ public byte? StatusID { get; set; }
+
+ [StringLength(50)]
+ public string StatusText { get; set; }
+
+ public byte? ReturnStatusID { get; set; }
+
+ [StringLength(50)]
+ public string ReturnStatusText { get; set; }
+
+ [StringLength(50)]
+ public string Auditor { get; set; }
+
+ public byte? Auditing { get; set; }
+
+ public DateTime? AuditDate { get; set; }
+
+ public string AuditRemark { get; set; }
+
+ [StringLength(250)]
+ public string TrackingNumber { get; set; }
+
+ public byte? Enable { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Refund { get; set; }
+
+ public int Consignor_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ConsignorCode { get; set; }
+
+ [Required]
+ [StringLength(150)]
+ public string ConsignorName { get; set; }
+
+ public byte? IsChecking { get; set; }
+
+ public int? IsArrivalProcess { get; set; }
+
+ public byte? FinStatusID { get; set; }
+
+ [StringLength(50)]
+ public string FinStatusText { get; set; }
+
+ [StringLength(32)]
+ public string ExternalNo { get; set; }
+
+ [StringLength(32)]
+ public string ExternalNo2 { get; set; }
+
+ public long? SourceId { get; set; }
+
+ public byte? IsCiqDeclare { get; set; }
+
+ [StringLength(50)]
+ public string OrderType { get; set; }
+
+ [StringLength(50)]
+ public string ReturnOrderCode { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TaxAmountTotal { get; set; }
+
+ public decimal? TotalWeight { get; set; }
+
+ [StringLength(50)]
+ public string ContainerNo { get; set; }
+
+ [StringLength(300)]
+ public string FeeItem_Ids { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalPaid { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Unpaid { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ public int? Plate_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ public int? ProductionLine_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProductionLineCode { get; set; }
+
+ [StringLength(50)]
+ public string ProductionLineName { get; set; }
+
+ public int? Printing { get; set; }
+
+ [StringLength(50)]
+ public string PartStatus { get; set; }
+
+ public decimal? DynamicWeight { get; set; }
+
+ [StringLength(50)]
+ public string RelationDrivers { get; set; }
+
+ [StringLength(50)]
+ public string PlateName { get; set; }
+
+ [StringLength(50)]
+ public string RepairType { get; set; }
+
+ public int? PlateType_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ public byte? OverRun { get; set; }
+
+ [StringLength(50)]
+ public string PositionName { get; set; }
+
+ public byte? IsOverWeight { get; set; }
+
+ public int? packingQuantity { get; set; }
+
+ public byte? isPassWeight { get; set; }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/Form1.Designer.cs b/qqjf-Background/DeviceWCS/Form1.Designer.cs
new file mode 100644
index 0000000..ad016d1
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Form1.Designer.cs
@@ -0,0 +1,1948 @@
+锘縩amespace DeviceWCS
+{
+ partial class Form1
+ {
+ /// <summary>
+ /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆�
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// 娓呯悊鎵�鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆�
+ /// </summary>
+ /// <param name="disposing">濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓� true锛涘惁鍒欎负 false銆�</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 绐椾綋璁捐鍣ㄧ敓鎴愮殑浠g爜
+
+ /// <summary>
+ /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈
+ /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.label60 = new System.Windows.Forms.Label();
+ this.button22 = new System.Windows.Forms.Button();
+ this.textBox11 = new System.Windows.Forms.TextBox();
+ this.button19 = new System.Windows.Forms.Button();
+ this.button17 = new System.Windows.Forms.Button();
+ this.label54 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label18 = new System.Windows.Forms.Label();
+ this.label17 = new System.Windows.Forms.Label();
+ this.label29 = new System.Windows.Forms.Label();
+ this.label16 = new System.Windows.Forms.Label();
+ this.label15 = new System.Windows.Forms.Label();
+ this.label14 = new System.Windows.Forms.Label();
+ this.label13 = new System.Windows.Forms.Label();
+ this.label12 = new System.Windows.Forms.Label();
+ this.label11 = new System.Windows.Forms.Label();
+ this.label19 = new System.Windows.Forms.Label();
+ this.label10 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.comboBox4 = new System.Windows.Forms.ComboBox();
+ this.comboBox2 = new System.Windows.Forms.ComboBox();
+ this.comboBox3 = new System.Windows.Forms.ComboBox();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.tabPage2 = new System.Windows.Forms.TabPage();
+ this.label58 = new System.Windows.Forms.Label();
+ this.comboBox8 = new System.Windows.Forms.ComboBox();
+ this.button16 = new System.Windows.Forms.Button();
+ this.label57 = new System.Windows.Forms.Label();
+ this.button15 = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.comboBox7 = new System.Windows.Forms.ComboBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label25 = new System.Windows.Forms.Label();
+ this.label26 = new System.Windows.Forms.Label();
+ this.label53 = new System.Windows.Forms.Label();
+ this.label28 = new System.Windows.Forms.Label();
+ this.label27 = new System.Windows.Forms.Label();
+ this.label30 = new System.Windows.Forms.Label();
+ this.label31 = new System.Windows.Forms.Label();
+ this.label32 = new System.Windows.Forms.Label();
+ this.label33 = new System.Windows.Forms.Label();
+ this.label34 = new System.Windows.Forms.Label();
+ this.label35 = new System.Windows.Forms.Label();
+ this.button7 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.textBox6 = new System.Windows.Forms.TextBox();
+ this.textBox5 = new System.Windows.Forms.TextBox();
+ this.comboBox6 = new System.Windows.Forms.ComboBox();
+ this.button6 = new System.Windows.Forms.Button();
+ this.textBox4 = new System.Windows.Forms.TextBox();
+ this.comboBox5 = new System.Windows.Forms.ComboBox();
+ this.label24 = new System.Windows.Forms.Label();
+ this.label23 = new System.Windows.Forms.Label();
+ this.label22 = new System.Windows.Forms.Label();
+ this.label21 = new System.Windows.Forms.Label();
+ this.label20 = new System.Windows.Forms.Label();
+ this.tabPage3 = new System.Windows.Forms.TabPage();
+ this.cbDir = new System.Windows.Forms.ComboBox();
+ this.button21 = new System.Windows.Forms.Button();
+ this.label59 = new System.Windows.Forms.Label();
+ this.button20 = new System.Windows.Forms.Button();
+ this.button18 = new System.Windows.Forms.Button();
+ this.label56 = new System.Windows.Forms.Label();
+ this.label55 = new System.Windows.Forms.Label();
+ this.button12 = new System.Windows.Forms.Button();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button14 = new System.Windows.Forms.Button();
+ this.label41 = new System.Windows.Forms.Label();
+ this.label42 = new System.Windows.Forms.Label();
+ this.label43 = new System.Windows.Forms.Label();
+ this.label44 = new System.Windows.Forms.Label();
+ this.label45 = new System.Windows.Forms.Label();
+ this.label46 = new System.Windows.Forms.Label();
+ this.label47 = new System.Windows.Forms.Label();
+ this.label48 = new System.Windows.Forms.Label();
+ this.label52 = new System.Windows.Forms.Label();
+ this.label49 = new System.Windows.Forms.Label();
+ this.label50 = new System.Windows.Forms.Label();
+ this.label51 = new System.Windows.Forms.Label();
+ this.button9 = new System.Windows.Forms.Button();
+ this.textBox10 = new System.Windows.Forms.TextBox();
+ this.textBox7 = new System.Windows.Forms.TextBox();
+ this.label36 = new System.Windows.Forms.Label();
+ this.label37 = new System.Windows.Forms.Label();
+ this.label38 = new System.Windows.Forms.Label();
+ this.label40 = new System.Windows.Forms.Label();
+ this.label39 = new System.Windows.Forms.Label();
+ this.comboBox9 = new System.Windows.Forms.ComboBox();
+ this.textBox8 = new System.Windows.Forms.TextBox();
+ this.textBox9 = new System.Windows.Forms.TextBox();
+ this.tabPage4 = new System.Windows.Forms.TabPage();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.dGVQuery = new System.Windows.Forms.DataGridView();
+ this.id = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.device = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.deviceNum = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.sourcePlace = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.toPlace = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.isReleased = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.hasFinished = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.label61 = new System.Windows.Forms.Label();
+ this.tbTaskId = new System.Windows.Forms.TextBox();
+ this.btnSearch = new System.Windows.Forms.Button();
+ this.button23 = new System.Windows.Forms.Button();
+ this.tabControl1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ this.tabPage2.SuspendLayout();
+ this.tabPage3.SuspendLayout();
+ this.tabPage4.SuspendLayout();
+ this.tableLayoutPanel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dGVQuery)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.tabPage1);
+ this.tabControl1.Controls.Add(this.tabPage2);
+ this.tabControl1.Controls.Add(this.tabPage3);
+ this.tabControl1.Controls.Add(this.tabPage4);
+ this.tabControl1.Location = new System.Drawing.Point(3, 4);
+ this.tabControl1.Margin = new System.Windows.Forms.Padding(4);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(984, 680);
+ this.tabControl1.TabIndex = 4;
+ //
+ // tabPage1
+ //
+ this.tabPage1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.tabPage1.Controls.Add(this.label60);
+ this.tabPage1.Controls.Add(this.button22);
+ this.tabPage1.Controls.Add(this.textBox11);
+ this.tabPage1.Controls.Add(this.button19);
+ this.tabPage1.Controls.Add(this.button17);
+ this.tabPage1.Controls.Add(this.label54);
+ this.tabPage1.Controls.Add(this.label9);
+ this.tabPage1.Controls.Add(this.button4);
+ this.tabPage1.Controls.Add(this.button5);
+ this.tabPage1.Controls.Add(this.button3);
+ this.tabPage1.Controls.Add(this.button2);
+ this.tabPage1.Controls.Add(this.button1);
+ this.tabPage1.Controls.Add(this.textBox1);
+ this.tabPage1.Controls.Add(this.label8);
+ this.tabPage1.Controls.Add(this.label7);
+ this.tabPage1.Controls.Add(this.label6);
+ this.tabPage1.Controls.Add(this.label5);
+ this.tabPage1.Controls.Add(this.label18);
+ this.tabPage1.Controls.Add(this.label17);
+ this.tabPage1.Controls.Add(this.label29);
+ this.tabPage1.Controls.Add(this.label16);
+ this.tabPage1.Controls.Add(this.label15);
+ this.tabPage1.Controls.Add(this.label14);
+ this.tabPage1.Controls.Add(this.label13);
+ this.tabPage1.Controls.Add(this.label12);
+ this.tabPage1.Controls.Add(this.label11);
+ this.tabPage1.Controls.Add(this.label19);
+ this.tabPage1.Controls.Add(this.label10);
+ this.tabPage1.Controls.Add(this.label4);
+ this.tabPage1.Controls.Add(this.label3);
+ this.tabPage1.Controls.Add(this.comboBox4);
+ this.tabPage1.Controls.Add(this.comboBox2);
+ this.tabPage1.Controls.Add(this.comboBox3);
+ this.tabPage1.Controls.Add(this.comboBox1);
+ this.tabPage1.Controls.Add(this.label2);
+ this.tabPage1.Controls.Add(this.textBox3);
+ this.tabPage1.Controls.Add(this.textBox2);
+ this.tabPage1.Location = new System.Drawing.Point(4, 25);
+ this.tabPage1.Margin = new System.Windows.Forms.Padding(4);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(4);
+ this.tabPage1.Size = new System.Drawing.Size(976, 651);
+ this.tabPage1.TabIndex = 0;
+ this.tabPage1.Text = "鍫嗗灈鏈�";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // label60
+ //
+ this.label60.AutoSize = true;
+ this.label60.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label60.Location = new System.Drawing.Point(436, 520);
+ this.label60.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label60.Name = "label60";
+ this.label60.Size = new System.Drawing.Size(255, 27);
+ this.label60.TabIndex = 35;
+ this.label60.Text = "鍏宠仈鍒犻櫎鐨勪换鍔″彿锛�";
+ //
+ // button22
+ //
+ this.button22.BackColor = System.Drawing.Color.Plum;
+ this.button22.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button22.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button22.Location = new System.Drawing.Point(11, 469);
+ this.button22.Margin = new System.Windows.Forms.Padding(4);
+ this.button22.Name = "button22";
+ this.button22.Size = new System.Drawing.Size(351, 38);
+ this.button22.TabIndex = 34;
+ this.button22.Text = "鍒囨崲浼樺寲:鍏抽棴";
+ this.button22.UseVisualStyleBackColor = false;
+ this.button22.Visible = false;
+ this.button22.Click += new System.EventHandler(this.button22_Click);
+ //
+ // textBox11
+ //
+ this.textBox11.Location = new System.Drawing.Point(441, 559);
+ this.textBox11.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox11.Name = "textBox11";
+ this.textBox11.Size = new System.Drawing.Size(252, 25);
+ this.textBox11.TabIndex = 33;
+ //
+ // button19
+ //
+ this.button19.BackColor = System.Drawing.Color.Plum;
+ this.button19.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button19.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button19.Location = new System.Drawing.Point(11, 520);
+ this.button19.Margin = new System.Windows.Forms.Padding(4);
+ this.button19.Name = "button19";
+ this.button19.Size = new System.Drawing.Size(351, 38);
+ this.button19.TabIndex = 32;
+ this.button19.Text = "鍒犻櫎鍏宠仈浠诲姟";
+ this.button19.UseVisualStyleBackColor = false;
+ this.button19.Click += new System.EventHandler(this.button19_Click);
+ //
+ // button17
+ //
+ this.button17.BackColor = System.Drawing.Color.Plum;
+ this.button17.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button17.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button17.Location = new System.Drawing.Point(7, 600);
+ this.button17.Margin = new System.Windows.Forms.Padding(4);
+ this.button17.Name = "button17";
+ this.button17.Size = new System.Drawing.Size(351, 38);
+ this.button17.TabIndex = 31;
+ this.button17.Text = "鍒犻櫎鍏宠仈浠诲姟";
+ this.button17.UseVisualStyleBackColor = false;
+ this.button17.Visible = false;
+ this.button17.Click += new System.EventHandler(this.button17_Click);
+ //
+ // label54
+ //
+ this.label54.AutoSize = true;
+ this.label54.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label54.Location = new System.Drawing.Point(436, 466);
+ this.label54.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label54.Name = "label54";
+ this.label54.Size = new System.Drawing.Size(201, 27);
+ this.label54.TabIndex = 19;
+ this.label54.Text = "浠诲姟鏄惁瀹屾垚锛�";
+ //
+ // label9
+ //
+ this.label9.Font = new System.Drawing.Font("瀹嬩綋", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label9.Location = new System.Drawing.Point(404, 8);
+ this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(465, 34);
+ this.label9.TabIndex = 4;
+ this.label9.Text = "浠诲姟鍙戦�佽繑鍥�:";
+ //
+ // button4
+ //
+ this.button4.BackColor = System.Drawing.Color.Plum;
+ this.button4.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button4.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button4.Location = new System.Drawing.Point(189, 424);
+ this.button4.Margin = new System.Windows.Forms.Padding(4);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(172, 38);
+ this.button4.TabIndex = 3;
+ this.button4.Text = "鍒犻櫎浠诲姟";
+ this.button4.UseVisualStyleBackColor = false;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button5
+ //
+ this.button5.BackColor = System.Drawing.Color.DarkKhaki;
+ this.button5.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button5.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button5.Location = new System.Drawing.Point(7, 372);
+ this.button5.Margin = new System.Windows.Forms.Padding(4);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(352, 38);
+ this.button5.TabIndex = 3;
+ this.button5.Text = "瑙i櫎鎶ヨ";
+ this.button5.UseVisualStyleBackColor = false;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button3
+ //
+ this.button3.BackColor = System.Drawing.Color.Plum;
+ this.button3.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button3.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button3.Location = new System.Drawing.Point(11, 424);
+ this.button3.Margin = new System.Windows.Forms.Padding(4);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(155, 38);
+ this.button3.TabIndex = 3;
+ this.button3.Text = "鎬ュ仠";
+ this.button3.UseVisualStyleBackColor = false;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.BackColor = System.Drawing.Color.DodgerBlue;
+ this.button2.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button2.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button2.Location = new System.Drawing.Point(8, 316);
+ this.button2.Margin = new System.Windows.Forms.Padding(4);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(353, 38);
+ this.button2.TabIndex = 3;
+ this.button2.Text = "浠诲姟纭";
+ this.button2.UseVisualStyleBackColor = false;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.BackColor = System.Drawing.Color.MediumAquamarine;
+ this.button1.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button1.Location = new System.Drawing.Point(8, 264);
+ this.button1.Margin = new System.Windows.Forms.Padding(4);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(353, 38);
+ this.button1.TabIndex = 3;
+ this.button1.Text = "鍙戦��";
+ this.button1.UseVisualStyleBackColor = false;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(145, 55);
+ this.textBox1.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(215, 25);
+ this.textBox1.TabIndex = 0;
+ this.textBox1.Text = "1111";
+ //
+ // label8
+ //
+ this.label8.AutoSize = true;
+ this.label8.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label8.Location = new System.Drawing.Point(0, 220);
+ this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(134, 27);
+ this.label8.TabIndex = 1;
+ this.label8.Text = "鎵樼洏绫诲瀷:";
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label7.Location = new System.Drawing.Point(27, 136);
+ this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(107, 27);
+ this.label7.TabIndex = 1;
+ this.label7.Text = "鐩爣浣�:";
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label6.Location = new System.Drawing.Point(28, 96);
+ this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(107, 27);
+ this.label6.TabIndex = 1;
+ this.label6.Text = "璧峰浣�:";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label5.Location = new System.Drawing.Point(27, 55);
+ this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(107, 27);
+ this.label5.TabIndex = 1;
+ this.label5.Text = "浠诲姟鍙�:";
+ //
+ // label18
+ //
+ this.label18.AutoSize = true;
+ this.label18.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label18.Location = new System.Drawing.Point(492, 226);
+ this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label18.Name = "label18";
+ this.label18.Size = new System.Drawing.Size(80, 27);
+ this.label18.TabIndex = 1;
+ this.label18.Text = "鐘舵��:";
+ //
+ // label17
+ //
+ this.label17.AutoSize = true;
+ this.label17.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label17.Location = new System.Drawing.Point(408, 192);
+ this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label17.Name = "label17";
+ this.label17.Size = new System.Drawing.Size(161, 27);
+ this.label17.TabIndex = 1;
+ this.label17.Text = "绯荤粺浠诲姟鍙�:";
+ //
+ // label29
+ //
+ this.label29.AutoSize = true;
+ this.label29.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label29.Location = new System.Drawing.Point(436, 436);
+ this.label29.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label29.Name = "label29";
+ this.label29.Size = new System.Drawing.Size(134, 27);
+ this.label29.TabIndex = 1;
+ this.label29.Text = "鎶ヨ鍐呭:";
+ //
+ // label16
+ //
+ this.label16.AutoSize = true;
+ this.label16.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label16.Location = new System.Drawing.Point(436, 401);
+ this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label16.Name = "label16";
+ this.label16.Size = new System.Drawing.Size(134, 27);
+ this.label16.TabIndex = 1;
+ this.label16.Text = "璐у弶浣嶇疆:";
+ //
+ // label15
+ //
+ this.label15.AutoSize = true;
+ this.label15.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label15.Location = new System.Drawing.Point(464, 366);
+ this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label15.Name = "label15";
+ this.label15.Size = new System.Drawing.Size(107, 27);
+ this.label15.TabIndex = 1;
+ this.label15.Text = "褰撳墠灞�:";
+ //
+ // label14
+ //
+ this.label14.AutoSize = true;
+ this.label14.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label14.Location = new System.Drawing.Point(464, 331);
+ this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label14.Name = "label14";
+ this.label14.Size = new System.Drawing.Size(107, 27);
+ this.label14.TabIndex = 1;
+ this.label14.Text = "褰撳墠鍒�:";
+ //
+ // label13
+ //
+ this.label13.AutoSize = true;
+ this.label13.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label13.Location = new System.Drawing.Point(436, 296);
+ this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(134, 27);
+ this.label13.TabIndex = 1;
+ this.label13.Text = "鏄惁鏈夎揣:";
+ //
+ // label12
+ //
+ this.label12.AutoSize = true;
+ this.label12.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label12.Location = new System.Drawing.Point(436, 261);
+ this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(134, 27);
+ this.label12.TabIndex = 1;
+ this.label12.Text = "鏄惁鎶ヨ:";
+ //
+ // label11
+ //
+ this.label11.AutoSize = true;
+ this.label11.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label11.Location = new System.Drawing.Point(492, 156);
+ this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(80, 27);
+ this.label11.TabIndex = 1;
+ this.label11.Text = "妯″紡:";
+ //
+ // label19
+ //
+ this.label19.AutoSize = true;
+ this.label19.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label19.Location = new System.Drawing.Point(436, 86);
+ this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label19.Name = "label19";
+ this.label19.Size = new System.Drawing.Size(134, 27);
+ this.label19.TabIndex = 1;
+ this.label19.Text = "鍫嗗灈鏈哄悕:";
+ //
+ // label10
+ //
+ this.label10.AutoSize = true;
+ this.label10.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label10.Location = new System.Drawing.Point(492, 121);
+ this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(80, 27);
+ this.label10.TabIndex = 1;
+ this.label10.Text = "蹇冭烦:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label4.Location = new System.Drawing.Point(53, 15);
+ this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(81, 27);
+ this.label4.TabIndex = 1;
+ this.label4.Text = "ID鍙�:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label3.Location = new System.Drawing.Point(-1, 174);
+ this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(134, 27);
+ this.label3.TabIndex = 1;
+ this.label3.Text = "鎵ц鏂瑰紡:";
+ //
+ // comboBox4
+ //
+ this.comboBox4.Cursor = System.Windows.Forms.Cursors.Default;
+ this.comboBox4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox4.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox4.Items.AddRange(new object[] {
+ "涓�鍙峰爢鍨涙満",
+ "浜屽彿鍫嗗灈鏈�",
+ "涓夊彿鍫嗗灈鏈�",
+ "鍥涘彿鍫嗗灈鏈�",
+ "浜斿彿鍫嗗灈鏈�",
+ "鍏彿鍫嗗灈鏈�",
+ "涓冨彿鍫嗗灈鏈�",
+ "鍏彿鍫嗗灈鏈�",
+ "涔濆彿鍫嗗灈鏈�"});
+ this.comboBox4.Location = new System.Drawing.Point(497, 48);
+ this.comboBox4.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox4.Name = "comboBox4";
+ this.comboBox4.Size = new System.Drawing.Size(160, 28);
+ this.comboBox4.TabIndex = 2;
+ this.comboBox4.Text = "涓�鍙峰爢鍨涙満";
+ this.comboBox4.SelectedIndexChanged += new System.EventHandler(this.comboBox4_SelectedIndexChanged);
+ //
+ // comboBox2
+ //
+ this.comboBox2.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox2.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox2.FormattingEnabled = true;
+ this.comboBox2.Items.AddRange(new object[] {
+ "涓�鍙峰爢鍨涙満",
+ "浜屽彿鍫嗗灈鏈�",
+ "涓夊彿鍫嗗灈鏈�",
+ "鍥涘彿鍫嗗灈鏈�",
+ "浜斿彿鍫嗗灈鏈�",
+ "鍏彿鍫嗗灈鏈�",
+ "涓冨彿鍫嗗灈鏈�",
+ "鍏彿鍫嗗灈鏈�",
+ "涔濆彿鍫嗗灈鏈�"});
+ this.comboBox2.Location = new System.Drawing.Point(145, 15);
+ this.comboBox2.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox2.Name = "comboBox2";
+ this.comboBox2.Size = new System.Drawing.Size(215, 28);
+ this.comboBox2.TabIndex = 2;
+ this.comboBox2.Text = "涓�鍙峰爢鍨涙満";
+ this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectionChangeCommitted);
+ //
+ // comboBox3
+ //
+ this.comboBox3.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox3.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox3.FormattingEnabled = true;
+ this.comboBox3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.comboBox3.Items.AddRange(new object[] {
+ "1-2710*1310*2000",
+ "2-2710*1310*1000",
+ "3-2600*1400*1000",
+ "4-2500*(1800-2000)*1200",
+ "5-2500*(1500-1600)*1000",
+ "6-2500*1310*2100",
+ "7-2200*1400*1000",
+ "8-1650*1310*2100",
+ "9-1200*1310*1000",
+ "10-2500*(1800-2000)*1000",
+ "11-2500*(1700-1800)*1000",
+ "12-2500*(1600-1700)*1000",
+ "13-2500*(1500-1600)*1000"});
+ this.comboBox3.Location = new System.Drawing.Point(147, 216);
+ this.comboBox3.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox3.Name = "comboBox3";
+ this.comboBox3.Size = new System.Drawing.Size(213, 28);
+ this.comboBox3.TabIndex = 2;
+ this.comboBox3.Text = "1-2710*1310*2000";
+ //
+ // comboBox1
+ //
+ this.comboBox1.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox1.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "鎼繍",
+ "绉诲姩",
+ "鍗曟斁"});
+ this.comboBox1.Location = new System.Drawing.Point(145, 174);
+ this.comboBox1.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(215, 28);
+ this.comboBox1.TabIndex = 2;
+ this.comboBox1.Text = "鎼繍";
+ this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label2.Location = new System.Drawing.Point(667, 48);
+ this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(66, 27);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "鐘舵��";
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(145, 136);
+ this.textBox3.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(215, 25);
+ this.textBox3.TabIndex = 0;
+ this.textBox3.Text = "01-01-01";
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(145, 96);
+ this.textBox2.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(215, 25);
+ this.textBox2.TabIndex = 0;
+ this.textBox2.Text = "01-01-01";
+ //
+ // tabPage2
+ //
+ this.tabPage2.Controls.Add(this.label58);
+ this.tabPage2.Controls.Add(this.comboBox8);
+ this.tabPage2.Controls.Add(this.button16);
+ this.tabPage2.Controls.Add(this.label57);
+ this.tabPage2.Controls.Add(this.button15);
+ this.tabPage2.Controls.Add(this.button23);
+ this.tabPage2.Controls.Add(this.button11);
+ this.tabPage2.Controls.Add(this.comboBox7);
+ this.tabPage2.Controls.Add(this.label1);
+ this.tabPage2.Controls.Add(this.label25);
+ this.tabPage2.Controls.Add(this.label26);
+ this.tabPage2.Controls.Add(this.label53);
+ this.tabPage2.Controls.Add(this.label28);
+ this.tabPage2.Controls.Add(this.label27);
+ this.tabPage2.Controls.Add(this.label30);
+ this.tabPage2.Controls.Add(this.label31);
+ this.tabPage2.Controls.Add(this.label32);
+ this.tabPage2.Controls.Add(this.label33);
+ this.tabPage2.Controls.Add(this.label34);
+ this.tabPage2.Controls.Add(this.label35);
+ this.tabPage2.Controls.Add(this.button7);
+ this.tabPage2.Controls.Add(this.button8);
+ this.tabPage2.Controls.Add(this.button10);
+ this.tabPage2.Controls.Add(this.textBox6);
+ this.tabPage2.Controls.Add(this.textBox5);
+ this.tabPage2.Controls.Add(this.comboBox6);
+ this.tabPage2.Controls.Add(this.button6);
+ this.tabPage2.Controls.Add(this.textBox4);
+ this.tabPage2.Controls.Add(this.comboBox5);
+ this.tabPage2.Controls.Add(this.label24);
+ this.tabPage2.Controls.Add(this.label23);
+ this.tabPage2.Controls.Add(this.label22);
+ this.tabPage2.Controls.Add(this.label21);
+ this.tabPage2.Controls.Add(this.label20);
+ this.tabPage2.Cursor = System.Windows.Forms.Cursors.Default;
+ this.tabPage2.Location = new System.Drawing.Point(4, 25);
+ this.tabPage2.Margin = new System.Windows.Forms.Padding(4);
+ this.tabPage2.Name = "tabPage2";
+ this.tabPage2.Padding = new System.Windows.Forms.Padding(4);
+ this.tabPage2.Size = new System.Drawing.Size(976, 651);
+ this.tabPage2.TabIndex = 1;
+ this.tabPage2.Text = "RGV";
+ this.tabPage2.UseVisualStyleBackColor = true;
+ //
+ // label58
+ //
+ this.label58.AutoSize = true;
+ this.label58.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label58.Location = new System.Drawing.Point(12, 222);
+ this.label58.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label58.Name = "label58";
+ this.label58.Size = new System.Drawing.Size(134, 27);
+ this.label58.TabIndex = 31;
+ this.label58.Text = "鎵樼洏绫诲瀷:";
+ //
+ // comboBox8
+ //
+ this.comboBox8.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox8.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox8.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox8.FormattingEnabled = true;
+ this.comboBox8.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.comboBox8.Items.AddRange(new object[] {
+ "1-2710*1310*2000",
+ "2-2710*1310*1000",
+ "3-2600*1400*1000",
+ "4-2500*(1800-2000)*1200",
+ "5-2500*(1500-1600)*1000",
+ "6-2500*1310*2100",
+ "7-2200*1400*1000",
+ "8-1650*1310*2100",
+ "9-1200*1310*1000",
+ "10-2500*(1800-2000)*1000",
+ "11-2500*(1700-1800)*1000",
+ "12-2500*(1600-1700)*1000",
+ "13-2500*(1500-1600)*1000"});
+ this.comboBox8.Location = new System.Drawing.Point(157, 219);
+ this.comboBox8.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox8.Name = "comboBox8";
+ this.comboBox8.Size = new System.Drawing.Size(213, 28);
+ this.comboBox8.TabIndex = 32;
+ this.comboBox8.Text = "1-2710*1310*2000";
+ //
+ // button16
+ //
+ this.button16.BackColor = System.Drawing.Color.Plum;
+ this.button16.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button16.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button16.Location = new System.Drawing.Point(19, 553);
+ this.button16.Margin = new System.Windows.Forms.Padding(4);
+ this.button16.Name = "button16";
+ this.button16.Size = new System.Drawing.Size(351, 38);
+ this.button16.TabIndex = 30;
+ this.button16.Text = "鍒犻櫎鍏宠仈浠诲姟";
+ this.button16.UseVisualStyleBackColor = false;
+ this.button16.Visible = false;
+ this.button16.Click += new System.EventHandler(this.button16_Click);
+ //
+ // label57
+ //
+ this.label57.AutoSize = true;
+ this.label57.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label57.Location = new System.Drawing.Point(437, 510);
+ this.label57.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label57.Name = "label57";
+ this.label57.Size = new System.Drawing.Size(135, 27);
+ this.label57.TabIndex = 29;
+ this.label57.Text = "RGV鍙敤锛�";
+ //
+ // button15
+ //
+ this.button15.BackColor = System.Drawing.Color.Lime;
+ this.button15.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button15.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button15.Location = new System.Drawing.Point(19, 504);
+ this.button15.Margin = new System.Windows.Forms.Padding(4);
+ this.button15.Name = "button15";
+ this.button15.Size = new System.Drawing.Size(353, 38);
+ this.button15.TabIndex = 28;
+ this.button15.Text = "绂佺敤/鍚敤";
+ this.button15.UseVisualStyleBackColor = false;
+ this.button15.Click += new System.EventHandler(this.button15_Click_1);
+ //
+ // button11
+ //
+ this.button11.BackColor = System.Drawing.Color.Red;
+ this.button11.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button11.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button11.Location = new System.Drawing.Point(19, 455);
+ this.button11.Margin = new System.Windows.Forms.Padding(4);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(351, 38);
+ this.button11.TabIndex = 27;
+ this.button11.Text = "鎬ュ仠";
+ this.button11.UseVisualStyleBackColor = false;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // comboBox7
+ //
+ this.comboBox7.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox7.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox7.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox7.FormattingEnabled = true;
+ this.comboBox7.Items.AddRange(new object[] {
+ "涓�鍙稲GV",
+ "浜屽彿RGV",
+ "涓夊彿RGV",
+ "鍥涘彿RGV"});
+ this.comboBox7.Location = new System.Drawing.Point(496, 50);
+ this.comboBox7.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox7.Name = "comboBox7";
+ this.comboBox7.Size = new System.Drawing.Size(112, 28);
+ this.comboBox7.TabIndex = 26;
+ this.comboBox7.Text = "涓�鍙稲GV";
+ this.comboBox7.SelectedIndexChanged += new System.EventHandler(this.comboBox7_SelectedIndexChanged);
+ //
+ // label1
+ //
+ this.label1.Font = new System.Drawing.Font("瀹嬩綋", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Location = new System.Drawing.Point(405, 12);
+ this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(465, 34);
+ this.label1.TabIndex = 25;
+ this.label1.Text = "浠诲姟鍙戦�佽繑鍥�:";
+ //
+ // label25
+ //
+ this.label25.AutoSize = true;
+ this.label25.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label25.Location = new System.Drawing.Point(493, 265);
+ this.label25.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label25.Name = "label25";
+ this.label25.Size = new System.Drawing.Size(80, 27);
+ this.label25.TabIndex = 13;
+ this.label25.Text = "鐘舵��:";
+ //
+ // label26
+ //
+ this.label26.AutoSize = true;
+ this.label26.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label26.Location = new System.Drawing.Point(409, 222);
+ this.label26.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label26.Name = "label26";
+ this.label26.Size = new System.Drawing.Size(161, 27);
+ this.label26.TabIndex = 14;
+ this.label26.Text = "绯荤粺浠诲姟鍙�:";
+ //
+ // label53
+ //
+ this.label53.AutoSize = true;
+ this.label53.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label53.Location = new System.Drawing.Point(437, 471);
+ this.label53.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label53.Name = "label53";
+ this.label53.Size = new System.Drawing.Size(201, 27);
+ this.label53.TabIndex = 18;
+ this.label53.Text = "浠诲姟鏄惁瀹屾垚锛�";
+ //
+ // label28
+ //
+ this.label28.AutoSize = true;
+ this.label28.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label28.Location = new System.Drawing.Point(437, 435);
+ this.label28.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label28.Name = "label28";
+ this.label28.Size = new System.Drawing.Size(134, 27);
+ this.label28.TabIndex = 18;
+ this.label28.Text = "鎶ヨ鍐呭:";
+ //
+ // label27
+ //
+ this.label27.AutoSize = true;
+ this.label27.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label27.Location = new System.Drawing.Point(437, 392);
+ this.label27.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label27.Name = "label27";
+ this.label27.Size = new System.Drawing.Size(134, 27);
+ this.label27.TabIndex = 18;
+ this.label27.Text = "褰撳墠浣嶇疆:";
+ //
+ // label30
+ //
+ this.label30.AutoSize = true;
+ this.label30.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label30.Location = new System.Drawing.Point(437, 350);
+ this.label30.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label30.Name = "label30";
+ this.label30.Size = new System.Drawing.Size(134, 27);
+ this.label30.TabIndex = 18;
+ this.label30.Text = "鏄惁鏈夎揣:";
+ //
+ // label31
+ //
+ this.label31.AutoSize = true;
+ this.label31.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label31.Location = new System.Drawing.Point(437, 308);
+ this.label31.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label31.Name = "label31";
+ this.label31.Size = new System.Drawing.Size(134, 27);
+ this.label31.TabIndex = 19;
+ this.label31.Text = "鏄惁鎶ヨ:";
+ //
+ // label32
+ //
+ this.label32.AutoSize = true;
+ this.label32.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label32.Location = new System.Drawing.Point(493, 180);
+ this.label32.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label32.Name = "label32";
+ this.label32.Size = new System.Drawing.Size(80, 27);
+ this.label32.TabIndex = 20;
+ this.label32.Text = "妯″紡:";
+ //
+ // label33
+ //
+ this.label33.AutoSize = true;
+ this.label33.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label33.Location = new System.Drawing.Point(477, 95);
+ this.label33.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label33.Name = "label33";
+ this.label33.Size = new System.Drawing.Size(95, 27);
+ this.label33.TabIndex = 21;
+ this.label33.Text = "RGV鍚�:";
+ //
+ // label34
+ //
+ this.label34.AutoSize = true;
+ this.label34.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label34.Location = new System.Drawing.Point(493, 138);
+ this.label34.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label34.Name = "label34";
+ this.label34.Size = new System.Drawing.Size(80, 27);
+ this.label34.TabIndex = 22;
+ this.label34.Text = "蹇冭烦:";
+ //
+ // label35
+ //
+ this.label35.AutoSize = true;
+ this.label35.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label35.Location = new System.Drawing.Point(617, 52);
+ this.label35.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label35.Name = "label35";
+ this.label35.Size = new System.Drawing.Size(66, 27);
+ this.label35.TabIndex = 23;
+ this.label35.Text = "鐘舵��";
+ //
+ // button7
+ //
+ this.button7.BackColor = System.Drawing.Color.Plum;
+ this.button7.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button7.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button7.Location = new System.Drawing.Point(19, 406);
+ this.button7.Margin = new System.Windows.Forms.Padding(4);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(351, 38);
+ this.button7.TabIndex = 9;
+ this.button7.Text = "鍒犻櫎浠诲姟";
+ this.button7.UseVisualStyleBackColor = false;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // button8
+ //
+ this.button8.BackColor = System.Drawing.Color.DarkKhaki;
+ this.button8.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button8.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button8.Location = new System.Drawing.Point(19, 357);
+ this.button8.Margin = new System.Windows.Forms.Padding(4);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(352, 38);
+ this.button8.TabIndex = 10;
+ this.button8.Text = "瑙i櫎鎶ヨ";
+ this.button8.UseVisualStyleBackColor = false;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // button10
+ //
+ this.button10.BackColor = System.Drawing.Color.DodgerBlue;
+ this.button10.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button10.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button10.Location = new System.Drawing.Point(19, 308);
+ this.button10.Margin = new System.Windows.Forms.Padding(4);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(353, 38);
+ this.button10.TabIndex = 12;
+ this.button10.Text = "浠诲姟纭";
+ this.button10.UseVisualStyleBackColor = false;
+ this.button10.Click += new System.EventHandler(this.button10_Click);
+ //
+ // textBox6
+ //
+ this.textBox6.Location = new System.Drawing.Point(145, 139);
+ this.textBox6.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox6.Name = "textBox6";
+ this.textBox6.Size = new System.Drawing.Size(137, 25);
+ this.textBox6.TabIndex = 8;
+ this.textBox6.Text = "2";
+ //
+ // textBox5
+ //
+ this.textBox5.Location = new System.Drawing.Point(145, 98);
+ this.textBox5.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox5.Name = "textBox5";
+ this.textBox5.Size = new System.Drawing.Size(137, 25);
+ this.textBox5.TabIndex = 7;
+ this.textBox5.Text = "1";
+ //
+ // comboBox6
+ //
+ this.comboBox6.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox6.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox6.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox6.FormattingEnabled = true;
+ this.comboBox6.Items.AddRange(new object[] {
+ "鎼繍",
+ "绉诲姩"});
+ this.comboBox6.Location = new System.Drawing.Point(156, 182);
+ this.comboBox6.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox6.Name = "comboBox6";
+ this.comboBox6.Size = new System.Drawing.Size(137, 28);
+ this.comboBox6.TabIndex = 6;
+ this.comboBox6.Text = "鎼繍";
+ this.comboBox6.SelectedIndexChanged += new System.EventHandler(this.comboBox6_SelectedIndexChanged);
+ //
+ // button6
+ //
+ this.button6.BackColor = System.Drawing.Color.MediumAquamarine;
+ this.button6.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button6.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button6.Location = new System.Drawing.Point(19, 259);
+ this.button6.Margin = new System.Windows.Forms.Padding(4);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(353, 38);
+ this.button6.TabIndex = 5;
+ this.button6.Text = "鍙戦��";
+ this.button6.UseVisualStyleBackColor = false;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // textBox4
+ //
+ this.textBox4.Location = new System.Drawing.Point(145, 55);
+ this.textBox4.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox4.Name = "textBox4";
+ this.textBox4.Size = new System.Drawing.Size(137, 25);
+ this.textBox4.TabIndex = 4;
+ this.textBox4.Text = "1111";
+ //
+ // comboBox5
+ //
+ this.comboBox5.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox5.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox5.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox5.FormattingEnabled = true;
+ this.comboBox5.Items.AddRange(new object[] {
+ "涓�鍙稲GV",
+ "浜屽彿RGV",
+ "涓夊彿RGV",
+ "鍥涘彿RGV"});
+ this.comboBox5.Location = new System.Drawing.Point(141, 18);
+ this.comboBox5.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox5.Name = "comboBox5";
+ this.comboBox5.Size = new System.Drawing.Size(137, 28);
+ this.comboBox5.TabIndex = 3;
+ this.comboBox5.Text = "涓�鍙稲GV";
+ this.comboBox5.SelectedIndexChanged += new System.EventHandler(this.comboBox5_SelectedIndexChanged);
+ //
+ // label24
+ //
+ this.label24.AutoSize = true;
+ this.label24.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label24.Location = new System.Drawing.Point(8, 186);
+ this.label24.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label24.Name = "label24";
+ this.label24.Size = new System.Drawing.Size(134, 27);
+ this.label24.TabIndex = 2;
+ this.label24.Text = "浠诲姟绫诲瀷:";
+ //
+ // label23
+ //
+ this.label23.AutoSize = true;
+ this.label23.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label23.Location = new System.Drawing.Point(8, 140);
+ this.label23.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label23.Name = "label23";
+ this.label23.Size = new System.Drawing.Size(107, 27);
+ this.label23.TabIndex = 2;
+ this.label23.Text = "鐩爣浣�:";
+ //
+ // label22
+ //
+ this.label22.AutoSize = true;
+ this.label22.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label22.Location = new System.Drawing.Point(8, 98);
+ this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label22.Name = "label22";
+ this.label22.Size = new System.Drawing.Size(107, 27);
+ this.label22.TabIndex = 2;
+ this.label22.Text = "璧峰浣�:";
+ //
+ // label21
+ //
+ this.label21.AutoSize = true;
+ this.label21.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label21.Location = new System.Drawing.Point(8, 55);
+ this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label21.Name = "label21";
+ this.label21.Size = new System.Drawing.Size(107, 27);
+ this.label21.TabIndex = 2;
+ this.label21.Text = "浠诲姟鍙�:";
+ //
+ // label20
+ //
+ this.label20.AutoSize = true;
+ this.label20.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label20.Location = new System.Drawing.Point(8, 21);
+ this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label20.Name = "label20";
+ this.label20.Size = new System.Drawing.Size(81, 27);
+ this.label20.TabIndex = 2;
+ this.label20.Text = "ID鍙�:";
+ //
+ // tabPage3
+ //
+ this.tabPage3.Controls.Add(this.cbDir);
+ this.tabPage3.Controls.Add(this.button21);
+ this.tabPage3.Controls.Add(this.label59);
+ this.tabPage3.Controls.Add(this.button20);
+ this.tabPage3.Controls.Add(this.button18);
+ this.tabPage3.Controls.Add(this.label56);
+ this.tabPage3.Controls.Add(this.label55);
+ this.tabPage3.Controls.Add(this.button12);
+ this.tabPage3.Controls.Add(this.button13);
+ this.tabPage3.Controls.Add(this.button14);
+ this.tabPage3.Controls.Add(this.label41);
+ this.tabPage3.Controls.Add(this.label42);
+ this.tabPage3.Controls.Add(this.label43);
+ this.tabPage3.Controls.Add(this.label44);
+ this.tabPage3.Controls.Add(this.label45);
+ this.tabPage3.Controls.Add(this.label46);
+ this.tabPage3.Controls.Add(this.label47);
+ this.tabPage3.Controls.Add(this.label48);
+ this.tabPage3.Controls.Add(this.label52);
+ this.tabPage3.Controls.Add(this.label49);
+ this.tabPage3.Controls.Add(this.label50);
+ this.tabPage3.Controls.Add(this.label51);
+ this.tabPage3.Controls.Add(this.button9);
+ this.tabPage3.Controls.Add(this.textBox10);
+ this.tabPage3.Controls.Add(this.textBox7);
+ this.tabPage3.Controls.Add(this.label36);
+ this.tabPage3.Controls.Add(this.label37);
+ this.tabPage3.Controls.Add(this.label38);
+ this.tabPage3.Controls.Add(this.label40);
+ this.tabPage3.Controls.Add(this.label39);
+ this.tabPage3.Controls.Add(this.comboBox9);
+ this.tabPage3.Controls.Add(this.textBox8);
+ this.tabPage3.Controls.Add(this.textBox9);
+ this.tabPage3.Location = new System.Drawing.Point(4, 25);
+ this.tabPage3.Margin = new System.Windows.Forms.Padding(4);
+ this.tabPage3.Name = "tabPage3";
+ this.tabPage3.Padding = new System.Windows.Forms.Padding(4);
+ this.tabPage3.Size = new System.Drawing.Size(976, 651);
+ this.tabPage3.TabIndex = 2;
+ this.tabPage3.Text = "杈撻�佺嚎";
+ this.tabPage3.UseVisualStyleBackColor = true;
+ //
+ // cbDir
+ //
+ this.cbDir.FormattingEnabled = true;
+ this.cbDir.Items.AddRange(new object[] {
+ "涓滐細鍐插帇",
+ "瑗匡細鐒婅"});
+ this.cbDir.Location = new System.Drawing.Point(296, 548);
+ this.cbDir.Margin = new System.Windows.Forms.Padding(4);
+ this.cbDir.Name = "cbDir";
+ this.cbDir.Size = new System.Drawing.Size(87, 23);
+ this.cbDir.TabIndex = 48;
+ //
+ // button21
+ //
+ this.button21.BackColor = System.Drawing.Color.Lime;
+ this.button21.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button21.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button21.Location = new System.Drawing.Point(21, 486);
+ this.button21.Margin = new System.Windows.Forms.Padding(4);
+ this.button21.Name = "button21";
+ this.button21.Size = new System.Drawing.Size(171, 75);
+ this.button21.TabIndex = 47;
+ this.button21.Text = "涓浆鍙拌В闄ゅ崰鐢�";
+ this.button21.UseVisualStyleBackColor = false;
+ this.button21.Click += new System.EventHandler(this.button21_Click);
+ //
+ // label59
+ //
+ this.label59.AutoSize = true;
+ this.label59.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label59.Location = new System.Drawing.Point(205, 546);
+ this.label59.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label59.Name = "label59";
+ this.label59.Size = new System.Drawing.Size(94, 27);
+ this.label59.TabIndex = 46;
+ this.label59.Text = "涓�/瑗�:";
+ //
+ // button20
+ //
+ this.button20.BackColor = System.Drawing.Color.Lime;
+ this.button20.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button20.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button20.Location = new System.Drawing.Point(213, 486);
+ this.button20.Margin = new System.Windows.Forms.Padding(4);
+ this.button20.Name = "button20";
+ this.button20.Size = new System.Drawing.Size(171, 51);
+ this.button20.TabIndex = 44;
+ this.button20.Text = "瑙i攣杈撻�佺嚎";
+ this.button20.UseVisualStyleBackColor = false;
+ this.button20.Click += new System.EventHandler(this.button20_Click);
+ //
+ // button18
+ //
+ this.button18.BackColor = System.Drawing.Color.Plum;
+ this.button18.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button18.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button18.Location = new System.Drawing.Point(20, 602);
+ this.button18.Margin = new System.Windows.Forms.Padding(4);
+ this.button18.Name = "button18";
+ this.button18.Size = new System.Drawing.Size(351, 38);
+ this.button18.TabIndex = 43;
+ this.button18.Text = "鍒犻櫎鍏宠仈浠诲姟";
+ this.button18.UseVisualStyleBackColor = false;
+ this.button18.Visible = false;
+ this.button18.Click += new System.EventHandler(this.button18_Click);
+ //
+ // label56
+ //
+ this.label56.AutoSize = true;
+ this.label56.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label56.Location = new System.Drawing.Point(436, 500);
+ this.label56.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label56.Name = "label56";
+ this.label56.Size = new System.Drawing.Size(188, 27);
+ this.label56.TabIndex = 42;
+ this.label56.Text = "鍏佽涓嬪彂浠诲姟:";
+ //
+ // label55
+ //
+ this.label55.AutoSize = true;
+ this.label55.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label55.Location = new System.Drawing.Point(436, 470);
+ this.label55.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label55.Name = "label55";
+ this.label55.Size = new System.Drawing.Size(80, 27);
+ this.label55.TabIndex = 41;
+ this.label55.Text = "鏉$爜:";
+ //
+ // button12
+ //
+ this.button12.BackColor = System.Drawing.Color.Red;
+ this.button12.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button12.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button12.Location = new System.Drawing.Point(21, 441);
+ this.button12.Margin = new System.Windows.Forms.Padding(4);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(351, 38);
+ this.button12.TabIndex = 40;
+ this.button12.Text = "鎬ュ仠";
+ this.button12.UseVisualStyleBackColor = false;
+ this.button12.Click += new System.EventHandler(this.button12_Click);
+ //
+ // button13
+ //
+ this.button13.BackColor = System.Drawing.Color.Plum;
+ this.button13.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button13.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button13.Location = new System.Drawing.Point(20, 390);
+ this.button13.Margin = new System.Windows.Forms.Padding(4);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(351, 38);
+ this.button13.TabIndex = 38;
+ this.button13.Text = "鍒犻櫎浠诲姟";
+ this.button13.UseVisualStyleBackColor = false;
+ this.button13.Click += new System.EventHandler(this.button13_Click);
+ //
+ // button14
+ //
+ this.button14.BackColor = System.Drawing.Color.DarkKhaki;
+ this.button14.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button14.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button14.Location = new System.Drawing.Point(19, 329);
+ this.button14.Margin = new System.Windows.Forms.Padding(4);
+ this.button14.Name = "button14";
+ this.button14.Size = new System.Drawing.Size(352, 38);
+ this.button14.TabIndex = 39;
+ this.button14.Text = "瑙i櫎鎶ヨ";
+ this.button14.UseVisualStyleBackColor = false;
+ this.button14.Click += new System.EventHandler(this.button14_Click);
+ //
+ // label41
+ //
+ this.label41.Font = new System.Drawing.Font("瀹嬩綋", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label41.Location = new System.Drawing.Point(404, 14);
+ this.label41.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label41.Name = "label41";
+ this.label41.Size = new System.Drawing.Size(465, 34);
+ this.label41.TabIndex = 37;
+ this.label41.Text = "浠诲姟鍙戦�佽繑鍥�:";
+ //
+ // label42
+ //
+ this.label42.AutoSize = true;
+ this.label42.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label42.Location = new System.Drawing.Point(492, 266);
+ this.label42.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label42.Name = "label42";
+ this.label42.Size = new System.Drawing.Size(80, 27);
+ this.label42.TabIndex = 27;
+ this.label42.Text = "鐘舵��:";
+ //
+ // label43
+ //
+ this.label43.AutoSize = true;
+ this.label43.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label43.Location = new System.Drawing.Point(403, 222);
+ this.label43.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label43.Name = "label43";
+ this.label43.Size = new System.Drawing.Size(161, 27);
+ this.label43.TabIndex = 28;
+ this.label43.Text = "绯荤粺浠诲姟鍙�:";
+ //
+ // label44
+ //
+ this.label44.AutoSize = true;
+ this.label44.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label44.Location = new System.Drawing.Point(436, 436);
+ this.label44.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label44.Name = "label44";
+ this.label44.Size = new System.Drawing.Size(134, 27);
+ this.label44.TabIndex = 29;
+ this.label44.Text = "澶栧舰妫�娴�:";
+ //
+ // label45
+ //
+ this.label45.AutoSize = true;
+ this.label45.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label45.Location = new System.Drawing.Point(436, 394);
+ this.label45.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label45.Name = "label45";
+ this.label45.Size = new System.Drawing.Size(134, 27);
+ this.label45.TabIndex = 30;
+ this.label45.Text = "璐х墿閲嶉噺:";
+ //
+ // label46
+ //
+ this.label46.AutoSize = true;
+ this.label46.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label46.Location = new System.Drawing.Point(436, 351);
+ this.label46.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label46.Name = "label46";
+ this.label46.Size = new System.Drawing.Size(134, 27);
+ this.label46.TabIndex = 31;
+ this.label46.Text = "鏄惁鏈夎揣:";
+ //
+ // label47
+ //
+ this.label47.AutoSize = true;
+ this.label47.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label47.Location = new System.Drawing.Point(436, 309);
+ this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label47.Name = "label47";
+ this.label47.Size = new System.Drawing.Size(107, 27);
+ this.label47.TabIndex = 32;
+ this.label47.Text = "鎶ヨ鍙�:";
+ //
+ // label48
+ //
+ this.label48.AutoSize = true;
+ this.label48.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label48.Location = new System.Drawing.Point(492, 181);
+ this.label48.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label48.Name = "label48";
+ this.label48.Size = new System.Drawing.Size(80, 27);
+ this.label48.TabIndex = 33;
+ this.label48.Text = "妯″紡:";
+ //
+ // label52
+ //
+ this.label52.AutoSize = true;
+ this.label52.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label52.Location = new System.Drawing.Point(404, 51);
+ this.label52.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label52.Name = "label52";
+ this.label52.Size = new System.Drawing.Size(188, 27);
+ this.label52.TabIndex = 34;
+ this.label52.Text = "杈撻�佺嚎璁惧鍙�:";
+ //
+ // label49
+ //
+ this.label49.AutoSize = true;
+ this.label49.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label49.Location = new System.Drawing.Point(403, 96);
+ this.label49.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label49.Name = "label49";
+ this.label49.Size = new System.Drawing.Size(161, 27);
+ this.label49.TabIndex = 34;
+ this.label49.Text = "杈撻�佺嚎缂栧彿:";
+ //
+ // label50
+ //
+ this.label50.AutoSize = true;
+ this.label50.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label50.Location = new System.Drawing.Point(492, 139);
+ this.label50.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label50.Name = "label50";
+ this.label50.Size = new System.Drawing.Size(80, 27);
+ this.label50.TabIndex = 35;
+ this.label50.Text = "蹇冭烦:";
+ //
+ // label51
+ //
+ this.label51.AutoSize = true;
+ this.label51.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label51.Location = new System.Drawing.Point(679, 51);
+ this.label51.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label51.Name = "label51";
+ this.label51.Size = new System.Drawing.Size(66, 27);
+ this.label51.TabIndex = 36;
+ this.label51.Text = "鐘舵��";
+ //
+ // button9
+ //
+ this.button9.BackColor = System.Drawing.Color.MediumAquamarine;
+ this.button9.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button9.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button9.Location = new System.Drawing.Point(19, 271);
+ this.button9.Margin = new System.Windows.Forms.Padding(4);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(353, 38);
+ this.button9.TabIndex = 16;
+ this.button9.Text = "鍙戦��";
+ this.button9.UseVisualStyleBackColor = false;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // textBox10
+ //
+ this.textBox10.Location = new System.Drawing.Point(603, 51);
+ this.textBox10.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox10.Name = "textBox10";
+ this.textBox10.Size = new System.Drawing.Size(75, 25);
+ this.textBox10.TabIndex = 4;
+ this.textBox10.Text = "1";
+ this.textBox10.TextChanged += new System.EventHandler(this.textBox10_TextChanged);
+ //
+ // textBox7
+ //
+ this.textBox7.Location = new System.Drawing.Point(157, 58);
+ this.textBox7.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox7.Name = "textBox7";
+ this.textBox7.Size = new System.Drawing.Size(215, 25);
+ this.textBox7.TabIndex = 4;
+ this.textBox7.Text = "1111";
+ //
+ // label36
+ //
+ this.label36.AutoSize = true;
+ this.label36.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label36.Location = new System.Drawing.Point(13, 215);
+ this.label36.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label36.Name = "label36";
+ this.label36.Size = new System.Drawing.Size(134, 27);
+ this.label36.TabIndex = 7;
+ this.label36.Text = "鎵樼洏绫诲瀷:";
+ //
+ // label37
+ //
+ this.label37.AutoSize = true;
+ this.label37.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label37.Location = new System.Drawing.Point(37, 162);
+ this.label37.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label37.Name = "label37";
+ this.label37.Size = new System.Drawing.Size(107, 27);
+ this.label37.TabIndex = 8;
+ this.label37.Text = "鐩爣浣�:";
+ //
+ // label38
+ //
+ this.label38.AutoSize = true;
+ this.label38.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label38.Location = new System.Drawing.Point(39, 110);
+ this.label38.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label38.Name = "label38";
+ this.label38.Size = new System.Drawing.Size(107, 27);
+ this.label38.TabIndex = 9;
+ this.label38.Text = "璧峰浣�:";
+ //
+ // label40
+ //
+ this.label40.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label40.Location = new System.Drawing.Point(15, 572);
+ this.label40.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label40.Name = "label40";
+ this.label40.Size = new System.Drawing.Size(805, 26);
+ this.label40.TabIndex = 10;
+ this.label40.Text = "淇℃伅鎻愮ず:";
+ //
+ // label39
+ //
+ this.label39.AutoSize = true;
+ this.label39.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label39.Location = new System.Drawing.Point(37, 58);
+ this.label39.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label39.Name = "label39";
+ this.label39.Size = new System.Drawing.Size(107, 27);
+ this.label39.TabIndex = 10;
+ this.label39.Text = "浠诲姟鍙�:";
+ //
+ // comboBox9
+ //
+ this.comboBox9.AutoCompleteCustomSource.AddRange(new string[] {
+ "鐨�"});
+ this.comboBox9.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.comboBox9.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox9.FormattingEnabled = true;
+ this.comboBox9.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.comboBox9.Items.AddRange(new object[] {
+ "1-2710*1310*2000",
+ "2-2710*1310*1000",
+ "3-2600*1400*1000",
+ "4-2500*(1800-2000)*1200",
+ "5-2500*(1500-1600)*1000",
+ "6-2500*1310*2100",
+ "7-2200*1400*1000",
+ "8-1650*1310*2100",
+ "9-1200*1310*1000",
+ "10-2500*(1800-2000)*1000",
+ "11-2500*(1700-1800)*1000",
+ "12-2500*(1600-1700)*1000",
+ "13-2500*(1500-1600)*1000"});
+ this.comboBox9.Location = new System.Drawing.Point(159, 211);
+ this.comboBox9.Margin = new System.Windows.Forms.Padding(4);
+ this.comboBox9.Name = "comboBox9";
+ this.comboBox9.Size = new System.Drawing.Size(213, 28);
+ this.comboBox9.TabIndex = 14;
+ this.comboBox9.Text = "1-2710*1310*2000";
+ //
+ // textBox8
+ //
+ this.textBox8.Location = new System.Drawing.Point(157, 162);
+ this.textBox8.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox8.Name = "textBox8";
+ this.textBox8.Size = new System.Drawing.Size(215, 25);
+ this.textBox8.TabIndex = 5;
+ this.textBox8.Text = "2";
+ //
+ // textBox9
+ //
+ this.textBox9.Location = new System.Drawing.Point(157, 110);
+ this.textBox9.Margin = new System.Windows.Forms.Padding(4);
+ this.textBox9.Name = "textBox9";
+ this.textBox9.Size = new System.Drawing.Size(215, 25);
+ this.textBox9.TabIndex = 6;
+ this.textBox9.Text = "1";
+ //
+ // tabPage4
+ //
+ this.tabPage4.Controls.Add(this.tableLayoutPanel1);
+ this.tabPage4.Location = new System.Drawing.Point(4, 25);
+ this.tabPage4.Margin = new System.Windows.Forms.Padding(4);
+ this.tabPage4.Name = "tabPage4";
+ this.tabPage4.Padding = new System.Windows.Forms.Padding(4);
+ this.tabPage4.Size = new System.Drawing.Size(976, 651);
+ this.tabPage4.TabIndex = 3;
+ this.tabPage4.Text = "浠诲姟璇︽儏";
+ this.tabPage4.UseVisualStyleBackColor = true;
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 3;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F));
+ this.tableLayoutPanel1.Controls.Add(this.dGVQuery, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.label61, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.tbTaskId, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnSearch, 2, 0);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 4);
+ this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.570313F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 90.42969F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(968, 643);
+ this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // dGVQuery
+ //
+ this.dGVQuery.AllowUserToAddRows = false;
+ this.dGVQuery.AllowUserToDeleteRows = false;
+ this.dGVQuery.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
+ this.dGVQuery.BackgroundColor = System.Drawing.Color.White;
+ this.dGVQuery.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle1.BackColor = System.Drawing.Color.Maroon;
+ dataGridViewCellStyle1.Font = new System.Drawing.Font("瀹嬩綋", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ dataGridViewCellStyle1.ForeColor = System.Drawing.Color.White;
+ dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dGVQuery.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
+ this.dGVQuery.ColumnHeadersHeight = 30;
+ this.dGVQuery.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.id,
+ this.device,
+ this.deviceNum,
+ this.sourcePlace,
+ this.toPlace,
+ this.isReleased,
+ this.hasFinished});
+ this.tableLayoutPanel1.SetColumnSpan(this.dGVQuery, 3);
+ dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle2.BackColor = System.Drawing.Color.White;
+ dataGridViewCellStyle2.Font = new System.Drawing.Font("瀹嬩綋", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
+ dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.DeepSkyBlue;
+ dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.dGVQuery.DefaultCellStyle = dataGridViewCellStyle2;
+ this.dGVQuery.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.dGVQuery.EnableHeadersVisualStyles = false;
+ this.dGVQuery.GridColor = System.Drawing.SystemColors.Control;
+ this.dGVQuery.Location = new System.Drawing.Point(4, 63);
+ this.dGVQuery.Margin = new System.Windows.Forms.Padding(4);
+ this.dGVQuery.MultiSelect = false;
+ this.dGVQuery.Name = "dGVQuery";
+ dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle3.BackColor = System.Drawing.Color.White;
+ dataGridViewCellStyle3.Font = new System.Drawing.Font("瀹嬩綋", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ dataGridViewCellStyle3.ForeColor = System.Drawing.Color.Maroon;
+ dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dGVQuery.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
+ this.dGVQuery.RowHeadersWidth = 30;
+ dataGridViewCellStyle4.Font = new System.Drawing.Font("瀹嬩綋", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.dGVQuery.RowsDefaultCellStyle = dataGridViewCellStyle4;
+ this.dGVQuery.RowTemplate.Height = 23;
+ this.dGVQuery.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.dGVQuery.Size = new System.Drawing.Size(960, 550);
+ this.dGVQuery.TabIndex = 8;
+ //
+ // id
+ //
+ this.id.DataPropertyName = "id";
+ this.id.HeaderText = "浠诲姟鍙�";
+ this.id.MinimumWidth = 6;
+ this.id.Name = "id";
+ //
+ // device
+ //
+ this.device.DataPropertyName = "device";
+ this.device.HeaderText = "璁惧";
+ this.device.MinimumWidth = 6;
+ this.device.Name = "device";
+ //
+ // deviceNum
+ //
+ this.deviceNum.DataPropertyName = "deviceNum";
+ this.deviceNum.HeaderText = "璁惧缂栧彿";
+ this.deviceNum.MinimumWidth = 6;
+ this.deviceNum.Name = "deviceNum";
+ //
+ // sourcePlace
+ //
+ this.sourcePlace.DataPropertyName = "sourcePlace";
+ this.sourcePlace.HeaderText = "璧峰浣�";
+ this.sourcePlace.MinimumWidth = 6;
+ this.sourcePlace.Name = "sourcePlace";
+ //
+ // toPlace
+ //
+ this.toPlace.DataPropertyName = "toPlace";
+ this.toPlace.HeaderText = "鐩爣浣�";
+ this.toPlace.MinimumWidth = 6;
+ this.toPlace.Name = "toPlace";
+ //
+ // isReleased
+ //
+ this.isReleased.DataPropertyName = "isReleased";
+ this.isReleased.HeaderText = "宸蹭笅鍙�";
+ this.isReleased.MinimumWidth = 6;
+ this.isReleased.Name = "isReleased";
+ //
+ // hasFinished
+ //
+ this.hasFinished.DataPropertyName = "hasFinished";
+ this.hasFinished.HeaderText = "宸插畬鎴�";
+ this.hasFinished.MinimumWidth = 6;
+ this.hasFinished.Name = "hasFinished";
+ //
+ // label61
+ //
+ this.label61.AutoSize = true;
+ this.label61.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.label61.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label61.Location = new System.Drawing.Point(4, 0);
+ this.label61.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label61.Name = "label61";
+ this.label61.Size = new System.Drawing.Size(282, 59);
+ this.label61.TabIndex = 0;
+ this.label61.Text = "绯荤粺浠诲姟鍙凤細";
+ this.label61.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // tbTaskId
+ //
+ this.tbTaskId.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tbTaskId.Font = new System.Drawing.Font("瀹嬩綋", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.tbTaskId.Location = new System.Drawing.Point(294, 4);
+ this.tbTaskId.Margin = new System.Windows.Forms.Padding(4);
+ this.tbTaskId.Name = "tbTaskId";
+ this.tbTaskId.Size = new System.Drawing.Size(476, 49);
+ this.tbTaskId.TabIndex = 1;
+ //
+ // btnSearch
+ //
+ this.btnSearch.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.btnSearch.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnSearch.Location = new System.Drawing.Point(778, 4);
+ this.btnSearch.Margin = new System.Windows.Forms.Padding(4);
+ this.btnSearch.Name = "btnSearch";
+ this.btnSearch.Size = new System.Drawing.Size(186, 51);
+ this.btnSearch.TabIndex = 9;
+ this.btnSearch.Text = "鏌ヨ";
+ this.btnSearch.UseVisualStyleBackColor = true;
+ this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
+ //
+ // button23
+ //
+ this.button23.BackColor = System.Drawing.Color.Red;
+ this.button23.Font = new System.Drawing.Font("瀹嬩綋", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button23.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.button23.Location = new System.Drawing.Point(19, 602);
+ this.button23.Margin = new System.Windows.Forms.Padding(4);
+ this.button23.Name = "button23";
+ this.button23.Size = new System.Drawing.Size(351, 38);
+ this.button23.TabIndex = 27;
+ this.button23.Text = "浠诲姟閲嶅彂";
+ this.button23.UseVisualStyleBackColor = false;
+ this.button23.Click += new System.EventHandler(this.button23_Click);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1003, 699);
+ this.Controls.Add(this.tabControl1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Margin = new System.Windows.Forms.Padding(4);
+ this.Name = "Form1";
+ this.Text = "浼熸湰鏅鸿兘WCS";
+ this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed);
+ this.tabControl1.ResumeLayout(false);
+ this.tabPage1.ResumeLayout(false);
+ this.tabPage1.PerformLayout();
+ this.tabPage2.ResumeLayout(false);
+ this.tabPage2.PerformLayout();
+ this.tabPage3.ResumeLayout(false);
+ this.tabPage3.PerformLayout();
+ this.tabPage4.ResumeLayout(false);
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dGVQuery)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabPage2;
+ private System.Windows.Forms.TabPage tabPage3;
+ private System.Windows.Forms.TabPage tabPage1;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label18;
+ private System.Windows.Forms.Label label17;
+ private System.Windows.Forms.Label label16;
+ private System.Windows.Forms.Label label15;
+ private System.Windows.Forms.Label label14;
+ private System.Windows.Forms.Label label13;
+ private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Label label10;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.ComboBox comboBox4;
+ private System.Windows.Forms.ComboBox comboBox2;
+ private System.Windows.Forms.ComboBox comboBox3;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox textBox3;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.Label label19;
+ private System.Windows.Forms.TextBox textBox4;
+ private System.Windows.Forms.ComboBox comboBox5;
+ private System.Windows.Forms.Label label24;
+ private System.Windows.Forms.Label label23;
+ private System.Windows.Forms.Label label22;
+ private System.Windows.Forms.Label label21;
+ private System.Windows.Forms.Label label20;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label25;
+ private System.Windows.Forms.Label label26;
+ private System.Windows.Forms.Label label30;
+ private System.Windows.Forms.Label label31;
+ private System.Windows.Forms.Label label32;
+ private System.Windows.Forms.Label label33;
+ private System.Windows.Forms.Label label34;
+ private System.Windows.Forms.Label label35;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button10;
+ private System.Windows.Forms.TextBox textBox6;
+ private System.Windows.Forms.TextBox textBox5;
+ private System.Windows.Forms.ComboBox comboBox6;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.ComboBox comboBox7;
+ private System.Windows.Forms.Label label29;
+ private System.Windows.Forms.Label label28;
+ private System.Windows.Forms.Label label27;
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.TextBox textBox7;
+ private System.Windows.Forms.Label label36;
+ private System.Windows.Forms.Label label37;
+ private System.Windows.Forms.Label label38;
+ private System.Windows.Forms.Label label39;
+ private System.Windows.Forms.ComboBox comboBox9;
+ private System.Windows.Forms.TextBox textBox8;
+ private System.Windows.Forms.TextBox textBox9;
+ private System.Windows.Forms.Label label40;
+ private System.Windows.Forms.Label label41;
+ private System.Windows.Forms.Label label42;
+ private System.Windows.Forms.Label label43;
+ private System.Windows.Forms.Label label44;
+ private System.Windows.Forms.Label label45;
+ private System.Windows.Forms.Label label46;
+ private System.Windows.Forms.Label label47;
+ private System.Windows.Forms.Label label48;
+ private System.Windows.Forms.Label label52;
+ private System.Windows.Forms.Label label49;
+ private System.Windows.Forms.Label label50;
+ private System.Windows.Forms.Label label51;
+ private System.Windows.Forms.TextBox textBox10;
+ private System.Windows.Forms.Label label53;
+ private System.Windows.Forms.Label label54;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button13;
+ private System.Windows.Forms.Button button14;
+ private System.Windows.Forms.Label label55;
+ private System.Windows.Forms.Label label56;
+ private System.Windows.Forms.Button button15;
+ private System.Windows.Forms.Label label57;
+ private System.Windows.Forms.Button button16;
+ private System.Windows.Forms.Button button17;
+ private System.Windows.Forms.Button button18;
+ private System.Windows.Forms.Label label58;
+ private System.Windows.Forms.ComboBox comboBox8;
+ private System.Windows.Forms.TextBox textBox11;
+ private System.Windows.Forms.Button button19;
+ private System.Windows.Forms.Button button20;
+ private System.Windows.Forms.Label label59;
+ private System.Windows.Forms.Button button21;
+ private System.Windows.Forms.Button button22;
+ private System.Windows.Forms.ComboBox cbDir;
+ private System.Windows.Forms.Label label60;
+ private System.Windows.Forms.TabPage tabPage4;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.Label label61;
+ private System.Windows.Forms.TextBox tbTaskId;
+ private System.Windows.Forms.DataGridView dGVQuery;
+ private System.Windows.Forms.Button btnSearch;
+ private System.Windows.Forms.DataGridViewTextBoxColumn id;
+ private System.Windows.Forms.DataGridViewTextBoxColumn device;
+ private System.Windows.Forms.DataGridViewTextBoxColumn deviceNum;
+ private System.Windows.Forms.DataGridViewTextBoxColumn sourcePlace;
+ private System.Windows.Forms.DataGridViewTextBoxColumn toPlace;
+ private System.Windows.Forms.DataGridViewTextBoxColumn isReleased;
+ private System.Windows.Forms.DataGridViewTextBoxColumn hasFinished;
+ private System.Windows.Forms.Button button23;
+ }
+}
+
diff --git a/qqjf-Background/DeviceWCS/Form1.cs b/qqjf-Background/DeviceWCS/Form1.cs
new file mode 100644
index 0000000..cd7a027
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Form1.cs
@@ -0,0 +1,1108 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Threading;
+using System.Windows.Forms;
+using Newtonsoft.Json;
+using EnumType;
+using IWareDataAccess.EF;
+using Seagull.BarTender.Print;
+using System.IO;
+
+namespace DeviceWCS
+{
+ public partial class Form1 : Form
+ {
+ srmSER.SrmService srmOPC = new srmSER.SrmService();
+ rgvSRM.RgvService rgvOPC = new rgvSRM.RgvService();
+ tranSRM.SrmTranService tranOPC = new tranSRM.SrmTranService();
+ srmInfo SrmInfo = new srmInfo();
+ rgvINFO Rgvinfo = new rgvINFO();
+ tranInfo TranInfo = new tranInfo();
+ int srmNO = 1;
+ int rgvNO = 1;
+ int tranNO = 1;
+
+ //static Engine btEngine = new Engine();
+ //LabelFormatDocument btFormatEu = btEngine.Documents.Open(Path.Combine(@"F:\", "EUPrint.btw"));//杩欓噷鏄疊artender杞欢鐢熸垚鐨勬ā鏉挎枃浠讹紝浣犻渶瑕佸厛鎶婃ā鏉挎枃浠跺仛濂姐��
+ //LabelFormatDocument btFormatIs = btEngine.Documents.Open(Path.Combine(@"F:\", "IsOkPrint.btw"));//杩欓噷鏄疊artender杞欢鐢熸垚鐨勬ā鏉挎枃浠讹紝浣犻渶瑕佸厛鎶婃ā鏉挎枃浠跺仛濂姐��
+ public Form1()
+ {
+ InitializeComponent();
+ this.dGVQuery.AutoGenerateColumns = false;
+
+ Control.CheckForIllegalCrossThreadCalls = false;
+ Thread thsrm = new Thread(srmInfo);
+ thsrm.Start();
+ Thread thrgv = new Thread(rgvinfo);
+ thrgv.Start();
+ Thread thtran = new Thread(traninfo);
+ thtran.Start();
+
+ //Thread thprint = new Thread(thprintinfo);
+ // thprint.Start();
+
+ }
+
+ //private void thprintinfo(object obj)
+ //{
+ // while (true)
+ // {
+ // using (Model md = new Model())
+ // {
+ // var printinfo = md.BASE_PRINT.OrderBy(x => x.CREATETIME).FirstOrDefault(x=>x.STATE==0);
+ // int type = printinfo.TYPE;
+ // LabelFormatDocument btFormat;
+ // if (type == 1)
+ // {
+
+ // btFormat = btFormatEu;
+ // }
+ // else
+ // {
+ // btFormat = btFormatIs;
+ // }
+
+ // btEngine.Start();
+ // btFormat.PrintSetup.PrinterName = printinfo.PRINTDEVNAME;// "80mmThermalPrinter";//鎵撳嵃鏈哄悕绉�
+ // btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //鎵撳嵃浠芥暟
+ // Messages messages;
+ // int waitout = 1000; // 10绉� 瓒呮椂
+
+ // if (type == 1)
+ // {
+ // btFormat.SubStrings["ItemNum"].Value = printinfo.ITEMNUM;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // btFormat.SubStrings["ItemTypeNum"].Value = printinfo.ITEMTYPENUM;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // btFormat.SubStrings["CVIQRCode"].Value = printinfo.CVIQRCODE;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // }
+ // else
+ // {
+ // btFormat.SubStrings["Num"].Value = printinfo.NUM;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // btFormat.SubStrings["ItemCode"].Value = printinfo.ITEMCODE;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // btFormat.SubStrings["ItemName"].Value = printinfo.ITEMNAME;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // btFormat.SubStrings["ProductLine"].Value = printinfo.BACKUP1;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // }
+ // btFormat.SubStrings["CVICode"].Value = printinfo.CVICODE;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // btFormat.SubStrings["IsOk"].Value = printinfo.ISOK; ;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+
+ // btFormat.SubStrings["CreateTime"].Value = ((DateTime)printinfo.CREATETIME).ToString("yyyy-MM-dd");//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // Result nResult1 = btFormat.Print("鏍囩鎵撳嵃杞欢", waitout, out messages);
+ // btFormat.PrintSetup.Cache.FlushInterval = CacheFlushInterval.Daily;
+ // Resolution rl = new Resolution(300, 300);
+ // //string name = DateTime.Now.ToLongDateString();
+ // // btFormat.ExportImageToFile(@"F:\"+"name.png", ImageType.PNG, ColorDepth.Mono, rl, OverwriteOptions.Overwrite);
+ // btFormat.Close(SaveOptions.DoNotSaveChanges);//涓嶄繚瀛樺鎵撳紑妯℃澘鐨勪慨鏀�
+ // btEngine.Stop();
+
+ // if (nResult1.ToString() == "Success" || nResult1.ToString() == "0")
+ // {
+ // printinfo.STATE=1;
+ // }
+ // md.SaveChanges();
+ // }
+ // Thread.Sleep(1000);
+ // }
+ //}
+ #region 鏋氫妇
+
+ /// <summary>鍫嗗灈鏈哄彿
+ ///
+ /// </summary>
+ public enum srmid
+ {
+ 涓�鍙峰爢鍨涙満 = 1,
+ 浜屽彿鍫嗗灈鏈� = 2,
+ 涓夊彿鍫嗗灈鏈� = 3,
+ 鍥涘彿鍫嗗灈鏈� = 4,
+ 浜斿彿鍫嗗灈鏈� = 5,
+ 鍏彿鍫嗗灈鏈� = 6,
+ 涓冨彿鍫嗗灈鏈� = 7,
+ 鍏彿鍫嗗灈鏈� = 8,
+ 涔濆彿鍫嗗灈鏈� = 9
+ }
+
+ /// <summary>鍫嗗灈鏈哄懡浠�
+ ///
+ /// </summary>
+ public enum command
+ {
+ 鎼繍 = 1,
+ 鍗曟斁 = 2,
+ 绉诲姩 = 3
+ }
+
+ /// <summary>鍫嗗灈鏈烘ā寮�
+ ///
+ /// </summary>
+ public enum srmMode
+ {
+ 鑷姩妯″紡 = 1,
+ 鎵嬪姩妯″紡 = 2,
+ 鍗婅嚜鍔ㄦā寮� = 3,
+ 缁翠慨妯″紡 = 4,
+ 鍏虫満妯″紡 = 0
+ }
+
+ /// <summary>鍫嗗灈鏈虹姸鎬�
+ ///
+ /// </summary>
+ public enum srmState
+ {
+ 绌洪棽 = 0,
+ 鍙栬揣瀹氫綅涓� = 1,
+ 璇锋眰鍙栬揣 = 2,
+ 鍙栬揣涓� = 3,
+ 鍙栬揣瀹屾垚鏀捐揣瀹氫綅涓� = 4,
+ 璇锋眰鏀捐揣 = 5,
+ 鏀捐揣涓� = 6,
+ 缁翠慨 = 98,
+ 鎶ヨ = 99
+ }
+
+ /// <summary>璐у弶浣嶇疆
+ ///
+ /// </summary>
+ public enum liftPosition
+ {
+ 璐у弶鍘熶綅 = 0,
+ 璐у弶鍦ㄥ乏渚� = 1,
+ 璐у弶鍦ㄥ彸渚� = 2
+ }
+ /// <summary>RGVid鏋氫妇
+ ///
+ /// </summary>
+ public enum rgvid
+ {
+ 涓�鍙稲GV = 1,
+ 浜屽彿RGV = 2,
+ 涓夊彿RGV = 3,
+ 鍥涘彿RGV = 4
+ }
+
+ #endregion
+
+
+ /// <summary>鑷姩閫夋嫨浠诲姟鍙�
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void comboBox2_SelectionChangeCommitted(object sender, EventArgs e)
+ {
+ int a = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ textBox1.Text = (a * 1111).ToString();
+ }
+ /// <summary>浼樺寲鏄剧ず
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (comboBox1.Text == "鍗曟斁" || comboBox1.Text == "绉诲姩")
+ {
+ textBox2.Enabled = false;
+ //comboBox3.Enabled = false;
+ }
+ else
+ {
+ textBox2.Enabled = true;
+ comboBox3.Enabled = true;
+ }
+ }
+
+ /// <summary>鍙戦�佸爢鍨涙満浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button1_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (comboBox1.Text == "鎼繍")
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ int taskid = int.Parse(textBox1.Text);
+ int pallet = int.Parse(comboBox3.Text.Split('-')[0]);
+ int result = srmOPC.SendSrmTask(id, taskid, textBox2.Text, textBox3.Text, pallet, 1);
+ #region 鍒ゆ柇杩斿洖鍊�
+ if (result == 1)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鎼繍鎴愬姛鍙戦��";
+ label9.ForeColor = Color.Green;
+ }
+ else if (result == 2)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鎼繍浠诲姟鍙傛暟閿欒!!!!!!!!1";
+ label9.ForeColor = Color.Red;
+ }
+ else
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鎼繍鍙戦�佸け璐�!!!!!!!!1";
+ label9.ForeColor = Color.Red;
+ }
+ #endregion
+ }
+
+ else
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ int taskid = int.Parse(textBox1.Text);
+ int comm = (int)Enum.Parse(typeof(command), comboBox1.Text);
+ int pallet = int.Parse(comboBox3.Text.Split('-')[0]);
+ int result = srmOPC.SendSrmMove(id, taskid, textBox3.Text, comm, pallet, 1);
+ #region 鍒ゆ柇杩斿洖鍊�
+ if (result == 1)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鍗曟斁鎴栫Щ鍔ㄦ垚鍔熷彂閫�";
+ label9.ForeColor = Color.Green;
+ }
+ else if (result == 2)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鍗曟斁鎴栫Щ鍔ㄤ换鍔″弬鏁伴敊璇�!!!!!!!!1";
+ label9.ForeColor = Color.Red;
+ }
+ else
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鍗曟斁鎴栫Щ鍔ㄤ换鍔″彂閫佸け璐�!!!!!!!!1";
+ label9.ForeColor = Color.Red;
+ }
+ #endregion
+ }
+ }
+ catch (Exception)
+ {
+ label9.Text = "鍫嗗灈鏈哄崟鏀炬垨绉诲姩浠诲姟鍙戦�佸紓甯�!!!!!!!!1";
+ label9.ForeColor = Color.Red;
+ }
+
+
+ }
+
+
+ /// <summary>纭浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button2_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ int result = srmOPC.SendSrmTaskFinishConfirm(id);
+ if (result == 1)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満纭浠诲姟鍙戦�佹垚鍔�";
+ label9.ForeColor = Color.Green;
+ }
+ else
+ {
+ label9.Text = id + "鍙峰爢鍨涙満纭浠诲姟鍙戦�佸け璐�";
+ label9.ForeColor = Color.Red;
+ }
+ }
+ catch (Exception)
+ {
+
+ label9.Text = "鍫嗗灈鏈虹‘璁や换鍔″彂閫佸紓甯�";
+ label9.ForeColor = Color.Red;
+ }
+
+
+ }
+ /// <summary>鍫嗗灈鏈鸿В闄ゆ姤璀�
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button5_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ srmOPC.SrmRlsAlert(id);
+ }
+ catch (Exception)
+ {
+ label9.Text = "鍫嗗灈鏈鸿В闄ゆ姤璀﹀彂閫佸紓甯�";
+ label9.ForeColor = Color.Red;
+ }
+
+
+ }
+ /// <summary>鍒犻櫎浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button4_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ int result = srmOPC.SendSrmDelete(id);
+ if (result == 1)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鍒犻櫎浠诲姟鍙戦�佹垚鍔�";
+ label9.ForeColor = Color.Green;
+ }
+ else
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鍒犻櫎浠诲姟鍙戦�佸け璐�";
+ label9.ForeColor = Color.Red;
+ }
+ }
+ catch (Exception)
+ {
+
+ label9.Text = "鍫嗗灈鏈哄垹闄や换鍔″彂閫佸紓甯�";
+ label9.ForeColor = Color.Red;
+ }
+ MessageBox.Show("宸插崟鐙垹闄ゆ鍫嗗灈鏈轰换鍔�");
+ }
+ /// <summary>鎬ュ仠浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button3_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ int result = srmOPC.SendSrmEStop(id);
+ if (result == 1)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鎬ュ仠浠诲姟鍙戦�佹垚鍔�";
+ label9.ForeColor = Color.Green;
+ }
+ else
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鎬ュ仠浠诲姟鍙戦�佸け璐�";
+ label9.ForeColor = Color.Red;
+ }
+ }
+ catch (Exception)
+ {
+
+ label9.Text = "鍫嗗灈鏈烘�ュ仠浠诲姟鍙戦�佸紓甯�";
+ label9.ForeColor = Color.Red;
+ }
+ }
+
+ /// <summary>璇诲彇鍫嗗灈鏈虹姸鎬�
+ ///
+ /// </summary>
+ public void srmInfo()
+ {
+ while (true)
+ {
+ try
+ {
+ Thread.Sleep(1000);
+ // var ff =srmOPC.GetSrmInfo(srmNO);
+ SrmInfo = JsonConvert.DeserializeObject<srmInfo>(srmOPC.GetSrmInfo(srmNO));
+ label10.Text = "蹇冭烦:" + SrmInfo.RhandShake;
+ label11.Text = "妯″紡:" + Enum.GetName(typeof(srmMode), SrmInfo.Rmode);
+ label18.Text = "鐘舵��:" + Enum.GetName(typeof(srmState), SrmInfo.Rstate);
+ label19.Text = "鍫嗗灈鏈哄悕:" + SrmInfo.SrmName;
+ label17.Text = "绯荤粺浠诲姟鍙�:" + SrmInfo.RtaskNO + " 璁惧浠诲姟鍙�:" + SrmInfo.RDevicetaskNO;
+ label12.Text = "鏄惁鎶ヨ:" + (SrmInfo.Ralarm == 1 ? "鎶ヨ鐘舵��" : "鐘舵�佹甯�");
+ label13.Text = "鏄惁鏈夎揣:" + (SrmInfo.RliftFull == 1 ? "璐у弶涓婃湁璐�" : "璐у弶涓婃棤璐�");
+ label14.Text = "褰撳墠鍒�:" + SrmInfo.Rposx + "鍒�";
+ label15.Text = "褰撳墠灞�:" + SrmInfo.Rposy + "灞�";
+ label16.Text = "璐у弶浣嶇疆:" + Enum.GetName(typeof(liftPosition), SrmInfo.Rposz);
+ label29.Text = "鎶ヨ鍐呭:" + Enum.GetName(typeof(ESrmAlarm), SrmInfo.RalarmNumber);
+
+ label54.Text = "浠诲姟鏄惁瀹屾垚锛�" + SrmInfo.RtaskFinish;
+ }
+ catch (Exception ex)
+ {
+ label19.Text = "鍫嗗灈鏈哄悕:" + SrmInfo.SrmName + "浜х敓寮傚父" + ex;
+
+ }
+
+
+ }
+
+ }
+
+ /// <summary>閫夋嫨璁惧
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ srmNO = (int)Enum.Parse(typeof(srmid), comboBox4.Text);
+ }
+
+ /// <summary>鍙戦�丷GV浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button6_Click(object sender, EventArgs e)
+ {
+ int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ int pallet = int.Parse(comboBox8.Text.Split('-')[0]);
+ int result = rgvOPC.SendRgvTask(rgvID, rgvID * 1111, Convert.ToInt32(textBox5.Text), Convert.ToInt32(textBox6.Text), (comboBox6.Text == "鎼繍" ? 1 : 2), pallet, 1);
+ if (result == 1)
+ {
+ label1.Text = rgvID + "鍙稲GV浠诲姟鍙戦�佹垚鍔�";
+ label1.ForeColor = Color.Green;
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV浠诲姟鍙戦�佸け璐�";
+ label1.ForeColor = Color.Red;
+ }
+
+ }
+
+ /// <summary>鑷姩璁剧疆浠诲姟鍙�
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ int a = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ textBox4.Text = (a * 1111).ToString();
+ }
+
+ /// <summary>浼樺寲鏄剧ず
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void comboBox6_SelectedIndexChanged(object sender, EventArgs e)
+ {
+
+ }
+
+ /// <summary>RGV纭浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button10_Click(object sender, EventArgs e)
+ {
+ int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ bool isok = rgvOPC.SendRgvFinishConfirm(rgvID);
+ if (isok)
+ {
+ label1.Text = rgvID + "鍙稲GV浠诲姟纭鎴愬姛";
+ label1.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV浠诲姟纭澶辫触";
+ label1.ForeColor = Color.Red;
+ }
+ }
+
+ /// <summary>RGV瑙h
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button8_Click(object sender, EventArgs e)
+ {
+ int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ int result = rgvOPC.SendRgvRlsAlert(rgvID);
+ if (result == 1)
+ {
+ label1.Text = rgvID + "鍙稲GV瑙h鎴愬姛";
+ label1.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV瑙h澶辫触";
+ label1.ForeColor = Color.Red;
+ }
+ }
+ /// <summary>鍒犻櫎RGV浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button7_Click(object sender, EventArgs e)
+ {
+ int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ int result = rgvOPC.SendRgvDelete(rgvID);
+ if (result == 1)
+ {
+ label1.Text = rgvID + "鍙稲GV鍒犻櫎浠诲姟鎴愬姛";
+ label1.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV鍒犻櫎浠诲姟澶辫触";
+ label1.ForeColor = Color.Red;
+ }
+ }
+ /// <summary>閫夋嫨RGV淇℃伅灞曠ず
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void comboBox7_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ rgvNO = (int)Enum.Parse(typeof(rgvid), comboBox7.Text);
+ }
+ /// <summary>鑾峰彇RGV淇℃伅
+ ///
+ /// </summary>
+ public void rgvinfo()
+ {
+ while (true)
+ {
+ try
+ {
+ Thread.Sleep(1000);
+ Rgvinfo = JsonConvert.DeserializeObject<rgvINFO>(rgvOPC.GetRgvInfo(rgvNO));
+ label33.Text = "RGV鍚�:" + Rgvinfo.RgvName;
+ label34.Text = "蹇冭烦:" + Rgvinfo.handShake;
+ label32.Text = "妯″紡:" + (Rgvinfo.onLine == 3 ? "鑷姩" : "闈炶嚜鍔�");
+ label25.Text = "鐘舵��:" + Rgvinfo.state;
+ label26.Text = "绯荤粺浠诲姟鍙�:" + Rgvinfo.taskId + " 璁惧浠诲姟鍙�:" + Rgvinfo.deviceTaskId;
+ label31.Text = "鏄惁鎶ヨ:" + (Rgvinfo.ararm == 1 ? "鎶ヨ鐘舵��" : "鐘舵�佹甯�");
+ label30.Text = "鏄惁鏈夎揣:" + (Rgvinfo.loaded == 1 ? "RGV鏈夎揣" : "RGV鏃犺揣");
+ label27.Text = "rgv褰撳墠浣嶇疆:" + Rgvinfo.pos;
+ label28.Text = "鎶ヨ浠g爜:" + Enum.GetName(typeof(ESrgvAlarm), Rgvinfo.alarmCode);
+ label53.Text = "浠诲姟鏄惁瀹屾垚:" + Rgvinfo.taskFinish;
+ label57.Text = "RGV鍙敤:" + Rgvinfo.useful;
+
+ }
+ catch (Exception)
+ {
+ label33.Text = "RGV鍚�:" + Rgvinfo.RgvName + "寮傚父";
+ }
+
+
+ }
+ }
+ /// <summary>鍙戦�佽緭閫佺嚎浠诲姟
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button9_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ int pallet = int.Parse(comboBox9.Text.Split('-')[0]);
+ int result = tranOPC.SendGoodsReady(Convert.ToInt32(textBox9.Text), Convert.ToInt32(textBox8.Text), Convert.ToInt32(textBox7.Text), 1);
+ if (result == 1)
+ {
+ label40.Text = "淇℃伅鎻愮ず:杈撻�佺嚎浠诲姟鍙戦�佹垚鍔�";
+ label40.ForeColor = Color.Green;
+ }
+ }
+ catch (Exception)
+ {
+ label40.Text = "淇℃伅鎻愮ず:杈撻�佺嚎浠诲姟鍙戦�佸紓甯�";
+ label40.ForeColor = Color.Red;
+
+ }
+
+
+ }
+ /// <summary>鑾峰彇杈撻�佺嚎淇℃伅
+ ///
+ /// </summary>
+ public void traninfo()
+ {
+ while (true)
+ {
+ try
+ {
+ Thread.Sleep(1000);
+ TranInfo = JsonConvert.DeserializeObject<tranInfo>(tranOPC.GetSrmConveyorStationInfo(tranNO));
+ label49.Text = "杈撻�佺嚎缂栧彿:" + TranInfo.stationNo;
+ label50.Text = "蹇冭烦:" + TranInfo.handShake;
+ label48.Text = "妯″紡:" + (TranInfo.auto == true ? "鑷姩" : "闈炶嚜鍔�");
+ label42.Text = "鏁呴殰:" + TranInfo.err;
+ label43.Text = "绯荤粺浠诲姟鍙�:" + TranInfo.taskId + " 璁惧浠诲姟鍙�:" + TranInfo.deviceTaskId;
+ label47.Text = "鎶ヨ鍙�:" + Enum.GetName(typeof(ETranAlarm), TranInfo.errId);
+ label46.Text = "鏄惁鏈夎揣:" + (TranInfo.goods == true ? "鏈夎揣" : "鏃犺揣");
+ label45.Text = "璐х墿閲嶉噺:" + TranInfo.weihgt;
+
+ label44.Text = "澶栧舰妫�娴�:" + (tranOPC.IsPassed(tranNO) == 0 ? "鍒颁綅姝e父" : "涓嶆甯�");
+ //label44.Text = "澶栧舰妫�娴�:" + (TranInfo.shapeCheck == 3 ? "鍒颁綅姝e父" : "涓嶆甯�");
+ label55.Text = "鏉$爜锛�" + TranInfo.Code;
+ label56.Text = "鍏佽涓嬪彂浠诲姟:" + TranInfo.TaskSendAllow;
+ //鑾峰彇鍏ュ彛鏄惁鏈夋柊璐�(娴嬭瘯)
+ //tranOPC.HasTranGoods();
+ //tranOPC.ClearTranGoods(61);
+ }
+ catch (Exception)
+ {
+ label33.Text = "RGV鍚�:" + Rgvinfo.RgvName + "寮傚父";
+ }
+
+
+ }
+ }
+
+ /// <summary>绐楀彛鍏抽棴
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Form1_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ Environment.Exit(0);
+ }
+ /// <summary>杈撻�佺嚎璁惧閫夋嫨
+ ///
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void textBox10_TextChanged(object sender, EventArgs e)
+ {
+ try
+ {
+ tranNO = Convert.ToInt32(textBox10.Text);
+ }
+ catch
+ {
+
+ }
+ }
+
+ private void button11_Click(object sender, EventArgs e)
+ {
+ int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ int result = rgvOPC.SendRgvStop(rgvID);
+ if (result == 1)
+ {
+ label1.Text = rgvID + "鍙稲GV鎬ュ仠鎴愬姛";
+ label1.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV鎬ュ仠澶辫触";
+ label1.ForeColor = Color.Red;
+ }
+ }
+
+ private void button14_Click(object sender, EventArgs e)
+ {
+ int tranid = int.Parse(textBox10.Text);
+ int result = tranOPC.SendTranReset(tranid);
+ if (result == 1)
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎瑙h鎴愬姛";
+ label40.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎瑙h澶辫触";
+ label40.ForeColor = Color.Red;
+ }
+ }
+
+ private void button13_Click(object sender, EventArgs e)
+ {
+ int tranid = int.Parse(textBox10.Text);
+ int result = tranOPC.SendTranDelete(tranid);
+ if (result == 1)
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎鍒犻櫎鎴愬姛";
+ label40.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎鍒犻櫎澶辫触";
+ label40.ForeColor = Color.Red;
+ }
+ }
+
+ private void button12_Click(object sender, EventArgs e)
+ {
+ int tranid = int.Parse(textBox10.Text);
+ int result = tranOPC.SendTranStop(tranid);
+ if (result == 1)
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎鎬ュ仠鎴愬姛";
+ label40.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎鎬ュ仠澶辫触";
+ label40.ForeColor = Color.Red;
+ }
+ }
+
+ private void button15_Click_1(object sender, EventArgs e)
+ {
+ int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ bool result = rgvOPC.ChangeUseful(rgvID);
+ if (result)
+ {
+ label1.Text = rgvID + "鍙稲GV鍒囨崲鎴愬姛";
+ label1.ForeColor = Color.Lime;
+
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV鍒囨崲澶辫触";
+ label1.ForeColor = Color.Red;
+ }
+
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍏宠仈浠诲姟
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void button16_Click(object sender, EventArgs e)
+ {
+ //int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ //int result = rgvOPC.SendRgvDeleteAll(rgvID);
+ //if (result == 1)
+ //{
+ // label1.Text = rgvID + "鍙稲GV鍒犻櫎浠诲姟鎴愬姛";
+ // label1.ForeColor = Color.Green;
+
+ //}
+ //else
+ //{
+ // label1.Text = rgvID + "鍙稲GV鍒犻櫎浠诲姟澶辫触";
+ // label1.ForeColor = Color.Red;
+ //}
+
+ }
+
+ private void button17_Click(object sender, EventArgs e)
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ int result = srmOPC.SendSrmDelete(id);
+ if (result == 1)
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鍒犻櫎浠诲姟鎴愬姛";
+ label9.ForeColor = Color.Green;
+
+ }
+ else
+ {
+ label9.Text = id + "鍙峰爢鍨涙満鍒犻櫎浠诲姟澶辫触";
+ label9.ForeColor = Color.Red;
+ }
+ }
+
+ private void button18_Click(object sender, EventArgs e)
+ {
+ int tranid = int.Parse(textBox10.Text);
+ int result = tranOPC.SendTranDelete(tranid);
+ if (result == 1)
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎鍒犻櫎浠诲姟鎴愬姛";
+ label40.ForeColor = Color.Green;
+
+ }
+ else if (result == 0)
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎鍒犻櫎浠诲姟澶辫触";
+ label40.ForeColor = Color.Red;
+ }
+ else if (result == 2)
+ {
+ label40.Text = tranid + "鍙疯緭閫佺嚎鍒犻櫎浠诲姟澶辫触锛岀紪鍙锋牎楠屽け璐ワ紙鍙兘鍏跺畠绾跨▼璁块棶涓級锛岃閲嶅彂";
+ label40.ForeColor = Color.Red;
+ }
+ }
+
+ private void button19_Click(object sender, EventArgs e)
+ {
+ int[] srmid;
+ int[] rgvid;
+ int[] tranid;
+ int dir = 0;
+ string[] place;
+ int mainid = int.Parse(textBox11.Text);
+ string containerName = textBox11.Text.Trim();
+ if (srmOPC.DeleteMainTask(mainid, out tranid, out rgvid, out srmid, out place, out dir))
+ //if (srmOPC.DeleteMainTaskByContainerName(containerName, out tranid, out rgvid, out srmid, out place,out dir))
+ {
+ string text = "";
+ foreach (var i in place)
+ {
+ text = i + " ";
+ }
+ MessageBox.Show("鎷垮嚭" + text);
+ }
+ else
+ {
+ MessageBox.Show("鍒犻櫎澶辫触锛屾湭淇敼鏁版嵁");
+ }
+
+ if (!tranOPC.UnlockTran(dir))
+ {
+ if (dir == 1)
+ {
+ MessageBox.Show("杈撻�佺嚎瑙i攣澶辫触锛岃寮�鑷冲畨鍏ㄤ綅鍚庢墜鍔ㄨВ閿侊細涓�");
+ }
+ else if (dir == 0)
+ {
+ MessageBox.Show("杈撻�佺嚎瑙i攣澶辫触锛岃寮�鑷冲畨鍏ㄤ綅鍚庢墜鍔ㄨВ閿侊細瑗�");
+ }
+ }
+ }
+
+ private void button20_Click(object sender, EventArgs e)
+ {
+ int dir = 2;
+ if (cbDir.Text == "涓滐細鍐插帇")
+ {
+ dir = 1;
+ }
+ else if (cbDir.Text == "瑗匡細鐒婅")
+ {
+ dir = 0;
+ }
+ else
+ {
+ MessageBox.Show("璇烽�夋嫨涓滄垨鑰呰タ");
+ }
+ bool result = tranOPC.UnlockTran(dir);
+ if (result)
+ {
+ MessageBox.Show("瑙i攣鎴愬姛");
+ }
+ else
+ {
+ MessageBox.Show("鏈慨鏀逛竴鏉℃暟鎹紝璇锋鏌GV鏄惁寮�鑷冲畨鍏ㄤ綅,鍙兘鍘熷鏁版嵁鍗冲彲鐢�");
+ }
+ }
+
+ private void button21_Click(object sender, EventArgs e)
+ {
+ int dir = 2;
+ if (cbDir.Text == "涓滐細鍐插帇")
+ {
+ dir = 1;
+ }
+ else if (cbDir.Text == "瑗匡細鐒婅")
+ {
+ dir = 0;
+ }
+ else
+ {
+ MessageBox.Show("璇烽�夋嫨涓滄垨鑰呰タ");
+ }
+ bool result = tranOPC.UnFullTran(dir);
+ if (result)
+ {
+ MessageBox.Show("瑙e崰鐢ㄦ垚鍔�");
+ }
+ else
+ {
+ MessageBox.Show("鏈慨鏀逛竴鏉℃暟鎹紝鍙兘鍘熷鏁版嵁鍗冲彲鐢�");
+ }
+ }
+
+ private void button22_Click(object sender, EventArgs e)
+ {
+ int id = (int)Enum.Parse(typeof(srmid), comboBox2.Text);
+ bool open = srmOPC.UseAutoMove(id);
+ if (open)
+ {
+ button22.Text = "鍒囨崲浼樺寲:寮�鍚�";
+ }
+ else
+ {
+ button22.Text = "鍒囨崲浼樺寲:鍏抽棴";
+ }
+ }
+
+ private void btnSearch_Click(object sender, EventArgs e)
+ {
+ int taskid = 0;
+ bool result = int.TryParse(tbTaskId.Text.Trim(), out taskid);
+ if (result)
+ {
+ List<taskCommon> taskViewList = new List<taskCommon>();
+ using (Model edm = new Model())
+ {
+ TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.ID == taskid);
+ if (task.TASKTYPE == 2)
+ {
+ foreach (var i in task.SrmTask)
+ {
+ taskCommon taskCommon = new taskCommon();
+ taskCommon.id = i.ID;
+ taskCommon.device = "鍫嗗灈鏈�";
+ taskCommon.deviceNum = i.USESRMID;
+ taskCommon.sourcePlace = i.SOURCEPLACE;
+ taskCommon.toPlace = i.TOPLACE;
+ taskCommon.isReleased = i.ISRELEASED == 1 ? "鏄�" : "鍚�";
+ taskCommon.hasFinished = i.HASFINISHED == 1 ? "鏄�" : "鍚�";
+ taskViewList.Add(taskCommon);
+ }
+ foreach (var i in task.RgvTask.OrderBy(x => x.ID))
+ {
+ taskCommon taskCommon = new taskCommon();
+ taskCommon.id = i.ID;
+ taskCommon.device = "RGV";
+ taskCommon.deviceNum = i.USERGVID;
+ taskCommon.sourcePlace = i.SOURCEPLACE.ToString();
+ taskCommon.toPlace = i.TOPLACE.ToString();
+ taskCommon.isReleased = i.ISRELEASED == 1 ? "鏄�" : "鍚�";
+ taskCommon.hasFinished = i.HASFINISHED == 1 ? "鏄�" : "鍚�";
+ taskViewList.Add(taskCommon);
+ }
+ //foreach (var i in task.TranTasks)
+ //{
+ // taskCommon taskCommon = new taskCommon();
+ // taskCommon.id = i.ID;
+ // taskCommon.device = "杈撻�佺嚎";
+ // taskCommon.deviceNum = i.SOURCEPLACE;
+ // taskCommon.sourcePlace = i.SOURCEPLACE.ToString();
+ // taskCommon.toPlace = i.TOPLACE.ToString();
+ // taskCommon.isReleased = i.ISRELEASED == 1 ? "鏄�" : "鍚�";
+ // taskCommon.hasFinished = i.HASFINISHED == 1 ? "鏄�" : "鍚�";
+ // taskViewList.Add(taskCommon);
+ //}
+ }
+ else if (task.TASKTYPE == 1)
+ {
+ foreach (var i in task.TranTask)
+ {
+ taskCommon taskCommon = new taskCommon();
+ taskCommon.id = i.ID;
+ taskCommon.device = "杈撻�佺嚎";
+ taskCommon.deviceNum = i.SOURCEPLACE;
+ taskCommon.sourcePlace = i.SOURCEPLACE.ToString();
+ taskCommon.toPlace = i.TOPLACE.ToString();
+ taskCommon.isReleased = i.ISRELEASED == 1 ? "鏄�" : "鍚�";
+ taskCommon.hasFinished = i.HASFINISHED == 1 ? "鏄�" : "鍚�";
+ taskViewList.Add(taskCommon);
+ }
+ foreach (var i in task.RgvTask.OrderBy(x => x.ID))
+ {
+ taskCommon taskCommon = new taskCommon();
+ taskCommon.id = i.ID;
+ taskCommon.device = "RGV";
+ taskCommon.deviceNum = i.USERGVID;
+ taskCommon.sourcePlace = i.SOURCEPLACE.ToString();
+ taskCommon.toPlace = i.TOPLACE.ToString();
+ taskCommon.isReleased = i.ISRELEASED == 1 ? "鏄�" : "鍚�";
+ taskCommon.hasFinished = i.HASFINISHED == 1 ? "鏄�" : "鍚�";
+ taskViewList.Add(taskCommon);
+ }
+ foreach (var i in task.SrmTask)
+ {
+ taskCommon taskCommon = new taskCommon();
+ taskCommon.id = i.ID;
+ taskCommon.device = "鍫嗗灈鏈�";
+ taskCommon.deviceNum = i.USESRMID;
+ taskCommon.sourcePlace = i.SOURCEPLACE;
+ taskCommon.toPlace = i.TOPLACE;
+ taskCommon.isReleased = i.ISRELEASED == 1 ? "鏄�" : "鍚�";
+ taskCommon.hasFinished = i.HASFINISHED == 1 ? "鏄�" : "鍚�";
+ taskViewList.Add(taskCommon);
+ }
+ }
+ else if (task.TASKTYPE == 3)
+ {
+ foreach (var i in task.SrmTask)
+ {
+ taskCommon taskCommon = new taskCommon();
+ taskCommon.id = i.ID;
+ taskCommon.device = "鍫嗗灈鏈�";
+ taskCommon.deviceNum = i.USESRMID;
+ taskCommon.sourcePlace = i.SOURCEPLACE;
+ taskCommon.toPlace = i.TOPLACE;
+ taskCommon.isReleased = i.ISRELEASED == 1 ? "鏄�" : "鍚�";
+ taskCommon.hasFinished = i.HASFINISHED == 1 ? "鏄�" : "鍚�";
+ taskViewList.Add(taskCommon);
+ }
+
+ }
+
+ dGVQuery.DataSource = taskViewList;
+ }
+ }
+ else
+ {
+ dGVQuery.DataSource = null;
+ MessageBox.Show("杈撳叆姝g‘鏍煎紡浠诲姟鍙�");
+ }
+ }
+
+ private void button23_Click(object sender, EventArgs e)
+ {
+ int rgvID = (int)Enum.Parse(typeof(rgvid), comboBox5.Text);
+ if (!rgvOPC.IsRgvReady(rgvID))
+ {
+ label1.Text = rgvID + "鍙稲GV璁惧鐘舵�佷笉绌洪棽锛屼笉鍏佽閲嶅彂浠诲姟";
+ label1.ForeColor = Color.Red;
+ }
+ RgvTask rgvTask = null;
+ int palletType = 0;
+ using (Model edm = new Model())
+ {
+ rgvTask = edm.RgvTask.AsNoTracking().OrderByDescending(u => u.ID).FirstOrDefault(x => x.ISRELEASED == 1 && x.HASFINISHED == 0 && x.USERGVID == rgvID);
+ if (rgvTask != null)
+ {
+ if (rgvTask.TASK_TASK.TASKSTATUS != "浠诲姟鎵ц涓�")
+ {
+ label1.Text = rgvID + "鍙稲GV娌℃湁闇�瑕侀噸鍙戠殑浠诲姟";
+ label1.ForeColor = Color.Red;
+ return;
+ }
+ try
+ {
+ palletType = rgvTask.TASK_TASK.BASE_CONTAINER.BASE_PALLET.PALLETCODE ?? 0;
+ }
+ catch
+ {
+ label1.Text = rgvID + "鍙峰櫒鍏风被鍨嬭浆鎹㈠紓甯�";
+ label1.ForeColor = Color.Red;
+ return;
+ }
+ }
+
+ }
+ if (rgvTask != null)
+ {
+ //int result = rgvOPC.SendRgvTask(rgvID, rgvID * 1111, Convert.ToInt32(textBox5.Text), Convert.ToInt32(textBox6.Text), (comboBox6.Text == "鎼繍" ? 1 : 2), pallet, 1);
+ int result = rgvOPC.SendRgvTask(rgvTask.USERGVID, (rgvTask.ID % 32767) + 1, rgvTask.SOURCEPLACE, rgvTask.TOPLACE, rgvTask.TASKTYPE, palletType, (rgvTask.FASTHERTASKID % 32767) + 1);
+
+ if (result == 1)
+ {
+ label1.Text = rgvID + "鍙稲GV浠诲姟鍙戦�佹垚鍔�";
+ label1.ForeColor = Color.Green;
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV浠诲姟鍙戦�佸け璐�";
+ label1.ForeColor = Color.Red;
+ }
+ }
+ else
+ {
+ label1.Text = rgvID + "鍙稲GV娌℃湁闇�瑕侀噸鍙戠殑浠诲姟";
+ label1.ForeColor = Color.Red;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/Form1.resx b/qqjf-Background/DeviceWCS/Form1.resx
new file mode 100644
index 0000000..f29e749
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Form1.resx
@@ -0,0 +1,218 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="id.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="device.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="deviceNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="sourcePlace.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="toPlace.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="isReleased.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="hasFinished.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
+ AAD///////////7+/v/+/v7//////////////////v7+/7HP9v/F3Pj//v//////////////////////
+ ///////////////////////////////////s9Pv/oMX0//3+/v//////////////////////////////
+ ///////////////////+//7/yd73//7+/v/////////////////+/v7/frDz/5e/9f/+/v7/////////
+ /////////////////////////////////////////////+/2/P8wf+3/9fn9////////////////////
+ //////////////////////////////3+/v9Pkuz//P3+//////////////////7+/v+Ds/P/lb71//j7
+ /f/U5Pn/7fX8//7+/v///////v7+//7+/v/+/v7//f7+//v9/v/+/v7/+/39/zmE7f/0+f3//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+/////////////f7+/0qQ7v/3+v3//v7+//7+/v/+/v7//v7+/4i2
+ 8/+LuPH/eazw/1OV7/9Jj+7/+Pv9//7+///9/v7/vNb2//n8/f/K3/f/O4bt/3as8v+lyPX/N4Tu/6rL
+ 9f+pyvb/q8z1//j7/f/J3vj/b6fy/6jK9f/8/v7//v7+///////+/v7/V5ju/+/1/P/L3/j/pcj1/9jn
+ +f/7/f3/irj0/5/F9f/9/v7/+/39/1GV7//J3vf//v7+/9vp+P8sfu//dKnx/6LH8/8yge3/LX/u/y1+
+ 7/8sfu//LH7v/yx+7/8tfu//gbLy/zeE7v8sfu//LX7v/4+68//9/v7///////////9jn/D/4u75/1CT
+ 7v8uf+7/LH7v/z6I7/82hO//TJHw/3Co8v9qpfL/N4Tv/2Ce8P/8/v3/2+n4/1eZ8P8wgO7/UpXv/9vr
+ +f/l8Pv/wNj3/zWE7v+ixvX/xNv4/9bn+P87h+//LH7u/y5/7v9zqfL/vNb3//z9/f///////////2uk
+ 8P/Y5/n/8vj8/+31+/+91vb/krz0/0+T8P8/iu//WJjw/1mZ8P9wp/L/i7jz//z+/f/9/v7/+/39/9fn
+ +v9ZmfD/SpDv/+Dt+v/9/v3/QYvu/+rz/P/7/f3/ea3y/y1+7/9Sle//y9/4//3+/v///////v7+////
+ ///+/v7/aqTv/83g9//8/v3/dKrx/1yb8f+LuPP/aqTy/2mk8f+z0Pb/n8T1/8nf+P/9/v7//v7+////
+ /////////v7+//f7/P+EtPL/Rozv/9/s+f9Ci+//4+/6/4W08v8yge//lr/0//j7/f/+/v7//v7+////
+ /////////v7+//L4/P9Pku//wNn3//3+/f+vz/b/hbTz/1SW8P8wgO7/LX7u/y5+7f88h+7/aKLw//z9
+ /f////////////7//v/+/v7//v7+//3+/f+ixvT/Ro3v/zSC7/9gnfD/S5Dv/9Lk+f/+/v7/////////
+ ///////////////////n8fr/S5Dv/yx/7v9upvH/7vX7/2qk8P93q/L/psn1/3is8v9Slu//vdj2/7PR
+ 9/+hxvX/6fL7//7//v///////v7+/8Xc9/+Es/P/yt/4//X6/P+uzvX/Ln/u/2ei8f/v9vv//f7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+/4+68v8tfu7/LH7u/yx+7/96rvH/XZvv/zeF7f8tfu7/LH7v/y1+
+ 7v8tfu//LH7v/y1+7/9kn+7//f7+///////+/v7/irjz/yx+7v8tfu//M4Lu/0yS7/8vgO//YZ/w/3Cn
+ 8v9nofH/VJfw/1+c8P/2+v3//v7+////////////+/39/97r+v+tzfb/cKjx/2Cd7//9/v7/+vz9/+bx
+ +/+CsvL/QIrv/8DZ9//H3fn/3Or6/+rz+//9/v7///////7+/v+81vb/jbrz/4a18/9tpvH/Wprw/y+A
+ 7/86hu7/PIfu/zqG7v9Gju//ZKDw/9zp+v/+/v7////////////+/v7//v7+//7+/v/9/v3/+/z9//7+
+ /v/+/v7//v7+/+Xv+//I3vj//f79//7+/v/+/v7//v7+//7+/v///v7//v7+//7+/f/+/v3//v7+//7+
+ /v/+/v7/i7jx//H3/P/9/v7//P7+//7+/v/+/v7//v7+//7+/v///////////62NT/+ccCD/nHAg/5xw
+ IP+ccCD/nHAg/5xwIP+ccCD/nHAg/5xwH/+ccCD/nHAg/5xwIP+ccCD/nHAg/5xwIP+ccCD/nHAg/5xw
+ IP+ccCD/nHAg/5xwIP+ccCD/nHAg/5xwIP+ccCD/nHAg/5xwIP+ccCD/nHAh/5twIf+qikz/qIQ//5Vk
+ Df+VZA3/lWQN/5VkDf+VZA3/lWQN/5VkDf+VZA3/lWQN/5VkDf+VZA3/lWQN/5VkDf+VZA3/lWQN/5Vk
+ Df+VZA3/lWQN/5VkDf+VZA3/lWQN/5VkDf+VZA3/lWQN/5VkDf+VZA3/lWQN/5VkDf+VZQz/lGQM/6WB
+ PP+ng0D/lGQN/5RkDf+UZA3/lGQN/5RkDf+UZA3/lGQN/5RkDf+UZA3/lGQN/5RkDf+UZA3/lGQN/5Rk
+ Df+UZA3/lGQN/5RkDf+UZA3/lGQN/5RkDf+UZA3/lGQN/5RkDf+UZA3/lGQN/5RkDf+UZA3/lGQN/5Rk
+ Df+UZA3/pYE8//Tv6P/x7OP/8ezj//Hs4//x7OP/8ezj//Hs4//x7OP/8ezj//Hs4//x7OP/8ezj//Hs
+ 4//x7OP/8ezj//Hs4//x7OP/8ezj//Hs4//x7OP/8ezj//Hs4//x7OP/8ezj//Hs4//x7OP/8ezj//Hs
+ 4//x7OP/8ezj//Hs4//z7+j/+Pv9/6nK9P+cwvT/nML0/5nB9f+YwfX/lr/1/5S+9P+UvvT/krz0/5K8
+ 8/+SvPP/kLvy/4+68v+PuvL/jrry/4u48/+LuPP/i7jz/4u48/+LuPP/i7jz/4u48/+LuPP/i7jz/4u4
+ 9P+LuPT/jbny/4+68v+TvPP/ncP1/+30+/+Jt/L/LH7v/y1+7v8tfu7/LX7v/yx+7/8sf+7/LH7u/yx+
+ 7/8tfu7/LX7v/y1+7/8tfu//LX7v/y1+7/8tfu//LH7v/yx+7/8sfu//LH7v/yx+7/8sfu//LH7v/yx+
+ 7/8sfu//LH7v/yx+7/8sfu//LH7v/yx+7/8sfu//e67y/1ub8P8tfu//LH7v/yx/7/8sf+//LH/v/yx/
+ 7/8sf+//LH/v/yx/7/8sf+//LH/v/yx/7/8sf+//LH/v/yx/7/8sf+//LH/v/yx/7/8sf+//LH/v/yx/
+ 7/8sf+//LH/v/yx/7/8sf+//LH/v/yx/7/8sf+//LH7v/y1+7v9Vl+3/WZnw/3mu8f/U5fr/1OX6/9Tl
+ +v/U5fr/1OX6/9Tl+v/U5fr/1OX6/9Tl+v/U5fr/1OX6/9Tl+v/U5fr/1OX6/9Tl+v/U5fr/1OX6/9Tl
+ +v/U5fr/1OX6/9Tl+v/U5fr/1OX6/9Tl+v/U5fr/1OX6/9Tl+v/U5fn/cqnx/1SX7f9XmO//Ro7u/2mj
+ 8P+OuvH/aqPw/2Og8f+BsvH/fa/x/2Og8f96rvD/jrrx/4668f+OuvH/grLx/3Kp8P+OuvH/jrrx/4y5
+ 8f9vp/D/ZKDx/4Cx8f+OuvH/jrrx/4668f98r/H/d6vx/32v8P9koPH/baXw/4258f9Eje7/VJft/1eY
+ 7/8tf+7/Z6Lx//3+/f9qpPH/LX7u/97r+v/C2vj/LX7v/57E9f/q8vz/zeH5/83h+f+gxfT/c6ry//P4
+ +//N4fn/2Of6/+vz+/9EjO//udT3/+Pu+v/N4fn/zeH5/4u49P+MufT/qcr2/yx+7/+myPX/9vv9/zCA
+ 7f9Ul+3/V5jv/y1+7v+YwPT/9vr8/6DF9f9EjO//8/j8/+/2/P8wgO7/nsT2/6nL9v8tfu//LX7v/y1+
+ 7/90qfL/0uT2/y1+7/8tfu//3+z4/3Oq8f+51fj/jbnz/y1+7/8tfu//LH7v/4y59P+qyvb/VZfw//X5
+ /P/2+/3/MIDt/1SX7f9XmO//LH7u/8je9/+lyPP/1eb5/3mt8v+40/b/5fD6/1OW8P+exPb/4Oz7/7XR
+ 9v+10ff/ZKDw/3Sp8v/x9vv/w9v3/9Dj+P/T5Pj/O4fu/7nV+P/V5vj/tdH3/7TR9v9Sle//jLn0/6zL
+ 9f/M4fj/nMLz//X6/f8wgO3/VJft/1eY7/8yge3/8vn8/1CT7v/t9fv/wdj1/4S08/+61ff/hLTz/57E
+ 9v/E2/j/b6fy/2+n8v9Ij+//dKry/9zq+P9kn/D/e67y/+bw+v8yge7/udX3/7HP9f9vp/L/b6fy/z+J
+ 7/+MufT/6/P7/9vp+f9Biu7/9vr9/zCA7f9Ul+3/Wpvw/1qa8P/r9Pv/Ln/u/77Y9//8/f3/UpXv/466
+ 9P+10vf/ncT1/83g+P+GtfP/hrXy/2Sg8f9zqvL/5O/4/4e18/+cwvT/8vj7/zaE7v+51ff/vdf2/4a1
+ 8v+GtfL/WJnw/4y59f/7/f3/ZqHx/zuH7//2+v3/MIDt/1SX7f9bmvD/WZrw/4Oz8v8tfu//ZqHx/5nB
+ 9P8vgO7/T5Pw/4q48/9qo/H/nsP1/53D9f+ew/X/c6nx/1OW8P+dw/X/ncP1/5rB9f9cm/D/LX7u/3mt
+ 8v+dw/X/ncP1/53D9f9koPH/YZ7x/4e28/8tfu7/NIPu/5nB9P8uf+7/VJft/1ua8P8tfu//LX/v/y1/
+ 7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
+ 7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LH7u/y1/7/8tf+//LX/v/yx+7/9Ul+3/W5rw/y1+
+ 7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/
+ 7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LX/v/y1/7/8tf+//LH7u/1SX
+ 7f9koPH/LX7u/yx/7/8tfu//LX7v/y1+7/8tfu//LX7v/y1+7/8tfu//LX7v/y1+7/8tfu//LX7v/y1+
+ 7/8tfu//LX7v/y1+7/8tfu//LX7v/y1+7/8tfu//LX7v/y1+7/8tfu//LX7v/y1+7/8tfu//LX7v/y1+
+ 7/8sfu//XJvu/8ne9/9Ulu7/UJTv/1CU7/9QlO//UJTv/1CU7/9QlO//UJTv/1CU7/9QlO//UJTv/1CU
+ 7/9QlO//UJTv/1CU7/9QlO//UJTv/1CU7/9QlO//UJTv/1CU7/9QlO//UJTv/1CU7/9QlO//UJTv/1CU
+ 7/9QlO//UJTv/1SX7//F3Pf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+</value>
+ </data>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/FormUpdate.Designer.cs b/qqjf-Background/DeviceWCS/FormUpdate.Designer.cs
new file mode 100644
index 0000000..da22767
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/FormUpdate.Designer.cs
@@ -0,0 +1,117 @@
+锘縩amespace DeviceWCS
+{
+ partial class FormUpdate
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.SuspendLayout();
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(50, 87);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(100, 21);
+ this.textBox1.TabIndex = 0;
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(180, 87);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 1;
+ this.button1.Text = "鍒犻櫎搴撳瓨";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(180, 139);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 2;
+ this.button2.Text = "淇敼鍗曟嵁";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(180, 198);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(75, 23);
+ this.button3.TabIndex = 3;
+ this.button3.Text = "鍒犻櫎鍗曟嵁";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(50, 141);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(100, 21);
+ this.textBox2.TabIndex = 4;
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(50, 198);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(100, 21);
+ this.textBox3.TabIndex = 5;
+ //
+ // FormUpdate
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(284, 261);
+ this.Controls.Add(this.textBox3);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.button1);
+ this.Name = "FormUpdate";
+ this.Text = "FormUpdate";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.TextBox textBox3;
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/FormUpdate.cs b/qqjf-Background/DeviceWCS/FormUpdate.cs
new file mode 100644
index 0000000..15d35a5
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/FormUpdate.cs
@@ -0,0 +1,54 @@
+锘縰sing DeviceWCS.EDM;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace DeviceWCS
+{
+ public partial class FormUpdate : Form
+ {
+ public FormUpdate()
+ {
+ InitializeComponent();
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ using (Model edm = new Model())
+ {
+ int id=int.Parse(textBox1.Text);
+ Base_ProductPosition pp = edm.Base_ProductPosition.FirstOrDefault(x => x.ProductPosition_Id == id);
+ pp.ProductStorage = 0;
+ edm.SaveChanges();
+ }
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ using (Model edm = new Model())
+ {
+ int id = int.Parse(textBox2.Text);
+ Purchase_Order po = edm.Purchase_Order.FirstOrDefault(x => x.Order_Id == id);
+ po.StatusText = "鏂板缓";
+ edm.SaveChanges();
+ }
+ }
+
+ private void button3_Click(object sender, EventArgs e)
+ {
+ using (Model edm = new Model())
+ {
+ int id = int.Parse(textBox3.Text);
+ Purchase_Order po = edm.Purchase_Order.FirstOrDefault(x => x.Order_Id == id);
+ edm.Purchase_Order.Remove(po);
+ edm.SaveChanges();
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/FormUpdate.resx b/qqjf-Background/DeviceWCS/FormUpdate.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/FormUpdate.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Program.cs b/qqjf-Background/DeviceWCS/Program.cs
new file mode 100644
index 0000000..7e186de
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Program.cs
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace DeviceWCS
+{
+ static class Program
+ {
+ /// <summary>
+ /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
+ /// </summary>
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+
+ bool result;
+ Mutex MyMutex = new Mutex(true, "QQJF_DeviceWCS", out result);
+ if (result)
+ {
+ Application.Run(new Form1());
+ }
+ else
+ {
+ //绋嬪簭宸茬粡鍚姩
+ MessageBox.Show("WCS绋嬪簭宸插惎鍔�");
+ }
+
+
+ }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/Properties/AssemblyInfo.cs b/qqjf-Background/DeviceWCS/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..a5206b0
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅閫氳繃浠ヤ笅
+// 鐗规�ч泦鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("DeviceWCS")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("DeviceWCS")]
+[assembly: AssemblyCopyright("Copyright 漏 Microsoft 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浣挎绋嬪簭闆嗕腑鐨勭被鍨�
+// 瀵� COM 缁勪欢涓嶅彲瑙併�� 濡傛灉闇�瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷锛�
+// 鍒欏皢璇ョ被鍨嬩笂鐨� ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("02db5aa8-0912-4252-b170-03a0082f9a20")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅闈㈠洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/DeviceWCS/Properties/Resources.Designer.cs b/qqjf-Background/DeviceWCS/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..9b8db2e
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�: 4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢涓㈠け銆�
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace DeviceWCS.Properties
+{
+
+
+ /// <summary>
+ /// 涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勩�佺紦瀛樼殑 ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DeviceWCS.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// 涓烘墍鏈夎祫婧愭煡鎵鹃噸鍐欏綋鍓嶇嚎绋嬬殑 CurrentUICulture 灞炴�э紝
+ /// 鏂规硶鏄娇鐢ㄦ寮虹被鍨嬭祫婧愮被銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/Properties/Resources.resx b/qqjf-Background/DeviceWCS/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Properties/Resources.resx
@@ -0,0 +1,117 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Properties/Settings.Designer.cs b/qqjf-Background/DeviceWCS/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..db60680
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Properties/Settings.Designer.cs
@@ -0,0 +1,58 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace DeviceWCS.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+
+ [global::System.Configuration.ApplicationScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
+ [global::System.Configuration.DefaultSettingValueAttribute("http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvServi" +
+ "ce/")]
+ public string DeviceWCS_rgvSRM_RgvService {
+ get {
+ return ((string)(this["DeviceWCS_rgvSRM_RgvService"]));
+ }
+ }
+
+ [global::System.Configuration.ApplicationScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
+ [global::System.Configuration.DefaultSettingValueAttribute("http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/")]
+ public string DeviceWCS_srmSER_SrmService {
+ get {
+ return ((string)(this["DeviceWCS_srmSER_SrmService"]));
+ }
+ }
+
+ [global::System.Configuration.ApplicationScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
+ [global::System.Configuration.DefaultSettingValueAttribute("http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/" +
+ "SrmTranService/")]
+ public string DeviceWCS_tranSRM_SrmTranService {
+ get {
+ return ((string)(this["DeviceWCS_tranSRM_SrmTranService"]));
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/Properties/Settings.settings b/qqjf-Background/DeviceWCS/Properties/Settings.settings
new file mode 100644
index 0000000..ea46ed3
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Properties/Settings.settings
@@ -0,0 +1,15 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="DeviceWCS.Properties" GeneratedClassName="Settings">
+ <Profiles />
+ <Settings>
+ <Setting Name="DeviceWCS_rgvSRM_RgvService" Type="(Web Service URL)" Scope="Application">
+ <Value Profile="(Default)">http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/</Value>
+ </Setting>
+ <Setting Name="DeviceWCS_srmSER_SrmService" Type="(Web Service URL)" Scope="Application">
+ <Value Profile="(Default)">http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/</Value>
+ </Setting>
+ <Setting Name="DeviceWCS_tranSRM_SrmTranService" Type="(Web Service URL)" Scope="Application">
+ <Value Profile="(Default)">http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/</Value>
+ </Setting>
+ </Settings>
+</SettingsFile>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.cs b/qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.cs
new file mode 100644
index 0000000..0c99a6f
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.cs
@@ -0,0 +1,762 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+//
+// 姝ゆ簮浠g爜鏄敱 Microsoft.VSDesigner 4.0.30319.42000 鐗堣嚜鍔ㄧ敓鎴愩��
+//
+#pragma warning disable 1591
+
+namespace DeviceWCS.rgvSRM {
+ using System;
+ using System.Web.Services;
+ using System.Diagnostics;
+ using System.Web.Services.Protocols;
+ using System.Xml.Serialization;
+ using System.ComponentModel;
+
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Web.Services.WebServiceBindingAttribute(Name="BasicHttpBinding_IRgvService", Namespace="http://tempuri.org/")]
+ public partial class RgvService : System.Web.Services.Protocols.SoapHttpClientProtocol {
+
+ private System.Threading.SendOrPostCallback SendRgvTaskOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendRgvDeleteOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendRgvRlsAlertOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendRgvFinishConfirmOperationCompleted;
+
+ private System.Threading.SendOrPostCallback GetRgvInfoOperationCompleted;
+
+ private System.Threading.SendOrPostCallback IsTaskFinishOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendRgvStopOperationCompleted;
+
+ private System.Threading.SendOrPostCallback IsRgvReadyOperationCompleted;
+
+ private System.Threading.SendOrPostCallback FinishTaskOperationCompleted;
+
+ private System.Threading.SendOrPostCallback GetRgvPosationOperationCompleted;
+
+ private System.Threading.SendOrPostCallback ChangeUsefulOperationCompleted;
+
+ private bool useDefaultCredentialsSetExplicitly;
+
+ /// <remarks/>
+ public RgvService() {
+ this.Url = global::DeviceWCS.Properties.Settings.Default.DeviceWCS_rgvSRM_RgvService;
+ if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
+ this.UseDefaultCredentials = true;
+ this.useDefaultCredentialsSetExplicitly = false;
+ }
+ else {
+ this.useDefaultCredentialsSetExplicitly = true;
+ }
+ }
+
+ public new string Url {
+ get {
+ return base.Url;
+ }
+ set {
+ if ((((this.IsLocalFileSystemWebService(base.Url) == true)
+ && (this.useDefaultCredentialsSetExplicitly == false))
+ && (this.IsLocalFileSystemWebService(value) == false))) {
+ base.UseDefaultCredentials = false;
+ }
+ base.Url = value;
+ }
+ }
+
+ public new bool UseDefaultCredentials {
+ get {
+ return base.UseDefaultCredentials;
+ }
+ set {
+ base.UseDefaultCredentials = value;
+ this.useDefaultCredentialsSetExplicitly = true;
+ }
+ }
+
+ /// <remarks/>
+ public event SendRgvTaskCompletedEventHandler SendRgvTaskCompleted;
+
+ /// <remarks/>
+ public event SendRgvDeleteCompletedEventHandler SendRgvDeleteCompleted;
+
+ /// <remarks/>
+ public event SendRgvRlsAlertCompletedEventHandler SendRgvRlsAlertCompleted;
+
+ /// <remarks/>
+ public event SendRgvFinishConfirmCompletedEventHandler SendRgvFinishConfirmCompleted;
+
+ /// <remarks/>
+ public event GetRgvInfoCompletedEventHandler GetRgvInfoCompleted;
+
+ /// <remarks/>
+ public event IsTaskFinishCompletedEventHandler IsTaskFinishCompleted;
+
+ /// <remarks/>
+ public event SendRgvStopCompletedEventHandler SendRgvStopCompleted;
+
+ /// <remarks/>
+ public event IsRgvReadyCompletedEventHandler IsRgvReadyCompleted;
+
+ /// <remarks/>
+ public event FinishTaskCompletedEventHandler FinishTaskCompleted;
+
+ /// <remarks/>
+ public event GetRgvPosationCompletedEventHandler GetRgvPosationCompleted;
+
+ /// <remarks/>
+ public event ChangeUsefulCompletedEventHandler ChangeUsefulCompleted;
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/SendRgvTask", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendRgvTask(int deviceId, int taskId, int sourcePlace, int toPlace, int taskType, int palletType, int fatherid) {
+ object[] results = this.Invoke("SendRgvTask", new object[] {
+ deviceId,
+ taskId,
+ sourcePlace,
+ toPlace,
+ taskType,
+ palletType,
+ fatherid});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendRgvTaskAsync(int deviceId, int taskId, int sourcePlace, int toPlace, int taskType, int palletType, int fatherid) {
+ this.SendRgvTaskAsync(deviceId, taskId, sourcePlace, toPlace, taskType, palletType, fatherid, null);
+ }
+
+ /// <remarks/>
+ public void SendRgvTaskAsync(int deviceId, int taskId, int sourcePlace, int toPlace, int taskType, int palletType, int fatherid, object userState) {
+ if ((this.SendRgvTaskOperationCompleted == null)) {
+ this.SendRgvTaskOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendRgvTaskOperationCompleted);
+ }
+ this.InvokeAsync("SendRgvTask", new object[] {
+ deviceId,
+ taskId,
+ sourcePlace,
+ toPlace,
+ taskType,
+ palletType,
+ fatherid}, this.SendRgvTaskOperationCompleted, userState);
+ }
+
+ private void OnSendRgvTaskOperationCompleted(object arg) {
+ if ((this.SendRgvTaskCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendRgvTaskCompleted(this, new SendRgvTaskCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/SendRgvDelete", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendRgvDelete(int rgvId) {
+ object[] results = this.Invoke("SendRgvDelete", new object[] {
+ rgvId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendRgvDeleteAsync(int rgvId) {
+ this.SendRgvDeleteAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void SendRgvDeleteAsync(int rgvId, object userState) {
+ if ((this.SendRgvDeleteOperationCompleted == null)) {
+ this.SendRgvDeleteOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendRgvDeleteOperationCompleted);
+ }
+ this.InvokeAsync("SendRgvDelete", new object[] {
+ rgvId}, this.SendRgvDeleteOperationCompleted, userState);
+ }
+
+ private void OnSendRgvDeleteOperationCompleted(object arg) {
+ if ((this.SendRgvDeleteCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendRgvDeleteCompleted(this, new SendRgvDeleteCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/SendRgvRlsAlert", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendRgvRlsAlert(int rgvId) {
+ object[] results = this.Invoke("SendRgvRlsAlert", new object[] {
+ rgvId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendRgvRlsAlertAsync(int rgvId) {
+ this.SendRgvRlsAlertAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void SendRgvRlsAlertAsync(int rgvId, object userState) {
+ if ((this.SendRgvRlsAlertOperationCompleted == null)) {
+ this.SendRgvRlsAlertOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendRgvRlsAlertOperationCompleted);
+ }
+ this.InvokeAsync("SendRgvRlsAlert", new object[] {
+ rgvId}, this.SendRgvRlsAlertOperationCompleted, userState);
+ }
+
+ private void OnSendRgvRlsAlertOperationCompleted(object arg) {
+ if ((this.SendRgvRlsAlertCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendRgvRlsAlertCompleted(this, new SendRgvRlsAlertCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/SendRgvFinishConfirm", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool SendRgvFinishConfirm(int rgvId) {
+ object[] results = this.Invoke("SendRgvFinishConfirm", new object[] {
+ rgvId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendRgvFinishConfirmAsync(int rgvId) {
+ this.SendRgvFinishConfirmAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void SendRgvFinishConfirmAsync(int rgvId, object userState) {
+ if ((this.SendRgvFinishConfirmOperationCompleted == null)) {
+ this.SendRgvFinishConfirmOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendRgvFinishConfirmOperationCompleted);
+ }
+ this.InvokeAsync("SendRgvFinishConfirm", new object[] {
+ rgvId}, this.SendRgvFinishConfirmOperationCompleted, userState);
+ }
+
+ private void OnSendRgvFinishConfirmOperationCompleted(object arg) {
+ if ((this.SendRgvFinishConfirmCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendRgvFinishConfirmCompleted(this, new SendRgvFinishConfirmCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/GetRgvInfo", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public string GetRgvInfo(int rgvId) {
+ object[] results = this.Invoke("GetRgvInfo", new object[] {
+ rgvId});
+ return ((string)(results[0]));
+ }
+
+ /// <remarks/>
+ public void GetRgvInfoAsync(int rgvId) {
+ this.GetRgvInfoAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void GetRgvInfoAsync(int rgvId, object userState) {
+ if ((this.GetRgvInfoOperationCompleted == null)) {
+ this.GetRgvInfoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRgvInfoOperationCompleted);
+ }
+ this.InvokeAsync("GetRgvInfo", new object[] {
+ rgvId}, this.GetRgvInfoOperationCompleted, userState);
+ }
+
+ private void OnGetRgvInfoOperationCompleted(object arg) {
+ if ((this.GetRgvInfoCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetRgvInfoCompleted(this, new GetRgvInfoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/IsTaskFinish", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool IsTaskFinish(int rgvId) {
+ object[] results = this.Invoke("IsTaskFinish", new object[] {
+ rgvId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void IsTaskFinishAsync(int rgvId) {
+ this.IsTaskFinishAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void IsTaskFinishAsync(int rgvId, object userState) {
+ if ((this.IsTaskFinishOperationCompleted == null)) {
+ this.IsTaskFinishOperationCompleted = new System.Threading.SendOrPostCallback(this.OnIsTaskFinishOperationCompleted);
+ }
+ this.InvokeAsync("IsTaskFinish", new object[] {
+ rgvId}, this.IsTaskFinishOperationCompleted, userState);
+ }
+
+ private void OnIsTaskFinishOperationCompleted(object arg) {
+ if ((this.IsTaskFinishCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.IsTaskFinishCompleted(this, new IsTaskFinishCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/SendRgvStop", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendRgvStop(int rgvId) {
+ object[] results = this.Invoke("SendRgvStop", new object[] {
+ rgvId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendRgvStopAsync(int rgvId) {
+ this.SendRgvStopAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void SendRgvStopAsync(int rgvId, object userState) {
+ if ((this.SendRgvStopOperationCompleted == null)) {
+ this.SendRgvStopOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendRgvStopOperationCompleted);
+ }
+ this.InvokeAsync("SendRgvStop", new object[] {
+ rgvId}, this.SendRgvStopOperationCompleted, userState);
+ }
+
+ private void OnSendRgvStopOperationCompleted(object arg) {
+ if ((this.SendRgvStopCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendRgvStopCompleted(this, new SendRgvStopCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/IsRgvReady", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool IsRgvReady(int rgvId) {
+ object[] results = this.Invoke("IsRgvReady", new object[] {
+ rgvId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void IsRgvReadyAsync(int rgvId) {
+ this.IsRgvReadyAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void IsRgvReadyAsync(int rgvId, object userState) {
+ if ((this.IsRgvReadyOperationCompleted == null)) {
+ this.IsRgvReadyOperationCompleted = new System.Threading.SendOrPostCallback(this.OnIsRgvReadyOperationCompleted);
+ }
+ this.InvokeAsync("IsRgvReady", new object[] {
+ rgvId}, this.IsRgvReadyOperationCompleted, userState);
+ }
+
+ private void OnIsRgvReadyOperationCompleted(object arg) {
+ if ((this.IsRgvReadyCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.IsRgvReadyCompleted(this, new IsRgvReadyCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/FinishTask", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int FinishTask(int rgvId) {
+ object[] results = this.Invoke("FinishTask", new object[] {
+ rgvId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void FinishTaskAsync(int rgvId) {
+ this.FinishTaskAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void FinishTaskAsync(int rgvId, object userState) {
+ if ((this.FinishTaskOperationCompleted == null)) {
+ this.FinishTaskOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFinishTaskOperationCompleted);
+ }
+ this.InvokeAsync("FinishTask", new object[] {
+ rgvId}, this.FinishTaskOperationCompleted, userState);
+ }
+
+ private void OnFinishTaskOperationCompleted(object arg) {
+ if ((this.FinishTaskCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.FinishTaskCompleted(this, new FinishTaskCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/GetRgvPosation", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public long GetRgvPosation(int rgvId) {
+ object[] results = this.Invoke("GetRgvPosation", new object[] {
+ rgvId});
+ return ((long)(results[0]));
+ }
+
+ /// <remarks/>
+ public void GetRgvPosationAsync(int rgvId) {
+ this.GetRgvPosationAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void GetRgvPosationAsync(int rgvId, object userState) {
+ if ((this.GetRgvPosationOperationCompleted == null)) {
+ this.GetRgvPosationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRgvPosationOperationCompleted);
+ }
+ this.InvokeAsync("GetRgvPosation", new object[] {
+ rgvId}, this.GetRgvPosationOperationCompleted, userState);
+ }
+
+ private void OnGetRgvPosationOperationCompleted(object arg) {
+ if ((this.GetRgvPosationCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetRgvPosationCompleted(this, new GetRgvPosationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/IRgvService/ChangeUseful", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool ChangeUseful(int rgvId) {
+ object[] results = this.Invoke("ChangeUseful", new object[] {
+ rgvId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void ChangeUsefulAsync(int rgvId) {
+ this.ChangeUsefulAsync(rgvId, null);
+ }
+
+ /// <remarks/>
+ public void ChangeUsefulAsync(int rgvId, object userState) {
+ if ((this.ChangeUsefulOperationCompleted == null)) {
+ this.ChangeUsefulOperationCompleted = new System.Threading.SendOrPostCallback(this.OnChangeUsefulOperationCompleted);
+ }
+ this.InvokeAsync("ChangeUseful", new object[] {
+ rgvId}, this.ChangeUsefulOperationCompleted, userState);
+ }
+
+ private void OnChangeUsefulOperationCompleted(object arg) {
+ if ((this.ChangeUsefulCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.ChangeUsefulCompleted(this, new ChangeUsefulCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ public new void CancelAsync(object userState) {
+ base.CancelAsync(userState);
+ }
+
+ private bool IsLocalFileSystemWebService(string url) {
+ if (((url == null)
+ || (url == string.Empty))) {
+ return false;
+ }
+ System.Uri wsUri = new System.Uri(url);
+ if (((wsUri.Port >= 1024)
+ && (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendRgvTaskCompletedEventHandler(object sender, SendRgvTaskCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendRgvTaskCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendRgvTaskCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendRgvDeleteCompletedEventHandler(object sender, SendRgvDeleteCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendRgvDeleteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendRgvDeleteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendRgvRlsAlertCompletedEventHandler(object sender, SendRgvRlsAlertCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendRgvRlsAlertCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendRgvRlsAlertCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendRgvFinishConfirmCompletedEventHandler(object sender, SendRgvFinishConfirmCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendRgvFinishConfirmCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendRgvFinishConfirmCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void GetRgvInfoCompletedEventHandler(object sender, GetRgvInfoCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetRgvInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetRgvInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public string Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((string)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void IsTaskFinishCompletedEventHandler(object sender, IsTaskFinishCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class IsTaskFinishCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal IsTaskFinishCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendRgvStopCompletedEventHandler(object sender, SendRgvStopCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendRgvStopCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendRgvStopCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void IsRgvReadyCompletedEventHandler(object sender, IsRgvReadyCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class IsRgvReadyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal IsRgvReadyCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void FinishTaskCompletedEventHandler(object sender, FinishTaskCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class FinishTaskCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal FinishTaskCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void GetRgvPosationCompletedEventHandler(object sender, GetRgvPosationCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetRgvPosationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetRgvPosationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public long Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((long)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void ChangeUsefulCompletedEventHandler(object sender, ChangeUsefulCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class ChangeUsefulCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal ChangeUsefulCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+}
+
+#pragma warning restore 1591
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.map b/qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.map
new file mode 100644
index 0000000..f1f0f70
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/rgvSRM/Reference.map
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Results>
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/?disco" filename="item.disco" />
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/?wsdl" filename="RgvService.wsdl" />
+ </Results>
+</DiscoveryClientResultsFile>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/rgvSRM/RgvService.wsdl b/qqjf-Background/DeviceWCS/Web References/rgvSRM/RgvService.wsdl
new file mode 100644
index 0000000..db63a52
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/rgvSRM/RgvService.wsdl
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="RgvService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://tempuri.org/Imports">
+ <xsd:import namespace="http://www.w3.org/2001/XMLSchema" />
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="IRgvService_SendRgvTask_InputMessage">
+ <wsdl:part name="deviceId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="sourcePlace" type="xsd:int" />
+ <wsdl:part name="toPlace" type="xsd:int" />
+ <wsdl:part name="taskType" type="xsd:int" />
+ <wsdl:part name="palletType" type="xsd:int" />
+ <wsdl:part name="fatherid" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvTask_OutputMessage">
+ <wsdl:part name="SendRgvTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvDelete_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvDelete_OutputMessage">
+ <wsdl:part name="SendRgvDeleteResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvRlsAlert_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvRlsAlert_OutputMessage">
+ <wsdl:part name="SendRgvRlsAlertResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvFinishConfirm_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvFinishConfirm_OutputMessage">
+ <wsdl:part name="SendRgvFinishConfirmResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_GetRgvInfo_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_GetRgvInfo_OutputMessage">
+ <wsdl:part name="GetRgvInfoResult" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_IsTaskFinish_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_IsTaskFinish_OutputMessage">
+ <wsdl:part name="IsTaskFinishResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvStop_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_SendRgvStop_OutputMessage">
+ <wsdl:part name="SendRgvStopResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_IsRgvReady_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_IsRgvReady_OutputMessage">
+ <wsdl:part name="IsRgvReadyResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_FinishTask_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_FinishTask_OutputMessage">
+ <wsdl:part name="FinishTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_GetRgvPosation_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_GetRgvPosation_OutputMessage">
+ <wsdl:part name="GetRgvPosationResult" type="xsd:long" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_ChangeUseful_InputMessage">
+ <wsdl:part name="rgvId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="IRgvService_ChangeUseful_OutputMessage">
+ <wsdl:part name="ChangeUsefulResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:portType name="IRgvService">
+ <wsdl:operation name="SendRgvTask" parameterOrder="deviceId taskId sourcePlace toPlace taskType palletType fatherid">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/SendRgvTask" message="tns:IRgvService_SendRgvTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/SendRgvTaskResponse" message="tns:IRgvService_SendRgvTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvDelete" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/SendRgvDelete" message="tns:IRgvService_SendRgvDelete_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/SendRgvDeleteResponse" message="tns:IRgvService_SendRgvDelete_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvRlsAlert" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/SendRgvRlsAlert" message="tns:IRgvService_SendRgvRlsAlert_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/SendRgvRlsAlertResponse" message="tns:IRgvService_SendRgvRlsAlert_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvFinishConfirm" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/SendRgvFinishConfirm" message="tns:IRgvService_SendRgvFinishConfirm_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/SendRgvFinishConfirmResponse" message="tns:IRgvService_SendRgvFinishConfirm_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="GetRgvInfo" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/GetRgvInfo" message="tns:IRgvService_GetRgvInfo_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/GetRgvInfoResponse" message="tns:IRgvService_GetRgvInfo_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/IsTaskFinish" message="tns:IRgvService_IsTaskFinish_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/IsTaskFinishResponse" message="tns:IRgvService_IsTaskFinish_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvStop" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/SendRgvStop" message="tns:IRgvService_SendRgvStop_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/SendRgvStopResponse" message="tns:IRgvService_SendRgvStop_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsRgvReady" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/IsRgvReady" message="tns:IRgvService_IsRgvReady_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/IsRgvReadyResponse" message="tns:IRgvService_IsRgvReady_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/FinishTask" message="tns:IRgvService_FinishTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/FinishTaskResponse" message="tns:IRgvService_FinishTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="GetRgvPosation" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/GetRgvPosation" message="tns:IRgvService_GetRgvPosation_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/GetRgvPosationResponse" message="tns:IRgvService_GetRgvPosation_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="ChangeUseful" parameterOrder="rgvId">
+ <wsdl:input wsaw:Action="http://tempuri.org/IRgvService/ChangeUseful" message="tns:IRgvService_ChangeUseful_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/IRgvService/ChangeUsefulResponse" message="tns:IRgvService_ChangeUseful_OutputMessage" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="BasicHttpBinding_IRgvService" type="tns:IRgvService">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
+ <wsdl:operation name="SendRgvTask">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/SendRgvTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvDelete">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/SendRgvDelete" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvRlsAlert">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/SendRgvRlsAlert" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvFinishConfirm">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/SendRgvFinishConfirm" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetRgvInfo">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/GetRgvInfo" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/IsTaskFinish" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendRgvStop">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/SendRgvStop" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsRgvReady">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/IsRgvReady" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/FinishTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetRgvPosation">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/GetRgvPosation" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="ChangeUseful">
+ <soap:operation soapAction="http://tempuri.org/IRgvService/ChangeUseful" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="RgvService">
+ <wsdl:port name="BasicHttpBinding_IRgvService" binding="tns:BasicHttpBinding_IRgvService">
+ <soap:address location="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/rgvSRM/item.disco b/qqjf-Background/DeviceWCS/Web References/rgvSRM/item.disco
new file mode 100644
index 0000000..c6e8e9a
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/rgvSRM/item.disco
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
+ <contractRef ref="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/?wsdl" docRef="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
+</discovery>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/srmSER/Reference.cs b/qqjf-Background/DeviceWCS/Web References/srmSER/Reference.cs
new file mode 100644
index 0000000..103d6ea
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/srmSER/Reference.cs
@@ -0,0 +1,1017 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+//
+// 姝ゆ簮浠g爜鏄敱 Microsoft.VSDesigner 4.0.30319.42000 鐗堣嚜鍔ㄧ敓鎴愩��
+//
+#pragma warning disable 1591
+
+namespace DeviceWCS.srmSER {
+ using System;
+ using System.Web.Services;
+ using System.Diagnostics;
+ using System.Web.Services.Protocols;
+ using System.Xml.Serialization;
+ using System.ComponentModel;
+
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Web.Services.WebServiceBindingAttribute(Name="BasicHttpBinding_ISrmService", Namespace="http://tempuri.org/")]
+ public partial class SrmService : System.Web.Services.Protocols.SoapHttpClientProtocol {
+
+ private System.Threading.SendOrPostCallback GetSrmInfoOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendSrmDeleteOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendSrmTaskFinishConfirmOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendSrmEStopOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendSrmMoveOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendSrmTaskOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SrmRlsAlertOperationCompleted;
+
+ private System.Threading.SendOrPostCallback IsTaskFinishOperationCompleted;
+
+ private System.Threading.SendOrPostCallback IsReadyOperationCompleted;
+
+ private System.Threading.SendOrPostCallback FinishTaskOperationCompleted;
+
+ private System.Threading.SendOrPostCallback DeleteMainTaskOperationCompleted;
+
+ private System.Threading.SendOrPostCallback DeleteMainTaskByContainerNameOperationCompleted;
+
+ private System.Threading.SendOrPostCallback IsNotAlarmOperationCompleted;
+
+ private System.Threading.SendOrPostCallback UseAutoMoveOperationCompleted;
+
+ private bool useDefaultCredentialsSetExplicitly;
+
+ /// <remarks/>
+ public SrmService() {
+ this.Url = global::DeviceWCS.Properties.Settings.Default.DeviceWCS_srmSER_SrmService;
+ if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
+ this.UseDefaultCredentials = true;
+ this.useDefaultCredentialsSetExplicitly = false;
+ }
+ else {
+ this.useDefaultCredentialsSetExplicitly = true;
+ }
+ }
+
+ public new string Url {
+ get {
+ return base.Url;
+ }
+ set {
+ if ((((this.IsLocalFileSystemWebService(base.Url) == true)
+ && (this.useDefaultCredentialsSetExplicitly == false))
+ && (this.IsLocalFileSystemWebService(value) == false))) {
+ base.UseDefaultCredentials = false;
+ }
+ base.Url = value;
+ }
+ }
+
+ public new bool UseDefaultCredentials {
+ get {
+ return base.UseDefaultCredentials;
+ }
+ set {
+ base.UseDefaultCredentials = value;
+ this.useDefaultCredentialsSetExplicitly = true;
+ }
+ }
+
+ /// <remarks/>
+ public event GetSrmInfoCompletedEventHandler GetSrmInfoCompleted;
+
+ /// <remarks/>
+ public event SendSrmDeleteCompletedEventHandler SendSrmDeleteCompleted;
+
+ /// <remarks/>
+ public event SendSrmTaskFinishConfirmCompletedEventHandler SendSrmTaskFinishConfirmCompleted;
+
+ /// <remarks/>
+ public event SendSrmEStopCompletedEventHandler SendSrmEStopCompleted;
+
+ /// <remarks/>
+ public event SendSrmMoveCompletedEventHandler SendSrmMoveCompleted;
+
+ /// <remarks/>
+ public event SendSrmTaskCompletedEventHandler SendSrmTaskCompleted;
+
+ /// <remarks/>
+ public event SrmRlsAlertCompletedEventHandler SrmRlsAlertCompleted;
+
+ /// <remarks/>
+ public event IsTaskFinishCompletedEventHandler IsTaskFinishCompleted;
+
+ /// <remarks/>
+ public event IsReadyCompletedEventHandler IsReadyCompleted;
+
+ /// <remarks/>
+ public event FinishTaskCompletedEventHandler FinishTaskCompleted;
+
+ /// <remarks/>
+ public event DeleteMainTaskCompletedEventHandler DeleteMainTaskCompleted;
+
+ /// <remarks/>
+ public event DeleteMainTaskByContainerNameCompletedEventHandler DeleteMainTaskByContainerNameCompleted;
+
+ /// <remarks/>
+ public event IsNotAlarmCompletedEventHandler IsNotAlarmCompleted;
+
+ /// <remarks/>
+ public event UseAutoMoveCompletedEventHandler UseAutoMoveCompleted;
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/GetSrmInfo", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public string GetSrmInfo(int srmId) {
+ object[] results = this.Invoke("GetSrmInfo", new object[] {
+ srmId});
+ return ((string)(results[0]));
+ }
+
+ /// <remarks/>
+ public void GetSrmInfoAsync(int srmId) {
+ this.GetSrmInfoAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void GetSrmInfoAsync(int srmId, object userState) {
+ if ((this.GetSrmInfoOperationCompleted == null)) {
+ this.GetSrmInfoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetSrmInfoOperationCompleted);
+ }
+ this.InvokeAsync("GetSrmInfo", new object[] {
+ srmId}, this.GetSrmInfoOperationCompleted, userState);
+ }
+
+ private void OnGetSrmInfoOperationCompleted(object arg) {
+ if ((this.GetSrmInfoCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetSrmInfoCompleted(this, new GetSrmInfoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/SendSrmDelete", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendSrmDelete(int srmId) {
+ object[] results = this.Invoke("SendSrmDelete", new object[] {
+ srmId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendSrmDeleteAsync(int srmId) {
+ this.SendSrmDeleteAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void SendSrmDeleteAsync(int srmId, object userState) {
+ if ((this.SendSrmDeleteOperationCompleted == null)) {
+ this.SendSrmDeleteOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendSrmDeleteOperationCompleted);
+ }
+ this.InvokeAsync("SendSrmDelete", new object[] {
+ srmId}, this.SendSrmDeleteOperationCompleted, userState);
+ }
+
+ private void OnSendSrmDeleteOperationCompleted(object arg) {
+ if ((this.SendSrmDeleteCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendSrmDeleteCompleted(this, new SendSrmDeleteCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendSrmTaskFinishConfirm(int srmId) {
+ object[] results = this.Invoke("SendSrmTaskFinishConfirm", new object[] {
+ srmId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendSrmTaskFinishConfirmAsync(int srmId) {
+ this.SendSrmTaskFinishConfirmAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void SendSrmTaskFinishConfirmAsync(int srmId, object userState) {
+ if ((this.SendSrmTaskFinishConfirmOperationCompleted == null)) {
+ this.SendSrmTaskFinishConfirmOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendSrmTaskFinishConfirmOperationCompleted);
+ }
+ this.InvokeAsync("SendSrmTaskFinishConfirm", new object[] {
+ srmId}, this.SendSrmTaskFinishConfirmOperationCompleted, userState);
+ }
+
+ private void OnSendSrmTaskFinishConfirmOperationCompleted(object arg) {
+ if ((this.SendSrmTaskFinishConfirmCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendSrmTaskFinishConfirmCompleted(this, new SendSrmTaskFinishConfirmCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/SendSrmEStop", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendSrmEStop(int srmId) {
+ object[] results = this.Invoke("SendSrmEStop", new object[] {
+ srmId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendSrmEStopAsync(int srmId) {
+ this.SendSrmEStopAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void SendSrmEStopAsync(int srmId, object userState) {
+ if ((this.SendSrmEStopOperationCompleted == null)) {
+ this.SendSrmEStopOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendSrmEStopOperationCompleted);
+ }
+ this.InvokeAsync("SendSrmEStop", new object[] {
+ srmId}, this.SendSrmEStopOperationCompleted, userState);
+ }
+
+ private void OnSendSrmEStopOperationCompleted(object arg) {
+ if ((this.SendSrmEStopCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendSrmEStopCompleted(this, new SendSrmEStopCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/SendSrmMove", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendSrmMove(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather) {
+ object[] results = this.Invoke("SendSrmMove", new object[] {
+ srmId,
+ taskId,
+ toPlace,
+ command,
+ palletType,
+ taskFather});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendSrmMoveAsync(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather) {
+ this.SendSrmMoveAsync(srmId, taskId, toPlace, command, palletType, taskFather, null);
+ }
+
+ /// <remarks/>
+ public void SendSrmMoveAsync(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather, object userState) {
+ if ((this.SendSrmMoveOperationCompleted == null)) {
+ this.SendSrmMoveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendSrmMoveOperationCompleted);
+ }
+ this.InvokeAsync("SendSrmMove", new object[] {
+ srmId,
+ taskId,
+ toPlace,
+ command,
+ palletType,
+ taskFather}, this.SendSrmMoveOperationCompleted, userState);
+ }
+
+ private void OnSendSrmMoveOperationCompleted(object arg) {
+ if ((this.SendSrmMoveCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendSrmMoveCompleted(this, new SendSrmMoveCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/SendSrmTask", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendSrmTask(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather) {
+ object[] results = this.Invoke("SendSrmTask", new object[] {
+ srmId,
+ taskId,
+ sourcePlace,
+ toPlace,
+ pallet,
+ taskFather});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather) {
+ this.SendSrmTaskAsync(srmId, taskId, sourcePlace, toPlace, pallet, taskFather, null);
+ }
+
+ /// <remarks/>
+ public void SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather, object userState) {
+ if ((this.SendSrmTaskOperationCompleted == null)) {
+ this.SendSrmTaskOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendSrmTaskOperationCompleted);
+ }
+ this.InvokeAsync("SendSrmTask", new object[] {
+ srmId,
+ taskId,
+ sourcePlace,
+ toPlace,
+ pallet,
+ taskFather}, this.SendSrmTaskOperationCompleted, userState);
+ }
+
+ private void OnSendSrmTaskOperationCompleted(object arg) {
+ if ((this.SendSrmTaskCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendSrmTaskCompleted(this, new SendSrmTaskCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/SrmRlsAlert", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public void SrmRlsAlert(int srmId) {
+ this.Invoke("SrmRlsAlert", new object[] {
+ srmId});
+ }
+
+ /// <remarks/>
+ public void SrmRlsAlertAsync(int srmId) {
+ this.SrmRlsAlertAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void SrmRlsAlertAsync(int srmId, object userState) {
+ if ((this.SrmRlsAlertOperationCompleted == null)) {
+ this.SrmRlsAlertOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSrmRlsAlertOperationCompleted);
+ }
+ this.InvokeAsync("SrmRlsAlert", new object[] {
+ srmId}, this.SrmRlsAlertOperationCompleted, userState);
+ }
+
+ private void OnSrmRlsAlertOperationCompleted(object arg) {
+ if ((this.SrmRlsAlertCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SrmRlsAlertCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/IsTaskFinish", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int IsTaskFinish(int srmId) {
+ object[] results = this.Invoke("IsTaskFinish", new object[] {
+ srmId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void IsTaskFinishAsync(int srmId) {
+ this.IsTaskFinishAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void IsTaskFinishAsync(int srmId, object userState) {
+ if ((this.IsTaskFinishOperationCompleted == null)) {
+ this.IsTaskFinishOperationCompleted = new System.Threading.SendOrPostCallback(this.OnIsTaskFinishOperationCompleted);
+ }
+ this.InvokeAsync("IsTaskFinish", new object[] {
+ srmId}, this.IsTaskFinishOperationCompleted, userState);
+ }
+
+ private void OnIsTaskFinishOperationCompleted(object arg) {
+ if ((this.IsTaskFinishCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.IsTaskFinishCompleted(this, new IsTaskFinishCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/IsReady", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool IsReady(int srmId) {
+ object[] results = this.Invoke("IsReady", new object[] {
+ srmId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void IsReadyAsync(int srmId) {
+ this.IsReadyAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void IsReadyAsync(int srmId, object userState) {
+ if ((this.IsReadyOperationCompleted == null)) {
+ this.IsReadyOperationCompleted = new System.Threading.SendOrPostCallback(this.OnIsReadyOperationCompleted);
+ }
+ this.InvokeAsync("IsReady", new object[] {
+ srmId}, this.IsReadyOperationCompleted, userState);
+ }
+
+ private void OnIsReadyOperationCompleted(object arg) {
+ if ((this.IsReadyCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.IsReadyCompleted(this, new IsReadyCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/FinishTask", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int FinishTask(int srmId) {
+ object[] results = this.Invoke("FinishTask", new object[] {
+ srmId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void FinishTaskAsync(int srmId) {
+ this.FinishTaskAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void FinishTaskAsync(int srmId, object userState) {
+ if ((this.FinishTaskOperationCompleted == null)) {
+ this.FinishTaskOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFinishTaskOperationCompleted);
+ }
+ this.InvokeAsync("FinishTask", new object[] {
+ srmId}, this.FinishTaskOperationCompleted, userState);
+ }
+
+ private void OnFinishTaskOperationCompleted(object arg) {
+ if ((this.FinishTaskCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.FinishTaskCompleted(this, new FinishTaskCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/DeleteMainTask", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool DeleteMainTask(int id, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)] out int[] tranDoingId, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)] out int[] rgvDoingId, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)] out int[] srmDoingId, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/")] out string[] placeList, out int dir) {
+ object[] results = this.Invoke("DeleteMainTask", new object[] {
+ id});
+ tranDoingId = ((int[])(results[1]));
+ rgvDoingId = ((int[])(results[2]));
+ srmDoingId = ((int[])(results[3]));
+ placeList = ((string[])(results[4]));
+ dir = ((int)(results[5]));
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void DeleteMainTaskAsync(int id) {
+ this.DeleteMainTaskAsync(id, null);
+ }
+
+ /// <remarks/>
+ public void DeleteMainTaskAsync(int id, object userState) {
+ if ((this.DeleteMainTaskOperationCompleted == null)) {
+ this.DeleteMainTaskOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteMainTaskOperationCompleted);
+ }
+ this.InvokeAsync("DeleteMainTask", new object[] {
+ id}, this.DeleteMainTaskOperationCompleted, userState);
+ }
+
+ private void OnDeleteMainTaskOperationCompleted(object arg) {
+ if ((this.DeleteMainTaskCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.DeleteMainTaskCompleted(this, new DeleteMainTaskCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/DeleteMainTaskByContainerName", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool DeleteMainTaskByContainerName(string containerName, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)] out int[] tranDoingId, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)] out int[] rgvDoingId, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)] out int[] srmDoingId, [System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/")] out string[] placeList, out int dir) {
+ object[] results = this.Invoke("DeleteMainTaskByContainerName", new object[] {
+ containerName});
+ tranDoingId = ((int[])(results[1]));
+ rgvDoingId = ((int[])(results[2]));
+ srmDoingId = ((int[])(results[3]));
+ placeList = ((string[])(results[4]));
+ dir = ((int)(results[5]));
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void DeleteMainTaskByContainerNameAsync(string containerName) {
+ this.DeleteMainTaskByContainerNameAsync(containerName, null);
+ }
+
+ /// <remarks/>
+ public void DeleteMainTaskByContainerNameAsync(string containerName, object userState) {
+ if ((this.DeleteMainTaskByContainerNameOperationCompleted == null)) {
+ this.DeleteMainTaskByContainerNameOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteMainTaskByContainerNameOperationCompleted);
+ }
+ this.InvokeAsync("DeleteMainTaskByContainerName", new object[] {
+ containerName}, this.DeleteMainTaskByContainerNameOperationCompleted, userState);
+ }
+
+ private void OnDeleteMainTaskByContainerNameOperationCompleted(object arg) {
+ if ((this.DeleteMainTaskByContainerNameCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.DeleteMainTaskByContainerNameCompleted(this, new DeleteMainTaskByContainerNameCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/IsNotAlarm", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool IsNotAlarm(int srmId) {
+ object[] results = this.Invoke("IsNotAlarm", new object[] {
+ srmId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void IsNotAlarmAsync(int srmId) {
+ this.IsNotAlarmAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void IsNotAlarmAsync(int srmId, object userState) {
+ if ((this.IsNotAlarmOperationCompleted == null)) {
+ this.IsNotAlarmOperationCompleted = new System.Threading.SendOrPostCallback(this.OnIsNotAlarmOperationCompleted);
+ }
+ this.InvokeAsync("IsNotAlarm", new object[] {
+ srmId}, this.IsNotAlarmOperationCompleted, userState);
+ }
+
+ private void OnIsNotAlarmOperationCompleted(object arg) {
+ if ((this.IsNotAlarmCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.IsNotAlarmCompleted(this, new IsNotAlarmCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmService/UseAutoMove", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool UseAutoMove(int srmId) {
+ object[] results = this.Invoke("UseAutoMove", new object[] {
+ srmId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void UseAutoMoveAsync(int srmId) {
+ this.UseAutoMoveAsync(srmId, null);
+ }
+
+ /// <remarks/>
+ public void UseAutoMoveAsync(int srmId, object userState) {
+ if ((this.UseAutoMoveOperationCompleted == null)) {
+ this.UseAutoMoveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUseAutoMoveOperationCompleted);
+ }
+ this.InvokeAsync("UseAutoMove", new object[] {
+ srmId}, this.UseAutoMoveOperationCompleted, userState);
+ }
+
+ private void OnUseAutoMoveOperationCompleted(object arg) {
+ if ((this.UseAutoMoveCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.UseAutoMoveCompleted(this, new UseAutoMoveCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ public new void CancelAsync(object userState) {
+ base.CancelAsync(userState);
+ }
+
+ private bool IsLocalFileSystemWebService(string url) {
+ if (((url == null)
+ || (url == string.Empty))) {
+ return false;
+ }
+ System.Uri wsUri = new System.Uri(url);
+ if (((wsUri.Port >= 1024)
+ && (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void GetSrmInfoCompletedEventHandler(object sender, GetSrmInfoCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetSrmInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetSrmInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public string Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((string)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendSrmDeleteCompletedEventHandler(object sender, SendSrmDeleteCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendSrmDeleteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendSrmDeleteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendSrmTaskFinishConfirmCompletedEventHandler(object sender, SendSrmTaskFinishConfirmCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendSrmTaskFinishConfirmCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendSrmTaskFinishConfirmCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendSrmEStopCompletedEventHandler(object sender, SendSrmEStopCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendSrmEStopCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendSrmEStopCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendSrmMoveCompletedEventHandler(object sender, SendSrmMoveCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendSrmMoveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendSrmMoveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendSrmTaskCompletedEventHandler(object sender, SendSrmTaskCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendSrmTaskCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendSrmTaskCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SrmRlsAlertCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void IsTaskFinishCompletedEventHandler(object sender, IsTaskFinishCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class IsTaskFinishCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal IsTaskFinishCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void IsReadyCompletedEventHandler(object sender, IsReadyCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class IsReadyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal IsReadyCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void FinishTaskCompletedEventHandler(object sender, FinishTaskCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class FinishTaskCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal FinishTaskCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void DeleteMainTaskCompletedEventHandler(object sender, DeleteMainTaskCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class DeleteMainTaskCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal DeleteMainTaskCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+
+ /// <remarks/>
+ public int[] tranDoingId {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[1]));
+ }
+ }
+
+ /// <remarks/>
+ public int[] rgvDoingId {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[2]));
+ }
+ }
+
+ /// <remarks/>
+ public int[] srmDoingId {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[3]));
+ }
+ }
+
+ /// <remarks/>
+ public string[] placeList {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((string[])(this.results[4]));
+ }
+ }
+
+ /// <remarks/>
+ public int dir {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[5]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void DeleteMainTaskByContainerNameCompletedEventHandler(object sender, DeleteMainTaskByContainerNameCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class DeleteMainTaskByContainerNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal DeleteMainTaskByContainerNameCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+
+ /// <remarks/>
+ public int[] tranDoingId {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[1]));
+ }
+ }
+
+ /// <remarks/>
+ public int[] rgvDoingId {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[2]));
+ }
+ }
+
+ /// <remarks/>
+ public int[] srmDoingId {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[3]));
+ }
+ }
+
+ /// <remarks/>
+ public string[] placeList {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((string[])(this.results[4]));
+ }
+ }
+
+ /// <remarks/>
+ public int dir {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[5]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void IsNotAlarmCompletedEventHandler(object sender, IsNotAlarmCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class IsNotAlarmCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal IsNotAlarmCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void UseAutoMoveCompletedEventHandler(object sender, UseAutoMoveCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class UseAutoMoveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal UseAutoMoveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+}
+
+#pragma warning restore 1591
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/srmSER/Reference.map b/qqjf-Background/DeviceWCS/Web References/srmSER/Reference.map
new file mode 100644
index 0000000..8ee94d5
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/srmSER/Reference.map
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Results>
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?disco" filename="item.disco" />
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?wsdl" filename="SrmService.wsdl" />
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?xsd=xsd0" filename="item.xsd" />
+ </Results>
+</DiscoveryClientResultsFile>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/srmSER/SrmService.wsdl b/qqjf-Background/DeviceWCS/Web References/srmSER/SrmService.wsdl
new file mode 100644
index 0000000..15e8f7c
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/srmSER/SrmService.wsdl
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SrmService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://tempuri.org/Imports">
+ <xsd:import namespace="http://www.w3.org/2001/XMLSchema" />
+ <xsd:import schemaLocation="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?xsd=xsd0" namespace="http://tempuri.org/" />
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="ISrmService_GetSrmInfo_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_GetSrmInfo_OutputMessage">
+ <wsdl:part name="GetSrmInfoResult" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDelete_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDelete_OutputMessage">
+ <wsdl:part name="SendSrmDeleteResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTaskFinishConfirm_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTaskFinishConfirm_OutputMessage">
+ <wsdl:part name="SendSrmTaskFinishConfirmResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmEStop_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmEStop_OutputMessage">
+ <wsdl:part name="SendSrmEStopResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmMove_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="toPlace" type="xsd:string" />
+ <wsdl:part name="command" type="xsd:int" />
+ <wsdl:part name="palletType" type="xsd:int" />
+ <wsdl:part name="taskFather" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmMove_OutputMessage">
+ <wsdl:part name="SendSrmMoveResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTask_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="sourcePlace" type="xsd:string" />
+ <wsdl:part name="toPlace" type="xsd:string" />
+ <wsdl:part name="pallet" type="xsd:int" />
+ <wsdl:part name="taskFather" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTask_OutputMessage">
+ <wsdl:part name="SendSrmTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SrmRlsAlert_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SrmRlsAlert_OutputMessage" />
+ <wsdl:message name="ISrmService_IsTaskFinish_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsTaskFinish_OutputMessage">
+ <wsdl:part name="IsTaskFinishResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsReady_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsReady_OutputMessage">
+ <wsdl:part name="IsReadyResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_FinishTask_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_FinishTask_OutputMessage">
+ <wsdl:part name="FinishTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTask_InputMessage">
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTask_OutputMessage">
+ <wsdl:part name="DeleteMainTaskResult" type="xsd:boolean" />
+ <wsdl:part name="tranDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="rgvDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="srmDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="placeList" type="tns:ArrayOfString" />
+ <wsdl:part name="dir" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTaskByContainerName_InputMessage">
+ <wsdl:part name="containerName" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTaskByContainerName_OutputMessage">
+ <wsdl:part name="DeleteMainTaskByContainerNameResult" type="xsd:boolean" />
+ <wsdl:part name="tranDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="rgvDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="srmDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="placeList" type="tns:ArrayOfString" />
+ <wsdl:part name="dir" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsNotAlarm_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsNotAlarm_OutputMessage">
+ <wsdl:part name="IsNotAlarmResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_UseAutoMove_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_UseAutoMove_OutputMessage">
+ <wsdl:part name="UseAutoMoveResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:portType name="ISrmService">
+ <wsdl:operation name="GetSrmInfo" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfo" message="tns:ISrmService_GetSrmInfo_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfoResponse" message="tns:ISrmService_GetSrmInfo_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDelete" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmDelete" message="tns:ISrmService_SendSrmDelete_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmDeleteResponse" message="tns:ISrmService_SendSrmDelete_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTaskFinishConfirm" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm" message="tns:ISrmService_SendSrmTaskFinishConfirm_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirmResponse" message="tns:ISrmService_SendSrmTaskFinishConfirm_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmEStop" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStop" message="tns:ISrmService_SendSrmEStop_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStopResponse" message="tns:ISrmService_SendSrmEStop_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmMove" parameterOrder="srmId taskId toPlace command palletType taskFather">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmMove" message="tns:ISrmService_SendSrmMove_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmMoveResponse" message="tns:ISrmService_SendSrmMove_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTask" parameterOrder="srmId taskId sourcePlace toPlace pallet taskFather">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTask" message="tns:ISrmService_SendSrmTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskResponse" message="tns:ISrmService_SendSrmTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SrmRlsAlert" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlert" message="tns:ISrmService_SrmRlsAlert_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlertResponse" message="tns:ISrmService_SrmRlsAlert_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinish" message="tns:ISrmService_IsTaskFinish_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinishResponse" message="tns:ISrmService_IsTaskFinish_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsReady" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsReady" message="tns:ISrmService_IsReady_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsReadyResponse" message="tns:ISrmService_IsReady_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/FinishTask" message="tns:ISrmService_FinishTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/FinishTaskResponse" message="tns:ISrmService_FinishTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTask" parameterOrder="id tranDoingId rgvDoingId srmDoingId placeList dir">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTask" message="tns:ISrmService_DeleteMainTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTaskResponse" message="tns:ISrmService_DeleteMainTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTaskByContainerName" parameterOrder="containerName tranDoingId rgvDoingId srmDoingId placeList dir">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTaskByContainerName" message="tns:ISrmService_DeleteMainTaskByContainerName_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTaskByContainerNameResponse" message="tns:ISrmService_DeleteMainTaskByContainerName_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsNotAlarm" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsNotAlarm" message="tns:ISrmService_IsNotAlarm_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsNotAlarmResponse" message="tns:ISrmService_IsNotAlarm_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="UseAutoMove" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/UseAutoMove" message="tns:ISrmService_UseAutoMove_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/UseAutoMoveResponse" message="tns:ISrmService_UseAutoMove_OutputMessage" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="BasicHttpBinding_ISrmService" type="tns:ISrmService">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
+ <wsdl:operation name="GetSrmInfo">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/GetSrmInfo" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDelete">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmDelete" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTaskFinishConfirm">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmEStop">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmEStop" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmMove">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmMove" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SrmRlsAlert">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SrmRlsAlert" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsTaskFinish" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsReady">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsReady" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/FinishTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/DeleteMainTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTaskByContainerName">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/DeleteMainTaskByContainerName" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsNotAlarm">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsNotAlarm" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="UseAutoMove">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/UseAutoMove" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SrmService">
+ <wsdl:port name="BasicHttpBinding_ISrmService" binding="tns:BasicHttpBinding_ISrmService">
+ <soap:address location="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/srmSER/item.disco b/qqjf-Background/DeviceWCS/Web References/srmSER/item.disco
new file mode 100644
index 0000000..8d4be3c
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/srmSER/item.disco
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
+ <contractRef ref="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?wsdl" docRef="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
+</discovery>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/srmSER/item.xsd b/qqjf-Background/DeviceWCS/Web References/srmSER/item.xsd
new file mode 100644
index 0000000..e1f866d
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/srmSER/item.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="ArrayOfInt">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ArrayOfString">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.cs b/qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.cs
new file mode 100644
index 0000000..5e1ad1f
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.cs
@@ -0,0 +1,1126 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+//
+// 姝ゆ簮浠g爜鏄敱 Microsoft.VSDesigner 4.0.30319.42000 鐗堣嚜鍔ㄧ敓鎴愩��
+//
+#pragma warning disable 1591
+
+namespace DeviceWCS.tranSRM {
+ using System;
+ using System.Web.Services;
+ using System.Diagnostics;
+ using System.Web.Services.Protocols;
+ using System.Xml.Serialization;
+ using System.ComponentModel;
+
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Web.Services.WebServiceBindingAttribute(Name="BasicHttpBinding_ISrmTranService", Namespace="http://tempuri.org/")]
+ public partial class SrmTranService : System.Web.Services.Protocols.SoapHttpClientProtocol {
+
+ private System.Threading.SendOrPostCallback HasTranGoodsOperationCompleted;
+
+ private System.Threading.SendOrPostCallback ErrorTranGoodsOperationCompleted;
+
+ private System.Threading.SendOrPostCallback GetSrmConveyorStationInfoOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendGoodsSizeOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendGoodsReadyOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendWeightOkOperationCompleted;
+
+ private System.Threading.SendOrPostCallback GetGoodsWeightOperationCompleted;
+
+ private System.Threading.SendOrPostCallback GetGoodsBarcodeOperationCompleted;
+
+ private System.Threading.SendOrPostCallback IsPassedOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendTranStopOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendTranDeleteOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendTranResetOperationCompleted;
+
+ private System.Threading.SendOrPostCallback ClearTranGoodsOperationCompleted;
+
+ private System.Threading.SendOrPostCallback FinishTaskOperationCompleted;
+
+ private System.Threading.SendOrPostCallback SendGoodsTypeOperationCompleted;
+
+ private System.Threading.SendOrPostCallback UnlockTranOperationCompleted;
+
+ private System.Threading.SendOrPostCallback UnFullTranOperationCompleted;
+
+ private bool useDefaultCredentialsSetExplicitly;
+
+ /// <remarks/>
+ public SrmTranService() {
+ this.Url = global::DeviceWCS.Properties.Settings.Default.DeviceWCS_tranSRM_SrmTranService;
+ if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
+ this.UseDefaultCredentials = true;
+ this.useDefaultCredentialsSetExplicitly = false;
+ }
+ else {
+ this.useDefaultCredentialsSetExplicitly = true;
+ }
+ }
+
+ public new string Url {
+ get {
+ return base.Url;
+ }
+ set {
+ if ((((this.IsLocalFileSystemWebService(base.Url) == true)
+ && (this.useDefaultCredentialsSetExplicitly == false))
+ && (this.IsLocalFileSystemWebService(value) == false))) {
+ base.UseDefaultCredentials = false;
+ }
+ base.Url = value;
+ }
+ }
+
+ public new bool UseDefaultCredentials {
+ get {
+ return base.UseDefaultCredentials;
+ }
+ set {
+ base.UseDefaultCredentials = value;
+ this.useDefaultCredentialsSetExplicitly = true;
+ }
+ }
+
+ /// <remarks/>
+ public event HasTranGoodsCompletedEventHandler HasTranGoodsCompleted;
+
+ /// <remarks/>
+ public event ErrorTranGoodsCompletedEventHandler ErrorTranGoodsCompleted;
+
+ /// <remarks/>
+ public event GetSrmConveyorStationInfoCompletedEventHandler GetSrmConveyorStationInfoCompleted;
+
+ /// <remarks/>
+ public event SendGoodsSizeCompletedEventHandler SendGoodsSizeCompleted;
+
+ /// <remarks/>
+ public event SendGoodsReadyCompletedEventHandler SendGoodsReadyCompleted;
+
+ /// <remarks/>
+ public event SendWeightOkCompletedEventHandler SendWeightOkCompleted;
+
+ /// <remarks/>
+ public event GetGoodsWeightCompletedEventHandler GetGoodsWeightCompleted;
+
+ /// <remarks/>
+ public event GetGoodsBarcodeCompletedEventHandler GetGoodsBarcodeCompleted;
+
+ /// <remarks/>
+ public event IsPassedCompletedEventHandler IsPassedCompleted;
+
+ /// <remarks/>
+ public event SendTranStopCompletedEventHandler SendTranStopCompleted;
+
+ /// <remarks/>
+ public event SendTranDeleteCompletedEventHandler SendTranDeleteCompleted;
+
+ /// <remarks/>
+ public event SendTranResetCompletedEventHandler SendTranResetCompleted;
+
+ /// <remarks/>
+ public event ClearTranGoodsCompletedEventHandler ClearTranGoodsCompleted;
+
+ /// <remarks/>
+ public event FinishTaskCompletedEventHandler FinishTaskCompleted;
+
+ /// <remarks/>
+ public event SendGoodsTypeCompletedEventHandler SendGoodsTypeCompleted;
+
+ /// <remarks/>
+ public event UnlockTranCompletedEventHandler UnlockTranCompleted;
+
+ /// <remarks/>
+ public event UnFullTranCompletedEventHandler UnFullTranCompleted;
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/HasTranGoods", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ [return: System.Xml.Serialization.XmlArrayAttribute()]
+ [return: System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)]
+ public int[] HasTranGoods() {
+ object[] results = this.Invoke("HasTranGoods", new object[0]);
+ return ((int[])(results[0]));
+ }
+
+ /// <remarks/>
+ public void HasTranGoodsAsync() {
+ this.HasTranGoodsAsync(null);
+ }
+
+ /// <remarks/>
+ public void HasTranGoodsAsync(object userState) {
+ if ((this.HasTranGoodsOperationCompleted == null)) {
+ this.HasTranGoodsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnHasTranGoodsOperationCompleted);
+ }
+ this.InvokeAsync("HasTranGoods", new object[0], this.HasTranGoodsOperationCompleted, userState);
+ }
+
+ private void OnHasTranGoodsOperationCompleted(object arg) {
+ if ((this.HasTranGoodsCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.HasTranGoodsCompleted(this, new HasTranGoodsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/ErrorTranGoods", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ [return: System.Xml.Serialization.XmlArrayAttribute()]
+ [return: System.Xml.Serialization.XmlArrayItemAttribute(Namespace="http://tempuri.org/", IsNullable=false)]
+ public int[] ErrorTranGoods() {
+ object[] results = this.Invoke("ErrorTranGoods", new object[0]);
+ return ((int[])(results[0]));
+ }
+
+ /// <remarks/>
+ public void ErrorTranGoodsAsync() {
+ this.ErrorTranGoodsAsync(null);
+ }
+
+ /// <remarks/>
+ public void ErrorTranGoodsAsync(object userState) {
+ if ((this.ErrorTranGoodsOperationCompleted == null)) {
+ this.ErrorTranGoodsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnErrorTranGoodsOperationCompleted);
+ }
+ this.InvokeAsync("ErrorTranGoods", new object[0], this.ErrorTranGoodsOperationCompleted, userState);
+ }
+
+ private void OnErrorTranGoodsOperationCompleted(object arg) {
+ if ((this.ErrorTranGoodsCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.ErrorTranGoodsCompleted(this, new ErrorTranGoodsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/GetSrmConveyorStationInfo", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public string GetSrmConveyorStationInfo(int transPlaceId) {
+ object[] results = this.Invoke("GetSrmConveyorStationInfo", new object[] {
+ transPlaceId});
+ return ((string)(results[0]));
+ }
+
+ /// <remarks/>
+ public void GetSrmConveyorStationInfoAsync(int transPlaceId) {
+ this.GetSrmConveyorStationInfoAsync(transPlaceId, null);
+ }
+
+ /// <remarks/>
+ public void GetSrmConveyorStationInfoAsync(int transPlaceId, object userState) {
+ if ((this.GetSrmConveyorStationInfoOperationCompleted == null)) {
+ this.GetSrmConveyorStationInfoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetSrmConveyorStationInfoOperationCompleted);
+ }
+ this.InvokeAsync("GetSrmConveyorStationInfo", new object[] {
+ transPlaceId}, this.GetSrmConveyorStationInfoOperationCompleted, userState);
+ }
+
+ private void OnGetSrmConveyorStationInfoOperationCompleted(object arg) {
+ if ((this.GetSrmConveyorStationInfoCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetSrmConveyorStationInfoCompleted(this, new GetSrmConveyorStationInfoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/SendGoodsSize", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool SendGoodsSize(int transId, double length, double width, double height) {
+ object[] results = this.Invoke("SendGoodsSize", new object[] {
+ transId,
+ length,
+ width,
+ height});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendGoodsSizeAsync(int transId, double length, double width, double height) {
+ this.SendGoodsSizeAsync(transId, length, width, height, null);
+ }
+
+ /// <remarks/>
+ public void SendGoodsSizeAsync(int transId, double length, double width, double height, object userState) {
+ if ((this.SendGoodsSizeOperationCompleted == null)) {
+ this.SendGoodsSizeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendGoodsSizeOperationCompleted);
+ }
+ this.InvokeAsync("SendGoodsSize", new object[] {
+ transId,
+ length,
+ width,
+ height}, this.SendGoodsSizeOperationCompleted, userState);
+ }
+
+ private void OnSendGoodsSizeOperationCompleted(object arg) {
+ if ((this.SendGoodsSizeCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendGoodsSizeCompleted(this, new SendGoodsSizeCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/SendGoodsReady", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendGoodsReady(int startId, int endId, int taskId, int fatherid) {
+ object[] results = this.Invoke("SendGoodsReady", new object[] {
+ startId,
+ endId,
+ taskId,
+ fatherid});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendGoodsReadyAsync(int startId, int endId, int taskId, int fatherid) {
+ this.SendGoodsReadyAsync(startId, endId, taskId, fatherid, null);
+ }
+
+ /// <remarks/>
+ public void SendGoodsReadyAsync(int startId, int endId, int taskId, int fatherid, object userState) {
+ if ((this.SendGoodsReadyOperationCompleted == null)) {
+ this.SendGoodsReadyOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendGoodsReadyOperationCompleted);
+ }
+ this.InvokeAsync("SendGoodsReady", new object[] {
+ startId,
+ endId,
+ taskId,
+ fatherid}, this.SendGoodsReadyOperationCompleted, userState);
+ }
+
+ private void OnSendGoodsReadyOperationCompleted(object arg) {
+ if ((this.SendGoodsReadyCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendGoodsReadyCompleted(this, new SendGoodsReadyCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/SendWeightOk", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool SendWeightOk(int transId, bool isOk) {
+ object[] results = this.Invoke("SendWeightOk", new object[] {
+ transId,
+ isOk});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendWeightOkAsync(int transId, bool isOk) {
+ this.SendWeightOkAsync(transId, isOk, null);
+ }
+
+ /// <remarks/>
+ public void SendWeightOkAsync(int transId, bool isOk, object userState) {
+ if ((this.SendWeightOkOperationCompleted == null)) {
+ this.SendWeightOkOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendWeightOkOperationCompleted);
+ }
+ this.InvokeAsync("SendWeightOk", new object[] {
+ transId,
+ isOk}, this.SendWeightOkOperationCompleted, userState);
+ }
+
+ private void OnSendWeightOkOperationCompleted(object arg) {
+ if ((this.SendWeightOkCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendWeightOkCompleted(this, new SendWeightOkCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/GetGoodsWeight", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public string GetGoodsWeight(int transId) {
+ object[] results = this.Invoke("GetGoodsWeight", new object[] {
+ transId});
+ return ((string)(results[0]));
+ }
+
+ /// <remarks/>
+ public void GetGoodsWeightAsync(int transId) {
+ this.GetGoodsWeightAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void GetGoodsWeightAsync(int transId, object userState) {
+ if ((this.GetGoodsWeightOperationCompleted == null)) {
+ this.GetGoodsWeightOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGoodsWeightOperationCompleted);
+ }
+ this.InvokeAsync("GetGoodsWeight", new object[] {
+ transId}, this.GetGoodsWeightOperationCompleted, userState);
+ }
+
+ private void OnGetGoodsWeightOperationCompleted(object arg) {
+ if ((this.GetGoodsWeightCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetGoodsWeightCompleted(this, new GetGoodsWeightCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/GetGoodsBarcode", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public string GetGoodsBarcode(int transId) {
+ object[] results = this.Invoke("GetGoodsBarcode", new object[] {
+ transId});
+ return ((string)(results[0]));
+ }
+
+ /// <remarks/>
+ public void GetGoodsBarcodeAsync(int transId) {
+ this.GetGoodsBarcodeAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void GetGoodsBarcodeAsync(int transId, object userState) {
+ if ((this.GetGoodsBarcodeOperationCompleted == null)) {
+ this.GetGoodsBarcodeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGoodsBarcodeOperationCompleted);
+ }
+ this.InvokeAsync("GetGoodsBarcode", new object[] {
+ transId}, this.GetGoodsBarcodeOperationCompleted, userState);
+ }
+
+ private void OnGetGoodsBarcodeOperationCompleted(object arg) {
+ if ((this.GetGoodsBarcodeCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetGoodsBarcodeCompleted(this, new GetGoodsBarcodeCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/IsPassed", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int IsPassed(int transId) {
+ object[] results = this.Invoke("IsPassed", new object[] {
+ transId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void IsPassedAsync(int transId) {
+ this.IsPassedAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void IsPassedAsync(int transId, object userState) {
+ if ((this.IsPassedOperationCompleted == null)) {
+ this.IsPassedOperationCompleted = new System.Threading.SendOrPostCallback(this.OnIsPassedOperationCompleted);
+ }
+ this.InvokeAsync("IsPassed", new object[] {
+ transId}, this.IsPassedOperationCompleted, userState);
+ }
+
+ private void OnIsPassedOperationCompleted(object arg) {
+ if ((this.IsPassedCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.IsPassedCompleted(this, new IsPassedCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/SendTranStop", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendTranStop(int transId) {
+ object[] results = this.Invoke("SendTranStop", new object[] {
+ transId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendTranStopAsync(int transId) {
+ this.SendTranStopAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void SendTranStopAsync(int transId, object userState) {
+ if ((this.SendTranStopOperationCompleted == null)) {
+ this.SendTranStopOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendTranStopOperationCompleted);
+ }
+ this.InvokeAsync("SendTranStop", new object[] {
+ transId}, this.SendTranStopOperationCompleted, userState);
+ }
+
+ private void OnSendTranStopOperationCompleted(object arg) {
+ if ((this.SendTranStopCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendTranStopCompleted(this, new SendTranStopCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/SendTranDelete", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendTranDelete(int transId) {
+ object[] results = this.Invoke("SendTranDelete", new object[] {
+ transId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendTranDeleteAsync(int transId) {
+ this.SendTranDeleteAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void SendTranDeleteAsync(int transId, object userState) {
+ if ((this.SendTranDeleteOperationCompleted == null)) {
+ this.SendTranDeleteOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendTranDeleteOperationCompleted);
+ }
+ this.InvokeAsync("SendTranDelete", new object[] {
+ transId}, this.SendTranDeleteOperationCompleted, userState);
+ }
+
+ private void OnSendTranDeleteOperationCompleted(object arg) {
+ if ((this.SendTranDeleteCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendTranDeleteCompleted(this, new SendTranDeleteCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/SendTranReset", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int SendTranReset(int transId) {
+ object[] results = this.Invoke("SendTranReset", new object[] {
+ transId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendTranResetAsync(int transId) {
+ this.SendTranResetAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void SendTranResetAsync(int transId, object userState) {
+ if ((this.SendTranResetOperationCompleted == null)) {
+ this.SendTranResetOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendTranResetOperationCompleted);
+ }
+ this.InvokeAsync("SendTranReset", new object[] {
+ transId}, this.SendTranResetOperationCompleted, userState);
+ }
+
+ private void OnSendTranResetOperationCompleted(object arg) {
+ if ((this.SendTranResetCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendTranResetCompleted(this, new SendTranResetCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/ClearTranGoods", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool ClearTranGoods(int transId) {
+ object[] results = this.Invoke("ClearTranGoods", new object[] {
+ transId});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void ClearTranGoodsAsync(int transId) {
+ this.ClearTranGoodsAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void ClearTranGoodsAsync(int transId, object userState) {
+ if ((this.ClearTranGoodsOperationCompleted == null)) {
+ this.ClearTranGoodsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnClearTranGoodsOperationCompleted);
+ }
+ this.InvokeAsync("ClearTranGoods", new object[] {
+ transId}, this.ClearTranGoodsOperationCompleted, userState);
+ }
+
+ private void OnClearTranGoodsOperationCompleted(object arg) {
+ if ((this.ClearTranGoodsCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.ClearTranGoodsCompleted(this, new ClearTranGoodsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/FinishTask", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public int FinishTask(int transId) {
+ object[] results = this.Invoke("FinishTask", new object[] {
+ transId});
+ return ((int)(results[0]));
+ }
+
+ /// <remarks/>
+ public void FinishTaskAsync(int transId) {
+ this.FinishTaskAsync(transId, null);
+ }
+
+ /// <remarks/>
+ public void FinishTaskAsync(int transId, object userState) {
+ if ((this.FinishTaskOperationCompleted == null)) {
+ this.FinishTaskOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFinishTaskOperationCompleted);
+ }
+ this.InvokeAsync("FinishTask", new object[] {
+ transId}, this.FinishTaskOperationCompleted, userState);
+ }
+
+ private void OnFinishTaskOperationCompleted(object arg) {
+ if ((this.FinishTaskCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.FinishTaskCompleted(this, new FinishTaskCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/SendGoodsType", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool SendGoodsType(int transId, int palletType) {
+ object[] results = this.Invoke("SendGoodsType", new object[] {
+ transId,
+ palletType});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void SendGoodsTypeAsync(int transId, int palletType) {
+ this.SendGoodsTypeAsync(transId, palletType, null);
+ }
+
+ /// <remarks/>
+ public void SendGoodsTypeAsync(int transId, int palletType, object userState) {
+ if ((this.SendGoodsTypeOperationCompleted == null)) {
+ this.SendGoodsTypeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendGoodsTypeOperationCompleted);
+ }
+ this.InvokeAsync("SendGoodsType", new object[] {
+ transId,
+ palletType}, this.SendGoodsTypeOperationCompleted, userState);
+ }
+
+ private void OnSendGoodsTypeOperationCompleted(object arg) {
+ if ((this.SendGoodsTypeCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.SendGoodsTypeCompleted(this, new SendGoodsTypeCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/UnlockTran", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool UnlockTran(int east) {
+ object[] results = this.Invoke("UnlockTran", new object[] {
+ east});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void UnlockTranAsync(int east) {
+ this.UnlockTranAsync(east, null);
+ }
+
+ /// <remarks/>
+ public void UnlockTranAsync(int east, object userState) {
+ if ((this.UnlockTranOperationCompleted == null)) {
+ this.UnlockTranOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUnlockTranOperationCompleted);
+ }
+ this.InvokeAsync("UnlockTran", new object[] {
+ east}, this.UnlockTranOperationCompleted, userState);
+ }
+
+ private void OnUnlockTranOperationCompleted(object arg) {
+ if ((this.UnlockTranCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.UnlockTranCompleted(this, new UnlockTranCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ [System.Web.Services.Protocols.SoapRpcMethodAttribute("http://tempuri.org/ISrmTranService/UnFullTran", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
+ public bool UnFullTran(int east) {
+ object[] results = this.Invoke("UnFullTran", new object[] {
+ east});
+ return ((bool)(results[0]));
+ }
+
+ /// <remarks/>
+ public void UnFullTranAsync(int east) {
+ this.UnFullTranAsync(east, null);
+ }
+
+ /// <remarks/>
+ public void UnFullTranAsync(int east, object userState) {
+ if ((this.UnFullTranOperationCompleted == null)) {
+ this.UnFullTranOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUnFullTranOperationCompleted);
+ }
+ this.InvokeAsync("UnFullTran", new object[] {
+ east}, this.UnFullTranOperationCompleted, userState);
+ }
+
+ private void OnUnFullTranOperationCompleted(object arg) {
+ if ((this.UnFullTranCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.UnFullTranCompleted(this, new UnFullTranCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ /// <remarks/>
+ public new void CancelAsync(object userState) {
+ base.CancelAsync(userState);
+ }
+
+ private bool IsLocalFileSystemWebService(string url) {
+ if (((url == null)
+ || (url == string.Empty))) {
+ return false;
+ }
+ System.Uri wsUri = new System.Uri(url);
+ if (((wsUri.Port >= 1024)
+ && (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void HasTranGoodsCompletedEventHandler(object sender, HasTranGoodsCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class HasTranGoodsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal HasTranGoodsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int[] Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void ErrorTranGoodsCompletedEventHandler(object sender, ErrorTranGoodsCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class ErrorTranGoodsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal ErrorTranGoodsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int[] Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int[])(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void GetSrmConveyorStationInfoCompletedEventHandler(object sender, GetSrmConveyorStationInfoCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetSrmConveyorStationInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetSrmConveyorStationInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public string Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((string)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendGoodsSizeCompletedEventHandler(object sender, SendGoodsSizeCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendGoodsSizeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendGoodsSizeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendGoodsReadyCompletedEventHandler(object sender, SendGoodsReadyCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendGoodsReadyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendGoodsReadyCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendWeightOkCompletedEventHandler(object sender, SendWeightOkCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendWeightOkCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendWeightOkCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void GetGoodsWeightCompletedEventHandler(object sender, GetGoodsWeightCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetGoodsWeightCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetGoodsWeightCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public string Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((string)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void GetGoodsBarcodeCompletedEventHandler(object sender, GetGoodsBarcodeCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetGoodsBarcodeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetGoodsBarcodeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public string Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((string)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void IsPassedCompletedEventHandler(object sender, IsPassedCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class IsPassedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal IsPassedCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendTranStopCompletedEventHandler(object sender, SendTranStopCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendTranStopCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendTranStopCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendTranDeleteCompletedEventHandler(object sender, SendTranDeleteCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendTranDeleteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendTranDeleteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendTranResetCompletedEventHandler(object sender, SendTranResetCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendTranResetCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendTranResetCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void ClearTranGoodsCompletedEventHandler(object sender, ClearTranGoodsCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class ClearTranGoodsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal ClearTranGoodsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void FinishTaskCompletedEventHandler(object sender, FinishTaskCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class FinishTaskCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal FinishTaskCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public int Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((int)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void SendGoodsTypeCompletedEventHandler(object sender, SendGoodsTypeCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class SendGoodsTypeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal SendGoodsTypeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void UnlockTranCompletedEventHandler(object sender, UnlockTranCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class UnlockTranCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal UnlockTranCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ public delegate void UnFullTranCompletedEventHandler(object sender, UnFullTranCompletedEventArgs e);
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.4084.0")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class UnFullTranCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal UnFullTranCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ /// <remarks/>
+ public bool Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+}
+
+#pragma warning restore 1591
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.map b/qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.map
new file mode 100644
index 0000000..6dbedbb
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/tranSRM/Reference.map
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Results>
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/?disco" filename="item.disco" />
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/?wsdl" filename="SrmTranService.wsdl" />
+ <DiscoveryClientResult referenceType="System.Web.Services.Discovery.SchemaReference" url="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/?xsd=xsd0" filename="item.xsd" />
+ </Results>
+</DiscoveryClientResultsFile>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/tranSRM/SrmTranService.wsdl b/qqjf-Background/DeviceWCS/Web References/tranSRM/SrmTranService.wsdl
new file mode 100644
index 0000000..7ed2f80
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/tranSRM/SrmTranService.wsdl
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SrmTranService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://tempuri.org/Imports">
+ <xsd:import schemaLocation="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/?xsd=xsd0" namespace="http://tempuri.org/" />
+ <xsd:import namespace="http://www.w3.org/2001/XMLSchema" />
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="ISrmTranService_HasTranGoods_InputMessage" />
+ <wsdl:message name="ISrmTranService_HasTranGoods_OutputMessage">
+ <wsdl:part name="HasTranGoodsResult" type="tns:ArrayOfInt" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_ErrorTranGoods_InputMessage" />
+ <wsdl:message name="ISrmTranService_ErrorTranGoods_OutputMessage">
+ <wsdl:part name="ErrorTranGoodsResult" type="tns:ArrayOfInt" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_GetSrmConveyorStationInfo_InputMessage">
+ <wsdl:part name="transPlaceId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_GetSrmConveyorStationInfo_OutputMessage">
+ <wsdl:part name="GetSrmConveyorStationInfoResult" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendGoodsSize_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ <wsdl:part name="length" type="xsd:double" />
+ <wsdl:part name="width" type="xsd:double" />
+ <wsdl:part name="height" type="xsd:double" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendGoodsSize_OutputMessage">
+ <wsdl:part name="SendGoodsSizeResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendGoodsReady_InputMessage">
+ <wsdl:part name="startId" type="xsd:int" />
+ <wsdl:part name="endId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="fatherid" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendGoodsReady_OutputMessage">
+ <wsdl:part name="SendGoodsReadyResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendWeightOk_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ <wsdl:part name="isOk" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendWeightOk_OutputMessage">
+ <wsdl:part name="SendWeightOkResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_GetGoodsWeight_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_GetGoodsWeight_OutputMessage">
+ <wsdl:part name="GetGoodsWeightResult" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_GetGoodsBarcode_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_GetGoodsBarcode_OutputMessage">
+ <wsdl:part name="GetGoodsBarcodeResult" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_IsPassed_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_IsPassed_OutputMessage">
+ <wsdl:part name="IsPassedResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendTranStop_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendTranStop_OutputMessage">
+ <wsdl:part name="SendTranStopResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendTranDelete_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendTranDelete_OutputMessage">
+ <wsdl:part name="SendTranDeleteResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendTranReset_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendTranReset_OutputMessage">
+ <wsdl:part name="SendTranResetResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_ClearTranGoods_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_ClearTranGoods_OutputMessage">
+ <wsdl:part name="ClearTranGoodsResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_FinishTask_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_FinishTask_OutputMessage">
+ <wsdl:part name="FinishTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendGoodsType_InputMessage">
+ <wsdl:part name="transId" type="xsd:int" />
+ <wsdl:part name="palletType" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_SendGoodsType_OutputMessage">
+ <wsdl:part name="SendGoodsTypeResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_UnlockTran_InputMessage">
+ <wsdl:part name="east" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_UnlockTran_OutputMessage">
+ <wsdl:part name="UnlockTranResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_UnFullTran_InputMessage">
+ <wsdl:part name="east" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmTranService_UnFullTran_OutputMessage">
+ <wsdl:part name="UnFullTranResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:portType name="ISrmTranService">
+ <wsdl:operation name="HasTranGoods">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/HasTranGoods" message="tns:ISrmTranService_HasTranGoods_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/HasTranGoodsResponse" message="tns:ISrmTranService_HasTranGoods_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="ErrorTranGoods">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/ErrorTranGoods" message="tns:ISrmTranService_ErrorTranGoods_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/ErrorTranGoodsResponse" message="tns:ISrmTranService_ErrorTranGoods_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="GetSrmConveyorStationInfo" parameterOrder="transPlaceId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/GetSrmConveyorStationInfo" message="tns:ISrmTranService_GetSrmConveyorStationInfo_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/GetSrmConveyorStationInfoResponse" message="tns:ISrmTranService_GetSrmConveyorStationInfo_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendGoodsSize" parameterOrder="transId length width height">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/SendGoodsSize" message="tns:ISrmTranService_SendGoodsSize_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/SendGoodsSizeResponse" message="tns:ISrmTranService_SendGoodsSize_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendGoodsReady" parameterOrder="startId endId taskId fatherid">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/SendGoodsReady" message="tns:ISrmTranService_SendGoodsReady_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/SendGoodsReadyResponse" message="tns:ISrmTranService_SendGoodsReady_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendWeightOk" parameterOrder="transId isOk">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/SendWeightOk" message="tns:ISrmTranService_SendWeightOk_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/SendWeightOkResponse" message="tns:ISrmTranService_SendWeightOk_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="GetGoodsWeight" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/GetGoodsWeight" message="tns:ISrmTranService_GetGoodsWeight_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/GetGoodsWeightResponse" message="tns:ISrmTranService_GetGoodsWeight_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="GetGoodsBarcode" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/GetGoodsBarcode" message="tns:ISrmTranService_GetGoodsBarcode_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/GetGoodsBarcodeResponse" message="tns:ISrmTranService_GetGoodsBarcode_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsPassed" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/IsPassed" message="tns:ISrmTranService_IsPassed_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/IsPassedResponse" message="tns:ISrmTranService_IsPassed_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendTranStop" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/SendTranStop" message="tns:ISrmTranService_SendTranStop_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/SendTranStopResponse" message="tns:ISrmTranService_SendTranStop_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendTranDelete" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/SendTranDelete" message="tns:ISrmTranService_SendTranDelete_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/SendTranDeleteResponse" message="tns:ISrmTranService_SendTranDelete_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendTranReset" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/SendTranReset" message="tns:ISrmTranService_SendTranReset_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/SendTranResetResponse" message="tns:ISrmTranService_SendTranReset_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="ClearTranGoods" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/ClearTranGoods" message="tns:ISrmTranService_ClearTranGoods_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/ClearTranGoodsResponse" message="tns:ISrmTranService_ClearTranGoods_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask" parameterOrder="transId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/FinishTask" message="tns:ISrmTranService_FinishTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/FinishTaskResponse" message="tns:ISrmTranService_FinishTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendGoodsType" parameterOrder="transId palletType">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/SendGoodsType" message="tns:ISrmTranService_SendGoodsType_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/SendGoodsTypeResponse" message="tns:ISrmTranService_SendGoodsType_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="UnlockTran" parameterOrder="east">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/UnlockTran" message="tns:ISrmTranService_UnlockTran_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/UnlockTranResponse" message="tns:ISrmTranService_UnlockTran_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="UnFullTran" parameterOrder="east">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmTranService/UnFullTran" message="tns:ISrmTranService_UnFullTran_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmTranService/UnFullTranResponse" message="tns:ISrmTranService_UnFullTran_OutputMessage" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="BasicHttpBinding_ISrmTranService" type="tns:ISrmTranService">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
+ <wsdl:operation name="HasTranGoods">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/HasTranGoods" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="ErrorTranGoods">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/ErrorTranGoods" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetSrmConveyorStationInfo">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/GetSrmConveyorStationInfo" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendGoodsSize">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/SendGoodsSize" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendGoodsReady">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/SendGoodsReady" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendWeightOk">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/SendWeightOk" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetGoodsWeight">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/GetGoodsWeight" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="GetGoodsBarcode">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/GetGoodsBarcode" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsPassed">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/IsPassed" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendTranStop">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/SendTranStop" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendTranDelete">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/SendTranDelete" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendTranReset">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/SendTranReset" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="ClearTranGoods">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/ClearTranGoods" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/FinishTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendGoodsType">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/SendGoodsType" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="UnlockTran">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/UnlockTran" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="UnFullTran">
+ <soap:operation soapAction="http://tempuri.org/ISrmTranService/UnFullTran" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SrmTranService">
+ <wsdl:port name="BasicHttpBinding_ISrmTranService" binding="tns:BasicHttpBinding_ISrmTranService">
+ <soap:address location="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/tranSRM/item.disco b/qqjf-Background/DeviceWCS/Web References/tranSRM/item.disco
new file mode 100644
index 0000000..4aec209
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/tranSRM/item.disco
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
+ <contractRef ref="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/?wsdl" docRef="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
+</discovery>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/Web References/tranSRM/item.xsd b/qqjf-Background/DeviceWCS/Web References/tranSRM/item.xsd
new file mode 100644
index 0000000..0db3877
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/Web References/tranSRM/item.xsd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="ArrayOfInt">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/packages.config b/qqjf-Background/DeviceWCS/packages.config
new file mode 100644
index 0000000..3ab774b
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/packages.config
@@ -0,0 +1,5 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
+ <package id="EntityFramework.zh-Hans" version="6.1.3" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/qqjf-Background/DeviceWCS/rgvINFO.cs b/qqjf-Background/DeviceWCS/rgvINFO.cs
new file mode 100644
index 0000000..2b8627c
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/rgvINFO.cs
@@ -0,0 +1,87 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DeviceWCS
+{
+ class rgvINFO
+ {
+
+ /// <summary>rgv鍚嶇О
+ ///
+ /// </summary>
+ public string RgvName { get; set; }
+ /// <summary>RGV缂栧彿
+ ///
+ /// </summary>
+ public int Rgvid { get; set; }
+
+ /// <summary>鍙栬揣瀹屾垚
+ ///
+ /// </summary>
+ public int getFinish { get; set; }
+
+ /// <summary>鏀捐揣瀹屾垚
+ ///
+ /// </summary>
+ public int putFinish { get; set; }
+
+ /// <summary>鑱旀満妯″紡
+ ///
+ /// </summary>
+ public int onLine { get; set; }
+
+ /// <summary>鏄惁鎶ヨ
+ ///
+ /// </summary>
+ public int ararm { get; set; }
+
+ /// <summary>浠诲姟瀹屾垚
+ ///
+ /// </summary>
+ public int taskFinish { get; set; }
+
+ /// <summary>鏄惁鏈夎揣
+ ///
+ /// </summary>
+ public int loaded { get; set; }
+
+ /// <summary>鎶ヨ浠g爜
+ ///
+ /// </summary>
+
+ public int alarmCode { get; set; }
+
+ /// <summary>杩愯鐘舵��
+ ///
+ /// </summary>
+ public int state { get; set; }
+
+ /// <summary>褰撳墠浣嶇疆
+ ///
+ /// </summary>
+ public int pos { get; set; }
+
+ /// <summary>浠诲姟ID
+ ///
+ /// </summary>
+ public int taskId { get; set; }
+
+ /// <summary>浠诲姟ID
+ ///
+ /// </summary>
+ public int deviceTaskId { get; set; }
+
+ /// <summary>rgv蹇冭烦
+ ///
+ /// </summary>
+ public int handShake { get; set; }
+
+ /// <summary>
+ /// RGV鍙敤
+ /// </summary>
+ public bool useful { get; set; }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/srmInfo.cs b/qqjf-Background/DeviceWCS/srmInfo.cs
new file mode 100644
index 0000000..f583ad2
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/srmInfo.cs
@@ -0,0 +1,107 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DeviceWCS
+{
+ class srmInfo
+ {
+ /// <summary>鍫嗗灈鏈哄悕绉�
+ ///
+ /// </summary>
+ public string SrmName { get; set; }
+
+ /// <summary>璁惧缂栧彿
+ ///
+ /// </summary>
+ public int DeviceId { get; set; }
+ /// <summary>鍫嗗灈鏈哄績璺筹紙1-10000锛�
+ ///
+ /// </summary>
+ public int RhandShake { get; set; }
+ /// <summary>鍫嗗灈鏈烘ā寮�
+ /// 1鑷姩妯″紡
+ /// 2鎵嬪姩妯″紡
+ /// 3鍗婅嚜鍔ㄦā寮�
+ /// 4缁翠慨妯″紡
+ /// 0鍏虫満
+ /// </summary>
+ public int Rmode { get; set; }
+ /// <summary>鍊兼槸1鍫嗗灈鏈烘槸鎶ヨ鐘舵��
+ ///
+ /// </summary>
+ public int Ralarm { get; set; }
+ /// <summary>鍊兼槸1琛ㄧず鍫嗗灈鏈烘湁璐�
+ ///
+ /// </summary>
+ public int RliftFull { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶅垪鍙�
+ ///
+ /// </summary>
+ public int Rposx { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶅眰鍙�
+ ///
+ /// </summary>
+ public int Rposy { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶈揣鍙変綅缃�
+ /// 0 璐у弶鍘熶綅
+ /// 1 璐у弶鍦ㄥ乏渚�
+ /// 2 璐у弶鍦ㄥ彸渚�
+ /// </summary>
+ public int Rposz { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶅垪鍧愭爣
+ ///
+ /// </summary>
+ public long Rposxmm { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶅眰鍧愭爣
+ ///
+ /// </summary>
+ public long Rposymm { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶈揣鍙夊潗鏍�
+ ///
+ /// </summary>
+ public long Rposzmm { get; set; }
+ /// <summary>鍊兼槸1 琛ㄧず瀹屾垚鍙栬揣淇″彿
+ ///
+ /// </summary>
+ public int RpickFinish { get; set; }
+ /// <summary>鍊兼槸1 琛ㄧず瀹屾垚鏀捐揣淇″彿
+ ///
+ /// </summary>
+ public int RdeliveryFinish { get; set; }
+ /// <summary>鍊兼槸1琛ㄧず浠诲姟瀹屾垚
+ ///
+ /// </summary>
+ public int RtaskFinish { get; set; }
+ /// <summary>鎶ヨ浠g爜
+ ///
+ /// </summary>
+ public int RalarmNumber { get; set; }
+ /// <summary>鍫嗗灈鏈虹姸鎬�
+ /// 0绌洪棽
+ /// 1鍙栬揣瀹氫綅涓�
+ /// 2璇锋眰鍙栬揣
+ /// 3鍙栬揣涓�
+ /// 4鍙栬揣瀹屾垚鏀捐揣瀹氫綅涓�
+ /// 5璇锋眰鏀捐揣
+ /// 6鏀捐揣涓�
+ /// 98缁翠慨涓�
+ /// 99鎶ヨ
+ /// </summary>
+ public int Rstate { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶅贩閬�
+ ///
+ /// </summary>
+ public int Ractuallane { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶄换鍔″彿
+ ///
+ /// </summary>
+ public int RtaskNO { get; set; }
+ /// <summary>鍫嗗灈鏈哄綋鍓嶈澶囦换鍔″彿
+ ///
+ /// </summary>
+ public int RDevicetaskNO { get; set; }
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/taskCommon.cs b/qqjf-Background/DeviceWCS/taskCommon.cs
new file mode 100644
index 0000000..393c584
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/taskCommon.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DeviceWCS
+{
+ public class taskCommon
+ {
+ public int id { get; set; }
+
+ public string sourcePlace { get; set; }
+
+ public string toPlace { get; set; }
+
+ public string isReleased { get; set; }
+
+ public string hasFinished { get; set; }
+
+ public string device { get; set; }
+
+ public int deviceNum { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/DeviceWCS/tranInfo.cs b/qqjf-Background/DeviceWCS/tranInfo.cs
new file mode 100644
index 0000000..9314d36
--- /dev/null
+++ b/qqjf-Background/DeviceWCS/tranInfo.cs
@@ -0,0 +1,95 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DeviceWCS
+{
+ class tranInfo
+ {
+ /// <summary>杈撻�佺嚎绔欑偣鍚�
+ ///
+ /// </summary>
+ public string TranName { get; set; }
+
+ /// <summary>杈撻�佺嚎绔欑偣鍙�
+ ///
+ /// </summary>
+ public int stationNo { get; set; }
+ /// <summary>浠诲姟ID
+ ///
+ /// </summary>
+ public int taskId { get; set; }
+ /// <summary>浠诲姟ID
+ ///
+ /// </summary>
+ public int deviceTaskId { get; set; }
+
+ /// <summary>褰撳墠鐩爣鍦板潃
+ ///
+ /// </summary>
+ public int endStation { get; set; }
+ /// <summary>鑷姩妯″紡 true鏄嚜鍔� false闈炶嚜鍔�
+ ///
+ /// </summary>
+ public bool auto { get; set; }
+
+ /// <summary>鏁呴殰鐘舵��
+ ///
+ /// </summary>
+ public bool err { get; set; }
+ /// <summary>绌洪棽鐘舵��
+ ///
+ /// </summary>
+ public bool wait { get; set; }
+ /// <summary>鍏夌數1鐘舵��
+ ///
+ /// </summary>
+ public bool PH1 { get; set; }
+ /// <summary>鍏夌數2鐘舵��
+ ///
+ /// </summary>
+ public bool PH2 { get; set; }
+ /// <summary>楂樹綅
+ ///
+ /// </summary>
+ public bool PRH { get; set; }
+ /// <summary>浣庝綅
+ ///
+ /// </summary>
+ public bool PRL { get; set; }
+ /// <summary>鏄惁鏈夎揣
+ ///
+ /// </summary>
+ public bool goods { get; set; }
+ /// <summary>鎶ヨ鍙�
+ /// 1锛氳繍琛岃秴鏃舵姤璀︼紱2锛氭按骞冲彉棰戝櫒鎶ヨ锛�3:椹揪淇濇姢鍣ㄦ姤璀︼紱
+ /// 4锛氭�ュ仠鎶ヨ锛�5锛氬乏瓒呭锛�6锛氬彸瓒呭锛�7锛氳秴楂�
+ /// </summary>
+ public int errId { get; set; }
+ /// <summary>璐х墿閲嶉噺
+ ///
+ /// </summary>
+ public double weihgt { get; set; }
+ /// <summary>蹇冭烦
+ ///
+ /// </summary>
+ public int handShake { get; set; }
+ /// <summary>澶栧嚭妫�娴�
+ /// 0娌℃湁鍒颁綅,1鍒颁綅涓嶆甯�,2鍒颁綅姝e父
+ /// </summary>
+ public int shapeCheck { get; set; }
+
+ /// <summary>鏉$爜
+ ///
+ /// </summary>
+ public string Code { get; set; }
+
+
+ /// <summary>鍏佽涓嬪彂浠诲姟
+ ///
+ /// </summary>
+ public bool TaskSendAllow { get; set; }
+ }
+}
diff --git a/qqjf-Background/EnumType/EDeviceId.cs b/qqjf-Background/EnumType/EDeviceId.cs
new file mode 100644
index 0000000..79825af
--- /dev/null
+++ b/qqjf-Background/EnumType/EDeviceId.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum EDeviceId
+ {
+ 涓�鍙峰爢鍨涙満 = 1,
+ 浜屽彿鍫嗗灈鏈� = 2,
+ 涓夊彿鍫嗗灈鏈� = 3,
+ 鍥涘彿鍫嗗灈鏈� = 4,
+ 浜斿彿鍫嗗灈鏈� = 5,
+ 鍏彿鍫嗗灈鏈� = 6,
+ 涓冨彿鍫嗗灈鏈� = 7,
+ 鍏彿鍫嗗灈鏈� = 8,
+ 涔濆彿鍫嗗灈鏈� = 9,
+
+ }
+}
diff --git a/qqjf-Background/EnumType/ESrgvAlarm.cs b/qqjf-Background/EnumType/ESrgvAlarm.cs
new file mode 100644
index 0000000..b52e9fe
--- /dev/null
+++ b/qqjf-Background/EnumType/ESrgvAlarm.cs
@@ -0,0 +1,55 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum ESrgvAlarm
+ {
+ 鏃犳晠闅�=0,
+ 鎺у埗鏌滄�ュ仠鎸変笅 = 1,
+ 瑗夸晶杈撻�佺嚎M1鎴朚2鎺у埗鏌滄�ュ仠鎸変笅=2,
+ 褰撳墠搴撳彛杈撻�佺嚎鐨勫叆鍙d繚鎶ゅ厜鐢佃鎸�=3,
+ 鐩稿簭淇濇姢鍣ㄥ紓甯�=4,
+ 鍥涘彿鎴栦簲鍙峰畨鍏ㄩ棬琚墦寮�=5,
+ 澶囩敤1=6,
+ 澶囩敤2=7,
+ 涓婁綅鏈轰笅鍙戞�ュ仠鍛戒护=8,
+
+ 琛岃蛋鍓嶈繘鏂瑰悜琛岀▼寮�鍏宠Е鍙�=17,
+ 澶囩敤3=18,
+ 琛岃蛋鐢垫満椹繚寮傚父=19,
+ 琛岃蛋鍙橀鍣ㄦ晠闅�=20,
+ 琛岃蛋璁惧畾浣嶇疆鍊间笉鍦ㄦ甯歌寖鍥村唴=21,
+ 琛岃蛋瀹為檯浣嶇疆鍊间笉鍦ㄦ甯歌寖鍥村唴=22,
+ 琛岃蛋鍋滃噯澶辫触=23,
+ 琛岃蛋鏉$爜娴嬭窛璁惧鎶ヨ=24,
+ 琛岃蛋杩愯瓒呮椂=25,
+ 琛岃蛋鎸囦护鎵ц瓒呮椂=26,
+ 琛岃蛋闃叉挒鎶ヨ瑙﹀彂=27,
+ 琛岃蛋鍚庨��鏂瑰悜闅滅鎺㈡祴淇濇姢瑙﹀彂=28,
+
+ 杈撻�佺數鏈洪┈淇濆紓甯�=50,
+ 杈撻�佸彉棰戝櫒鏁呴殰=51,
+ 澶囩敤4=52,
+ 澶囩敤5=53,
+ 杈撻�佽繍琛岃秴鏃�=54,
+
+ 鍙栬揣鍓嶈浇璐у彴鏈夎揣=62,
+ 鍙栬揣瀹屾垚鍚庤揣鐗╀涪澶�=63,
+ 鏀捐揣瀹屾垚鍚庤浇璐у彴杩樻湁璐х墿=64,
+
+ 杞借揣鍙板乏瓒呭=85,
+ 杞借揣鍙板彸瓒呭=86,
+
+ 绾㈠閫氳鏁呴殰=102,
+
+ 浠诲姟鍦板潃閿欒=113,
+ 鐩稿悓浠诲姟鍙峰娆′笅鍙�=114,
+
+ RGV娌℃湁鍏佽鍙栬揣淇″彿=117,
+ RGV娌℃湁鍏佽鏀捐揣淇″彿=118
+ }
+}
diff --git a/qqjf-Background/EnumType/ESrmAlarm.cs b/qqjf-Background/EnumType/ESrmAlarm.cs
new file mode 100644
index 0000000..0b3efa0
--- /dev/null
+++ b/qqjf-Background/EnumType/ESrmAlarm.cs
@@ -0,0 +1,96 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum ESrmAlarm
+ {
+ //20201127 鏉庣繝鍥藉湪鍏徃鏇存柊
+ 鍙栬揣鍫嗗灈鏈烘湁璐� = 101,
+ 鏀捐揣鍫嗗灈鏈烘棤璐� = 102,
+ 琛岃蛋瀹氫綅寮傚父 = 103,
+ 鍗囬檷瀹氫綅寮傚父 = 104,
+ 璐у弶瀹氫綅寮傚父 = 105,
+ 璐у弶缂栫爜鍣ㄦ暟鎹紓甯� = 106,
+ 璐у弶鍘熶綅寮�鍏冲紓甯� = 107,
+ 宸﹀墠瓒呭 = 108,
+ 鍙宠秴楂� = 109,
+ 鍙冲潔濉� = 110,
+ 璧峰弶瓒呮椂 = 111,
+ 钀藉弶瓒呮椂 = 112,
+ 璐у弶鍔涚煩寮傚父 = 113,
+ 琛岃蛋鍗囬檷瀵诲潃鏁版嵁寮傚父 = 114,
+ 璐у弶瀵诲潃鏁版嵁寮傚父 = 115,
+ 璐у弶杩愯瓒呮椂 = 116,
+ 琛岃蛋婵�鍏夋暟鎹紓甯� = 201,
+ 鍗囬檷鏁版嵁寮傚父鎴栨満姊板崱闃� = 202,
+ 璐у弶1鏁版嵁寮傚父鎴栨満姊板崱闃� = 203,
+ 澶圭揣瑁呯疆瑙﹀彂 = 204,
+ 瓒呴�熶繚鎶よЕ鍙� = 206,
+ 琛岃蛋鏋侀檺瑙﹀彂 = 207,
+ 鍗囬檷鏋侀檺瑙﹀彂 = 208,
+ 鏌滈棬鎬ュ仠瑙﹀彂 = 209,
+ 闈炵淮淇ā寮忚皟鏁存湭褰掍綅璇峰綊浣� = 210,
+ 鐩稿簭缁х數鍣ㄨЕ鍙� = 211,
+ 瀹夊叏缁х數鍣ㄥ紓甯� = 212,
+ 璐у弶1缁濆鍊肩紪鐮佸櫒鏁版嵁寮傚父 = 213,
+ 澶栭儴鎬ュ仠瑙﹀彂 = 214,
+ 澶栭儴鎵嬪姩瑙﹀彂 = 215,
+ 琛岃蛋鍙橀鍣ㄦ晠闅� = 301,
+ 琛岃蛋椹揪淇濇姢鍣ㄦ湭姝e父宸ヤ綔 = 302,
+ 琛岃蛋鎶遍椄鏂矾鍣ㄦ湭姝e父宸ヤ綔 = 303,
+ 鍗囬檷鍙橀鍣ㄦ晠闅� = 304,
+ 鍗囬檷椹揪淇濇姢鍣ㄦ湭姝e父宸ヤ綔 = 305,
+ 鍗囬檷鎶遍椄鏂矾鍣ㄦ湭姝e父宸ヤ綔 = 306,
+ 璐у弶1鍙橀鍣ㄦ晠闅� = 307,
+ 璐у弶1杈句繚鎶ゅ櫒鏈甯稿伐浣� = 308,
+ 璐у弶1鎶遍椄鏂矾鍣ㄦ湭姝e父宸ヤ綔 = 309,
+ 璐у弶2鍙橀鍣ㄦ晠闅� = 310,
+ 璐у弶2杈句繚鎶ゅ櫒鏈甯稿伐浣� = 311,
+ 璐у弶2鎶遍椄鏂矾鍣ㄦ湭姝e父宸ヤ綔 = 312,
+ 杩囪浇瑁呯疆瑙﹀彂 = 313,
+ 杞�ュ仠瑙﹀彂 = 314,
+ 浠庣珯鏁呴殰 = 401,
+ //6.1=402,
+ 鍒楀埌浣�, 鏃犲厜鐢靛埌浣嶄俊鍙�403,
+ 灞傚埌浣�, 鏃犲厜鐢靛埌浣嶄俊鍙� = 404,
+ 琛岃蛋鎶遍椄鎺ヨЕ鍣ㄥ紓甯� = 405,
+ 杈撻�佹満閫氳涓柇 = 409,
+ 鍦伴潰鏈洪�氳涓柇 = 410,
+ 绌哄彇寮傚父 = 501,
+ 鍑哄簱璐т綅鍫靛 = 502,
+ 婊″叆寮傚父 = 503,
+ 鍏ュ簱璐т綅闃诲 = 504,
+ 鎵弿浠殰纰嶆娴嬪紓甯� = 505,
+ 婧愪綅缃牎楠岄敊璇� = 506,
+ 鐩爣浣嶇疆鏍¢獙閿欒 = 507,
+ 宸﹀悗瓒呭 = 411,
+ // 宸﹀悗瓒呭 = 413,
+ 鍙冲墠瓒呭 = 412,
+ 宸﹁秴楂� = 415,
+ 宸﹀潔濉� = 414,
+ 鍙栨斁璐х敵璇疯秴鏃� = 315,
+ 鍙栨斁璐х敵璇蜂俊鍙蜂腑鏂� = 316,
+ 绔嬫煴鎬ュ仠瑙﹀彂 = 205,
+ 鐧绘鍙f�ュ仠瑙﹀彂 = 216,
+ 鍗囬檷鎶遍椄鎺ヨЕ鍣ㄥ紓甯� = 406,
+ 璐у弶1鎶遍椄鎺ヨЕ鍣ㄥ紓甯� = 407,
+ 璐у弶2鎶遍椄鎺ヨЕ鍣ㄥ紓甯� = 408,
+ 琛岃蛋鏁版嵁寮傚父鎴栨満姊板崱闃� = 601,
+ //鍗囬檷鏁版嵁寮傚父鎴栨満姊板崱闃� = 602,
+ // 璐у弶1鏁版嵁寮傚父鎴栨満姊板崱闃� = 603,
+ 璐у弶2鏁版嵁寮傚父鎴栨満姊板崱闃� = 604,
+ 鍦伴潰鏌滄�ュ仠瑙﹀彂 = 605,
+ 鎵嬫搷灞忔�ュ仠瑙﹀彂 = 606,
+ 瀹夊叏闂ㄨ鎵撳紑 = 607,
+ 椋庢墖鐏柇璺櫒宸ヤ綔寮傚父 = 608,
+ 瑙︽懜灞忓厜閫氳婵�鍏夋祴璺濈數婧愭柇璺櫒宸ヤ綔寮傚父 = 609,
+ 杞借揣鍙板畨鍏ㄥ洖璺柇璺櫒宸ヤ綔寮傚父 = 610,
+ 鎸夐挳寮�鍏虫柇璺櫒 = 611,
+ // 杞借揣鍙板畨鍏ㄥ洖璺柇璺櫒宸ヤ綔寮傚父 = 612,
+ 鎺у埗瀹ゅ畨鍏ㄩ棬鏈叧闂� = 613
+ }
+}
diff --git a/qqjf-Background/EnumType/ESrmCmd.cs b/qqjf-Background/EnumType/ESrmCmd.cs
new file mode 100644
index 0000000..bab392e
--- /dev/null
+++ b/qqjf-Background/EnumType/ESrmCmd.cs
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum ESrmCmd
+ {
+ 鍙栨斁璐� = 1,
+ 鍗曟斁=2,
+ 绉诲姩 = 3,
+ 鍙栨秷=4
+
+ }
+}
diff --git a/qqjf-Background/EnumType/ESrmState.cs b/qqjf-Background/EnumType/ESrmState.cs
new file mode 100644
index 0000000..c23612a
--- /dev/null
+++ b/qqjf-Background/EnumType/ESrmState.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum ESrmState
+ {
+ 绌洪棽 = 0,
+ 鍙栬揣瀹氫綅涓� = 1,
+ 璇锋眰鍙栬揣 = 2,
+ 鍙栬揣涓� = 3,
+ 鍙栬揣瀹屾垚鏀捐揣瀹氫綅涓� = 4,
+ 璇锋眰鏀捐揣 = 5,
+ 鏀捐揣涓� = 6,
+ 缁翠慨 = 98
+ }
+}
diff --git a/qqjf-Background/EnumType/ETranAlarm.cs b/qqjf-Background/EnumType/ETranAlarm.cs
new file mode 100644
index 0000000..15e320d
--- /dev/null
+++ b/qqjf-Background/EnumType/ETranAlarm.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum ETranAlarm
+ {
+ 鏃犳晠闅� = 0,
+ 杩愯瓒呮椂鎶ヨ = 1,
+ 杈撻�佸彉棰戝櫒鎶ヨ = 2,
+ 椹揪淇濇姢鍣ㄦ姤璀� = 3,
+ 鎬ュ仠鎶ヨ = 4,
+ 宸﹁秴瀹� = 5,
+ 鍙宠秴瀹� = 6,
+ 瓒呴珮 = 7,
+ 瓒呴噸 = 8
+ }
+}
diff --git a/qqjf-Background/EnumType/ETranGoodSize.cs b/qqjf-Background/EnumType/ETranGoodSize.cs
new file mode 100644
index 0000000..da8b23a
--- /dev/null
+++ b/qqjf-Background/EnumType/ETranGoodSize.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum ETranGoodSize
+ {
+ A2910A1310A2355=1,
+ A2910A1310A1270=2,
+ A1850A1310A2355=3,
+ A2700A1310A2430=4,
+ A2720A2000A1305=5,
+ A2720A2000A1155=6,
+ A2800A1400A1255=7,
+ A2400A1400A1255=8
+ }
+}
diff --git a/qqjf-Background/EnumType/EYesOrNo.cs b/qqjf-Background/EnumType/EYesOrNo.cs
new file mode 100644
index 0000000..401b971
--- /dev/null
+++ b/qqjf-Background/EnumType/EYesOrNo.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ public enum EYesOrNo
+ {
+ 鍚� = 0,
+ 鏄� = 1
+ }
+}
diff --git a/qqjf-Background/EnumType/EnumType.csproj b/qqjf-Background/EnumType/EnumType.csproj
new file mode 100644
index 0000000..ecaed7a
--- /dev/null
+++ b/qqjf-Background/EnumType/EnumType.csproj
@@ -0,0 +1,67 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{50C2CCC5-0055-49C2-B2F6-B9CE452BC726}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>EnumType</RootNamespace>
+ <AssemblyName>EnumType</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ <UseVSHostingProcess>true</UseVSHostingProcess>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="EDeviceId.cs" />
+ <Compile Include="ESrgvAlarm.cs" />
+ <Compile Include="ESrmAlarm.cs" />
+ <Compile Include="ESrmCmd.cs" />
+ <Compile Include="ESrmState.cs" />
+ <Compile Include="ETranAlarm.cs" />
+ <Compile Include="ETranGoodSize.cs" />
+ <Compile Include="EYesOrNo.cs" />
+ <Compile Include="InOrderPageTypeEnum.cs" />
+ <Compile Include="InOrderStatusEnum.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="TaskTypeEnum.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/EnumType/InOrderPageTypeEnum.cs b/qqjf-Background/EnumType/InOrderPageTypeEnum.cs
new file mode 100644
index 0000000..134c75f
--- /dev/null
+++ b/qqjf-Background/EnumType/InOrderPageTypeEnum.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ /// <summary>
+ /// 鍐插帇鐢熶骇璁″垝 椤甸潰绫诲瀷
+ /// </summary>
+ public enum InOrderPageTypeEnum
+ {
+ 鍐插帇鐢熶骇璁″垝椤甸潰 = 0,
+ 瀹屽伐鍝佽緭鍏ラ〉闈� = 1,
+ 鐒婅纭椤甸潰 = 2
+ }
+}
diff --git a/qqjf-Background/EnumType/InOrderStatusEnum.cs b/qqjf-Background/EnumType/InOrderStatusEnum.cs
new file mode 100644
index 0000000..6349a16
--- /dev/null
+++ b/qqjf-Background/EnumType/InOrderStatusEnum.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ /// <summary>
+ /// 鍐插帇鐢熶骇璁″垝琛ㄥ崟鐘舵��
+ /// </summary>
+ public enum InOrderStatusEnum
+ {
+ 鏂板缓 = 0,
+ 鐒婅瀹℃牳涓� = 1,
+ //鐒婃帴宸ユ闀垮鏍镐腑 = 2,
+ 椹冲洖 = 3,
+ 瀹屽伐 = 4
+ }
+}
diff --git a/qqjf-Background/EnumType/Properties/AssemblyInfo.cs b/qqjf-Background/EnumType/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..c740eec
--- /dev/null
+++ b/qqjf-Background/EnumType/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅閫氳繃浠ヤ笅
+// 鐗规�ч泦鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("EnumType")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("EnumType")]
+[assembly: AssemblyCopyright("Copyright 漏 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浣挎绋嬪簭闆嗕腑鐨勭被鍨�
+// 瀵� COM 缁勪欢涓嶅彲瑙併�� 濡傛灉闇�瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷锛�
+// 鍒欏皢璇ョ被鍨嬩笂鐨� ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("7714df65-f73b-4cf0-90bb-9acb2dc37fc5")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅闈㈠洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/EnumType/TaskTypeEnum.cs b/qqjf-Background/EnumType/TaskTypeEnum.cs
new file mode 100644
index 0000000..ec172bd
--- /dev/null
+++ b/qqjf-Background/EnumType/TaskTypeEnum.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EnumType
+{
+ /// <summary>
+ /// 浠诲姟琛ㄧ殑TaskType鏋氫妇 [EditBy shaocx,2022-11-09]
+ /// </summary>
+ public enum TaskTypeEnum
+ {
+ 鍏ュ簱 = 1,
+ 鍑哄簱 = 2,
+ 绉诲簱 = 3
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Alert/ALERT/AlertSqlFunc.cs b/qqjf-Background/IWareDataAccess/Alert/ALERT/AlertSqlFunc.cs
new file mode 100644
index 0000000..f18cd3e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Alert/ALERT/AlertSqlFunc.cs
@@ -0,0 +1,370 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Alert;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Alert.ALERT
+{
+ public static class AlertSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<ALERT_ALERT> Search(AlertWebEntity webEntity, int page, int onePageNum)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<ALERT_ALERT>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.CREATETIME > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.CREATETIME < value);
+ }
+
+ if (i.Name == "finishTimeStart")
+ {
+ f = f.And(x => x.FINISHTIME > value);
+ }
+ if (i.Name == "finishTimeEnd")
+ {
+ f = f.And(x => x.FINISHTIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<ALERT_ALERT> list = edm.ALERT_ALERT.OrderByDescending(x=>x.CREATETIME).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储(瑙嗗浘)
+ /// </summary>
+ public static List<View_ALERT_ALERT> SearchView(AlertWebEntity webEntity, int page, int onePageNum,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ALERT_ALERT>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+
+ if (i.Name == "finishTimeStart")
+ {
+ f = f.And(x => x.finishTime > value);
+ }
+ if (i.Name == "finishTimeEnd")
+ {
+ f = f.And(x => x.finishTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_ALERT_ALERT> list = edm.View_ALERT_ALERT.OrderByDescending(x=>x.createTime).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鏁伴噺(瑙嗗浘)
+ /// </summary>
+ public static int SearchViewNum(AlertWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ALERT_ALERT>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+
+ if (i.Name == "finishTimeStart")
+ {
+ f = f.And(x => x.finishTime > value);
+ }
+ if (i.Name == "finishTimeEnd")
+ {
+ f = f.And(x => x.finishTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_ALERT_ALERT.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞淇敼
+ /// </summary>
+ /// <returns></returns>
+ public static bool AddOrUpdate(AlertWebEntity webAlert, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鏁呴殰
+ ALERT_ALERT alert = edm.ALERT_ALERT.FirstOrDefault(x => x.ALERTCODE == webAlert.alertCode);
+ if (alert == null)
+ {
+ //鏃犳鏁呴殰锛屽睘浜庢柊寤�
+ alert = new ALERT_ALERT();
+ alert.CREATETIME = DateTime.Now;
+ alert.ALERTCODE = webAlert.alertCode ?? alert.ALERTCODE;
+ }
+ else
+ {
+ alert.FINISHTIME = DateTime.Now;
+
+ System.TimeSpan time = alert.FINISHTIME.Value - alert.CREATETIME.Value; //涓や釜鏃堕棿鐩稿噺 銆傞粯璁ゅ緱鍒扮殑鏄� 涓や釜鏃堕棿涔嬮棿鐨勫ぉ鏁� 寰楀埌锛�365.00:00:00
+ double getMinutes = time.TotalMinutes; //灏嗚繖涓ぉ鏁拌浆鎹㈡垚灏忔椂, 杩斿洖鍊兼槸double绫诲瀷鐨�
+ alert.TOTALTIME = (int)getMinutes;
+ }
+ alert.ALERTNAME = webAlert.alertName?? alert.ALERTNAME;
+ alert.ALERTDES = webAlert.alertDes ?? alert.ALERTDES;
+ //缁戝畾璁惧
+ BASE_DEVICE device = edm.BASE_DEVICE.FirstOrDefault(x => x.DEVICENAME == webAlert.deviceName);
+ if (device != null)
+ {
+ alert.BASE_DEVICE = device;
+ }
+
+ edm.ALERT_ALERT.AddOrUpdateExtension(alert);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇敼澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webUser"></param>
+ /// <returns></returns>
+ public static bool Delete(AlertWebEntity webUser, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鐢ㄦ埛
+ ALERT_ALERT alert = edm.ALERT_ALERT.FirstOrDefault(x => x.ALERTCODE == webUser.alertCode);
+ if (alert == null)
+ {
+ //鏃犳鐢ㄦ埛锛岄敊璇�
+ msg = "鏃犳鏁呴殰";
+ return false;
+ }
+ else
+ {
+ edm.ALERT_ALERT.Remove(alert);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇缁勭洏鍙�
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCode()
+ {
+ using (Model edm = new Model())
+ {
+ string month = DateTime.Now.Month.ToString("00");
+ string day = DateTime.Now.Day.ToString("00");
+ string hour = DateTime.Now.Hour.ToString("00");
+ string minute = DateTime.Now.Minute.ToString("00");
+ string second = DateTime.Now.Second.ToString("00");
+ string millSecond = DateTime.Now.Millisecond.ToString("0000");
+ string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond;
+ return "AL" + time;
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夎澶囨姤璀︿俊鎭�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ public static List<View_ALERT_ALERT> GetAllAlarmInfo(AlertWebEntity model)
+ {
+
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ALERT_ALERT>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = model.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(model, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+
+ if (i.Name == "finishTimeStart")
+ {
+ f = f.And(x => x.finishTime > value);
+ }
+ if (i.Name == "finishTimeEnd")
+ {
+ f = f.And(x => x.finishTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_ALERT_ALERT> list = edm.View_ALERT_ALERT.OrderByDescending(x => x.createTime).Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/App.config b/qqjf-Background/IWareDataAccess/App.config
new file mode 100644
index 0000000..8924bd3
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/App.config
@@ -0,0 +1,30 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <configSections>
+ <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </configSections>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+ </startup>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
+ <parameters>
+ <parameter value="mssqllocaldb" />
+ </parameters>
+ </defaultConnectionFactory>
+ <providers>
+ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+ </providers>
+ </entityFramework>
+ <connectionStrings>
+ <!--<add name="Model1" connectionString="data source=120.53.244.200;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
+<!--<add name="Model1" connectionString="data source=120.53.244.200;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=10.103.9.200;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+
+ <!--<add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123456;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!-- <add name="Model1" connectionString="data source=LAPTOP-9337IBI9\MSSQLSERVER2017;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ </connectionStrings>
+</configuration>
\ No newline at end of file
diff --git a/qqjf-Background/IWareDataAccess/Base/CONTAINER/ContainerSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/CONTAINER/ContainerSqlFunc.cs
new file mode 100644
index 0000000..7eb2f6d
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/CONTAINER/ContainerSqlFunc.cs
@@ -0,0 +1,340 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Entity.Summary;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.CONTAINER
+{
+ public static class ContainerSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_CONTAINER> Search(ContainerWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_CONTAINER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<BASE_CONTAINER> list = edm.BASE_CONTAINER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_CONTAINER> SearchView(ContainerWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_CONTAINER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_CONTAINER> list = edm.View_BASE_CONTAINER.OrderByDescending(x=>x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_CONTAINER> SearchAllView(ContainerWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_CONTAINER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_CONTAINER> list = edm.View_BASE_CONTAINER.OrderByDescending(x => x.id).Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(ContainerWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_CONTAINER>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_BASE_CONTAINER.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+
+ /// <summary>
+ /// 娣诲姞淇敼鎵樼洏
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(ContainerWebEntity webEntity,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鎵樼洏
+ BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName);
+ if (container == null)
+ {
+ //鏃犳搴撲綅锛屽睘浜庢柊寤�
+ container = new BASE_CONTAINER();
+ }
+ else
+ {
+ msg = "璇ュ櫒鍏风紪鍙峰凡瀛樺湪锛�";
+ }
+ container.CONTAINERNAME = webEntity.containerName ?? container.CONTAINERNAME;
+ BASE_PALLET pallet = edm.BASE_PALLET.FirstOrDefault(x => x.PALLETCODE == webEntity.palletCode);
+ if (pallet != null)
+ {
+ container.PALLETTYPEID = pallet.ID;
+ //鍒ゆ柇灏哄鏄惁鍚堟牸
+ if (pallet.LENGTHMAX != null && webEntity.length != null && pallet.LENGTHMAX < webEntity.length)
+ {
+ msg = "瓒呴暱";
+ return false;
+ }
+ if (pallet.LENGTHMIN != null && webEntity.length != null && pallet.LENGTHMIN > webEntity.length)
+ {
+ msg = "瓒呯煭";
+ return false;
+ }
+ if (pallet.WIDTHMAX != null && webEntity.width != null && pallet.WIDTHMAX < webEntity.width)
+ {
+ msg = "瓒呭";
+ return false;
+ }
+ if (pallet.WIDTHMIN != null && webEntity.width != null && pallet.WIDTHMIN > webEntity.width)
+ {
+ msg = "瓒呯獎";
+ return false;
+ }
+ if (pallet.HEIGHTMAX != null && webEntity.height != null && pallet.HEIGHTMAX < webEntity.height)
+ {
+ msg = "瓒呴珮";
+ return false;
+ }
+ if (pallet.HEIGHTMIN != null && webEntity.height != null && pallet.HEIGHTMIN > webEntity.height)
+ {
+ msg = "瓒呬綆";
+ return false;
+ }
+ }
+ container.CONTAINERTYPE= webEntity.containerType ??container.CONTAINERTYPE;
+ container.STATUS = webEntity.status ?? container.STATUS;
+ container.WEIGHT = webEntity.weight ?? container.WEIGHT;
+ container.LENGTH = webEntity.length ?? container.LENGTH;
+ container.HEIGHT = webEntity.height ?? container.HEIGHT;
+ container.WIDTH = webEntity.width ?? container.WIDTH;
+ container.WEIGHTDIFFERENCE = webEntity.weightDifference ?? container.WEIGHTDIFFERENCE;
+ container.ENABLE = webEntity.enable ?? container.ENABLE;
+ container.CONTAINERDES = webEntity.containerDes ?? container.CONTAINERTYPE;
+ container.ISLOCK = webEntity.isLock ?? container.ISLOCK;
+
+ edm.BASE_CONTAINER.AddOrUpdateExtension(container);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鎵樼洏
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(ContainerWebEntity webDevice,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鏉冮檺
+ BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webDevice.containerName);
+ if (container == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳鎵樼洏";
+ return false;
+ }
+ else
+ {
+ return DeleteContainerRelevance(container,out msg);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍏宠仈鍒犻櫎
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ public static bool DeleteContainerRelevance(BASE_CONTAINER container,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鍥犲凡閲婃斁杩炴帴锛屾晠閲嶆柊鎸囧悜鏁版嵁搴撳璞¤繘琛岀储寮�
+ BASE_CONTAINER containerDelete = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == container.CONTAINERNAME);
+ ////鍒犻櫎瑙掕壊鍏崇郴
+ //edm.SYS_USER_VS_ROLE.RemoveRange(roleDelete.SYS_USER_VS_ROLE);
+ //edm.SYS_ROLE_VS_PERMISSION.RemoveRange(roleDelete.SYS_ROLE_VS_PERMISSION);
+ //鍒犻櫎瑙掕壊
+ //edm.SYS_ROLE.Remove(roleDelete);
+ containerDelete.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ public static List<HomeNumDataEntity> GetContainerType(out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+ List<HomeNumDataEntity> hnlst = new List<HomeNumDataEntity>();
+ var containerlst = edm.BASE_CONTAINER.Where(x => x.ENABLE == 1).ToList();
+ List<string> lst = containerlst.Select(x => x.CONTAINERTYPE).Distinct().ToList();
+ int i=1;
+ lst.ForEach(x =>
+ {
+ hnlst.Add(new HomeNumDataEntity { titel = x, no = i });
+ i++;
+ });
+ return hnlst;
+ }
+ }
+ catch (Exception)
+ {
+
+ return null;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/CONTAINERVSITEM/ContainerVsItemSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/CONTAINERVSITEM/ContainerVsItemSqlFunc.cs
new file mode 100644
index 0000000..74c8cd2
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/CONTAINERVSITEM/ContainerVsItemSqlFunc.cs
@@ -0,0 +1,1023 @@
+锘縰sing BarTender;
+using EnumType;
+using iWareCommon.Utils;
+using IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using Models.Input;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.CONTAINERVSITEM
+{
+ public static class ContainerVsItemSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_CONTAINER_VS_ITEM> Search(ContainerVsItemWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_CONTAINER_VS_ITEM>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<BASE_CONTAINER_VS_ITEM> list = edm.BASE_CONTAINER_VS_ITEM.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_CONTAINER_VS_ITEM> SearchView(Expression<Func<View_BASE_CONTAINER_VS_ITEM, bool>> f, ContainerVsItemWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //var f = PredicateBuilder.True<View_BASE_CONTAINER_VS_ITEM>();
+ ////渚垮埄鎵�鏈夊睘鎬�
+ //Type type = webEntity.GetType();
+ //foreach (var i in type.GetProperties())
+ //{
+ // object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ // if (i.PropertyType == typeof(String))
+ // {
+ // string value;
+ // if (v != null)
+ // {
+ // value = v.ToString();
+ // f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ // }
+ // }
+ // else if (i.PropertyType == typeof(DateTime?))
+ // {
+ // if (v != null)
+ // {
+ // DateTime value = DateTime.Parse(v.ToString());
+ // if (i.Name == "updateTimeStart")
+ // {
+ // f = f.And(x => x.updateTime > value);
+ // }
+ // if (i.Name == "updateTimeEnd")
+ // {
+ // f = f.And(x => x.updateTime < value);
+ // }
+ // }
+ // }
+ // else
+ // {
+ // if (v != null)
+ // {
+ // f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ // }
+ // }
+ //}
+
+
+
+ List<View_BASE_CONTAINER_VS_ITEM> list = edm.View_BASE_CONTAINER_VS_ITEM.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(Expression<Func<View_BASE_CONTAINER_VS_ITEM, bool>> f, ContainerVsItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //var f = PredicateBuilder.True<View_BASE_CONTAINER_VS_ITEM>();
+ ////渚垮埄鎵�鏈夊睘鎬�
+ //Type type = webEntity.GetType();
+ //foreach (var i in type.GetProperties())
+ //{
+ // object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ // if (i.PropertyType == typeof(String))
+ // {
+ // string value;
+ // if (v != null)
+ // {
+ // value = v.ToString();
+ // f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ // }
+ // }
+ // else if (i.PropertyType == typeof(DateTime?))
+ // {
+ // if (v != null)
+ // {
+ // DateTime value = DateTime.Parse(v.ToString());
+ // if (i.Name == "updateTimeStart")
+ // {
+ // f = f.And(x => x.updateTime > value);
+ // }
+ // if (i.Name == "updateTimeEnd")
+ // {
+ // f = f.And(x => x.updateTime < value);
+ // }
+ // }
+ // }
+ // else
+ // {
+ // if (v != null)
+ // {
+ // f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ // }
+ // }
+ //}
+
+ int num = edm.View_BASE_CONTAINER_VS_ITEM.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞缁勭洏(鍗曠嫭)
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(ContainerVsItemWebEntity webEntity, out string msg)
+ {
+ WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.itemName, "璋冪敤鏇存柊鍗曚釜");
+ //鏆傛椂璁板綍璇锋眰
+ WZ.Useful.Commons.LogTextHelper.WriteLine("", JsonConvert.SerializeObject(webEntity), "娣诲姞缁勭洏(鍗曠嫭)");
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ BASE_CONTAINER_VS_ITEM cvi = new BASE_CONTAINER_VS_ITEM();
+ //鍘婚噸
+ cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.BASE_ITEM.ITEMNAME == webEntity.itemName && x.BASE_CONTAINER.CONTAINERNAME == webEntity.containerName);
+ if (cvi != null)
+ {
+ msg = "姝ょ粍鐩樹俊鎭凡瀛樺湪";
+ return false;
+ }
+
+ cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.ID == (webEntity.id ?? 0));
+ if (cvi != null)
+ {
+ //msg = "姝ょ粍鐩樼紪鍙峰凡瀛樺湪";
+ //return false;
+ }
+ else
+ {
+ cvi = new BASE_CONTAINER_VS_ITEM();
+ }
+ BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName);
+ if (container == null)
+ {
+ msg = "鏃犳鎵樼洏";
+ return false;
+ }
+
+ #region 澧炲姞瀵规鎵樼洏鐨勫簱瀛樺叧绯婚獙璇侊紝濡傛灉杩欎釜鎵樼洏姝ゆ椂鍦ㄧ珛浣撳簱涓紝鎴栬�呮槸鏈変换鍔¤鍗犵敤锛屽氨绂佹淇敼缁勭洏 銆怑ditby shaocx,2023-01-10銆�
+ int num = edm.TASK_TASK.Where(x => x.CONTAINERID == container.ID && x.HASFINISHED == 0 && x.TASKSTATUS != "浠诲姟鍒犻櫎").Count();
+ if (num > 0)
+ {
+ msg = "姝ゆ墭鐩�" + container.CONTAINERNAME + "鏈変换鍔¤鍗犵敤锛屼笉鍏佽淇敼缁勭洏淇℃伅!";
+ return false;
+ }
+ var pvc = edm.BASE_PLACE_VS_CONTAINER.Where(x => x.CONTAINERID == container.ID).FirstOrDefault();
+ if (pvc != null)
+ {
+ var place = edm.BASE_PLACE.Where(x => x.ID == pvc.PLACEID).FirstOrDefault();
+ msg = "姝ゆ墭鐩�" + container.CONTAINERNAME + "宸茬粡琚簱浣�" + place.PLACE + "鍗犵敤锛屼笉鍏佽淇敼缁勭洏淇℃伅!";
+ return false;
+ }
+
+ #endregion
+
+ cvi.BASE_CONTAINER = container;
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName);
+ if (item == null)
+ {
+ msg = "鏃犳闆朵欢";
+ return false;
+ }
+ if (!item.USECONTAINERTYPE.Split(',').Contains(container.CONTAINERTYPE))//澧炲姞闆朵欢涓庡櫒鍏锋槸鍚﹀彲浠ョ粦瀹氭牎楠岋紝[Editby kejj,20230624]
+ {
+ msg = "闆朵欢涓庡櫒鍏蜂笉鍖归厤";
+ return false;
+ }
+
+ //澧炲姞鏈�澶у簱瀹规嫤鎴�
+ var count = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.ITEMID == item.ID).Sum(u => u.ITEMNUM);
+ if (item.MAXSTORAGE < (count ?? 0) + webEntity.itemNum)
+ {
+ msg = "缁勭洏鏁伴噺瓒呰繃鏈�澶у簱瀹�";
+ return false;
+ }
+
+ int usreid = 1;
+ var user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.createUser);
+ if (user != null)
+ {
+ usreid = user.ID;
+ }
+ if (!string.IsNullOrEmpty(webEntity.image))
+ {
+ item.IMAGE = webEntity.image;
+ }
+ cvi.BASE_ITEM = item;
+ cvi.CreateTime = cvi.UPDATETIME = DateTime.Now;
+ cvi.OperationRemark = "ContainerVsItemSqlFunc AddOrUpdate[娣诲姞缁勭洏]鏃�";
+ cvi.ITEMNUM = webEntity.itemNum ?? cvi.ITEMNUM;
+ cvi.ISBAD = webEntity.isBad ?? cvi.ISBAD;
+
+ if (!string.IsNullOrEmpty(webEntity.inOrderCode))
+ {
+ ORDER_INORDER inOrder = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode);
+ if (inOrder == null)
+ {
+ msg = "鏃犳鍏ュ簱璁″垝";
+ return false;
+ }
+ cvi.ORDER_INORDER = inOrder;
+ //鏇存柊鏁伴噺
+ inOrder.DONENUM = inOrder.DONENUM + cvi.ITEMNUM;
+ }
+ if (!string.IsNullOrEmpty(webEntity.outOrderCode))
+ {
+ ORDER_OUTORDER outOrder = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode);
+ if (outOrder == null)
+ {
+ msg = "鏃犳鍏ュ簱璁″垝";
+ return false;
+ }
+ cvi.ORDER_OUTORDER = outOrder;
+ }
+ cvi.ENABLE = webEntity.enable ?? cvi.ENABLE;
+ cvi.BADBYFACTORY = webEntity.badByFactory ?? cvi.BADBYFACTORY;
+
+ if (!string.IsNullOrEmpty(webEntity.inType))
+ {
+ if (!string.IsNullOrEmpty(webEntity.inType))
+ {
+ BASE_INTYPE inType = edm.BASE_INTYPE.FirstOrDefault(x => x.INTYPE == webEntity.inType);
+ if (inType == null)
+ {
+ msg = "鏃犳鍏ュ簱绫诲瀷";
+ return false;
+ }
+ cvi.BASE_INTYPE = inType;
+ }
+ }
+ cvi.GETWEIGHT = webEntity.getWeight ?? cvi.GETWEIGHT;
+
+ //鎬婚噸閲�
+ cvi.TOTALWEIGHT = (cvi.ITEMNUM ?? 0) * (item.WEIGHT ?? 0);
+
+ var oldCviCode = cvi.CVICODE;
+
+ cvi.CVICODE = webEntity.cviCode ?? cvi.CVICODE;
+ cvi.CREATEUSERID = cvi.UpdateUserId = usreid;
+
+ //璁$畻 銆怑ditBy shaocx,2022-11-08銆�
+ Helper.Helper.CalcInOrderNumPub(oldCviCode, edm, cvi);
+
+ edm.BASE_CONTAINER_VS_ITEM.AddOrUpdateExtension(cvi);
+ if (edm.SaveChanges() > 0)
+ {
+ WZ.Useful.Commons.LogTextHelper.WriteLine("缁勭洏", "娣诲姞", "鍣ㄥ叿锛�" + cvi.BASE_CONTAINER.CONTAINERNAME + "闆朵欢锛�" + cvi.BASE_ITEM.ITEMNAME + "鐢ㄦ埛锛�" + webEntity.createUser);
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 娣诲姞缁勭洏(缇や綋)
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdateAll(ContainerVsItemListWebEntity webEntity, out string msg)
+ {
+ WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "璋冪敤鏇存柊鍏ㄩ儴");
+ msg = "";
+ //鍒犻櫎鍘熸暟鎹�
+ ContainerVsItemWebEntity cviDelete = new ContainerVsItemWebEntity();
+ if (string.IsNullOrEmpty(webEntity.containerName))
+ {
+ msg = "杈撳叆鍣ㄥ叿鍙�";
+ WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "澶辫触" + msg);
+ return false;
+ }
+ cviDelete.containerName = webEntity.containerName;
+
+
+ if (DeleteAll(cviDelete, out msg))
+ {
+ WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "鍒犻櫎鎴愬姛");
+ }
+ else
+ {
+ if (!string.IsNullOrEmpty(msg))
+ {
+ WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "澶辫触" + msg);
+ return false;
+ }
+ }
+ //鍘婚噸
+ List<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(webEntity.itemList);
+ var group = itemEntity.GroupBy(x => x.itemName);
+ foreach (var i in group)
+ {
+ if (i.Count() > 1)
+ {
+ msg = "瀛樺湪閲嶅闆朵欢";
+ return false;
+ }
+ }
+
+ if (itemEntity.Count != 0)
+ {
+ foreach (var i in itemEntity)
+ {
+ ContainerVsItemWebEntity cvi = new ContainerVsItemWebEntity();
+ cvi.itemName = i.itemName;
+ cvi.itemNum = i.itemNum;
+ cvi.inOrderCode = i.inOrderCode;
+ cvi.containerName = webEntity.containerName;
+ cvi.isBad = webEntity.isBad;
+ cvi.badByFactory = webEntity.badByFactory;
+ cvi.inType = webEntity.inType;
+ cvi.cviCode = webEntity.cviCode;
+ cvi.image = i.image;
+ cvi.createUser = webEntity.createUser;
+
+ if (AddOrUpdate(cvi, out msg) == false)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ else
+ {
+ msg = "绌哄櫒鍏�";
+ return true;
+ }
+
+ }
+
+
+ /// <summary>
+ /// 淇敼缁勭洏
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool Update(ContainerVsItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ BASE_CONTAINER_VS_ITEM cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.ID == webEntity.id);
+ if (cvi == null)
+ {
+ msg = "姝ょ粍鐩樺叧绯讳笉瀛樺湪";
+ return false;
+ }
+
+
+
+ //cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.CVICODE == webEntity.cviCode);
+ //if (cvi == null)
+ //{
+ // msg = "姝ょ粍鐩樺叧绯讳笉瀛樺湪";
+ // return false;
+ //}
+ BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName);
+ if (container == null)
+ {
+ msg = "鏃犳鎵樼洏";
+ return false;
+ }
+
+ #region 澧炲姞瀵规鎵樼洏鐨勫簱瀛樺叧绯婚獙璇侊紝濡傛灉杩欎釜鎵樼洏姝ゆ椂鍦ㄧ珛浣撳簱涓紝鎴栬�呮槸鏈変换鍔¤鍗犵敤锛屽氨绂佹淇敼缁勭洏 銆怑ditby shaocx,2023-01-10銆�
+ int num = edm.TASK_TASK.Where(x => x.CONTAINERID == cvi.CONTAINERID && x.HASFINISHED == 0 && x.TASKSTATUS != "浠诲姟鍒犻櫎").Count();
+ if (num > 0)
+ {
+ msg = "姝ゆ墭鐩�" + container.CONTAINERNAME + "鏈変换鍔¤鍗犵敤锛屼笉鍏佽淇敼缁勭洏淇℃伅!";
+ return false;
+ }
+ var pvc = edm.BASE_PLACE_VS_CONTAINER.Where(x => x.CONTAINERID == cvi.CONTAINERID).FirstOrDefault();
+ if (pvc != null)
+ {
+ var place = edm.BASE_PLACE.Where(x => x.ID == pvc.PLACEID).FirstOrDefault();
+ msg = "姝ゆ墭鐩�" + container.CONTAINERNAME + "宸茬粡琚簱浣�" + place.PLACE + "鍗犵敤锛屼笉鍏佽淇敼缁勭洏淇℃伅!";
+ return false;
+ }
+
+ #endregion
+
+ cvi.BASE_CONTAINER = container;
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName);
+ if (item == null)
+ {
+ msg = "鏃犳闆朵欢";
+ return false;
+ }
+ item.IMAGE = string.IsNullOrEmpty(webEntity.image) ? "" : item.IMAGE;
+ cvi.BASE_ITEM = item;
+ cvi.UPDATETIME = DateTime.Now;
+ cvi.OperationRemark = "ContainerVsItemSqlFunc Update[淇敼缁勭洏]鏃�";
+
+ int usreid = 0;
+ var user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.createUser);
+ if (user != null)
+ {
+ usreid = user.ID;
+ }
+ cvi.UpdateUserId = usreid;
+
+ cvi.ITEMNUM = webEntity.itemNum;
+ cvi.ISBAD = webEntity.isBad;
+ if (!string.IsNullOrEmpty(webEntity.inOrderCode))
+ {
+ ORDER_INORDER inOrder = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode);
+ if (inOrder == null)
+ {
+ msg = "鏃犳鍏ュ簱璁″垝";
+ return false;
+ }
+ cvi.ORDER_INORDER = inOrder;
+ }
+ if (!string.IsNullOrEmpty(webEntity.outOrderCode))
+ {
+ ORDER_OUTORDER outOrder = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode);
+ if (outOrder == null)
+ {
+ msg = "鏃犳鍏ュ簱璁″垝";
+ return false;
+ }
+ cvi.ORDER_OUTORDER = outOrder;
+ }
+ cvi.ENABLE = webEntity.enable;
+ cvi.BADBYFACTORY = webEntity.badByFactory;
+ if (!string.IsNullOrEmpty(webEntity.inType))
+ {
+ BASE_INTYPE inType = edm.BASE_INTYPE.FirstOrDefault(x => x.INTYPE == webEntity.inType);
+ if (inType == null)
+ {
+ msg = "鏃犳鍏ュ簱绫诲瀷";
+ return false;
+ }
+ cvi.BASE_INTYPE = inType;
+ }
+ cvi.GETWEIGHT = webEntity.getWeight;
+ //鎬婚噸閲�
+ cvi.TOTALWEIGHT = (cvi.ITEMNUM ?? 0) * (item.WEIGHT ?? 0);
+
+ var oldCviCode = cvi.CVICODE;
+
+ cvi.CVICODE = webEntity.cviCode;
+ edm.BASE_CONTAINER_VS_ITEM.AddOrUpdateExtension(cvi);
+
+ //璁$畻 銆怑ditBy shaocx,2022-11-08銆�
+ Helper.Helper.CalcInOrderNumPub(oldCviCode, edm, cvi);
+
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 淇敼 鍐插帇鐢熶骇璁″垝璺熺粍鐩樺叆搴撶殑鍏宠仈鍏崇郴
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool BindCviCode(UpdateCviCodeInput input, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //閲嶆柊璁$畻璁㈠崟琛ㄧ殑鏁伴噺
+ var order = edm.ORDER_INORDER.Where(x => x.INORDERCODE == input.cviCode).FirstOrDefault();
+ if (order == null)
+ {
+ msg = "鏍规嵁璁″垝鍗曞彿'" + input.cviCode + "'娌℃湁鎵惧埌璁″垝";
+ return false;
+ }
+ if (order.OrderStatusId != (int)InOrderStatusEnum.鏂板缓)
+ {
+ msg = "璁″垝鍗曞彿'" + input.cviCode + "'褰撳墠鐘舵�佹槸'" + order.ORDERSTATUS + "'锛屽彧鏈夌姸鎬佹槸'鏂板缓'鏃舵墠鑳藉叧鑱旓紒";
+ return false;
+ }
+
+ int doneNum = 0;
+ //鐜版湁鐨勫叧鑱斿叧绯�
+ List<BASE_CONTAINER_VS_ITEM> curCviList = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.CVICODE == input.cviCode).ToList();
+ if (input.cviIds == null || input.cviIds.Count == 0)
+ {
+ //琛ㄧず鍏ㄩ儴绉婚櫎鍏崇郴
+ foreach (var item in curCviList)
+ {
+ item.CVICODE = "";
+ }
+ doneNum = 0;
+ }
+ else
+ {
+ List<int> addList = new List<int>();
+ foreach (var cviId in input.cviIds)
+ {
+ if (!curCviList.Exists(x => x.ID == cviId))
+ {
+ addList.Add(cviId);
+ }
+ else
+ {
+ //宸茬粡瀛樺湪浜�
+ doneNum += Convert.ToInt32(curCviList.Find(x => x.ID == cviId).ITEMNUM);
+ }
+ }
+ var updateList = edm.BASE_CONTAINER_VS_ITEM.Where(x => addList.Contains(x.ID)).ToList();
+ foreach (var item in updateList)
+ {
+ item.CVICODE = input.cviCode;
+ doneNum += Convert.ToInt32(item.ITEMNUM);
+ }
+ }
+
+
+
+ order.DONENUM = doneNum;
+ order.AllFinishedNum = (order.DONENUM ?? 0) + (order.UNLINENUM ?? 0);
+
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 鍒犻櫎鍣ㄥ叿涓婃墍鏈変笢瑗�
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool DeleteAll(ContainerVsItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ try
+ {
+ List<BASE_CONTAINER_VS_ITEM> cvi = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.BASE_CONTAINER.CONTAINERNAME == webEntity.containerName).ToList();
+ if (cvi != null && cvi.Count > 0)
+ {
+ int id = (int)cvi[0].CONTAINERID;
+ BASE_PLACE_VS_CONTAINER pvc = edm.BASE_PLACE_VS_CONTAINER.FirstOrDefault(x => x.CONTAINERID == id);
+ TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.CONTAINERID == id && x.HASFINISHED == 0);
+ if (pvc == null && task == null)
+ {
+ edm.BASE_CONTAINER_VS_ITEM.RemoveRange(cvi);
+ if (edm.SaveChanges() > 0)
+ {
+ //璁板綍鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯绘棩蹇� 銆怑ditby shaoc,2023-03-07銆�
+ IWareDataAccess.Helper.Helper.LogRemoveBASE_CONTAINER_VS_ITEM(cvi, "ContainerVsItemSqlFunc.DeleteAll", "鍒犻櫎鍣ㄥ叿涓婃墍鏈変笢瑗�");
+ WZ.Useful.Commons.LogTextHelper.WriteLine("缁勭洏", "鍒犻櫎", "鍣ㄥ叿锛�" + webEntity.containerName + "鐢ㄦ埛锛�" + (webEntity.createUser ?? "鏃�"));
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ else if (pvc != null)
+ {
+ msg = "鍦ㄥ簱閲屼笉鑳戒慨鏀�";
+ return false;
+ }
+ else if (task != null)
+ {
+ msg = "浠诲姟涓笉鑳戒慨鏀�";
+ return false;
+ }
+ else
+ {
+ msg = "鍏跺畠";
+ return false;
+ }
+ }
+ else
+ {
+ msg = "";
+ return true;
+ }
+
+ }
+ catch (Exception ex)
+ {
+ msg = ex.ToString();
+ return false;
+ }
+
+ }
+ }
+
+
+ /// <summary>
+ /// 鍒犻櫎鎸囧畾缁勭洏鍏崇郴
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool DeleteOne(ContainerVsItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ BASE_CONTAINER_VS_ITEM cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.ID == webEntity.id);
+ TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.CONTAINERID == cvi.CONTAINERID && x.HASFINISHED == 0);
+ if (cvi == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳缁勭洏鍏崇郴";
+ return false;
+ }
+ else if (task != null)
+ {
+ msg = "浠诲姟涓笉鑳戒慨鏀�";
+ return false;
+ }
+ else
+ {
+ WZ.Useful.Commons.LogTextHelper.WriteLine("鍒犻櫎鍗曚釜", cvi.BASE_CONTAINER.CONTAINERNAME, cvi.BASE_ITEM.ITEMNAME);
+
+ edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
+ cvi.ENABLE = 0;
+ }
+
+ if (edm.SaveChanges() > 0)
+ {
+ //璁板綍鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯绘棩蹇� 銆怑ditby shaoc,2023-03-07銆�
+ IWareDataAccess.Helper.Helper.LogRemoveBASE_CONTAINER_VS_ITEM(cvi, "ContainerVsItemSqlFunc.DeleteOne", "鍒犻櫎鎸囧畾缁勭洏鍏崇郴");
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇缁勭洏鍙�
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCode()
+ {
+ string month = DateTime.Now.Month.ToString("00");
+ string day = DateTime.Now.Day.ToString("00");
+ string hour = DateTime.Now.Hour.ToString("00");
+ string minute = DateTime.Now.Minute.ToString("00");
+ string second = DateTime.Now.Second.ToString("00");
+ string millSecond = DateTime.Now.Millisecond.ToString("0000");
+ string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond;
+
+ return "CI" + time;
+ }
+
+
+ public static bool PrintContainerVsItem(ContainerVsItemListWebEntity model, out string msg)
+ {
+
+ try
+ {
+ msg = "";
+ List<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(model.itemList);
+ List<string> itemnamelst = new List<string>();
+ itemnamelst = itemEntity.Select(x => x.itemName).ToList();
+ using (Model md = new Model())
+ {
+ string devname = model.printDevName;
+ if (string.IsNullOrEmpty(model.printDevName))
+ {
+ devname = "80mmThermalPrinter";
+ }
+ List<BASE_PRINT> prlsy = new List<BASE_PRINT>();
+ var itemlst = md.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME));
+ if (model.inType.Contains("EU"))
+ {
+ BASE_PRINT pri = new BASE_PRINT();
+ pri.STATE = 0;
+ pri.CREATETIME = DateTime.Now;
+ pri.PRINTDEVNAME = devname;
+ pri.TYPE = 1;
+ pri.ITEMNUM = itemEntity.Sum(x => x.itemNum).ToString();
+ pri.ITEMTYPENUM = itemEntity.Count.ToString();
+ pri.CVIQRCODE = model.cviCode;
+ pri.CVICODE = model.cviCode;
+ pri.ISOK = model.isBad == 1 ? "涓嶅悎鏍�" : "鍚堟牸";
+ prlsy.Add(pri);
+ }
+ else
+ {
+ if (itemEntity != null && itemEntity.Count > 0)
+ {
+ itemEntity.ForEach(x =>
+ {
+ BASE_PRINT pri = new BASE_PRINT();
+ pri.STATE = 0;
+ pri.CREATETIME = DateTime.Now;
+ pri.PRINTDEVNAME = devname;
+ pri.TYPE = 0;
+ pri.NUM = x.itemNum.ToString();
+ pri.ITEMCODE = x.itemName;
+
+ pri.CVIQRCODE = model.cviCode;
+ pri.CVICODE = model.cviCode;
+ pri.ISOK = model.isBad == 1 ? "涓嶅悎鏍�" : "鍚堟牸";
+ var item = itemlst.FirstOrDefault(y => y.ITEMNAME == y.ITEMNAME);
+ pri.ITEMNAME = item.ITEMDES;
+ pri.BACKUP1 = item.CREATELINE;
+ prlsy.Add(pri);
+ });
+ }
+ }
+ md.BASE_PRINT.AddRange(prlsy);
+ if (md.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "鎵撳嵃鍙戦�佸け璐�";
+ return false;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+
+ msg = "鎵撳嵃鍙戦�佸け璐�";
+ return false;
+ }
+ }
+
+ public static string PdaPrint(ContainerVsItemListWebEntity model, string path, out string msg)
+ {
+ string url = "";
+ //Engine btEngine = new Engine();
+
+ try
+ {
+ msg = "";
+ using (Model md = new Model())
+ {
+ //List<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(model.itemList);
+ //List<string> itemnamelst = new List<string>();
+ //itemnamelst = itemEntity.Select(x => x.itemName).ToList();
+ //var itemlst = md.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME));
+ //LabelFormatDocument btFormat;
+ //int type = 0;
+ //BASE_PRINT pri = new BASE_PRINT();
+ //if (model.inType.Contains("EU"))
+ //{
+ // type = 1;
+
+ // pri.STATE = 0;
+ // pri.CREATETIME = DateTime.Now;
+ // pri.TYPE = 1;
+ // pri.ITEMNUM = itemEntity.Sum(x => x.itemNum).ToString();
+ // pri.ITEMTYPENUM = itemEntity.Count.ToString();
+ // pri.CVIQRCODE = model.cviCode;
+ // pri.CVICODE = model.cviCode;
+ // pri.ISOK = model.isBad == 1 ? "涓嶅悎鏍�" : "鍚堟牸";
+ //}
+ //else
+ //{
+ // type = 0;
+
+ // pri.STATE = 0;
+ // pri.CREATETIME = DateTime.Now;
+ // pri.TYPE = 0;
+ // pri.NUM = itemEntity[0].itemNum.ToString();
+ // pri.ITEMCODE = itemEntity[0].itemName;
+ // pri.CVIQRCODE = model.cviCode;
+ // pri.CVICODE = model.cviCode;
+ // pri.ISOK = model.isBad == 1 ? "涓嶅悎鏍�" : "鍚堟牸";
+ // var item = itemlst.FirstOrDefault(y => y.ITEMNAME == y.ITEMNAME);
+ // pri.ITEMNAME = item.ITEMDES;
+ // pri.BACKUP1 = item.CREATELINE;
+ //}
+
+ //btEngine.Start();
+ ////btFormat.PrintSetup.PrinterName = printinfo.PRINTDEVNAME;// "80mmThermalPrinter";//鎵撳嵃鏈哄悕绉�
+ ////btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //鎵撳嵃浠芥暟
+ ////Messages messages;
+ ////int waitout = 1000; // 10绉� 瓒呮椂
+ //if (type == 1)
+ //{
+ // LabelFormatDocument btFormatEu = btEngine.Documents.Open(Path.Combine(@"F:\", "EUPrint.btw"));//杩欓噷鏄疊artender杞欢鐢熸垚鐨勬ā鏉挎枃浠讹紝浣犻渶瑕佸厛鎶婃ā鏉挎枃浠跺仛濂姐��
+ // btFormat = btFormatEu;
+ // btFormat.SubStrings["ItemNum"].Value = pri.ITEMNUM;//涓築artender閲岀殑鏁版嵁婧愶紙鏂囨湰妗嗐�佹潯鐮佺瓑绛夛級浼犲��
+ // btFormat.SubStrings["ItemTypeNum"].Value = pri.ITEMTYPENUM;
+ // btFormat.SubStrings["CVIQRCode"].Value = pri.CVIQRCODE;
+ //}
+ //else
+ //{
+ // LabelFormatDocument btFormatIs = btEngine.Documents.Open(Path.Combine(@"F:\", "IsOkPrint.btw"));//杩欓噷鏄疊artender杞欢鐢熸垚鐨勬ā鏉挎枃浠讹紝浣犻渶瑕佸厛鎶婃ā鏉挎枃浠跺仛濂姐��
+ // btFormat = btFormatIs;
+ // btFormat.SubStrings["Num"].Value = pri.NUM;
+ // btFormat.SubStrings["ItemCode"].Value = pri.ITEMCODE;
+ // btFormat.SubStrings["ItemName"].Value = pri.ITEMNAME;
+ // btFormat.SubStrings["ProductLine"].Value = pri.BACKUP1;
+ //}
+ //btFormat.SubStrings["CVICode"].Value = pri.CVICODE;
+ //btFormat.SubStrings["IsOk"].Value = pri.ISOK; ;
+ //btFormat.SubStrings["CreateTime"].Value = ((DateTime)pri.CREATETIME).ToString("yyyy-MM-dd");
+ //// Result nResult1 = btFormat.Print("鏍囩鎵撳嵃杞欢", waitout, out messages);
+ ////btFormat.PrintSetup.Cache.FlushInterval = CacheFlushInterval.Daily;
+ //Resolution rl = new Resolution(300, 300);
+ //string datetime = Helper.Helper.GetTimeStamp();
+ //string strPath = path + "PrintImg\\" + datetime + ".PNG";//杩欓噷瑕佹敞鎰忕殑鏄厛瑕佸缓绔婩ile鏂囦欢澶癸紝涓嶇劧浼氭姤閿欙紝涔熷彲浠ヨ嚜宸卞啓涓�涓娴嬫枃浠跺す锛岃繖閲屽氨鍏堜笉璧樿堪
+ //url = @"PrintImg\" + datetime + ".PNG";
+ //btFormat.ExportImageToFile(strPath, ImageType.PNG, ColorDepth.Mono, rl, OverwriteOptions.Overwrite);
+ //btFormat.Close(SaveOptions.DoNotSaveChanges);//涓嶄繚瀛樺鎵撳紑妯℃澘鐨勪慨鏀�
+ //btEngine.Stop();
+ return url;
+ }
+ }
+ catch (Exception ex)
+ {
+
+ msg = "鎵撳嵃鍙戦�佸け璐�";
+ return url;
+ }
+ }
+ public static string PdaPrintBtn(ContainerVsItemListWebEntity model, string path, out string msg)
+ {
+ string url = "";
+ try
+ {
+ msg = "";
+ using (Model md = new Model())
+ {
+ List<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(model.itemList);
+ List<string> itemnamelst = new List<string>();
+ itemnamelst = itemEntity.Select(x => x.itemName).ToList();
+ var itemlst = md.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME));
+ int type = 0;
+ string templateUrl = "";
+ BASE_PRINT pri = new BASE_PRINT();
+ if (model.inType.Contains("EU"))
+ {
+ type = 1;
+
+ pri.STATE = 0;
+ pri.CREATETIME = DateTime.Now;
+ pri.TYPE = 1;
+ pri.ITEMNUM = itemEntity.Sum(x => x.itemNum).ToString();
+ pri.ITEMTYPENUM = itemEntity.Count.ToString();
+ pri.CVIQRCODE = model.cviCode;
+ pri.CVICODE = model.cviCode;
+ pri.ISOK = model.isBad == 1 ? "涓嶅悎鏍�" : "鍚堟牸";
+ }
+ else
+ {
+ type = 0;
+
+ pri.STATE = 0;
+ pri.CREATETIME = DateTime.Now;
+ pri.TYPE = 0;
+ pri.NUM = itemEntity[0].itemNum.ToString();
+ pri.ITEMCODE = itemEntity[0].itemName;
+ pri.CVIQRCODE = model.cviCode;
+ pri.CVICODE = model.cviCode;
+ pri.ISOK = model.isBad == 1 ? "涓嶅悎鏍�" : "鍚堟牸";
+ var item = itemlst.FirstOrDefault(y => y.ITEMNAME == y.ITEMNAME);
+ pri.ITEMNAME = item.ITEMDES;
+ pri.BACKUP1 = item.CREATELINE;
+ }
+ var app = new Application();
+ var format = new Format();
+ Dictionary<string, object> data = new Dictionary<string, object>();
+
+ if (type == 1)
+ {
+ templateUrl = Path.Combine(@"D:\", "EUPrint.btw");
+ data.Add("ItemNum", pri.ITEMNUM);
+ data.Add("ItemTypeNum", pri.ITEMTYPENUM);
+ data.Add("CVIQRCode", pri.CVIQRCODE);
+ }
+ else
+ {
+ templateUrl = Path.Combine(@"D:\", "IsOkPrint.btw");
+ data.Add("Num", pri.NUM);
+ data.Add("ItemCode", pri.ITEMCODE);
+ data.Add("ItemName", pri.ITEMNAME);
+ data.Add("ProductLine", pri.BACKUP1);
+ }
+ data.Add("CVICode", pri.CVICODE);
+ data.Add("IsOk", pri.ISOK);
+ data.Add("CreateTime", ((DateTime)pri.CREATETIME).ToString("yyyy-MM-dd"));
+ format = app.Formats.Open(templateUrl, false, "");
+ foreach (var item in data)
+ {
+ format.SetNamedSubStringValue(item.Key, item.Value.ToString());
+ }
+
+ string datetime = Helper.Helper.GetTimeStamp();
+ string strPath = path + "PrintImg\\" + datetime + ".PNG";
+ format.ExportToFile(strPath, "PNG", BarTender.BtColors.btColors24Bit, BarTender.BtResolution.btResolutionPrinter, BarTender.BtSaveOptions.btSaveChanges);
+ format.Close(BarTender.BtSaveOptions.btSaveChanges);
+ app.Quit(BarTender.BtSaveOptions.btSaveChanges);
+ url = @"PrintImg\" + datetime + ".PNG";
+ return url;
+ }
+ }
+ catch (Exception ex)
+ {
+
+ msg = "鎵撳嵃鍙戦�佸け璐�";
+ return ex.ToString();
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/DEVICE/DeviceSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/DEVICE/DeviceSqlFunc.cs
new file mode 100644
index 0000000..219b37f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/DEVICE/DeviceSqlFunc.cs
@@ -0,0 +1,172 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.DEVICE
+{
+ public static class DeviceSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_DEVICE> Search(DeviceWebEntity webEntity, int page,int onePageNum)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_DEVICE>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<BASE_DEVICE> list = edm.BASE_DEVICE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_DEVICE> SearchView(DeviceWebEntity webEntity, int page, int onePageNum)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_DEVICE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_DEVICE> list = edm.View_BASE_DEVICE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(DeviceWebEntity webEntity,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_DEVICE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_BASE_DEVICE.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞淇敼璁惧
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(DeviceWebEntity webDevice,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ璁惧
+ BASE_DEVICE device = edm.BASE_DEVICE.FirstOrDefault(x => x.DEVICENAME == webDevice.deviceName);
+ if (device == null)
+ {
+ //鏃犳搴撲綅锛屽睘浜庢柊寤�
+ device = new BASE_DEVICE();
+ }
+ device.DEVICENAME = webDevice.deviceName ?? device.DEVICENAME;
+ device.DEVICETYPE = webDevice.deviceType ?? device.DEVICETYPE;
+ device.DEVICEID = webDevice.deviceId ?? device.DEVICEID ;
+ device.ISLOCK = webDevice.isLock ?? device.ISLOCK;
+
+ edm.BASE_DEVICE.AddOrUpdateExtension(device);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇敼澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/INTYPE/InTypeFunc.cs b/qqjf-Background/IWareDataAccess/Base/INTYPE/InTypeFunc.cs
new file mode 100644
index 0000000..9c478bd
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/INTYPE/InTypeFunc.cs
@@ -0,0 +1,136 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.INTYPE
+{
+ public static class InTypeFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_INTYPE> Search(InTypeWebEntity webEntity, int page, int onePageNum)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_INTYPE>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<BASE_INTYPE> list = edm.BASE_INTYPE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_INTYPE> SearchView(InTypeWebEntity webEntity, int page, int onePageNum,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_INTYPE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_INTYPE> list = edm.View_BASE_INTYPE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(InTypeWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_INTYPE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_BASE_INTYPE.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/ITEM/ItemSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/ITEM/ItemSqlFunc.cs
new file mode 100644
index 0000000..fc5c282
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/ITEM/ItemSqlFunc.cs
@@ -0,0 +1,576 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.ITEM
+{
+ public static class ItemSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_ITEM> Search(ItemWebEntity webEntity, int page, int onePageNum)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_ITEM>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<BASE_ITEM> list = edm.BASE_ITEM.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_ITEM> SearchView(ItemWebEntity webEntity, int page, int onePageNum)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_ITEM>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_ITEM> list = edm.View_BASE_ITEM.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+ public static List<View_BASE_ITEM> SearchAllView(ItemWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_ITEM>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_ITEM> list = edm.View_BASE_ITEM.OrderByDescending(x => x.id).Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(ItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_ITEM>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_BASE_ITEM.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+
+ /// <summary>
+ /// 娣诲姞淇敼
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(ItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //璁板綍褰撳墠鏄惁寮�鍚秴闄�
+ int storageEnable = SearchStorageEnable(webEntity, out msg) ? 1 : 0;
+
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鎵樼洏
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName);
+ if (item == null)
+ {
+ //鏃犳搴撲綅锛屽睘浜庢柊寤�
+ item = new BASE_ITEM();
+ item.MAXSTORAGE = 0;
+ item.MINSTORAGE = 0;
+ item.OVERDUETIME = 0;
+ }
+
+ item.ITEMNAME = webEntity.itemName ?? item.ITEMNAME;
+ item.ITEMDES = webEntity.itemDes ?? item.ITEMDES;
+ item.ITEMTYPE = webEntity.itemType ?? item.ITEMTYPE;
+ item.WEIGHT = webEntity.weight ?? item.WEIGHT;
+ item.WEIGHTDIFFERENCE = webEntity.weightDifference ?? item.WEIGHTDIFFERENCE;
+ item.IMAGE = webEntity.image ?? item.IMAGE;
+ item.MAXNUM = webEntity.maxNum ?? item.MAXNUM;
+ item.ENABLE = webEntity.enable ?? item.ENABLE;
+ item.CREATELINE = webEntity.createLine ?? item.CREATELINE;
+ item.PRICE = webEntity.price ?? item.PRICE;
+ item.UNIT = webEntity.unit ?? item.UNIT;
+ item.USECONTAINERTYPE = webEntity.useContainerType ?? item.USECONTAINERTYPE;
+ item.MAXSTORAGE = webEntity.maxStorage ?? item.MAXSTORAGE;
+ item.MINSTORAGE = webEntity.minStorage ?? item.MINSTORAGE;
+ item.OVERDUETIME = webEntity.overDueTime ?? item.OVERDUETIME;
+ item.ISLOCK = webEntity.isLock ?? item.ISLOCK;
+ //item.STORAGEENABLE = webEntity.storageEnable ?? item.STORAGEENABLE;
+ item.STORAGEENABLE = storageEnable;
+
+ edm.BASE_ITEM.AddOrUpdateExtension(item);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(ItemWebEntity webDevice, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦�
+ if (!string.IsNullOrEmpty(webDevice.itemName))
+ {
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webDevice.itemName);
+
+ if (item == null)
+ {
+ //鏃犳闆朵欢
+ msg = "鏃犳闆朵欢";
+ return false;
+ }
+ else
+ {
+ return DeleteContainerRelevance(item);
+ }
+ }
+ else
+ {
+
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME ==null|| x.ITEMNAME.Contains(""));
+
+ if (item == null)
+ {
+ //鏃犳闆朵欢
+ msg = "鏃犳闆朵欢";
+ return false;
+ }
+ else
+ {
+ return DeleteContainerRelevance(item);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍏宠仈鍒犻櫎
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ public static bool DeleteContainerRelevance(BASE_ITEM container)
+ {
+ using (Model edm = new Model())
+ {
+ //鍥犲凡閲婃斁杩炴帴锛屾晠閲嶆柊鎸囧悜鏁版嵁搴撳璞¤繘琛岀储寮�
+ BASE_ITEM containerDelete = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == container.ITEMNAME);
+ containerDelete.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+ /// <summary>
+ ///鍗曚环浠ュ強鏈�澶ф渶灏忓簱瀛樺鍏�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <param name="userName"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static bool ImportItemInfo(List<ItemWebEntity> model, string userName, out string msg)
+ {
+
+ using (Model dbModel = new Model())
+ {
+ try
+ {
+ //璁板綍褰撳墠鏄惁寮�鍚秴闄�
+ int storageEnable = SearchStorageEnable(model.FirstOrDefault(), out msg) ? 1 : 0;
+
+ msg = "";
+ List<BASE_ITEM> upitemlst = new List<BASE_ITEM>();
+ List<string> itemnamelst = model.Select(x => x.itemName).ToList();
+ List<BASE_ITEM> itemlst = dbModel.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME)).ToList();
+ model.ForEach(x =>
+ {
+ if (!string.IsNullOrEmpty(x.itemName))
+ {
+ var itemn = itemlst.FirstOrDefault(y => y.ITEMNAME == x.itemName);
+ if (itemn != null)
+ {
+ itemn.PRICE = x.price ?? itemn.PRICE;
+ itemn.OVERDUETIME = x.overDueTime ?? itemn.OVERDUETIME;
+ itemn.MAXSTORAGE = x.maxStorage ?? itemn.MAXSTORAGE;
+ itemn.MINSTORAGE = x.minStorage ?? itemn.MINSTORAGE;
+ itemn.STORAGEENABLE = storageEnable;
+ upitemlst.Add(itemn);
+ }
+ else
+ {
+ BASE_ITEM item = new BASE_ITEM();
+ item.ITEMNAME = x.itemName ?? item.ITEMNAME;
+ item.ITEMDES = x.itemDes ?? item.ITEMDES;
+ item.ITEMTYPE = x.itemType ?? item.ITEMTYPE;
+ item.WEIGHT = x.weight ?? 0;
+ item.WEIGHTDIFFERENCE = x.weightDifference ?? item.WEIGHTDIFFERENCE;
+ item.MAXNUM = x.maxNum ?? 0;
+ item.ENABLE = 1;
+ item.CREATELINE = x.createLine;
+ item.PRICE = x.price ?? 0;
+ item.UNIT = x.unit;
+ item.USECONTAINERTYPE = x.useContainerType;
+ item.MAXSTORAGE = x.maxStorage ?? 0;
+ item.MINSTORAGE = x.minStorage ?? 0;
+ item.OVERDUETIME = x.overDueTime ?? 0;
+ item.STORAGEENABLE = storageEnable;
+ dbModel.BASE_ITEM.Add(item);
+ }
+ }
+
+ });
+ dbModel.SaveChanges();
+ return string.IsNullOrEmpty(msg);
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+
+ return false;
+ }
+ }
+
+
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍣ㄥ叿绫诲瀷鎵惧搴旀墍闇�鍙互瑁呭叆鐨勯浂浠�
+ /// </summary>
+ /// <param name="itemName"></param>
+ /// <param name="containerType"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<View_BASE_ITEM> GetItemByContainerType(string itemName, string containerType, out string msg)
+ {
+ using (Model dbModel = new Model())
+ {
+ try
+ {
+ msg = "";
+ List<View_BASE_ITEM> upitemlst = new List<View_BASE_ITEM>();
+ if (!string.IsNullOrEmpty(containerType))
+ {
+ upitemlst = dbModel.View_BASE_ITEM.Where(x => x.useContainerType.Contains(containerType)).ToList();
+ }else
+ {
+ if (!string.IsNullOrEmpty(itemName))
+ {
+ upitemlst = dbModel.View_BASE_ITEM.OrderByDescending(x => x.id).Where(x => x.itemName.Contains(itemName)).Skip(0).Take(20).ToList();
+ }
+ else
+ {
+ upitemlst = dbModel.View_BASE_ITEM.OrderByDescending(x => x.id).Skip(0).Take(20).ToList();
+ }
+
+ }
+
+ return upitemlst;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+
+ return null;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 淇敼涓婁笅闄愬姛鑳芥槸鍚﹀紑鍚�
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool UpdateStorageEnable(ItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鎵樼洏
+ List<BASE_ITEM> itemList = edm.BASE_ITEM.ToList();
+ foreach (var i in itemList)
+ {
+ i.STORAGEENABLE = webEntity.storageEnable;
+ }
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储涓婁笅闄愬姛鑳芥槸鍚﹀紑鍚�
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool SearchStorageEnable(ItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鎵樼洏
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.STORAGEENABLE == 1);
+
+ if (item!=null)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎵归噺淇敼涓婇檺
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool UpdateMaxStorage(ItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鎵樼洏
+ List<BASE_ITEM> itemList = edm.BASE_ITEM.ToList();
+ foreach (var i in itemList)
+ {
+ i.MAXSTORAGE = webEntity.maxStorage;
+ }
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎵归噺淇敼涓嬮檺
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool UpdateMinStorage(ItemWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鎵樼洏
+ List<BASE_ITEM> itemList = edm.BASE_ITEM.ToList();
+ foreach (var i in itemList)
+ {
+ i.MINSTORAGE = webEntity.minStorage;
+ }
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/ITEMSTORAGE/ItemStorageSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/ITEMSTORAGE/ItemStorageSqlFunc.cs
new file mode 100644
index 0000000..b2e5f35
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/ITEMSTORAGE/ItemStorageSqlFunc.cs
@@ -0,0 +1,132 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.ITEMSTORAGE
+{
+ public class ItemStorageSqlFunc
+ {
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_ITEMSTORAGE> SearchView(ItemStorageWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ITEMSTORAGE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_ITEMSTORAGE> list = edm.View_ITEMSTORAGE.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(ItemStorageWebEntity webEntity,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ITEMSTORAGE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_ITEMSTORAGE.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 棣栭〉婊氬姩
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<ReturnItemStorageEntity> SearchViewIndex(out string msg)
+ {
+ msg = "";
+ List<ReturnItemStorageEntity> list=new List<ReturnItemStorageEntity>();
+ using (Model edm = new Model())
+ {
+ List<View_ITEMSTORAGE> storageList = edm.View_ITEMSTORAGE.Where(x => x.isLessDay == "鏄�" || x.isOverDay == "鏄�" || x.isMoreDay=="鏄�").ToList();
+ //List<string> result = new List<string>();
+ foreach (var i in storageList)
+ {
+ //result.Add("闆朵欢鍙凤細" + i.itemName + " 闆朵欢鍚嶇О锛�" + i.itemDes + "瓒呴檺,鐩墠瀛樺湪" + i.itemNum + " 璁剧疆涓婇檺锛�" + i.maxStorage + " 涓嬮檺锛�" + i.minStorage);
+ ReturnItemStorageEntity entity = new ReturnItemStorageEntity()
+ {
+ itemName=i.itemName,
+ itemDes=i.itemDes,
+ itemNum=i.itemNum,
+ maxStorage=i.maxStorage,
+ minStorage=i.minStorage,
+ isLessDay=i.isLessDay,
+ isMoreDay=i.isMoreDay,
+ isOverDay=i.isOverDay
+ };
+ list.Add(entity);
+ }
+ return list;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/PALLET/PalletSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/PALLET/PalletSqlFunc.cs
new file mode 100644
index 0000000..d1e673e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/PALLET/PalletSqlFunc.cs
@@ -0,0 +1,176 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+
+namespace IWareDataAccess.Base.PALLET
+{
+ public class PalletSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<PalletWebEntity> Search(PalletWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_PALLET>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<BASE_PALLET> list = edm.BASE_PALLET.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+ List<PalletWebEntity> pwlst=new List<PalletWebEntity>();
+ list.ForEach(x =>
+ {
+ pwlst.Add(new PalletWebEntity() {
+ id=x.ID,
+ PalletType=x.PALLETTYPE,
+ PalletCode=x.PALLETCODE,
+ HeightMax=x.HEIGHTMAX,
+ HeightMin=x.HEIGHTMIN,
+ LengthMax=x.LENGTHMAX,
+ LengthMin=x.LENGTHMIN,
+ WidthMax=x.WIDTHMAX,
+ WidthMin=x.WIDTHMIN
+ });
+ });
+ return pwlst;
+ }
+ }
+
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(PalletWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_PALLET>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.BASE_PALLET.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+
+ /// <summary>
+ /// 娣诲姞淇敼鎵樼洏
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(PalletWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鎵樼洏
+ BASE_PALLET pallet = edm.BASE_PALLET.FirstOrDefault(x => x.PALLETCODE==webEntity.PalletCode);
+ if (pallet == null)
+ {
+ //鏃犳搴撲綅锛屽睘浜庢柊寤�
+ pallet = new BASE_PALLET();
+ }
+ else
+ {
+ msg = "璇ュ櫒鍏风紪鍙疯鏍煎凡瀛樺湪锛�";
+ }
+ pallet.PALLETCODE = webEntity.PalletCode ?? pallet.PALLETCODE;
+ pallet.PALLETTYPE = webEntity.PalletType ?? pallet.PALLETTYPE;
+
+ edm.BASE_PALLET.AddOrUpdateExtension(pallet);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鎵樼洏
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(PalletWebEntity webDevice, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鏉冮檺
+ BASE_PALLET pallet = edm.BASE_PALLET.FirstOrDefault(x => x.PALLETCODE == webDevice.PalletCode);
+ if (pallet == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳瑙勬牸";
+ return false;
+ }
+ else
+ {
+ edm.BASE_PALLET.Remove(pallet);
+
+ return edm.SaveChanges()>0?true:false;
+ }
+ }
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/PLACE/PlaceSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/PLACE/PlaceSqlFunc.cs
new file mode 100644
index 0000000..e4adef0
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/PLACE/PlaceSqlFunc.cs
@@ -0,0 +1,496 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.PLACE
+{
+ public static class PlaceSqlFunc
+ {
+
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_PLACE> Search(PlaceWebEntity webEntity, int page,int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_PLACE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<BASE_PLACE> list = edm.BASE_PLACE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_PLACE> SearchView(PlaceWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_PLACE>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_PLACE> list = edm.View_BASE_PLACE.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(PlaceWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_PLACE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_BASE_PLACE.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞淇敼搴撲綅
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(PlaceWebEntity webPlace,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ搴撲綅
+ BASE_PLACE place = edm.BASE_PLACE.FirstOrDefault(x=>x.PLACE==webPlace.place);
+ if (place == null)
+ {
+ //鏃犳搴撲綅锛屽睘浜庢柊寤�
+ place = new BASE_PLACE();
+ }
+ place.PLACE = webPlace.place?? place.PLACE;
+ place.ROW = webPlace.row ??place.ROW ;
+ place.COL = webPlace.col??place.COL;
+ place.LAYER = webPlace.layer??place.LAYER;
+ place.SRMID = webPlace.srmId??place.SRMID;
+ place.ISFULL = webPlace.isFull??place.ISFULL;
+ place.ISLOCK = webPlace.isLock ?? place.ISLOCK;
+
+ if (!string.IsNullOrEmpty(webPlace.placeType))
+ {
+ BASE_PLACETYPE placeType = edm.BASE_PLACETYPE.FirstOrDefault(x => x.PLACETYPE == webPlace.placeType);
+ if (placeType != null)
+ {
+ place.PLACETYPEID = placeType.ID;
+ }
+ }
+ edm.BASE_PLACE.AddOrUpdateExtension(place);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇敼澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅淇℃伅
+ /// </summary>
+ /// <param name="model"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<PlaceEntity> GetPlace(int taskType,int isStartPlace, out string msg)
+ {
+ try
+ {
+ msg = "";
+ List<PlaceEntity> placelst = new List<PlaceEntity>();
+ using (Model md = new Model())
+ {
+ switch (taskType)
+ {
+ case 1://鍏ュ簱
+ if (isStartPlace==1)
+ {
+ var lst = md.BASE_PRODUCTIONLINE.Where(x => x.ISDESTINATION == 1 && x.PRODUCTIONLINENAME.Contains("鍏ュ彛")).ToList();
+ if (lst != null && lst.Count>0)
+ {
+ lst.ForEach(x =>
+ {
+ placelst.Add(new PlaceEntity()
+ {
+ placeCode=x.PRODUCTIONLINECODE,
+ placeName=x.PRODUCTIONLINENAME
+ });
+ });
+ }
+
+ }else
+ {
+ var srmtask = md.SrmTask.Where(x => x.HASFINISHED == 0).ToList();
+ var maintask = md.TASK_TASK.Where(x => x.HASFINISHED == 0).ToList();
+ var emptyplace = md.BASE_PLACE.Where(x => x.ISFULL == 0 && x.ISLOCK == 0).ToList();
+ if (emptyplace != null && emptyplace.Count>0)
+ {
+ emptyplace.ForEach(x =>
+ {
+ bool bs = true;
+ bool bm = true;
+ if (srmtask != null || maintask != null)
+ {
+ int srmid = int.Parse(x.PLACE.Split('-')[0].ToString());
+ bs = srmtask.FirstOrDefault(y => (x.PLACE.Contains(y.SOURCEPLACE) || x.PLACE.Contains(y.TOPLACE)) && y.USESRMID == srmid) == null ? true : false;
+ bm = maintask.FirstOrDefault(y => y.SOURCEPLACE.Contains(x.PLACE) || y.TOPLACE.Contains(x.PLACE)) == null ? true : false;
+ }
+ if (bs&&bm)
+ {
+ placelst.Add(new PlaceEntity()
+ {
+ placeCode = x.PLACE,
+ placeName = x.PLACE
+ });
+ }
+ });
+ }
+ }
+ break;
+ case 2://鍑哄簱
+ if (isStartPlace == 1)
+ {
+ // var srmtask = md.SrmTasks.Where(x => x.HASFINISHED == 0).ToList();
+ var maintask = md.TASK_TASK.Where(x => x.HASFINISHED == 0 && x.TASKSTATUS!="浠诲姟鍒犻櫎").ToList();
+ var place = md.BASE_PLACE.Where(x => x.ISFULL == 1 && x.ISLOCK == 0).ToList();
+ if (place != null && place.Count > 0)
+ {
+ place.ForEach(x =>
+ {
+ bool bs = true;
+ bool bm = true;
+ if (maintask != null)
+ {
+ //int srmid = int.Parse(x.PLACE.Split('-')[0].ToString());
+ // bs = srmtask.FirstOrDefault(y => (x.PLACE.Contains(y.SOURCEPLACE) || x.PLACE.Contains(y.TOPLACE)) && y.USESRMID == srmid) == null ? true : false;
+ bm = maintask.FirstOrDefault(y => y.SOURCEPLACE.Contains(x.PLACE) || y.TOPLACE.Contains(x.PLACE)) == null ? true : false;
+ }
+ if (bs && bm)
+ {
+ placelst.Add(new PlaceEntity()
+ {
+ placeCode = x.PLACE,
+ placeName = x.PLACE
+ });
+ }
+ });
+ }
+ }
+ else
+ {
+ var lst = md.BASE_PRODUCTIONLINE.Where(x => x.ISDESTINATION == 0 && x.PRODUCTIONLINENAME.Contains("鍑哄彛")).ToList();
+ if (lst != null && lst.Count > 0)
+ {
+ lst.ForEach(x =>
+ {
+ placelst.Add(new PlaceEntity()
+ {
+ placeCode = x.PRODUCTIONLINECODE,
+ placeName = x.PRODUCTIONLINENAME,
+ });
+ });
+ }
+ }
+ break;
+ case 3://绉诲簱
+ var srmtasks = md.SrmTask.Where(x => x.HASFINISHED == 0).ToList();
+ var maintasks = md.TASK_TASK.Where(x => x.HASFINISHED == 0).ToList();
+ var places = md.BASE_PLACE.Where(x => x.ISFULL == 1 && x.ISLOCK == 0).ToList();
+ if (places != null && places.Count > 0)
+ {
+ places.ForEach(x =>
+ {
+ bool bs = true;
+ bool bm = true;
+ if (srmtasks != null|| maintasks != null)
+ {
+ int srmid = int.Parse(x.PLACE.Split('-')[0].ToString());
+ bs = srmtasks.FirstOrDefault(y => (x.PLACE.Contains(y.SOURCEPLACE) || x.PLACE.Contains(y.TOPLACE)) && y.USESRMID == srmid) == null ? true : false;
+ bm = maintasks.FirstOrDefault(y => y.SOURCEPLACE.Contains(x.PLACE) || y.TOPLACE.Contains(x.PLACE)) == null ? true : false;
+ }
+ if (bs && bm)
+ {
+ placelst.Add(new PlaceEntity()
+ {
+ placeCode = x.PLACE,
+ placeName = x.PLACE
+
+ });
+ }
+ });
+ }
+ break;
+
+ }
+ return placelst;
+ }
+
+ }
+ catch (Exception ex)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return new List<PlaceEntity>();
+ }
+ }
+
+
+ public static PlaceStatusCountEntity GetAllStatusPlaceCount(int storageNo, out string msg)
+ {
+ try
+ {
+ msg = "";
+
+ using (Model md = new Model())
+ {
+ var placealllst = md.BASE_PLACE.Where(x => x.PLACE.Contains("-")).ToList();
+ var pvcviealllst = md.View_BASE_PLACE_VS_CONTAINER.Where(x => x.place.Contains("-")).ToList();
+ var placelst = md.BASE_PLACE.Where(x => x.SRMID == storageNo).ToList();
+ var lockplace=placelst.Where(x=>x.ISLOCK==1).Count();
+ var emptyplace=placelst.Where(x=>x.ISFULL==0&&x.ISLOCK==0).Count();
+ var cpc = pvcviealllst.Where(x => x.srmId == storageNo && string.IsNullOrEmpty(x.itemName)).ToList().Count();
+ var ipc = pvcviealllst.Where(x => x.srmId == storageNo && !string.IsNullOrEmpty(x.containerName)).Select(x => x.place).ToList().Distinct().Count();
+ PlaceStatusCountEntity psclst = new PlaceStatusCountEntity();
+ psclst.lPlaceCount = lockplace;
+ psclst.cPlaceCount = cpc;
+ psclst.iPlaceCount = ipc;
+ psclst.ePlaceCount = emptyplace;
+
+ var lockallplace = placealllst.Where(x => x.ISLOCK == 1).Count();
+ var emptyallplace = placealllst.Where(x => x.ISFULL == 0 && x.ISLOCK == 0).Count();
+ var callpc = pvcviealllst.Where(x => string.IsNullOrEmpty(x.containerName)).ToList().Count();
+ var iallpc = pvcviealllst.Where(x => !string.IsNullOrEmpty(x.containerName)).Select(x => x.place).ToList().Distinct().Count();
+ psclst.lAllPlaceCount = lockallplace;
+ psclst.cAllPlaceCount = callpc;
+ psclst.iAllPlaceCount = iallpc;
+ psclst.eAllPlaceCount = emptyallplace;
+
+ return psclst;
+ }
+
+ }
+ catch (Exception ex)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return new PlaceStatusCountEntity();
+ }
+ }
+
+ public static List<PlaceEntity> GetAllPlaceInfo(int storageNo, int row, out string msg)
+ {
+ try
+ {
+ msg = "";
+ List<PlaceEntity> placelst = new List<PlaceEntity>();
+ using (Model md = new Model())
+ {
+
+ var pvcvilst = md.View_BASE_PLACE_VS_CONTAINER.Where(x => x.srmId == storageNo).ToList();
+ var place = md.BASE_PLACE.Where(x => x.SRMID == storageNo && x.ROW == row).ToList();
+ int maxcol = (int)place.Select(x => x.COL).ToList().Max();
+ int maxlary = (int)place.Select(x => x.LAYER).ToList().Max();
+ if (place != null && place.Count > 0)
+ {
+ for (int i = 1; i <= maxlary; i++)
+ {
+ for (int j = 1; j <= maxcol; j++)
+ {
+
+ int states = 0;
+ var pl=place.FirstOrDefault(x=>x.LAYER==i&&x.COL==j);
+ if (pl != null)
+ {
+ var pvcvi = pvcvilst.FirstOrDefault(y => y.place == pl.PLACE);
+ if (pvcvi != null)
+ {
+ if (pl.ISFULL == 1)
+ {
+ if (string.IsNullOrEmpty(pvcvi.itemName))
+ {
+ states = 1;//绌哄櫒鍏�
+ }
+ else
+ {
+ states = 2;//鏈夎揣
+ }
+ }
+ else
+ {
+ states = 0;//绌哄簱浣�
+ }
+ }
+ else
+ {
+ if (pl.ISLOCK == 1)
+ {
+ states = 3;//閿佸畾
+ }
+ else
+ {
+ states = 0;
+ }
+ }
+ }
+ else
+ {
+ string colv = (i >= 10) ? i.ToString() : "0" + i.ToString();
+ string layv = (i >= 10) ? j.ToString() : "0" + j.ToString();
+ pl = new BASE_PLACE();
+ pl.PLACE = storageNo + "-0" + row + "-" + colv + "-" + layv;
+ pl.PLACE="";
+ states=99;
+ pl.COL=j;
+ pl.ROW = row;
+ pl.LAYER=i;
+ }
+
+
+ placelst.Add(new PlaceEntity()
+ {
+ placeCode = pl.PLACE,
+ placeName = pl.PLACE,
+ placeStates = states,
+ col = pl.COL,
+ row = pl.ROW,
+ layer = pl.LAYER
+
+ });
+
+ }
+ }
+ }
+ return placelst;
+ }
+
+ }
+ catch (Exception ex)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return new List<PlaceEntity>();
+ }
+ }
+
+ public static List<View_BASE_PLACE_VS_CONTAINER> GetPVCVIInfo(string placeName, out string msg)
+ {
+ try
+ {
+ msg = "";
+ List<View_BASE_PLACE_VS_CONTAINER> placelst = new List<View_BASE_PLACE_VS_CONTAINER>();
+ using (Model md = new Model())
+ {
+ placelst = md.View_BASE_PLACE_VS_CONTAINER.Where(x => x.place == placeName).ToList();
+ if (placelst != null && placelst.Count > 0)
+ {
+ return placelst;
+ }else
+ {
+ return null;
+ }
+
+ }
+
+ }
+ catch (Exception ex)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return new List<View_BASE_PLACE_VS_CONTAINER>();
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/PLACEVSCONTAINER/PlaceVsContainerSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/PLACEVSCONTAINER/PlaceVsContainerSqlFunc.cs
new file mode 100644
index 0000000..7b5d26b
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/PLACEVSCONTAINER/PlaceVsContainerSqlFunc.cs
@@ -0,0 +1,437 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Entity.Summary;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.PLACEVSCONTAINER
+{
+ public static class PlaceVsContainerSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_PLACE_VS_CONTAINER> Search(PlaceVsContainerWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_PLACE_VS_CONTAINER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<BASE_PLACE_VS_CONTAINER> list = edm.BASE_PLACE_VS_CONTAINER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_PLACE_VS_CONTAINER> SearchView(PlaceVsContainerWebEntity webEntity, int page, int onePageNum, out int totalnum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ if (!string.IsNullOrEmpty(webEntity.isEmptyContainer))
+ {
+ webEntity.enable2 = null;
+ }
+ Dictionary<string, object> parm = new Dictionary<string, object>();
+ var f = PredicateBuilder.True<View_BASE_PLACE_VS_CONTAINER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ parm.Add(i.Name, value);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ parm.Add("updateTime", value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ parm.Add("updateTime", value);
+ }
+
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ parm.Add(i.Name, v);
+ }
+ }
+ }
+ List<View_BASE_PLACE_VS_CONTAINER> list = new List<View_BASE_PLACE_VS_CONTAINER>();
+ View_BASE_PLACE_VS_CONTAINER pvi = new View_BASE_PLACE_VS_CONTAINER();
+ var data = SearchHelper.GetSearchData(edm, page, onePageNum, out totalnum, parm, pvi);
+ list = data;
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(PlaceVsContainerWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_PLACE_VS_CONTAINER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = 0;
+ //琛ヤ竵
+ if (string.IsNullOrEmpty(webEntity.itemName))
+ {
+ num = edm.View_BASE_PLACE_VS_CONTAINER.Where(f.Compile()).Count();
+ }
+ else
+ {
+ num = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.itemName.Contains(webEntity.itemName)).Where(f.Compile()).Count();
+ }
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鎬诲簱瀛樻暟閲�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchItemAllNum(PlaceVsContainerWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_PLACE_VS_CONTAINER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ int num = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.itemName.Contains(webEntity.itemName)).Where(f.Compile()).Sum(x => x.itemNum) ?? 0;
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鏈夋晥搴撳瓨鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchItemCanUseNum(PlaceVsContainerWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ //int numCanUse = edm.BASE_CONTAINER_VS_ITEM.Where(x => (x.OUTPLANID ?? 0) == 0 && x.BASE_ITEM.ITEMNAME==webEntity.itemName && x.ENABLE==1).Sum(x => x.ITEMNUM) ?? 0;
+ int numCanUse = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.BASE_ITEM.ITEMNAME == webEntity.itemName && x.ENABLE == 1).Sum(x => x.ITEMNUM) ?? 0;
+ List<ORDER_OUTORDER> orderList = edm.ORDER_OUTORDER.Where(x => x.BASE_ITEM.ITEMNAME == webEntity.itemName && x.ORDERSTATUS == "鎵ц涓�" && x.ENABLE == 1).ToList();
+ foreach (var i in orderList)
+ {
+ numCanUse = numCanUse - ((i.TOTALOUTNUM ?? 0) - (i.CHECKOUTNUM ?? 0));
+ }
+ return numCanUse;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞淇敼
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool Add(PlaceVsContainerWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ BASE_PLACE_VS_CONTAINER pvc = new BASE_PLACE_VS_CONTAINER();
+ pvc = edm.BASE_PLACE_VS_CONTAINER.FirstOrDefault(x => x.PVCCODE == webEntity.pvcCode);
+ if (pvc != null)
+ {
+ //msg = "姝ゅ簱瀛樼紪鍙峰凡瀛樺湪";
+ //return false;
+ }
+ else
+ {
+ pvc = new BASE_PLACE_VS_CONTAINER();
+ pvc.STATUS = "IN";
+ pvc.BASE_PLACE.ISFULL = 1;
+ }
+ BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName);
+ if (container == null)
+ {
+ msg = "鏃犳鎵樼洏";
+ return false;
+ }
+ pvc.BASE_CONTAINER = container;
+ BASE_PLACE place = edm.BASE_PLACE.FirstOrDefault(x => x.PLACE == webEntity.place);
+ if (place == null)
+ {
+ msg = "鏃犳搴撲綅";
+ return false;
+ }
+ if (place.ISFULL == 1)
+ {
+ msg = "姝ゅ簱浣嶅凡鏈変笢瑗�";
+ return false;
+ }
+ pvc.BASE_PLACE = place;
+ pvc.UPDATETIME = DateTime.Now;
+
+ pvc.ENABLE = webEntity.enable ?? pvc.ENABLE;
+ pvc.PVCCODE = webEntity.pvcCode ?? pvc.PVCCODE;
+
+ edm.BASE_PLACE_VS_CONTAINER.AddOrUpdateExtension(pvc);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(PlaceVsContainerWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ BASE_PLACE_VS_CONTAINER pvc = edm.BASE_PLACE_VS_CONTAINER.FirstOrDefault(x => x.BASE_PLACE.PLACE == webEntity.place);
+ if (pvc == null)
+ {
+ msg = "鏃犳搴撳瓨";
+ return false;
+ }
+ else
+ {
+ ///鏇存敼搴撲綅鐘舵��
+ var place = edm.BASE_PLACE.FirstOrDefault(x => x.ID == pvc.PLACEID);
+ if (place != null)
+ {
+ place.ISFULL = 0;
+ }
+ ///鍒犻櫎鎵樼洏鐗╂枡鍏崇郴
+ var cvilst = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.CONTAINERID == pvc.CONTAINERID).ToList();
+ if (cvilst != null && cvilst.Count > 0)
+ {
+ edm.BASE_CONTAINER_VS_ITEM.RemoveRange(cvilst);
+ }
+ ///鍒犻櫎鎵樼洏搴撲綅鍏崇郴
+ edm.BASE_PLACE_VS_CONTAINER.Remove(pvc);
+
+ if (edm.SaveChanges() > 0)
+ {
+ //璁板綍鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯绘棩蹇� 銆怑ditby shaoc,2023-03-07銆�
+ IWareDataAccess.Helper.Helper.LogRemoveBASE_CONTAINER_VS_ITEM(cvilst, "PlaceVsContainerSqlFunc.Delete", "鍒犻櫎");
+ WZ.Useful.Commons.LogTextHelper.WriteLine("PlaceVsContainerSqlFunc", "Delete", "鎴愬姛鍒犻櫎" + pvc.BASE_PLACE.PLACE + ",鍣ㄥ叿" + pvc.BASE_CONTAINER.CONTAINERNAME);
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇缁勭洏鍙�
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCode()
+ {
+ using (Model edm = new Model())
+ {
+ string month = DateTime.Now.Month.ToString("00");
+ string day = DateTime.Now.Day.ToString("00");
+ string hour = DateTime.Now.Hour.ToString("00");
+ string minute = DateTime.Now.Minute.ToString("00");
+ string second = DateTime.Now.Second.ToString("00");
+ string millSecond = DateTime.Now.Millisecond.ToString("0000");
+ string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond;
+
+ return "PC" + time;
+ }
+ }
+
+ public static List<HomeNumDataEntity> SearchEmptyContainerPlace(PlaceVsContainerWebEntity model, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == model.itemName);
+ int allcout = 0;
+ int cout = 0;
+ if (item != null && !string.IsNullOrEmpty(item.USECONTAINERTYPE))
+ {
+ List<string> typeList = item.USECONTAINERTYPE.Split(',').ToList();
+ foreach (var i in typeList)
+ {
+ var place = edm.BASE_PLACE_VS_CONTAINER.Where(x => x.BASE_CONTAINER.BASE_CONTAINER_VS_ITEM.Count == 0 && i.Contains(x.BASE_CONTAINER.CONTAINERTYPE)).ToList();
+ allcout = (place == null ? 0 : place.Select(x => x.CONTAINERID).ToList().Distinct().ToList().Count) + allcout;
+ cout = (place == null ? 0 : place.Where(x => x.STATUS == "IN").Select(x => x.CONTAINERID).ToList().Distinct().ToList().Count) + cout;
+ }
+ }
+ List<HomeNumDataEntity> hndlst = new List<HomeNumDataEntity>();
+ hndlst.Add(new HomeNumDataEntity() { no = 1, titel = "鎬荤┖鍣ㄥ叿鏁�", value = allcout });
+ hndlst.Add(new HomeNumDataEntity() { no = 2, titel = "鏈夋晥绌哄櫒鍏锋暟", value = cout });
+ return hndlst;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/PRINT/PrintSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/PRINT/PrintSqlFunc.cs
new file mode 100644
index 0000000..7bf0ea8
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/PRINT/PrintSqlFunc.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.PRINT
+{
+ public class PrintSqlFunc
+ {
+
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Base/PRODUCTIONLINE/ProductionLineSqlFunc.cs b/qqjf-Background/IWareDataAccess/Base/PRODUCTIONLINE/ProductionLineSqlFunc.cs
new file mode 100644
index 0000000..8c2eb73
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Base/PRODUCTIONLINE/ProductionLineSqlFunc.cs
@@ -0,0 +1,206 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Base.PRODUCTIONLINE
+{
+ public static class ProductionLineSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<BASE_PRODUCTIONLINE> Search(ProductionLineWebEntity webEntity, int page,int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<BASE_PRODUCTIONLINE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<BASE_PRODUCTIONLINE> list = edm.BASE_PRODUCTIONLINE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_BASE_PRODUCTIONLINE> SearchView(ProductionLineWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_PRODUCTIONLINE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_BASE_PRODUCTIONLINE> list = edm.View_BASE_PRODUCTIONLINE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(ProductionLineWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_BASE_PRODUCTIONLINE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_BASE_PRODUCTIONLINE.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞淇敼
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(ProductionLineWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ BASE_PRODUCTIONLINE pl = new BASE_PRODUCTIONLINE();
+ pl = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINECODE == webEntity.productionCode);
+ if (pl == null)
+ {
+ pl = new BASE_PRODUCTIONLINE();
+ }
+
+ pl.PRODUCTIONLINECODE = webEntity.productionCode ?? pl.PRODUCTIONLINECODE;
+ pl.PRODUCTIONLINENAME = webEntity.productionName ?? pl.PRODUCTIONLINENAME;
+ pl.ENABLE = webEntity.enable ?? pl.ENABLE;
+ pl.ISDESTINATION = webEntity.isDestination;
+
+ edm.BASE_PRODUCTIONLINE.AddOrUpdateExtension(pl);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(ProductionLineWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ BASE_PRODUCTIONLINE pl = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINECODE == webEntity.productionCode);
+ if (pl == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳鐝嚎";
+ return false;
+ }
+ else
+ {
+ //edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
+ pl.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Car/CAR/CarSqlFunc.cs b/qqjf-Background/IWareDataAccess/Car/CAR/CarSqlFunc.cs
new file mode 100644
index 0000000..71b1bb4
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Car/CAR/CarSqlFunc.cs
@@ -0,0 +1,216 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Car;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Car.CAR
+{
+ public static class CarSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<CAR_CAR> Search(CarWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<CAR_CAR>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<CAR_CAR> list = edm.CAR_CAR.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_CAR_CAR> SearchView(CarWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_CAR_CAR>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_CAR_CAR> list = edm.View_CAR_CAR.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(CarWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_CAR_CAR>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_CAR_CAR.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞鍙夎溅浠诲姟
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(CarWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ CAR_CAR car = new CAR_CAR();
+ car = edm.CAR_CAR.FirstOrDefault(x => x.CARNAME == webEntity.carName);
+ if (car == null)
+ {
+ car = new CAR_CAR();
+ }
+ car.CARNAME = webEntity.carName ?? car.CARNAME;
+ car.CARCODE = webEntity.carCode ?? car.CARCODE;
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.userName);
+ if (user != null)
+ {
+ car.SYS_USER = user;
+ }
+ CAR_CARTASK carTask = edm.CAR_CARTASK.FirstOrDefault(x => x.CARTASKNAME == webEntity.carTaskName);
+ if (car != null)
+ {
+ car.CAR_CARTASK = carTask;
+
+ }
+ car.STATUS = webEntity.status ?? car.STATUS;
+ car.ENABLE = webEntity.enable ?? car.ENABLE;
+ car.ISWORK = webEntity.isWork ?? car.ISWORK;
+ edm.CAR_CAR.AddOrUpdateExtension(car);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(CarWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ CAR_CAR carTask = edm.CAR_CAR.FirstOrDefault(x => x.CARNAME == webEntity.carName);
+ if (carTask == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳鍙夎溅";
+ return false;
+ }
+ else
+ {
+ //edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
+ carTask.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Car/CARTASK/CarTaskSqlFunc.cs b/qqjf-Background/IWareDataAccess/Car/CARTASK/CarTaskSqlFunc.cs
new file mode 100644
index 0000000..87f8b62
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Car/CARTASK/CarTaskSqlFunc.cs
@@ -0,0 +1,413 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Car;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Car.CARTASK
+{
+ public static class CarTaskSqlFunc
+ {
+
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<CAR_CARTASK> Search(CarTaskWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<CAR_CARTASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<CAR_CARTASK> list = edm.CAR_CARTASK.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_CAR_CARTASK> SearchView(CarTaskWebEntity webEntity, int page, int onePageNum, string typeInput, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_CAR_CARTASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ if (i.Name == "taskStatusNot")
+ {
+ string name = i.Name.Replace("Not", "");
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, name) != null ? Helper.Helper.GetFieldValueByName(x, name).ToString() != value : false);
+ }
+ else
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+
+ if (i.Name == "taskStatus")
+ {
+ if (typeInput == "1")
+ {
+ f = f.And(x => x.taskStatus == "鏂板缓");
+
+ }
+ }
+ if (i.Name == "fromDestination")
+ {
+ if (typeInput == "1")
+ {
+ f = f.And(x => x.fromDestination == "涓�鍙峰嚭鍙�");
+ }
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_CAR_CARTASK> list = edm.View_CAR_CARTASK.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(CarTaskWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_CAR_CARTASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ if (i.Name == "taskStatusNot")
+ {
+ string name = i.Name.Replace("Not", "");
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, name) != null ? Helper.Helper.GetFieldValueByName(x, name).ToString() != value : false);
+ }
+ else
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_CAR_CARTASK.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+
+ /// <summary>
+ /// 娣诲姞鍙夎溅浠诲姟
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(CarTaskWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ CAR_CARTASK carTask = new CAR_CARTASK();
+ carTask = edm.CAR_CARTASK.FirstOrDefault(x => x.CARTASKNAME == webEntity.carTaskName);
+ if (carTask == null)
+ {
+ carTask = new CAR_CARTASK();
+ }
+ carTask.CARTASKNAME = webEntity.carTaskName ?? carTask.CARTASKNAME;
+ BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName);
+ if (container == null)
+ {
+ msg = "鏃犳鎵樼洏";
+ return false;
+ }
+ carTask.BASE_CONTAINER = container;
+
+ BASE_PRODUCTIONLINE lineFrom = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINENAME == webEntity.fromDestination);
+ if (lineFrom != null)
+ {
+ carTask.FROMDESTINATION = webEntity.fromDestination;
+
+ }
+ else
+ {
+ msg = "鏃犳璧峰宸ヤ綅";
+ return false;
+ }
+ BASE_PRODUCTIONLINE lineTo = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINENAME == webEntity.toDestination);
+ if (lineTo != null)
+ {
+ carTask.TODESTINATION = webEntity.toDestination;
+
+ }
+ else
+ {
+ //msg = "鏃犳鐩爣宸ヤ綅";
+ //return false;
+ carTask.TODESTINATION = webEntity.toDestination;
+ }
+ carTask.TASKSTATUS = webEntity.taskStatus ?? carTask.TASKSTATUS;
+ carTask.ENABLE = webEntity.enable ?? carTask.ENABLE;
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.userName);
+ if (user != null)
+ {
+ carTask.CREATORID = user.ID;
+ carTask.CREATEUSERID = user.ID;
+ }
+ carTask.UPDATETIME = DateTime.Now;
+ edm.CAR_CARTASK.AddOrUpdateExtension(carTask);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 淇敼鍙夎溅浠诲姟鐘舵��
+ /// </summary>
+ /// <returns></returns>
+ public static bool CarGetTask(CarTaskWebEntity carTaskEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ CAR_CARTASK carTask = edm.CAR_CARTASK.FirstOrDefault(x => x.CARTASKNAME == carTaskEntity.carTaskName);
+ if (carTask == null)
+ {
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == carTaskEntity.getUserName);
+ if (user != null)
+ {
+ carTask.USERID = user.ID;
+ }
+ else
+ {
+ msg = "鑾峰彇棰嗙敤浜哄け璐ワ紒";
+ return false;
+ }
+ carTask.TASKSTATUS = carTaskEntity.taskStatus;
+ carTask.CREATETIME = DateTime.Now;
+ //CAR_CAR car = edm.CAR_CAR.FirstOrDefault(x => x.CARNAME == carTaskEntity.carName);
+ //if (car == null)
+ //{
+ // msg = "鏃犳鍙夎溅";
+ // return false;
+ //}
+ //car.CARTASKID = carTask.ID;
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(CarTaskWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ CAR_CARTASK carTask = edm.CAR_CARTASK.FirstOrDefault(x => x.CARTASKNAME == webEntity.carTaskName);
+ if (carTask == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳鍙夎溅浠诲姟";
+ return false;
+ }
+ else
+ {
+ //edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
+ carTask.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇缁勭洏鍙�
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCode()
+ {
+ using (Model edm = new Model())
+ {
+
+ string month = DateTime.Now.Month.ToString("00");
+ string day = DateTime.Now.Day.ToString("00");
+ string hour = DateTime.Now.Hour.ToString("00");
+ string minute = DateTime.Now.Minute.ToString("00");
+ string second = DateTime.Now.Second.ToString("00");
+ string millSecond = DateTime.Now.Millisecond.ToString("0000");
+ string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond;
+
+ return "CT" + time;
+ }
+ }
+
+ public static List<string> GetCarUser(out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var carlst = edm.CAR_CAR.Where(x => x.ENABLE == 1).ToList();
+ var uidlst = carlst.Select(x => x.USERID).Distinct().ToList();
+ var userlst = edm.SYS_USER.Where(x => x.ENABLE == 1).ToList();
+ List<string> namelst = new List<string>();
+ uidlst.ForEach(x =>
+ {
+ var uer = userlst.FirstOrDefault(y => y.ID == x);
+ if (uer != null)
+ {
+ namelst.Add(uer.USERNAME);
+ }
+
+ });
+ return namelst;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/ALERT_ALERT.cs b/qqjf-Background/IWareDataAccess/EF/ALERT_ALERT.cs
new file mode 100644
index 0000000..e6bb268
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/ALERT_ALERT.cs
@@ -0,0 +1,34 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class ALERT_ALERT
+ {
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string ALERTNAME { get; set; }
+
+ public int? ALERTDEVICEID { get; set; }
+
+ [StringLength(50)]
+ public string ALERTDES { get; set; }
+
+ public DateTime? CREATETIME { get; set; }
+
+ public DateTime? FINISHTIME { get; set; }
+
+ public int? TOTALTIME { get; set; }
+
+ [StringLength(50)]
+ public string ALERTCODE { get; set; }
+
+ public int? HASDONE { get; set; }
+
+ public virtual BASE_DEVICE BASE_DEVICE { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/ALERT_ALERTTIME.cs b/qqjf-Background/IWareDataAccess/EF/ALERT_ALERTTIME.cs
new file mode 100644
index 0000000..5f6a340
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/ALERT_ALERTTIME.cs
@@ -0,0 +1,27 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class ALERT_ALERTTIME
+ {
+ [Key]
+ [Column(Order = 0)]
+ [StringLength(50)]
+ public string DEVICENAME { get; set; }
+
+ [Key]
+ [Column(Order = 1, TypeName = "date")]
+ public DateTime DAY { get; set; }
+
+ [Key]
+ [Column(Order = 2)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int TIME { get; set; }
+
+ public int? ISERROR { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER.cs b/qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER.cs
new file mode 100644
index 0000000..929fc60
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER.cs
@@ -0,0 +1,74 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_CONTAINER
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_CONTAINER()
+ {
+ BASE_CONTAINER_VS_ITEM = new HashSet<BASE_CONTAINER_VS_ITEM>();
+ BASE_PLACE_VS_CONTAINER = new HashSet<BASE_PLACE_VS_CONTAINER>();
+ CAR_CARTASK = new HashSet<CAR_CARTASK>();
+ TASK_RECORD = new HashSet<TASK_RECORD>();
+ TASK_SRMRECORD = new HashSet<TASK_SRMRECORD>();
+ TASK_TASK = new HashSet<TASK_TASK>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string CONTAINERNAME { get; set; }
+
+ public int? PALLETTYPEID { get; set; }
+
+ [StringLength(50)]
+ public string CONTAINERTYPE { get; set; }
+
+ public int? STATUS { get; set; }
+
+ public decimal? WEIGHT { get; set; }
+
+ public decimal? LENGTH { get; set; }
+
+ public decimal? HEIGHT { get; set; }
+
+ public decimal? WIDTH { get; set; }
+
+ public decimal? WEIGHTDIFFERENCE { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ [StringLength(50)]
+ public string CONTAINERDES { get; set; }
+
+ [StringLength(100)]
+ public string IMG { get; set; }
+
+ public int? ISLOCK { get; set; }
+
+ public virtual BASE_PALLET BASE_PALLET { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_CONTAINER_VS_ITEM> BASE_CONTAINER_VS_ITEM { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_PLACE_VS_CONTAINER> BASE_PLACE_VS_CONTAINER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<CAR_CARTASK> CAR_CARTASK { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_RECORD> TASK_RECORD { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_SRMRECORD> TASK_SRMRECORD { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_TASK> TASK_TASK { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER_VS_ITEM.cs b/qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER_VS_ITEM.cs
new file mode 100644
index 0000000..d2749dc
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_CONTAINER_VS_ITEM.cs
@@ -0,0 +1,74 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_CONTAINER_VS_ITEM
+ {
+ public int ID { get; set; }
+
+ public int? CONTAINERID { get; set; }
+
+ public int? ITEMID { get; set; }
+
+ /// <summary>
+ /// 创建时间 【EditBy shaocx,2022-11-2】
+ /// </summary>
+ public DateTime? CreateTime { get; set; }
+
+ /// <summary>
+ /// 修改时间
+ /// </summary>
+ public DateTime? UPDATETIME { get; set; }
+
+ public string OperationRemark { get; set; }
+
+ public int? ITEMNUM { get; set; }
+
+ public int? ISBAD { get; set; }
+
+ public int? INPLANID { get; set; }
+
+ public int? OUTPLANID { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ [StringLength(50)]
+ public string BADBYFACTORY { get; set; }
+
+ public int? INTYPEID { get; set; }
+
+ public decimal? GETWEIGHT { get; set; }
+
+ public decimal? TOTALWEIGHT { get; set; }
+
+ /// <summary>
+ /// 冲压生产计划单号
+ /// </summary>
+ [StringLength(50)]
+ public string CVICODE { get; set; }
+
+ /// <summary>
+ /// 创建人ID
+ /// </summary>
+ public int? CREATEUSERID { get; set; }
+
+ /// <summary>
+ /// 修改人ID
+ /// </summary>
+ public int? UpdateUserId { get; set; }
+
+ public virtual BASE_CONTAINER BASE_CONTAINER { get; set; }
+
+ public virtual BASE_INTYPE BASE_INTYPE { get; set; }
+
+ public virtual BASE_ITEM BASE_ITEM { get; set; }
+
+ public virtual ORDER_INORDER ORDER_INORDER { get; set; }
+
+ public virtual ORDER_OUTORDER ORDER_OUTORDER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_DESTINATION.cs b/qqjf-Background/IWareDataAccess/EF/BASE_DESTINATION.cs
new file mode 100644
index 0000000..5bd924f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_DESTINATION.cs
@@ -0,0 +1,30 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_DESTINATION
+ {
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string DESTINATIONNAME { get; set; }
+
+ [StringLength(50)]
+ public string DESTINATIONCODE { get; set; }
+
+ [StringLength(50)]
+ public string SUPERIORNAME { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ public int? CREATOR { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_DEVICE.cs b/qqjf-Background/IWareDataAccess/EF/BASE_DEVICE.cs
new file mode 100644
index 0000000..c72112f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_DEVICE.cs
@@ -0,0 +1,32 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_DEVICE
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_DEVICE()
+ {
+ ALERT_ALERT = new HashSet<ALERT_ALERT>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string DEVICENAME { get; set; }
+
+ [StringLength(50)]
+ public string DEVICETYPE { get; set; }
+
+ public int? DEVICEID { get; set; }
+
+ public int? ISLOCK { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ALERT_ALERT> ALERT_ALERT { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_INTYPE.cs b/qqjf-Background/IWareDataAccess/EF/BASE_INTYPE.cs
new file mode 100644
index 0000000..5b6b6aa
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_INTYPE.cs
@@ -0,0 +1,28 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_INTYPE
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_INTYPE()
+ {
+ BASE_CONTAINER_VS_ITEM = new HashSet<BASE_CONTAINER_VS_ITEM>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string INTYPE { get; set; }
+
+ [StringLength(50)]
+ public string STORENAME { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_CONTAINER_VS_ITEM> BASE_CONTAINER_VS_ITEM { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_ITEM.cs b/qqjf-Background/IWareDataAccess/EF/BASE_ITEM.cs
new file mode 100644
index 0000000..717477e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_ITEM.cs
@@ -0,0 +1,80 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_ITEM
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_ITEM()
+ {
+ BASE_CONTAINER_VS_ITEM = new HashSet<BASE_CONTAINER_VS_ITEM>();
+ ORDER_INORDER = new HashSet<ORDER_INORDER>();
+ ORDER_OUTORDER = new HashSet<ORDER_OUTORDER>();
+ TASK_RECORD = new HashSet<TASK_RECORD>();
+ TASK_SRMRECORD = new HashSet<TASK_SRMRECORD>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string ITEMNAME { get; set; }
+
+ [StringLength(50)]
+ public string ITEMDES { get; set; }
+
+ public decimal? WEIGHT { get; set; }
+
+ [StringLength(50)]
+ public string ITEMTYPE { get; set; }
+
+ public decimal? WEIGHTDIFFERENCE { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public string IMAGE { get; set; }
+
+ [StringLength(50)]
+ public string CREATELINE { get; set; }
+
+ public int? MAXNUM { get; set; }
+
+ public decimal? PRICE { get; set; }
+
+ [StringLength(50)]
+ public string UNIT { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ [StringLength(500)]
+ public string USECONTAINERTYPE { get; set; }
+
+ public int? OVERDUETIME { get; set; }
+
+ public int? MAXSTORAGE { get; set; }
+
+ public int? MINSTORAGE { get; set; }
+
+ public int? ISLOCK { get; set; }
+
+ public int? STORAGEENABLE { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_CONTAINER_VS_ITEM> BASE_CONTAINER_VS_ITEM { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_INORDER> ORDER_INORDER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_OUTORDER> ORDER_OUTORDER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_RECORD> TASK_RECORD { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_SRMRECORD> TASK_SRMRECORD { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_Material.cs b/qqjf-Background/IWareDataAccess/EF/BASE_Material.cs
new file mode 100644
index 0000000..c0a57aa
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_Material.cs
@@ -0,0 +1,51 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_Material
+ {
+ public int Id { get; set; }
+
+ [StringLength(50)]
+ public string MaterialName { get; set; }
+
+ [StringLength(50)]
+ public string MaterialCode { get; set; }
+
+ [StringLength(50)]
+ public string MaterialDes { get; set; }
+
+ public decimal? Weight { get; set; }
+
+ [StringLength(50)]
+ public string MaterialType { get; set; }
+
+ public int? Enable { get; set; }
+
+ public string Img { get; set; }
+
+ public int? MaxNum { get; set; }
+
+ public decimal? Price { get; set; }
+
+ [StringLength(50)]
+ public string Unit { get; set; }
+
+ public DateTime? UpadteTime { get; set; }
+
+ [StringLength(500)]
+ public string UseContainerType { get; set; }
+
+ public int? OverDueTime { get; set; }
+
+ public int? MaxStorageNum { get; set; }
+
+ public int? MinStorageNum { get; set; }
+
+ public int? IsLock { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_PALLET.cs b/qqjf-Background/IWareDataAccess/EF/BASE_PALLET.cs
new file mode 100644
index 0000000..ea0a5a6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_PALLET.cs
@@ -0,0 +1,39 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_PALLET
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_PALLET()
+ {
+ BASE_CONTAINER = new HashSet<BASE_CONTAINER>();
+ }
+
+ public int ID { get; set; }
+
+ public int? PALLETCODE { get; set; }
+
+ [StringLength(50)]
+ public string PALLETTYPE { get; set; }
+
+ public decimal? LENGTHMAX { get; set; }
+
+ public decimal? LENGTHMIN { get; set; }
+
+ public decimal? WIDTHMAX { get; set; }
+
+ public decimal? WIDTHMIN { get; set; }
+
+ public decimal? HEIGHTMAX { get; set; }
+
+ public decimal? HEIGHTMIN { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_CONTAINER> BASE_CONTAINER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_PLACE.cs b/qqjf-Background/IWareDataAccess/EF/BASE_PLACE.cs
new file mode 100644
index 0000000..7e58a3e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_PLACE.cs
@@ -0,0 +1,43 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_PLACE
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_PLACE()
+ {
+ BASE_PLACE_VS_CONTAINER = new HashSet<BASE_PLACE_VS_CONTAINER>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string PLACE { get; set; }
+
+ public int? ROW { get; set; }
+
+ public int? COL { get; set; }
+
+ public int? LAYER { get; set; }
+
+ public int? SRMID { get; set; }
+
+ public int? ISFULL { get; set; }
+
+ public int? ISLOCK { get; set; }
+
+ public int? PLACETYPEID { get; set; }
+
+ public int? PLACELEVEL { get; set; }
+
+ public virtual BASE_PLACETYPE BASE_PLACETYPE { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_PLACE_VS_CONTAINER> BASE_PLACE_VS_CONTAINER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_PLACETYPE.cs b/qqjf-Background/IWareDataAccess/EF/BASE_PLACETYPE.cs
new file mode 100644
index 0000000..2c8965a
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_PLACETYPE.cs
@@ -0,0 +1,31 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_PLACETYPE
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_PLACETYPE()
+ {
+ BASE_PLACE = new HashSet<BASE_PLACE>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string PLACETYPE { get; set; }
+
+ public decimal? LENGTH { get; set; }
+
+ public decimal? WIDTH { get; set; }
+
+ public decimal? HEIGHT { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_PLACE> BASE_PLACE { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_PLACE_VS_CONTAINER.cs b/qqjf-Background/IWareDataAccess/EF/BASE_PLACE_VS_CONTAINER.cs
new file mode 100644
index 0000000..075987a
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_PLACE_VS_CONTAINER.cs
@@ -0,0 +1,36 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_PLACE_VS_CONTAINER
+ {
+ public int ID { get; set; }
+
+ public int? PLACEID { get; set; }
+
+ public int? CONTAINERID { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ [StringLength(50)]
+ public string STATUS { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ [StringLength(50)]
+ public string PVCCODE { get; set; }
+
+ public DateTime? DUETIME { get; set; }
+
+ [StringLength(50)]
+ public string TASKTYPE { get; set; }
+
+ public virtual BASE_CONTAINER BASE_CONTAINER { get; set; }
+
+ public virtual BASE_PLACE BASE_PLACE { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_PRINT.cs b/qqjf-Background/IWareDataAccess/EF/BASE_PRINT.cs
new file mode 100644
index 0000000..ae1f217
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_PRINT.cs
@@ -0,0 +1,52 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_PRINT
+ {
+ public int ID { get; set; }
+
+ public int TYPE { get; set; }
+
+ public int STATE { get; set; }
+
+ [StringLength(20)]
+ public string ITEMNUM { get; set; }
+
+ [StringLength(50)]
+ public string CVIQRCODE { get; set; }
+
+ [StringLength(20)]
+ public string ITEMTYPENUM { get; set; }
+
+ [StringLength(200)]
+ public string ITEMCODE { get; set; }
+
+ [StringLength(200)]
+ public string ITEMNAME { get; set; }
+
+ [StringLength(50)]
+ public string ISOK { get; set; }
+
+ public DateTime? CREATETIME { get; set; }
+
+ [StringLength(50)]
+ public string CVICODE { get; set; }
+
+ [StringLength(20)]
+ public string NUM { get; set; }
+
+ [StringLength(50)]
+ public string BACKUP1 { get; set; }
+
+ [StringLength(50)]
+ public string BACKUP2 { get; set; }
+
+ [StringLength(50)]
+ public string PRINTDEVNAME { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_PRODUCTIONLINE.cs b/qqjf-Background/IWareDataAccess/EF/BASE_PRODUCTIONLINE.cs
new file mode 100644
index 0000000..b110139
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_PRODUCTIONLINE.cs
@@ -0,0 +1,36 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_PRODUCTIONLINE
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public BASE_PRODUCTIONLINE()
+ {
+ ORDER_INORDER = new HashSet<ORDER_INORDER>();
+ ORDER_OUTORDER = new HashSet<ORDER_OUTORDER>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string PRODUCTIONLINECODE { get; set; }
+
+ [StringLength(50)]
+ public string PRODUCTIONLINENAME { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public int? ISDESTINATION { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_INORDER> ORDER_INORDER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_OUTORDER> ORDER_OUTORDER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/BASE_URL.cs b/qqjf-Background/IWareDataAccess/EF/BASE_URL.cs
new file mode 100644
index 0000000..b7db481
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/BASE_URL.cs
@@ -0,0 +1,18 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class BASE_URL
+ {
+ public int ID { get; set; }
+
+ public string URL { get; set; }
+
+ [StringLength(50)]
+ public string URLDES { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/CAR_CAR.cs b/qqjf-Background/IWareDataAccess/EF/CAR_CAR.cs
new file mode 100644
index 0000000..44d7bbc
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/CAR_CAR.cs
@@ -0,0 +1,33 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class CAR_CAR
+ {
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string CARNAME { get; set; }
+
+ [StringLength(50)]
+ public string CARCODE { get; set; }
+
+ public int? STATUS { get; set; }
+
+ public int? ISWORK { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public int? USERID { get; set; }
+
+ public int? CARTASKID { get; set; }
+
+ public virtual CAR_CARTASK CAR_CARTASK { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/CAR_CARTASK.cs b/qqjf-Background/IWareDataAccess/EF/CAR_CARTASK.cs
new file mode 100644
index 0000000..98b145e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/CAR_CARTASK.cs
@@ -0,0 +1,61 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class CAR_CARTASK
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public CAR_CARTASK()
+ {
+ CAR_CAR = new HashSet<CAR_CAR>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string CARTASKNAME { get; set; }
+
+ [StringLength(50)]
+ public string FROMDESTINATION { get; set; }
+
+ [StringLength(50)]
+ public string TODESTINATION { get; set; }
+
+ public int? CONTAINERID { get; set; }
+
+ [StringLength(50)]
+ public string TASKSTATUS { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ public int? CREATORID { get; set; }
+
+ public int? OUTORDERID { get; set; }
+
+ /// <summary>
+ /// 叉车司机
+ /// </summary>
+ public int? USERID { get; set; }
+
+ public DateTime? CREATETIME { get; set; }
+
+ public int? CREATEUSERID { get; set; }
+
+ public string ITEMDETAIL { get; set; }
+
+ public virtual BASE_CONTAINER BASE_CONTAINER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<CAR_CAR> CAR_CAR { get; set; }
+
+ public virtual ORDER_OUTORDER ORDER_OUTORDER { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/ERP_EPRORDER.cs b/qqjf-Background/IWareDataAccess/EF/ERP_EPRORDER.cs
new file mode 100644
index 0000000..cd830c2
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/ERP_EPRORDER.cs
@@ -0,0 +1,24 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class ERP_EPRORDER
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public ERP_EPRORDER()
+ {
+ ORDER_OUTORDER = new HashSet<ORDER_OUTORDER>();
+ }
+
+ public int ID { get; set; }
+
+ public int? ERPORDERID { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_OUTORDER> ORDER_OUTORDER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/KEYVALUE.cs b/qqjf-Background/IWareDataAccess/EF/KEYVALUE.cs
new file mode 100644
index 0000000..a42ac17
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/KEYVALUE.cs
@@ -0,0 +1,19 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ [Table("KEYVALUE")]
+ public partial class KEYVALUE
+ {
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string NAME { get; set; }
+
+ public int? VALUE { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/LOG_WMSLOG.cs b/qqjf-Background/IWareDataAccess/EF/LOG_WMSLOG.cs
new file mode 100644
index 0000000..6e3fe0d
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/LOG_WMSLOG.cs
@@ -0,0 +1,30 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class LOG_WMSLOG
+ {
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string LOGNAME { get; set; }
+
+ public string LOGDES { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ [StringLength(50)]
+ public string OPERATOR { get; set; }
+
+ public int? OPERATORID { get; set; }
+
+ public int? TYPE { get; set; }
+
+ [StringLength(50)]
+ public string DEC { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/Model.cs b/qqjf-Background/IWareDataAccess/EF/Model.cs
new file mode 100644
index 0000000..c38a140
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/Model.cs
@@ -0,0 +1,349 @@
+锘縩amespace IWareDataAccess.EF
+{
+ using System;
+ using System.Data.Entity;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Linq;
+
+ public partial class Model : DbContext
+ {
+ public Model()
+ : base("name=Model1")
+ {
+ }
+
+ public virtual DbSet<ALERT_ALERT> ALERT_ALERT { get; set; }
+ public virtual DbSet<ALERT_ALERTTIME> ALERT_ALERTTIME { get; set; }
+ public virtual DbSet<BASE_CONTAINER> BASE_CONTAINER { get; set; }
+ public virtual DbSet<BASE_CONTAINER_VS_ITEM> BASE_CONTAINER_VS_ITEM { get; set; }
+ public virtual DbSet<BASE_DESTINATION> BASE_DESTINATION { get; set; }
+ public virtual DbSet<BASE_DEVICE> BASE_DEVICE { get; set; }
+ public virtual DbSet<BASE_INTYPE> BASE_INTYPE { get; set; }
+ public virtual DbSet<BASE_ITEM> BASE_ITEM { get; set; }
+ public virtual DbSet<BASE_Material> BASE_Material { get; set; }
+ public virtual DbSet<BASE_PALLET> BASE_PALLET { get; set; }
+ public virtual DbSet<BASE_PLACE> BASE_PLACE { get; set; }
+ public virtual DbSet<BASE_PLACE_VS_CONTAINER> BASE_PLACE_VS_CONTAINER { get; set; }
+ public virtual DbSet<BASE_PLACETYPE> BASE_PLACETYPE { get; set; }
+ public virtual DbSet<BASE_PRINT> BASE_PRINT { get; set; }
+ public virtual DbSet<BASE_PRODUCTIONLINE> BASE_PRODUCTIONLINE { get; set; }
+ public virtual DbSet<BASE_URL> BASE_URL { get; set; }
+ public virtual DbSet<CAR_CAR> CAR_CAR { get; set; }
+ public virtual DbSet<CAR_CARTASK> CAR_CARTASK { get; set; }
+ public virtual DbSet<ERP_EPRORDER> ERP_EPRORDER { get; set; }
+ public virtual DbSet<KEYVALUE> KEYVALUE { get; set; }
+ public virtual DbSet<LOG_WMSLOG> LOG_WMSLOG { get; set; }
+ public virtual DbSet<ORDER_INORDER> ORDER_INORDER { get; set; }
+ public virtual DbSet<ORDER_OUTORDER> ORDER_OUTORDER { get; set; }
+ public virtual DbSet<PDA_VERSION> PDA_VERSION { get; set; }
+ public virtual DbSet<RECORD_WAREHOUSEINFO> RECORD_WAREHOUSEINFO { get; set; }
+ public virtual DbSet<RgvTask> RgvTask { get; set; }
+ public virtual DbSet<SrmTask> SrmTask { get; set; }
+ public virtual DbSet<STORAGERECORD> STORAGERECORD { get; set; }
+ public virtual DbSet<SYS_DEPT> SYS_DEPT { get; set; }
+ public virtual DbSet<SYS_PERMISSION> SYS_PERMISSION { get; set; }
+ public virtual DbSet<SYS_ROLE> SYS_ROLE { get; set; }
+ public virtual DbSet<SYS_ROLE_VS_PERMISSION> SYS_ROLE_VS_PERMISSION { get; set; }
+ public virtual DbSet<SYS_USER> SYS_USER { get; set; }
+ public virtual DbSet<SYS_USER_VS_ROLE> SYS_USER_VS_ROLE { get; set; }
+ public virtual DbSet<sysdiagrams> sysdiagrams { get; set; }
+ public virtual DbSet<TASK_RECORD> TASK_RECORD { get; set; }
+ public virtual DbSet<TASK_SRMRECORD> TASK_SRMRECORD { get; set; }
+ public virtual DbSet<TASK_TASK> TASK_TASK { get; set; }
+ public virtual DbSet<TranLock> TranLock { get; set; }
+ public virtual DbSet<TranTask> TranTask { get; set; }
+ public virtual DbSet<v3D_Inventory> v3D_Inventory { get; set; }
+ public virtual DbSet<v3D灞曠ず鏁版嵁> v3D灞曠ず鏁版嵁 { get; set; }
+ public virtual DbSet<View_ALERT_ALERT> View_ALERT_ALERT { get; set; }
+ public virtual DbSet<View_BASE_CONTAINER> View_BASE_CONTAINER { get; set; }
+ public virtual DbSet<View_BASE_CONTAINER_VS_ITEM> View_BASE_CONTAINER_VS_ITEM { get; set; }
+ public virtual DbSet<View_BASE_DEVICE> View_BASE_DEVICE { get; set; }
+ public virtual DbSet<View_BASE_INTYPE> View_BASE_INTYPE { get; set; }
+ public virtual DbSet<View_BASE_ITEM> View_BASE_ITEM { get; set; }
+ public virtual DbSet<View_BASE_PLACE> View_BASE_PLACE { get; set; }
+ public virtual DbSet<View_BASE_PLACE_VS_CONTAINER> View_BASE_PLACE_VS_CONTAINER { get; set; }
+ public virtual DbSet<View_BASE_PRODUCTIONLINE> View_BASE_PRODUCTIONLINE { get; set; }
+ public virtual DbSet<View_CAR_CAR> View_CAR_CAR { get; set; }
+ public virtual DbSet<View_CAR_CARTASK> View_CAR_CARTASK { get; set; }
+ public virtual DbSet<View_ITEMSTORAGE> View_ITEMSTORAGE { get; set; }
+ public virtual DbSet<View_ORDER_INORDER> View_ORDER_INORDER { get; set; }
+ public virtual DbSet<View_ORDER_OUTORDER> View_ORDER_OUTORDER { get; set; }
+ public virtual DbSet<View_RGVTASK> View_RGVTASK { get; set; }
+ public virtual DbSet<View_ROLE_VS_PERMISSION> View_ROLE_VS_PERMISSION { get; set; }
+ public virtual DbSet<View_SRMTASK> View_SRMTASK { get; set; }
+ public virtual DbSet<View_SYS_DEPT> View_SYS_DEPT { get; set; }
+ public virtual DbSet<View_SYS_PERMISSION> View_SYS_PERMISSION { get; set; }
+ public virtual DbSet<View_SYS_ROLE> View_SYS_ROLE { get; set; }
+ public virtual DbSet<View_SYS_USER> View_SYS_USER { get; set; }
+ public virtual DbSet<View_TASK_RECORD> View_TASK_RECORD { get; set; }
+ public virtual DbSet<View_TASK_SRMRECORD> View_TASK_SRMRECORD { get; set; }
+ public virtual DbSet<View_TASK_TASK> View_TASK_TASK { get; set; }
+
+ protected override void OnModelCreating(DbModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity<BASE_CONTAINER>()
+ .HasMany(e => e.BASE_CONTAINER_VS_ITEM)
+ .WithOptional(e => e.BASE_CONTAINER)
+ .HasForeignKey(e => e.CONTAINERID);
+
+ modelBuilder.Entity<BASE_CONTAINER>()
+ .HasMany(e => e.BASE_PLACE_VS_CONTAINER)
+ .WithOptional(e => e.BASE_CONTAINER)
+ .HasForeignKey(e => e.CONTAINERID);
+
+ modelBuilder.Entity<BASE_CONTAINER>()
+ .HasMany(e => e.CAR_CARTASK)
+ .WithOptional(e => e.BASE_CONTAINER)
+ .HasForeignKey(e => e.CONTAINERID);
+
+ modelBuilder.Entity<BASE_CONTAINER>()
+ .HasMany(e => e.TASK_RECORD)
+ .WithRequired(e => e.BASE_CONTAINER)
+ .HasForeignKey(e => e.CONTAINERID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<BASE_CONTAINER>()
+ .HasMany(e => e.TASK_SRMRECORD)
+ .WithOptional(e => e.BASE_CONTAINER)
+ .HasForeignKey(e => e.containerId);
+
+ modelBuilder.Entity<BASE_CONTAINER>()
+ .HasMany(e => e.TASK_TASK)
+ .WithOptional(e => e.BASE_CONTAINER)
+ .HasForeignKey(e => e.CONTAINERID);
+
+ modelBuilder.Entity<BASE_DEVICE>()
+ .HasMany(e => e.ALERT_ALERT)
+ .WithOptional(e => e.BASE_DEVICE)
+ .HasForeignKey(e => e.ALERTDEVICEID);
+
+ modelBuilder.Entity<BASE_INTYPE>()
+ .HasMany(e => e.BASE_CONTAINER_VS_ITEM)
+ .WithOptional(e => e.BASE_INTYPE)
+ .HasForeignKey(e => e.INTYPEID);
+
+ modelBuilder.Entity<BASE_ITEM>()
+ .HasMany(e => e.BASE_CONTAINER_VS_ITEM)
+ .WithOptional(e => e.BASE_ITEM)
+ .HasForeignKey(e => e.ITEMID);
+
+ modelBuilder.Entity<BASE_ITEM>()
+ .HasMany(e => e.ORDER_INORDER)
+ .WithOptional(e => e.BASE_ITEM)
+ .HasForeignKey(e => e.ITEMID);
+
+ modelBuilder.Entity<BASE_ITEM>()
+ .HasMany(e => e.ORDER_OUTORDER)
+ .WithOptional(e => e.BASE_ITEM)
+ .HasForeignKey(e => e.ITEMID);
+
+ modelBuilder.Entity<BASE_ITEM>()
+ .HasMany(e => e.TASK_RECORD)
+ .WithOptional(e => e.BASE_ITEM)
+ .HasForeignKey(e => e.ITEMID);
+
+ modelBuilder.Entity<BASE_ITEM>()
+ .HasMany(e => e.TASK_SRMRECORD)
+ .WithOptional(e => e.BASE_ITEM)
+ .HasForeignKey(e => e.itemId);
+
+ modelBuilder.Entity<BASE_PALLET>()
+ .HasMany(e => e.BASE_CONTAINER)
+ .WithOptional(e => e.BASE_PALLET)
+ .HasForeignKey(e => e.PALLETTYPEID);
+
+ modelBuilder.Entity<BASE_PLACE>()
+ .HasMany(e => e.BASE_PLACE_VS_CONTAINER)
+ .WithOptional(e => e.BASE_PLACE)
+ .HasForeignKey(e => e.PLACEID);
+
+ modelBuilder.Entity<BASE_PLACETYPE>()
+ .HasMany(e => e.BASE_PLACE)
+ .WithOptional(e => e.BASE_PLACETYPE)
+ .HasForeignKey(e => e.PLACETYPEID);
+
+ modelBuilder.Entity<BASE_PRODUCTIONLINE>()
+ .HasMany(e => e.ORDER_INORDER)
+ .WithOptional(e => e.BASE_PRODUCTIONLINE)
+ .HasForeignKey(e => e.CREATELINEID);
+
+ modelBuilder.Entity<BASE_PRODUCTIONLINE>()
+ .HasMany(e => e.ORDER_OUTORDER)
+ .WithOptional(e => e.BASE_PRODUCTIONLINE)
+ .HasForeignKey(e => e.TOLINEID);
+
+ modelBuilder.Entity<CAR_CARTASK>()
+ .HasMany(e => e.CAR_CAR)
+ .WithOptional(e => e.CAR_CARTASK)
+ .HasForeignKey(e => e.CARTASKID);
+
+ modelBuilder.Entity<ERP_EPRORDER>()
+ .HasMany(e => e.ORDER_OUTORDER)
+ .WithOptional(e => e.ERP_EPRORDER)
+ .HasForeignKey(e => e.ERPID);
+
+ modelBuilder.Entity<ORDER_INORDER>()
+ .HasMany(e => e.BASE_CONTAINER_VS_ITEM)
+ .WithOptional(e => e.ORDER_INORDER)
+ .HasForeignKey(e => e.INPLANID);
+
+ modelBuilder.Entity<ORDER_OUTORDER>()
+ .HasMany(e => e.BASE_CONTAINER_VS_ITEM)
+ .WithOptional(e => e.ORDER_OUTORDER)
+ .HasForeignKey(e => e.OUTPLANID);
+
+ modelBuilder.Entity<ORDER_OUTORDER>()
+ .HasMany(e => e.CAR_CARTASK)
+ .WithOptional(e => e.ORDER_OUTORDER)
+ .HasForeignKey(e => e.OUTORDERID);
+
+ modelBuilder.Entity<RgvTask>()
+ .HasMany(e => e.RgvTask1)
+ .WithOptional(e => e.RgvTask2)
+ .HasForeignKey(e => e.PRETASK);
+
+ modelBuilder.Entity<SYS_DEPT>()
+ .HasMany(e => e.SYS_USER)
+ .WithOptional(e => e.SYS_DEPT)
+ .HasForeignKey(e => e.DEPTID);
+
+ modelBuilder.Entity<SYS_PERMISSION>()
+ .HasMany(e => e.SYS_ROLE_VS_PERMISSION)
+ .WithRequired(e => e.SYS_PERMISSION)
+ .HasForeignKey(e => e.PERMISSIONID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<SYS_ROLE>()
+ .HasMany(e => e.SYS_ROLE_VS_PERMISSION)
+ .WithRequired(e => e.SYS_ROLE)
+ .HasForeignKey(e => e.ROLEID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<SYS_ROLE>()
+ .HasMany(e => e.SYS_USER_VS_ROLE)
+ .WithRequired(e => e.SYS_ROLE)
+ .HasForeignKey(e => e.ROLEID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.BASE_DESTINATION)
+ .WithOptional(e => e.SYS_USER)
+ .HasForeignKey(e => e.CREATOR);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.CAR_CAR)
+ .WithOptional(e => e.SYS_USER)
+ .HasForeignKey(e => e.USERID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.CAR_CARTASK)
+ .WithOptional(e => e.SYS_USER)
+ .HasForeignKey(e => e.CREATORID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.ORDER_INORDER)
+ .WithOptional(e => e.SYS_USER)
+ .HasForeignKey(e => e.CREATORID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.ORDER_INORDER1)
+ .WithOptional(e => e.SYS_USER1)
+ .HasForeignKey(e => e.SENDERID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.ORDER_INORDER2)
+ .WithOptional(e => e.SYS_USER2)
+ .HasForeignKey(e => e.CHECKERID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.ORDER_OUTORDER)
+ .WithOptional(e => e.SYS_USER)
+ .HasForeignKey(e => e.CREATORID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.SYS_ROLE)
+ .WithOptional(e => e.SYS_USER)
+ .HasForeignKey(e => e.CREATORID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.SYS_ROLE1)
+ .WithOptional(e => e.SYS_USER1)
+ .HasForeignKey(e => e.CREATORID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.SYS_USER1)
+ .WithOptional(e => e.SYS_USER2)
+ .HasForeignKey(e => e.CREATORID);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.SYS_USER_VS_ROLE)
+ .WithRequired(e => e.SYS_USER)
+ .HasForeignKey(e => e.USERID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<SYS_USER>()
+ .HasMany(e => e.TASK_TASK)
+ .WithOptional(e => e.SYS_USER)
+ .HasForeignKey(e => e.CREATEUSERID);
+
+ modelBuilder.Entity<TASK_TASK>()
+ .HasMany(e => e.RgvTask)
+ .WithRequired(e => e.TASK_TASK)
+ .HasForeignKey(e => e.FASTHERTASKID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<TASK_TASK>()
+ .HasMany(e => e.SrmTask)
+ .WithRequired(e => e.TASK_TASK)
+ .HasForeignKey(e => e.FASTHERTASKID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<TASK_TASK>()
+ .HasMany(e => e.TASK_RECORD)
+ .WithOptional(e => e.TASK_TASK)
+ .HasForeignKey(e => e.TASKID);
+
+ modelBuilder.Entity<TASK_TASK>()
+ .HasMany(e => e.TranTask)
+ .WithRequired(e => e.TASK_TASK)
+ .HasForeignKey(e => e.FASTHERTASKID)
+ .WillCascadeOnDelete(false);
+
+ modelBuilder.Entity<View_BASE_PLACE_VS_CONTAINER>()
+ .Property(e => e.isEmptyContainer)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<View_BASE_PLACE_VS_CONTAINER>()
+ .Property(e => e.stStatus)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<View_ITEMSTORAGE>()
+ .Property(e => e.storageName)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<View_ITEMSTORAGE>()
+ .Property(e => e.totalCost)
+ .HasPrecision(29, 2);
+
+ modelBuilder.Entity<View_ITEMSTORAGE>()
+ .Property(e => e.isMoreDay)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<View_ITEMSTORAGE>()
+ .Property(e => e.isLessDay)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<View_ITEMSTORAGE>()
+ .Property(e => e.isOverDay)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<View_RGVTASK>()
+ .Property(e => e.taskType)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<View_SRMTASK>()
+ .Property(e => e.taskType)
+ .IsUnicode(false);
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/ORDER_INORDER.cs b/qqjf-Background/IWareDataAccess/EF/ORDER_INORDER.cs
new file mode 100644
index 0000000..fa46316
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/ORDER_INORDER.cs
@@ -0,0 +1,149 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class ORDER_INORDER
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public ORDER_INORDER()
+ {
+ BASE_CONTAINER_VS_ITEM = new HashSet<BASE_CONTAINER_VS_ITEM>();
+ }
+
+ public int ID { get; set; }
+
+ /// <summary>
+ /// 计划单号
+ /// </summary>
+ [StringLength(50)]
+ public string INORDERCODE { get; set; }
+
+ [StringLength(50)]
+ public string ORDERTYPE { get; set; }
+
+ /// <summary>
+ /// 订单状态
+ /// </summary>
+ [StringLength(50)]
+ public string ORDERSTATUS { get; set; }
+
+ /// <summary>
+ /// 订单状态ID
+ /// </summary>
+ public int? OrderStatusId { get; set; }
+
+ /// <summary>
+ /// 总数
+ /// </summary>
+ public int? TOTALNUM { get; set; }
+
+ /// <summary>
+ /// 入库数量
+ /// </summary>
+ public int? DONENUM { get; set; }
+
+ /// <summary>
+ /// 线下交付数
+ /// </summary>
+ public int? UNLINENUM { get; set; }
+
+ /// <summary>
+ /// 总完工数(=入库数量+线下交付数)
+ /// </summary>
+ public int? AllFinishedNum { get; set; }
+
+ public decimal? TOTALWEIGHT { get; set; }
+
+ /// <summary>
+ /// 修改时间
+ /// </summary>
+ public DateTime? UPDATETIME { get; set; }
+
+ /// <summary>
+ /// 创建时间 【EditBy shaocx,2022-11-2】
+ /// </summary>
+ public DateTime? CreateTime { get; set; }
+
+ /// <summary>
+ /// 创建人ID
+ /// </summary>
+ public int? CREATORID { get; set; }
+
+ /// <summary>
+ /// 修改人ID
+ /// </summary>
+ public int? UpdateUserId { get; set; }
+
+ public int? ITEMID { get; set; }
+
+ public int? ISFINISH { get; set; }
+
+ public int? CREATELINEID { get; set; }
+
+ public DateTime? DOTIME { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ /// <summary>
+ /// 班组线
+ /// </summary>
+ public int? CLASSNO { get; set; }
+
+ public int? STATUS { get; set; }
+
+ /// <summary>
+ /// 发送人
+ /// </summary>
+ public int? SENDERID { get; set; }
+
+ /// <summary>
+ /// 提交审核时间
+ /// </summary>
+ public DateTime? SendTime { get; set; }
+
+ /// <summary>
+ /// 审核人
+ /// </summary>
+ public int? CHECKERID { get; set; }
+
+
+ /// <summary>
+ /// 审核时间
+ /// </summary>
+ public DateTime? CheckTime { get; set; }
+
+
+ /// <summary>
+ /// 审核结果
+ /// </summary>
+ public string CheckResult { get; set; }
+
+ /// <summary>
+ /// 审核理由
+ /// </summary>
+ public string CheckRemark { get; set; }
+
+ /// <summary>
+ /// 是否满足审核条件
+ /// </summary>
+ public bool? IsSatisfyAudit { get; set; }
+
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_CONTAINER_VS_ITEM> BASE_CONTAINER_VS_ITEM { get; set; }
+
+ public virtual BASE_ITEM BASE_ITEM { get; set; }
+
+ public virtual BASE_PRODUCTIONLINE BASE_PRODUCTIONLINE { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+
+ public virtual SYS_USER SYS_USER1 { get; set; }
+
+ public virtual SYS_USER SYS_USER2 { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/ORDER_OUTORDER.cs b/qqjf-Background/IWareDataAccess/EF/ORDER_OUTORDER.cs
new file mode 100644
index 0000000..599d6de
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/ORDER_OUTORDER.cs
@@ -0,0 +1,73 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class ORDER_OUTORDER
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public ORDER_OUTORDER()
+ {
+ BASE_CONTAINER_VS_ITEM = new HashSet<BASE_CONTAINER_VS_ITEM>();
+ CAR_CARTASK = new HashSet<CAR_CARTASK>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string OUTORDERCODE { get; set; }
+
+ [StringLength(50)]
+ public string ORDERTYPE { get; set; }
+
+ [StringLength(50)]
+ public string ORDERSTATUS { get; set; }
+
+ public int? ERPID { get; set; }
+
+ public DateTime? CHANGEDATE { get; set; }
+
+ public int? CHECKOUTNUM { get; set; }
+
+ public int? TOTALOUTNUM { get; set; }
+
+ public decimal? TOTALWEIGHT { get; set; }
+
+ public int? CREATORID { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ public int? ITEMID { get; set; }
+
+ public int? ISFINISH { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public DateTime? DOTIME { get; set; }
+
+ public int? TOLINEID { get; set; }
+
+ public int? TRANLINE { get; set; }
+
+ public int? ISERP { get; set; }
+
+ public int? CARUSERID { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_CONTAINER_VS_ITEM> BASE_CONTAINER_VS_ITEM { get; set; }
+
+ public virtual BASE_ITEM BASE_ITEM { get; set; }
+
+ public virtual BASE_PRODUCTIONLINE BASE_PRODUCTIONLINE { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<CAR_CARTASK> CAR_CARTASK { get; set; }
+
+ public virtual ERP_EPRORDER ERP_EPRORDER { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/PDA_VERSION.cs b/qqjf-Background/IWareDataAccess/EF/PDA_VERSION.cs
new file mode 100644
index 0000000..ba7fb7c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/PDA_VERSION.cs
@@ -0,0 +1,20 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class PDA_VERSION
+ {
+ public int Id { get; set; }
+
+ [StringLength(50)]
+ public string Version { get; set; }
+
+ public string Url { get; set; }
+
+ public DateTime? UpdateTime { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/RECORD_WAREHOUSEINFO.cs b/qqjf-Background/IWareDataAccess/EF/RECORD_WAREHOUSEINFO.cs
new file mode 100644
index 0000000..bfcb6e2
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/RECORD_WAREHOUSEINFO.cs
@@ -0,0 +1,25 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class RECORD_WAREHOUSEINFO
+ {
+ public int Id { get; set; }
+
+ public int? itemOver { get; set; }
+
+ public int? placeFull { get; set; }
+
+ public int? containerFull { get; set; }
+
+ public int? containerEmpty { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public DateTime? time { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/RgvTask.cs b/qqjf-Background/IWareDataAccess/EF/RgvTask.cs
new file mode 100644
index 0000000..6dfa320
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/RgvTask.cs
@@ -0,0 +1,49 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ [Table("RgvTask")]
+ public partial class RgvTask
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public RgvTask()
+ {
+ RgvTask1 = new HashSet<RgvTask>();
+ }
+
+ public int ID { get; set; }
+
+ public int FASTHERTASKID { get; set; }
+
+ public int ISRELEASED { get; set; }
+
+ public int HASFINISHED { get; set; }
+
+ public int SOURCEPLACE { get; set; }
+
+ public int TOPLACE { get; set; }
+
+ public int USERGVID { get; set; }
+
+ public int TASKTYPE { get; set; }
+
+ public int? PRETASK { get; set; }
+
+ public int? UPDATESRMTASK { get; set; }
+
+ public DateTime? FINISHTIME { get; set; }
+
+ public DateTime? DOTIME { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<RgvTask> RgvTask1 { get; set; }
+
+ public virtual RgvTask RgvTask2 { get; set; }
+
+ public virtual TASK_TASK TASK_TASK { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/STORAGERECORD.cs b/qqjf-Background/IWareDataAccess/EF/STORAGERECORD.cs
new file mode 100644
index 0000000..8bd2866
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/STORAGERECORD.cs
@@ -0,0 +1,26 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ [Table("STORAGERECORD")]
+ public partial class STORAGERECORD
+ {
+ public int ID { get; set; }
+
+ public int? ITEMID { get; set; }
+
+ public int CONTAINERID { get; set; }
+
+ public int PLACEID { get; set; }
+
+ public int? ITEMNUM { get; set; }
+
+ public DateTime? CREATETIME { get; set; }
+
+ public decimal? PRICE { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/SYS_DEPT.cs b/qqjf-Background/IWareDataAccess/EF/SYS_DEPT.cs
new file mode 100644
index 0000000..ee8f3db
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/SYS_DEPT.cs
@@ -0,0 +1,41 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class SYS_DEPT
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public SYS_DEPT()
+ {
+ SYS_USER = new HashSet<SYS_USER>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string DEPTNAME { get; set; }
+
+ [StringLength(50)]
+ public string TEL { get; set; }
+
+ [StringLength(50)]
+ public string ADDRESS { get; set; }
+
+ [StringLength(50)]
+ public string DEPTDES { get; set; }
+
+ [StringLength(50)]
+ public string EMALL { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_USER> SYS_USER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/SYS_PERMISSION.cs b/qqjf-Background/IWareDataAccess/EF/SYS_PERMISSION.cs
new file mode 100644
index 0000000..75f4b77
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/SYS_PERMISSION.cs
@@ -0,0 +1,47 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class SYS_PERMISSION
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public SYS_PERMISSION()
+ {
+ SYS_ROLE_VS_PERMISSION = new HashSet<SYS_ROLE_VS_PERMISSION>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string PERMISSION { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ [StringLength(50)]
+ public string BUTTONNAME { get; set; }
+
+ public int? FATHERPERMISSIONID { get; set; }
+
+ public int? PERMISSIONLEVEL { get; set; }
+
+ public int? ISBUTTON { get; set; }
+
+ [StringLength(300)]
+ public string PATH { get; set; }
+
+ [StringLength(300)]
+ public string ICON { get; set; }
+
+ public int? TYPE { get; set; }
+
+ [StringLength(50)]
+ public string DEC { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_ROLE_VS_PERMISSION> SYS_ROLE_VS_PERMISSION { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/SYS_ROLE.cs b/qqjf-Background/IWareDataAccess/EF/SYS_ROLE.cs
new file mode 100644
index 0000000..8ea1ded
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/SYS_ROLE.cs
@@ -0,0 +1,39 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class SYS_ROLE
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public SYS_ROLE()
+ {
+ SYS_ROLE_VS_PERMISSION = new HashSet<SYS_ROLE_VS_PERMISSION>();
+ SYS_USER_VS_ROLE = new HashSet<SYS_USER_VS_ROLE>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string ROLENAME { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public int? CREATORID { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+
+ public virtual SYS_USER SYS_USER1 { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_ROLE_VS_PERMISSION> SYS_ROLE_VS_PERMISSION { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_USER_VS_ROLE> SYS_USER_VS_ROLE { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/SYS_ROLE_VS_PERMISSION.cs b/qqjf-Background/IWareDataAccess/EF/SYS_ROLE_VS_PERMISSION.cs
new file mode 100644
index 0000000..fcb6a5b
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/SYS_ROLE_VS_PERMISSION.cs
@@ -0,0 +1,21 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class SYS_ROLE_VS_PERMISSION
+ {
+ public int ID { get; set; }
+
+ public int ROLEID { get; set; }
+
+ public int PERMISSIONID { get; set; }
+
+ public virtual SYS_PERMISSION SYS_PERMISSION { get; set; }
+
+ public virtual SYS_ROLE SYS_ROLE { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/SYS_USER.cs b/qqjf-Background/IWareDataAccess/EF/SYS_USER.cs
new file mode 100644
index 0000000..e65bc41
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/SYS_USER.cs
@@ -0,0 +1,97 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class SYS_USER
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public SYS_USER()
+ {
+ BASE_DESTINATION = new HashSet<BASE_DESTINATION>();
+ CAR_CAR = new HashSet<CAR_CAR>();
+ CAR_CARTASK = new HashSet<CAR_CARTASK>();
+ ORDER_INORDER = new HashSet<ORDER_INORDER>();
+ ORDER_INORDER1 = new HashSet<ORDER_INORDER>();
+ ORDER_INORDER2 = new HashSet<ORDER_INORDER>();
+ ORDER_OUTORDER = new HashSet<ORDER_OUTORDER>();
+ SYS_ROLE = new HashSet<SYS_ROLE>();
+ SYS_ROLE1 = new HashSet<SYS_ROLE>();
+ SYS_USER1 = new HashSet<SYS_USER>();
+ SYS_USER_VS_ROLE = new HashSet<SYS_USER_VS_ROLE>();
+ TASK_TASK = new HashSet<TASK_TASK>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string USERNAME { get; set; }
+
+ [StringLength(50)]
+ public string PASSWORD { get; set; }
+
+ public int? MOBILE { get; set; }
+
+ [StringLength(50)]
+ public string USERTRUENAME { get; set; }
+
+ public int? DEPTID { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ public int? CREATORID { get; set; }
+
+ public int? ISLOGIN { get; set; }
+
+ /// <summary>
+ /// 是否是 焊装审核组
+ /// </summary>
+ public bool? IsWeldingAuditGroup { get; set; }
+
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<BASE_DESTINATION> BASE_DESTINATION { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<CAR_CAR> CAR_CAR { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<CAR_CARTASK> CAR_CARTASK { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_INORDER> ORDER_INORDER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_INORDER> ORDER_INORDER1 { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_INORDER> ORDER_INORDER2 { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<ORDER_OUTORDER> ORDER_OUTORDER { get; set; }
+
+ public virtual SYS_DEPT SYS_DEPT { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_ROLE> SYS_ROLE { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_ROLE> SYS_ROLE1 { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_USER> SYS_USER1 { get; set; }
+
+ public virtual SYS_USER SYS_USER2 { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SYS_USER_VS_ROLE> SYS_USER_VS_ROLE { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_TASK> TASK_TASK { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/SYS_USER_VS_ROLE.cs b/qqjf-Background/IWareDataAccess/EF/SYS_USER_VS_ROLE.cs
new file mode 100644
index 0000000..18c83e7
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/SYS_USER_VS_ROLE.cs
@@ -0,0 +1,23 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class SYS_USER_VS_ROLE
+ {
+ public int ID { get; set; }
+
+ public int USERID { get; set; }
+
+ public int ROLEID { get; set; }
+
+ public DateTime? UPDATETIME { get; set; }
+
+ public virtual SYS_ROLE SYS_ROLE { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/SrmTask.cs b/qqjf-Background/IWareDataAccess/EF/SrmTask.cs
new file mode 100644
index 0000000..6c24469
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/SrmTask.cs
@@ -0,0 +1,51 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ [Table("SrmTask")]
+ public partial class SrmTask
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public SrmTask()
+ {
+ TASK_SRMRECORD = new HashSet<TASK_SRMRECORD>();
+ }
+
+ public int ID { get; set; }
+
+ public int FASTHERTASKID { get; set; }
+
+ public int ISRELEASED { get; set; }
+
+ public int HASFINISHED { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string SOURCEPLACE { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string TOPLACE { get; set; }
+
+ public int USESRMID { get; set; }
+
+ public int? PALLETTYPE { get; set; }
+
+ public int? SRMTASKTYPE { get; set; }
+
+ public DateTime? FINISHTIME { get; set; }
+
+ public DateTime? DOTIME { get; set; }
+
+ public int? NEEDTIME { get; set; }
+
+ public virtual TASK_TASK TASK_TASK { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_SRMRECORD> TASK_SRMRECORD { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/TASK_RECORD.cs b/qqjf-Background/IWareDataAccess/EF/TASK_RECORD.cs
new file mode 100644
index 0000000..7e843fd
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/TASK_RECORD.cs
@@ -0,0 +1,42 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class TASK_RECORD
+ {
+ public int ID { get; set; }
+
+ public int TYPE { get; set; }
+
+ public int? ITEMID { get; set; }
+
+ public int CONTAINERID { get; set; }
+
+ public int? TASKID { get; set; }
+
+ [StringLength(50)]
+ public string OUTORDERCODE { get; set; }
+
+ public int ENABLE { get; set; }
+
+ public DateTime CREATETIME { get; set; }
+
+ public int ITEMCOUNT { get; set; }
+
+ public int ISMAINOUT { get; set; }
+
+ public int? CREATEUSERID { get; set; }
+
+ public int? INORDERID { get; set; }
+
+ public virtual BASE_CONTAINER BASE_CONTAINER { get; set; }
+
+ public virtual BASE_ITEM BASE_ITEM { get; set; }
+
+ public virtual TASK_TASK TASK_TASK { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/TASK_SRMRECORD.cs b/qqjf-Background/IWareDataAccess/EF/TASK_SRMRECORD.cs
new file mode 100644
index 0000000..ea3e9bd
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/TASK_SRMRECORD.cs
@@ -0,0 +1,29 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class TASK_SRMRECORD
+ {
+ public int id { get; set; }
+
+ public int? srmTaskId { get; set; }
+
+ public int? containerId { get; set; }
+
+ public int? itemId { get; set; }
+
+ public DateTime? createTime { get; set; }
+
+ public int? itemCount { get; set; }
+
+ public virtual BASE_CONTAINER BASE_CONTAINER { get; set; }
+
+ public virtual BASE_ITEM BASE_ITEM { get; set; }
+
+ public virtual SrmTask SrmTask { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/TASK_TASK.cs b/qqjf-Background/IWareDataAccess/EF/TASK_TASK.cs
new file mode 100644
index 0000000..07ad8a6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/TASK_TASK.cs
@@ -0,0 +1,96 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class TASK_TASK
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public TASK_TASK()
+ {
+ RgvTask = new HashSet<RgvTask>();
+ SrmTask = new HashSet<SrmTask>();
+ TASK_RECORD = new HashSet<TASK_RECORD>();
+ TranTask = new HashSet<TranTask>();
+ }
+
+ public int ID { get; set; }
+
+ [StringLength(50)]
+ public string SOURCEPLACE { get; set; }
+
+ [StringLength(50)]
+ public string TOPLACE { get; set; }
+
+ public int? ORDERID { get; set; }
+
+ public int? TASKTYPE { get; set; }
+
+ [StringLength(50)]
+ public string TASKSTATUS { get; set; }
+
+ public DateTime? CREATETIME { get; set; }
+
+ public int? CREATEUSERID { get; set; }
+
+ public int? TASKLEVEL { get; set; }
+
+ public int? ISNEEDREDIRECT { get; set; }
+
+ public int? CONTAINERID { get; set; }
+
+ public int? HASFINISHED { get; set; }
+
+ public int? ERRORMSG { get; set; }
+
+ public int? ERRORDEVICEID { get; set; }
+
+ public int? ISERROR { get; set; }
+
+ public int? HASREADED { get; set; }
+
+ public int? OUTTYPE { get; set; }
+
+ public int? ENABLE { get; set; }
+
+ public DateTime? FINISHTIME { get; set; }
+
+ public DateTime? DOTIME { get; set; }
+
+ public int? ISHURRY { get; set; }
+
+ public int? NEEDTIME { get; set; }
+
+ [StringLength(50)]
+ public string LOCALDEVICE { get; set; }
+
+ [StringLength(50)]
+ public string LASTWEIGHT { get; set; }
+
+ [StringLength(50)]
+ public string CANNOTDO { get; set; }
+
+ public int? ISEXCHANGE { get; set; }
+
+ public int? MUST { get; set; }
+
+ public virtual BASE_CONTAINER BASE_CONTAINER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<RgvTask> RgvTask { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<SrmTask> SrmTask { get; set; }
+
+ public virtual SYS_USER SYS_USER { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TASK_RECORD> TASK_RECORD { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<TranTask> TranTask { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/TranLock.cs b/qqjf-Background/IWareDataAccess/EF/TranLock.cs
new file mode 100644
index 0000000..c310e2e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/TranLock.cs
@@ -0,0 +1,28 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ [Table("TranLock")]
+ public partial class TranLock
+ {
+ public int ID { get; set; }
+
+ public int TRANID { get; set; }
+
+ public int ISLOCK { get; set; }
+
+ public int LOCKDEVICEID { get; set; }
+
+ public int ISERRORLOCK { get; set; }
+
+ public int LOCAL { get; set; }
+
+ public int ISEAST { get; set; }
+
+ public int? ISFULL { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/TranTask.cs b/qqjf-Background/IWareDataAccess/EF/TranTask.cs
new file mode 100644
index 0000000..765e46c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/TranTask.cs
@@ -0,0 +1,34 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ [Table("TranTask")]
+ public partial class TranTask
+ {
+ public int ID { get; set; }
+
+ public int FASTHERTASKID { get; set; }
+
+ public int ISRELEASED { get; set; }
+
+ public int HASFINISHED { get; set; }
+
+ public int SOURCEPLACE { get; set; }
+
+ public int TOPLACE { get; set; }
+
+ public float? LENGTH { get; set; }
+
+ public float? HEIGHT { get; set; }
+
+ public float? WIDTH { get; set; }
+
+ public int? PALLETTYPE { get; set; }
+
+ public virtual TASK_TASK TASK_TASK { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_ALERT_ALERT.cs b/qqjf-Background/IWareDataAccess/EF/View_ALERT_ALERT.cs
new file mode 100644
index 0000000..6e68e35
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_ALERT_ALERT.cs
@@ -0,0 +1,32 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_ALERT_ALERT
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string alertName { get; set; }
+
+ [StringLength(50)]
+ public string alertDes { get; set; }
+
+ public DateTime? createTime { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+ public int? totalTime { get; set; }
+
+ [StringLength(50)]
+ public string deviceName { get; set; }
+
+ [StringLength(50)]
+ public string alertCode { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER.cs
new file mode 100644
index 0000000..8f78906
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER.cs
@@ -0,0 +1,44 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_CONTAINER
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string containerName { get; set; }
+
+ [StringLength(50)]
+ public string containerType { get; set; }
+
+ public int? status { get; set; }
+
+ public decimal? weight { get; set; }
+
+ public decimal? length { get; set; }
+
+ public decimal? height { get; set; }
+
+ public decimal? width { get; set; }
+
+ public decimal? weightDifference { get; set; }
+
+ public int? palletCode { get; set; }
+
+ [StringLength(50)]
+ public string palletType { get; set; }
+
+ public int? enable { get; set; }
+
+ [StringLength(50)]
+ public string containerDes { get; set; }
+
+ public int? isLock { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER_VS_ITEM.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER_VS_ITEM.cs
new file mode 100644
index 0000000..5d4b4ec
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_CONTAINER_VS_ITEM.cs
@@ -0,0 +1,87 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_CONTAINER_VS_ITEM
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ public decimal? itemWeight { get; set; }
+
+ [StringLength(50)]
+ public string itemType { get; set; }
+
+ public decimal? itemWeightDifference { get; set; }
+
+ [StringLength(50)]
+ public string containerName { get; set; }
+
+ [StringLength(50)]
+ public string containerType { get; set; }
+
+ public int? containerStatus { get; set; }
+
+ public decimal? containerWeight { get; set; }
+
+ public decimal? containerWeightDifference { get; set; }
+
+ [StringLength(50)]
+ public string inOrderCode { get; set; }
+
+ [StringLength(50)]
+ public string outOrderCode { get; set; }
+
+ /// <summary>
+ /// 创建时间/修改时间
+ /// </summary>
+ public DateTime? updateTime { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public int? isBad { get; set; }
+
+ public int? enable { get; set; }
+
+ [StringLength(50)]
+ public string badByFactory { get; set; }
+
+ public string image { get; set; }
+
+ [StringLength(50)]
+ public string createLine { get; set; }
+
+ public int? maxNum { get; set; }
+
+ [StringLength(50)]
+ public string inType { get; set; }
+
+ [StringLength(50)]
+ public string storeName { get; set; }
+
+ public decimal? price { get; set; }
+
+ [StringLength(50)]
+ public string unit { get; set; }
+
+ public decimal? getWeight { get; set; }
+
+ public decimal? totalWeight { get; set; }
+
+ [StringLength(50)]
+ public string cviCode { get; set; }
+
+ [StringLength(50)]
+ public string createUser { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_DEVICE.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_DEVICE.cs
new file mode 100644
index 0000000..0f6d81f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_DEVICE.cs
@@ -0,0 +1,23 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_DEVICE
+ {
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string deviceName { get; set; }
+
+ [StringLength(50)]
+ public string deviceType { get; set; }
+
+ public int? deviceId { get; set; }
+
+ public int? isLock { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_INTYPE.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_INTYPE.cs
new file mode 100644
index 0000000..76b51ba
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_INTYPE.cs
@@ -0,0 +1,19 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_INTYPE
+ {
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string inType { get; set; }
+
+ [StringLength(50)]
+ public string storeName { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_ITEM.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_ITEM.cs
new file mode 100644
index 0000000..aaa2c0f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_ITEM.cs
@@ -0,0 +1,55 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_ITEM
+ {
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ public decimal? weight { get; set; }
+
+ [StringLength(50)]
+ public string itemType { get; set; }
+
+ public decimal? weightDifference { get; set; }
+
+ public int? enable { get; set; }
+
+ public string image { get; set; }
+
+ [StringLength(50)]
+ public string createLine { get; set; }
+
+ public int? maxNum { get; set; }
+
+ public decimal? price { get; set; }
+
+ [StringLength(50)]
+ public string unit { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ [StringLength(500)]
+ public string useContainerType { get; set; }
+
+ public int? overDueTime { get; set; }
+
+ public int? maxStorage { get; set; }
+
+ public int? minStorage { get; set; }
+
+ public int? isLock { get; set; }
+
+ public int? storageEnable { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE.cs
new file mode 100644
index 0000000..7aa99bd
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE.cs
@@ -0,0 +1,43 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_PLACE
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string place { get; set; }
+
+ public int? row { get; set; }
+
+ public int? col { get; set; }
+
+ public int? layer { get; set; }
+
+ public int? srmId { get; set; }
+
+ public int? isFull { get; set; }
+
+ public int? isLock { get; set; }
+
+ [StringLength(50)]
+ public string placeType { get; set; }
+
+ public decimal? length { get; set; }
+
+ public decimal? width { get; set; }
+
+ public decimal? height { get; set; }
+
+ public int? placeLevel { get; set; }
+
+ [StringLength(143)]
+ public string specification { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE_VS_CONTAINER.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE_VS_CONTAINER.cs
new file mode 100644
index 0000000..4ec60b4
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_PLACE_VS_CONTAINER.cs
@@ -0,0 +1,95 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_PLACE_VS_CONTAINER
+ {
+ [Key]
+ [Column(Order = 0)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string place { get; set; }
+
+ [StringLength(50)]
+ public string containerName { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public int? isBad { get; set; }
+
+ [StringLength(50)]
+ public string badByFactory { get; set; }
+
+ public decimal? price { get; set; }
+
+ [StringLength(50)]
+ public string unit { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ [StringLength(50)]
+ public string status { get; set; }
+
+ public int? isFull { get; set; }
+
+ public int? isLock { get; set; }
+
+ [StringLength(50)]
+ public string pvcCode { get; set; }
+
+ public int? enable { get; set; }
+
+ public int? placeLevel { get; set; }
+
+ public int? enable2 { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ [StringLength(50)]
+ public string createLine { get; set; }
+
+ [StringLength(50)]
+ public string inType { get; set; }
+
+ [StringLength(50)]
+ public string palletType { get; set; }
+
+ public int? srmId { get; set; }
+
+ public int? overDueTime { get; set; }
+
+ public DateTime? Expr1 { get; set; }
+
+ public int? maxStorage { get; set; }
+
+ public int? minStorage { get; set; }
+
+ [Key]
+ [Column(Order = 1)]
+ [StringLength(2)]
+ public string isEmptyContainer { get; set; }
+
+ [Key]
+ [Column(Order = 2)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int stAge { get; set; }
+
+ [StringLength(4)]
+ public string stStatus { get; set; }
+
+ [StringLength(50)]
+ public string taskType { get; set; }
+
+ public DateTime? CVIUpdateTime { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_BASE_PRODUCTIONLINE.cs b/qqjf-Background/IWareDataAccess/EF/View_BASE_PRODUCTIONLINE.cs
new file mode 100644
index 0000000..625bf32
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_BASE_PRODUCTIONLINE.cs
@@ -0,0 +1,23 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_BASE_PRODUCTIONLINE
+ {
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string productionCode { get; set; }
+
+ [StringLength(50)]
+ public string productionName { get; set; }
+
+ public int? enable { get; set; }
+
+ public int? isDestination { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_CAR_CAR.cs b/qqjf-Background/IWareDataAccess/EF/View_CAR_CAR.cs
new file mode 100644
index 0000000..2e20a53
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_CAR_CAR.cs
@@ -0,0 +1,32 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_CAR_CAR
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string carName { get; set; }
+
+ [StringLength(50)]
+ public string carCode { get; set; }
+
+ public int? status { get; set; }
+
+ public int? isWork { get; set; }
+
+ public int? enable { get; set; }
+
+ [StringLength(50)]
+ public string userName { get; set; }
+
+ [StringLength(50)]
+ public string carTaskName { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_CAR_CARTASK.cs b/qqjf-Background/IWareDataAccess/EF/View_CAR_CARTASK.cs
new file mode 100644
index 0000000..ab93b60
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_CAR_CARTASK.cs
@@ -0,0 +1,46 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_CAR_CARTASK
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string carTaskName { get; set; }
+
+ [StringLength(50)]
+ public string fromDestination { get; set; }
+
+ [StringLength(50)]
+ public string toDestination { get; set; }
+
+ [StringLength(50)]
+ public string containerName { get; set; }
+
+ [StringLength(50)]
+ public string taskStatus { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ [StringLength(50)]
+ public string userName { get; set; }
+
+ [StringLength(50)]
+ public string outOrderCode { get; set; }
+
+ public DateTime? createTime { get; set; }
+
+ [StringLength(50)]
+ public string createUserName { get; set; }
+
+ public string itemDetail { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_ITEMSTORAGE.cs b/qqjf-Background/IWareDataAccess/EF/View_ITEMSTORAGE.cs
new file mode 100644
index 0000000..beb0e08
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_ITEMSTORAGE.cs
@@ -0,0 +1,75 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_ITEMSTORAGE
+ {
+ [Key]
+ [Column(Order = 0)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ [StringLength(50)]
+ public string createLine { get; set; }
+
+ public decimal? price { get; set; }
+
+ [StringLength(50)]
+ public string unit { get; set; }
+
+ public decimal? weight { get; set; }
+
+ public decimal? weightDifference { get; set; }
+
+ public int? maxNum { get; set; }
+
+ [StringLength(500)]
+ public string useContainerType { get; set; }
+
+ public int? itemNum { get; set; }
+
+ [Key]
+ [Column(Order = 1)]
+ [StringLength(6)]
+ public string storageName { get; set; }
+
+ public decimal? totalCost { get; set; }
+
+ public int? placeCount { get; set; }
+
+ [Key]
+ [Column(Order = 2)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int minStorage { get; set; }
+
+ [Key]
+ [Column(Order = 3)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int maxStorage { get; set; }
+
+ [Key]
+ [Column(Order = 4)]
+ [StringLength(2)]
+ public string isMoreDay { get; set; }
+
+ [Key]
+ [Column(Order = 5)]
+ [StringLength(2)]
+ public string isLessDay { get; set; }
+
+ [Key]
+ [Column(Order = 6)]
+ [StringLength(2)]
+ public string isOverDay { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_ORDER_INORDER.cs b/qqjf-Background/IWareDataAccess/EF/View_ORDER_INORDER.cs
new file mode 100644
index 0000000..5f81c6a
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_ORDER_INORDER.cs
@@ -0,0 +1,121 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_ORDER_INORDER
+ {
+ /// <summary>
+ /// 审核人ID
+ /// </summary>
+ public int? CHECKERID { get; set; }
+
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string inOrderCode { get; set; }
+
+ [StringLength(50)]
+ public string orderType { get; set; }
+
+ [StringLength(50)]
+ public string orderStatus { get; set; }
+
+ /// <summary>
+ /// 订单状态ID
+ /// </summary>
+ public int? OrderStatusId { get; set; }
+
+ public int? totalNum { get; set; }
+
+ public int? DoneNum { get; set; }
+
+ public int? unLineNum { get; set; }
+
+ public int? allFinishedNum { get; set; }
+
+ public decimal? totalWeight { get; set; }
+
+
+
+ public int? isFinish { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ public decimal? itemWeight { get; set; }
+
+ [StringLength(50)]
+ public string itemTYpe { get; set; }
+
+ public decimal? price { get; set; }
+
+ public int? enable { get; set; }
+
+ [StringLength(50)]
+ public string createLine { get; set; }
+
+ /// <summary>
+ /// 创建人
+ /// </summary>
+ [StringLength(50)]
+ public string createName { get; set; }
+
+ /// <summary>
+ /// 修改人
+ /// </summary>
+ public string updateName { get; set; }
+
+
+ /// <summary>
+ /// 修改时间
+ /// </summary>
+ public DateTime? updateTime { get; set; }
+
+ /// <summary>
+ /// 创建时间
+ /// </summary>
+ public DateTime? createTime { get; set; }
+
+
+ public int? classNo { get; set; }
+
+ public int? status { get; set; }
+
+ [StringLength(50)]
+ public string checkerName { get; set; }
+
+ [StringLength(50)]
+ public string senderName { get; set; }
+
+
+ /// <summary>
+ /// 审核时间
+ /// </summary>
+ public DateTime? CheckTime { get; set; }
+
+ /// <summary>
+ /// 审核结果
+ /// </summary>
+ public string CheckResult { get; set; }
+
+ /// <summary>
+ /// 提交审核时间
+ /// </summary>
+ public DateTime? SendTime { get; set; }
+
+ /// <summary>
+ /// 审核理由
+ /// </summary>
+ public string CheckRemark { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_ORDER_OUTORDER.cs b/qqjf-Background/IWareDataAccess/EF/View_ORDER_OUTORDER.cs
new file mode 100644
index 0000000..0c3d361
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_ORDER_OUTORDER.cs
@@ -0,0 +1,65 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_ORDER_OUTORDER
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string outOrderCode { get; set; }
+
+ [StringLength(50)]
+ public string orderType { get; set; }
+
+ [StringLength(50)]
+ public string orderStatus { get; set; }
+
+ public DateTime? changeDate { get; set; }
+
+ public int? checkOutNum { get; set; }
+
+ public int? totalOutNum { get; set; }
+
+ public decimal? totalWeight { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ public int? isFinish { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ [StringLength(50)]
+ public string itemType { get; set; }
+
+ [StringLength(50)]
+ public string productionLineCode { get; set; }
+
+ [StringLength(50)]
+ public string productionLineName { get; set; }
+
+ public int? erpOrderId { get; set; }
+
+ public int? tranLine { get; set; }
+
+ public int? isErp { get; set; }
+
+ [StringLength(50)]
+ public string userName { get; set; }
+
+ public int? carUserId { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_RGVTASK.cs b/qqjf-Background/IWareDataAccess/EF/View_RGVTASK.cs
new file mode 100644
index 0000000..a44a418
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_RGVTASK.cs
@@ -0,0 +1,57 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_RGVTASK
+ {
+ [Key]
+ [Column(Order = 0)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int mainTask { get; set; }
+
+ [Key]
+ [Column(Order = 1)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int isReleased { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+ [StringLength(4)]
+ public string taskType { get; set; }
+
+ [Key]
+ [Column(Order = 2)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int useRgvId { get; set; }
+
+ [Key]
+ [Column(Order = 3)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int toPlace { get; set; }
+
+ [Key]
+ [Column(Order = 4)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int sourcePlace { get; set; }
+
+ [Key]
+ [Column(Order = 5)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int hasFinished { get; set; }
+
+ [Key]
+ [Column(Order = 6)]
+ public int id { get; set; }
+
+ [StringLength(33)]
+ public string devName { get; set; }
+
+ public int? preTask { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_ROLE_VS_PERMISSION.cs b/qqjf-Background/IWareDataAccess/EF/View_ROLE_VS_PERMISSION.cs
new file mode 100644
index 0000000..d6ae27d
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_ROLE_VS_PERMISSION.cs
@@ -0,0 +1,20 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_ROLE_VS_PERMISSION
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string roleName { get; set; }
+
+ [StringLength(50)]
+ public string permission { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_SRMTASK.cs b/qqjf-Background/IWareDataAccess/EF/View_SRMTASK.cs
new file mode 100644
index 0000000..5675eb4
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_SRMTASK.cs
@@ -0,0 +1,53 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_SRMTASK
+ {
+ [Key]
+ [Column(Order = 0)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int mainTask { get; set; }
+
+ [Key]
+ [Column(Order = 1)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int isReleased { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+ [StringLength(4)]
+ public string taskType { get; set; }
+
+ public int? palletType { get; set; }
+
+ [Key]
+ [Column(Order = 2)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int useSrmId { get; set; }
+
+ [StringLength(81)]
+ public string toPlace { get; set; }
+
+ [StringLength(81)]
+ public string sourcePlace { get; set; }
+
+ [Key]
+ [Column(Order = 3)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int hasFinished { get; set; }
+
+ [Key]
+ [Column(Order = 4)]
+ public int id { get; set; }
+
+ [StringLength(36)]
+ public string devName { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_SYS_DEPT.cs b/qqjf-Background/IWareDataAccess/EF/View_SYS_DEPT.cs
new file mode 100644
index 0000000..29c7787
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_SYS_DEPT.cs
@@ -0,0 +1,23 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_SYS_DEPT
+ {
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string deptName { get; set; }
+
+ [StringLength(50)]
+ public string deptDes { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ public int? enable { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_SYS_PERMISSION.cs b/qqjf-Background/IWareDataAccess/EF/View_SYS_PERMISSION.cs
new file mode 100644
index 0000000..5ca4743
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_SYS_PERMISSION.cs
@@ -0,0 +1,22 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_SYS_PERMISSION
+ {
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string permission { get; set; }
+
+ public int? enable { get; set; }
+
+ public int? fatherPermissionId { get; set; }
+
+ public int? permissionLevel { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_SYS_ROLE.cs b/qqjf-Background/IWareDataAccess/EF/View_SYS_ROLE.cs
new file mode 100644
index 0000000..d9475d6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_SYS_ROLE.cs
@@ -0,0 +1,24 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_SYS_ROLE
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string roleName { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ [StringLength(50)]
+ public string userName { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_SYS_USER.cs b/qqjf-Background/IWareDataAccess/EF/View_SYS_USER.cs
new file mode 100644
index 0000000..32dac20
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_SYS_USER.cs
@@ -0,0 +1,41 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_SYS_USER
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string userName { get; set; }
+
+ [StringLength(50)]
+ public string userTrueName { get; set; }
+
+ [StringLength(50)]
+ public string passWord { get; set; }
+
+ [StringLength(50)]
+ public string roleName { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ [StringLength(50)]
+ public string deptName { get; set; }
+
+ [StringLength(50)]
+ public string createName { get; set; }
+
+ /// <summary>
+ /// 是否是 焊装审核组
+ /// </summary>
+ public bool? IsWeldingAuditGroup { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_TASK_RECORD.cs b/qqjf-Background/IWareDataAccess/EF/View_TASK_RECORD.cs
new file mode 100644
index 0000000..aaf0c22
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_TASK_RECORD.cs
@@ -0,0 +1,77 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_TASK_RECORD
+ {
+ [Key]
+ [Column(Order = 0)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ [StringLength(50)]
+ public string sourcePlace { get; set; }
+
+ [StringLength(50)]
+ public string toPlace { get; set; }
+
+ public int? taskType { get; set; }
+
+ [StringLength(50)]
+ public string taskStatus { get; set; }
+
+ public DateTime? taskCreateTime { get; set; }
+
+ [StringLength(50)]
+ public string containerName { get; set; }
+
+ [Key]
+ [Column(Order = 1)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int isMainOut { get; set; }
+
+ [Key]
+ [Column(Order = 2)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int itemCount { get; set; }
+
+ [Key]
+ [Column(Order = 3)]
+ public DateTime createTime { get; set; }
+
+ [Key]
+ [Column(Order = 4)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int enable { get; set; }
+
+ [StringLength(50)]
+ public string outOrderCode { get; set; }
+
+ [Key]
+ [Column(Order = 5)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int type { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ [StringLength(50)]
+ public string inOrderCode { get; set; }
+
+ [StringLength(50)]
+ public string createUser { get; set; }
+
+ public int? taskId { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_TASK_SRMRECORD.cs b/qqjf-Background/IWareDataAccess/EF/View_TASK_SRMRECORD.cs
new file mode 100644
index 0000000..46df20e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_TASK_SRMRECORD.cs
@@ -0,0 +1,41 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_TASK_SRMRECORD
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ public DateTime? createTime { get; set; }
+
+ public int? itemCount { get; set; }
+
+ public int? isReleased { get; set; }
+
+ public int? hasFinished { get; set; }
+
+ [StringLength(50)]
+ public string sourcePlace { get; set; }
+
+ [StringLength(50)]
+ public string toPlace { get; set; }
+
+ public int? fastherTaskId { get; set; }
+
+ [StringLength(50)]
+ public string containerName { get; set; }
+
+ [StringLength(50)]
+ public string itemName { get; set; }
+
+ [StringLength(50)]
+ public string itemDes { get; set; }
+
+ public int? useSrmId { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/View_TASK_TASK.cs b/qqjf-Background/IWareDataAccess/EF/View_TASK_TASK.cs
new file mode 100644
index 0000000..207c013
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/View_TASK_TASK.cs
@@ -0,0 +1,78 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class View_TASK_TASK
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int id { get; set; }
+
+ [StringLength(50)]
+ public string sourcePlace { get; set; }
+
+ [StringLength(50)]
+ public string toPlace { get; set; }
+
+ public int? taskType { get; set; }
+
+ [StringLength(50)]
+ public string taskStatus { get; set; }
+
+ public DateTime? createTime { get; set; }
+
+ public int? taskLevel { get; set; }
+
+ public int? isNeedRedirect { get; set; }
+
+ public int? hasFinished { get; set; }
+
+ public int? errorMsg { get; set; }
+
+ public int? errorDeviceId { get; set; }
+
+ public int? isError { get; set; }
+
+ public int? hasReaded { get; set; }
+
+ public int? outType { get; set; }
+
+ [StringLength(50)]
+ public string containerName { get; set; }
+
+ public int? palletCode { get; set; }
+
+ public int? enable { get; set; }
+
+ [StringLength(50)]
+ public string userName { get; set; }
+
+ [StringLength(50)]
+ public string outOrderCode { get; set; }
+
+ [StringLength(50)]
+ public string palletType { get; set; }
+
+ public int? needTime { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+ [StringLength(50)]
+ public string localDevice { get; set; }
+
+ [StringLength(50)]
+ public string lastWeight { get; set; }
+
+ [StringLength(50)]
+ public string canNotDo { get; set; }
+
+ public int? isExchange { get; set; }
+
+ public int? must { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/sysdiagrams.cs b/qqjf-Background/IWareDataAccess/EF/sysdiagrams.cs
new file mode 100644
index 0000000..c2a4cb6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/sysdiagrams.cs
@@ -0,0 +1,24 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class sysdiagrams
+ {
+ [Required]
+ [StringLength(128)]
+ public string name { get; set; }
+
+ public int principal_id { get; set; }
+
+ [Key]
+ public int diagram_id { get; set; }
+
+ public int? version { get; set; }
+
+ public byte[] definition { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/EF/v3D_Inventory.cs b/qqjf-Background/IWareDataAccess/EF/v3D_Inventory.cs
new file mode 100644
index 0000000..a6bc6a8
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/EF/v3D_Inventory.cs
@@ -0,0 +1,26 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class v3D_Inventory
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int Product_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [StringLength(50)]
+ public string ProductName { get; set; }
+
+ [StringLength(50)]
+ public string PositionName { get; set; }
+
+ public int? ProductStorage { get; set; }
+ }
+}
diff --git "a/qqjf-Background/IWareDataAccess/EF/v3D\345\261\225\347\244\272\346\225\260\346\215\256.cs" "b/qqjf-Background/IWareDataAccess/EF/v3D\345\261\225\347\244\272\346\225\260\346\215\256.cs"
new file mode 100644
index 0000000..f394200
--- /dev/null
+++ "b/qqjf-Background/IWareDataAccess/EF/v3D\345\261\225\347\244\272\346\225\260\346\215\256.cs"
@@ -0,0 +1,34 @@
+namespace IWareDataAccess.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class v3D灞曠ず鏁版嵁
+ {
+ [StringLength(50)]
+ public string 璐т綅缂栧彿 { get; set; }
+
+ [Key]
+ [Column(Order = 0)]
+ [StringLength(50)]
+ public string 闆朵欢缂栧彿 { get; set; }
+
+ [Key]
+ [Column(Order = 1)]
+ [StringLength(50)]
+ public string 闆朵欢鍚嶇О { get; set; }
+
+ [Key]
+ [Column(Order = 2)]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public int 鏁伴噺 { get; set; }
+
+ public DateTime? 鍏ュ簱鏃堕棿 { get; set; }
+
+ [StringLength(50)]
+ public string 鍣ㄥ叿缂栧彿 { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Alert/AlertWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Alert/AlertWebEntity.cs
new file mode 100644
index 0000000..f63094c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Alert/AlertWebEntity.cs
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Alert
+{
+ public class AlertWebEntity
+ {
+ public int? id { get; set; }
+
+ public string alertName { get; set; }
+
+ public string alertDes { get; set; }
+
+ public DateTime? createTimeStart { get; set; }
+
+ public DateTime? createTimeEnd { get; set; }
+
+ public DateTime? finishTimeStart { get; set; }
+
+ public DateTime? finishTimeEnd { get; set; }
+
+ public int? totalTime { get; set; }
+
+ public string deviceName { get; set; }
+
+ public string alertCode { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/AddContainerVsItemWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/AddContainerVsItemWebEntity.cs
new file mode 100644
index 0000000..61c436e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/AddContainerVsItemWebEntity.cs
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class AddContainerVsItemWebEntity
+ {
+ public List<ContainerVsItemWebEntity> list { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemListWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemListWebEntity.cs
new file mode 100644
index 0000000..ca09307
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemListWebEntity.cs
@@ -0,0 +1,42 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ContainerVsItemListWebEntity
+ {
+ public string containerName { get; set; }
+
+ public int? isBad { get; set; }
+
+ public string badByFactory { get; set; }
+
+ public int? enable { get; set; }
+
+ public string inType { get; set; }
+
+ /// <summary>
+ /// 缁勭洏鍗曞彿
+ /// </summary>
+ public string cviCode { get; set; }
+
+ public string itemList { get; set; }
+
+ public string printDevName { get; set; }
+ public string img { get; set; }
+
+ public string createUser { get; set; }
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public ContainerVsItemListWebEntity()
+ {
+ //璁剧疆榛樿鍊�
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemWebEntity.cs
new file mode 100644
index 0000000..0eee7b9
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ContainerVsItemWebEntity.cs
@@ -0,0 +1,89 @@
+锘縰sing IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ContainerVsItemWebEntity
+ {
+ /// <summary>
+ /// 鏄惁鏌ヨ鏈叧鑱斿啿鍘嬬敓浜ц鍒掔殑浠诲姟 [EditBy shaocx,2022-11-1]
+ /// </summary>
+ [NoDbFilter]
+ public bool isSearchNoRelevanceInOrder { get; set; }
+ public int? id { get; set; }
+
+ public string itemName { get; set; }
+
+ public string itemDes { get; set; }
+
+ public decimal? itemWeight { get; set; }
+
+ public string itemType { get; set; }
+
+ public decimal? itemWeightDifference { get; set; }
+
+ public string containerName { get; set; }
+
+ public string containerType { get; set; }
+
+ public int? containerStatus { get; set; }
+
+ public decimal? containerWeight { get; set; }
+
+ public decimal? containerWeightDifference { get; set; }
+
+ public string inOrderCode { get; set; }
+
+ public string outOrderCode { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public int? isBad { get; set; }
+
+ public int? enable { get; set; }
+
+ public string badByFactory { get; set; }
+
+ public string image { get; set; }
+
+ public string createLine { get; set; }
+
+ public int? maxNum { get; set; }
+
+ public string inType { get; set; }
+
+ public string storeName { get; set; }
+
+ public decimal? price { get; set; }
+
+ public string unit { get; set; }
+
+ public decimal? getWeight { get; set; }
+
+ public decimal? totalWeight { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鐨� 鍐插帇鐢熶骇璁″垝鍙凤紙缁勭洏鍗曞彿锛�
+ /// </summary>
+ public string cviCode { get; set; }
+
+ public string createUser { get; set; }
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public ContainerVsItemWebEntity()
+ {
+ //璁剧疆榛樿鍊�
+ enable = 1;
+ isSearchNoRelevanceInOrder = false;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ContainerWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ContainerWebEntity.cs
new file mode 100644
index 0000000..5f172bf
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ContainerWebEntity.cs
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ContainerWebEntity
+ {
+ public int? id { get; set; }
+
+ public string containerName { get; set; }
+
+ public string containerType { get; set; }
+
+ public int? status { get; set; }
+
+ public decimal? weight { get; set; }
+
+ public decimal? length { get; set; }
+
+ public decimal? height { get; set; }
+
+ public decimal? width { get; set; }
+
+ public decimal? weightDifference { get; set; }
+
+ public int? palletCode { get; set; }
+
+ public string palletType { get; set; }
+
+ public int? enable { get; set; }
+
+ public string containerDes { get; set; }
+
+ public int? isLock { get; set; }
+
+ public ContainerWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/DeviceWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/DeviceWebEntity.cs
new file mode 100644
index 0000000..b780dd2
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/DeviceWebEntity.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class DeviceWebEntity
+ {
+ public int? id { get; set; }
+
+ public string deviceName { get; set; }
+
+ public string deviceType { get; set; }
+
+ public int? deviceId { get; set; }
+
+ public int? isLock { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/InOrderExcelEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/InOrderExcelEntity.cs
new file mode 100644
index 0000000..a1aa5ff
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/InOrderExcelEntity.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class InOrderExcelEntity
+ {
+
+ public string itemCode { get; set; }
+ public int itemNum { get; set; }
+
+ public DateTime createTime { get; set; }
+
+ public string inType { get; set; }
+
+ public string Desc { get; set; }
+
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/InTypeWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/InTypeWebEntity.cs
new file mode 100644
index 0000000..a086910
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/InTypeWebEntity.cs
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class InTypeWebEntity
+ {
+ public int? id { get; set; }
+
+ public string inType { get; set; }
+
+ public string storeName { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ItemListWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ItemListWebEntity.cs
new file mode 100644
index 0000000..ab9ad29
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ItemListWebEntity.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ItemListWebEntity
+ {
+ public string itemName { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public string inOrderCode { get; set; }
+
+ public string image { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ItemStorageWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ItemStorageWebEntity.cs
new file mode 100644
index 0000000..c0f8f0c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ItemStorageWebEntity.cs
@@ -0,0 +1,51 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ItemStorageWebEntity
+ {
+
+ public int? id { get; set; }
+
+
+ public string itemName { get; set; }
+
+
+ public string itemDes { get; set; }
+
+
+ public string createLine { get; set; }
+
+ public decimal? price { get; set; }
+
+
+ public string unit { get; set; }
+
+ public decimal? weight { get; set; }
+
+ public decimal? weightDifference { get; set; }
+
+ public int? maxNum { get; set; }
+
+
+ public string useContainerType { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public int? placeCount { get; set; }
+
+ public decimal? totalCost { get; set; }
+
+ public string storageName { get; set; }
+
+ public string isOverDay { get; set; }
+
+ public string isLessDay { get; set; }
+
+ public string isMoreDay { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ItemWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ItemWebEntity.cs
new file mode 100644
index 0000000..93f4e82
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ItemWebEntity.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ItemWebEntity
+ {
+ public int? id { get; set; }
+
+ public string itemName { get; set; }
+
+ public string itemDes { get; set; }
+
+ public decimal? weight { get; set; }
+
+ public string itemType { get; set; }
+
+ public decimal? weightDifference { get; set; }
+
+ public int? enable { get; set; }
+
+ public string image { get; set; }
+
+ public string createLine { get; set; }
+
+ public int? maxNum { get; set; }
+
+ public decimal? price { get; set; }
+
+ public string unit { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ public string useContainerType { get; set; }
+
+ public int? overDueTime { get; set; }
+
+ public int? maxStorage { get; set; }
+
+ public int? minStorage { get; set; }
+
+ public int? isLock { get; set; }
+
+ public int? storageEnable { get; set; }
+
+ public ItemWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/PalletWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/PalletWebEntity.cs
new file mode 100644
index 0000000..8691789
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/PalletWebEntity.cs
@@ -0,0 +1,28 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class PalletWebEntity
+ {
+ public int? id { get; set; }
+ public int? PalletCode { get; set; }
+
+ public string PalletType { get; set; }
+
+ public decimal? LengthMax { get; set; }
+
+ public decimal? LengthMin { get; set; }
+
+ public decimal? WidthMax { get; set; }
+
+ public decimal? WidthMin { get; set; }
+
+ public decimal? HeightMax { get; set; }
+
+ public decimal? HeightMin { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/PdaPermissionEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/PdaPermissionEntity.cs
new file mode 100644
index 0000000..16fcf2f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/PdaPermissionEntity.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class PdaPermissionEntity
+ {
+ public string title { get; set; }
+ public string name { get; set; }
+ public string color { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/PlaceEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceEntity.cs
new file mode 100644
index 0000000..21d20bd
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceEntity.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class PlaceEntity
+ {
+ public string placeCode { get; set; }
+ public string placeName { get; set; }
+
+ public int placeStates { get; set; }
+
+ public int? layer { get; set; }
+
+ public int? col { get; set; }
+
+ public int? row { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/PlaceStatusCountEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceStatusCountEntity.cs
new file mode 100644
index 0000000..d03bd66
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceStatusCountEntity.cs
@@ -0,0 +1,28 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class PlaceStatusCountEntity
+ {
+ public int lPlaceCount { get; set; }
+
+ public int ePlaceCount { get; set; }
+
+ public int cPlaceCount { get; set; }
+
+ public int iPlaceCount { get; set; }
+
+
+ public int lAllPlaceCount { get; set; }
+
+ public int eAllPlaceCount { get; set; }
+
+ public int cAllPlaceCount { get; set; }
+
+ public int iAllPlaceCount { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/PlaceVsContainerWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceVsContainerWebEntity.cs
new file mode 100644
index 0000000..b1c159e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceVsContainerWebEntity.cs
@@ -0,0 +1,77 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class PlaceVsContainerWebEntity
+ {
+ public int? id { get; set; }
+
+ public string place { get; set; }
+
+ public string containerName { get; set; }
+
+ public string itemName { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public int? isBad { get; set; }
+
+ public string badByFactory { get; set; }
+
+ public decimal? price { get; set; }
+
+ public string unit { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+
+ public DateTime? CVIUpdateTimeStart { get; set; }
+
+
+ public DateTime? CVIUpdateTimeEnd { get; set; }
+
+
+ public string status { get; set; }
+
+ public int? isFull { get; set; }
+
+ public int? isLock { get; set; }
+
+ public string pvcCode { get; set; }
+
+ public int? enable { get; set; }
+
+ public int? enable2 { get; set; }
+
+
+ public string itemDes { get; set; }
+
+ public string createLine { get; set; }
+
+ public string inType { get; set; }
+
+ public string palletType { get; set; }
+
+ public string isEmptyContainer { get; set; }
+
+ public int? stAge { get; set; }
+
+ public string stStatus { get; set; }
+
+ public string taskType { get; set; }
+
+
+ public PlaceVsContainerWebEntity()
+ {
+ //enable = 1;
+ //enable2 = 1;
+
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/PlaceWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceWebEntity.cs
new file mode 100644
index 0000000..f472b56
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/PlaceWebEntity.cs
@@ -0,0 +1,38 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class PlaceWebEntity
+ {
+ public int? id { get; set; }
+
+ public string place { get; set; }
+
+ public int? row { get; set; }
+
+ public int? col { get; set; }
+
+ public int? layer { get; set; }
+
+ public int? srmId { get; set; }
+
+ public int? isFull { get; set; }
+
+ public int? isLock { get; set; }
+
+ public string placeType { get; set; }
+
+ public decimal? length { get; set; }
+
+ public decimal? width { get; set; }
+
+ public decimal? height { get; set; }
+
+ public string specification { get; set; }
+ public int? placeLevel { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ProductionLineWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ProductionLineWebEntity.cs
new file mode 100644
index 0000000..b7888ec
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ProductionLineWebEntity.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ProductionLineWebEntity
+ {
+ public int? id { get; set; }
+
+ public string productionCode { get; set; }
+
+ public string productionName { get; set; }
+
+ public int? enable { get; set; }
+
+ public int? isDestination { get; set; }
+
+ public ProductionLineWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/ReturnItemStorageEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/ReturnItemStorageEntity.cs
new file mode 100644
index 0000000..6772e5d
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/ReturnItemStorageEntity.cs
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class ReturnItemStorageEntity
+ {
+ public string itemName { get; set; }
+
+ public string itemDes { get; set; }
+
+ public int? itemNum { get; set; }
+
+ public int minStorage { get; set; }
+
+ public int maxStorage { get; set; }
+
+ public string isOverDay { get; set; }
+
+ public string isLessDay { get; set; }
+
+ public string isMoreDay { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/UserRoleMenuEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/UserRoleMenuEntity.cs
new file mode 100644
index 0000000..7d8e462
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/UserRoleMenuEntity.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class UserRoleMenuEntity
+ {
+ public string path { get; set; }
+ public string name { get; set; }
+ public Meta meta { get; set; }
+ public List<UserRoleMenuEntity> children { get; set; }
+
+
+ }
+ public class Meta
+ {
+ public string title { get; set; }
+ public string icon { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/UserRolePermissionViewEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Base/UserRolePermissionViewEntity.cs
new file mode 100644
index 0000000..379edba
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/UserRolePermissionViewEntity.cs
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class UserRolePermissionViewEntity
+ {
+
+ public int menu_Id{get;set;}
+ public string menuName{get;set;}
+ public int parentId{get;set;}
+ public string hasChild { get; set; }
+ public string state { get; set; }
+ public List<AuthEntity> auth { get; set; }
+ public List<UserRolePermissionViewEntity> children { get; set; }
+
+ }
+ public class AuthEntity
+ {
+ public int menu_Id { get; set; }
+ public string label { get; set; }
+ public string nodeName { get; set; }
+ public int value { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Base/View_BASE_CONTAINER_VS_ITEMPrint.cs b/qqjf-Background/IWareDataAccess/Entity/Base/View_BASE_CONTAINER_VS_ITEMPrint.cs
new file mode 100644
index 0000000..3537690
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Base/View_BASE_CONTAINER_VS_ITEMPrint.cs
@@ -0,0 +1,69 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Base
+{
+ public class View_BASE_CONTAINER_VS_ITEMPrint
+ {
+ public int id { get; set; }
+
+ public string itemName { get; set; }
+
+ public string itemDes { get; set; }
+
+ public decimal? itemWeight { get; set; }
+
+ public string itemType { get; set; }
+
+ public decimal? itemWeightDifference { get; set; }
+
+ public string containerName { get; set; }
+
+ public string containerType { get; set; }
+
+ public int? containerStatus { get; set; }
+
+ public decimal? containerWeight { get; set; }
+
+ public decimal? containerWeightDifference { get; set; }
+
+ public string inOrderCode { get; set; }
+
+ public string outOrderCode { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ public string itemNum { get; set; }
+
+ public int? isBad { get; set; }
+
+ public int? enable { get; set; }
+
+ public string badByFactory { get; set; }
+
+ public string image { get; set; }
+
+ public string createLine { get; set; }
+
+ public int? maxNum { get; set; }
+
+ public string inType { get; set; }
+
+ public string storeName { get; set; }
+
+ public decimal? price { get; set; }
+
+ public string unit { get; set; }
+
+ public decimal? getWeight { get; set; }
+
+ public decimal? totalWeight { get; set; }
+
+ public string cviCode { get; set; }
+
+ public string createUser { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Car/CarTaskWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Car/CarTaskWebEntity.cs
new file mode 100644
index 0000000..5ff9f65
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Car/CarTaskWebEntity.cs
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Car
+{
+ public class CarTaskWebEntity
+ {
+ public int? id { get; set; }
+
+ public string carTaskName { get; set; }
+
+ public string fromDestination { get; set; }
+
+ public string toDestination { get; set; }
+
+ public string containerName { get; set; }
+
+ public string taskStatus { get; set; }
+
+ public string taskStatusNot { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ public string carName { get; set; }
+
+ public string userName { get; set; }
+
+ public string getUserName { get; set; }
+
+ public string itemDetail { get; set; }
+
+ public CarTaskWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Car/CarWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Car/CarWebEntity.cs
new file mode 100644
index 0000000..8332706
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Car/CarWebEntity.cs
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Car
+{
+ public class CarWebEntity
+ {
+ public int? id { get; set; }
+
+ public string carName { get; set; }
+
+ public string carCode { get; set; }
+
+ public int? status { get; set; }
+
+ public int? isWork { get; set; }
+
+ public int? enable { get; set; }
+
+ public string userName { get; set; }
+
+ public string carTaskName { get; set; }
+
+ public CarWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Order/InOrderWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Order/InOrderWebEntity.cs
new file mode 100644
index 0000000..d26dfa0
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Order/InOrderWebEntity.cs
@@ -0,0 +1,103 @@
+锘縰sing IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Order
+{
+ public class InOrderWebEntity
+ {
+
+ public DateTime? createTimeStart { get; set; }
+
+ public DateTime? createTimeEnd { get; set; }
+
+ /// <summary>
+ /// 椤甸潰绫诲瀷 ,瀵瑰簲鏋氫妇 InOrderPageTypeEnum
+ /// </summary>
+ [NoDbFilter]
+ public string InOrderPageType { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳浜篒D
+ /// </summary>
+ public int? CHECKERID { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鑰�
+ /// </summary>
+ public string userName { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鑰匢D
+ /// </summary>
+ public int? creatorId { get; set; }
+
+ public int? id { get; set; }
+
+ public string inOrderCode { get; set; }
+
+ public string orderType { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鐘舵�佸悕绉�
+ /// </summary>
+ public string orderStatus { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鐘舵�両D
+ /// </summary>
+ public int? OrderStatusId { get; set; }
+
+ public int? totalNum { get; set; }
+
+ public int? doneNum { get; set; }
+
+ public int? unLineNum { get; set; }
+
+ public decimal? totalWeight { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ public int? isFinsish { get; set; }
+
+ public string createLine { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? doTimeStart { get; set; }
+
+ public DateTime? doTimeEnd { get; set; }
+
+ public string itemName { get; set; }
+
+ public string itemDes { get; set; }
+
+ public decimal? itemWeight { get; set; }
+
+ public string itemType { get; set; }
+
+ public decimal? price { get; set; }
+
+ public int? enable { get; set; }
+
+ //public string createName { get; set; }
+
+ public int? classNo { get; set; }
+
+ public int? status { get; set; }
+
+ public string checkerName { get; set; }
+
+ public string senderName { get; set; }
+
+ public InOrderWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Order/OutOrderWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Order/OutOrderWebEntity.cs
new file mode 100644
index 0000000..5c7ac69
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Order/OutOrderWebEntity.cs
@@ -0,0 +1,71 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Order
+{
+ public class OutOrderWebEntity
+ {
+ public int? id { get; set; }
+
+ public string outOrderCode { get; set; }
+
+ public string orderType { get; set; }
+
+ public string orderStatus { get; set; }
+
+ public DateTime? changeDate { get; set; }
+
+ public DateTime? changeDateStart { get; set; }
+
+ public DateTime? changeDateEnd { get; set; }
+
+ public int? checkOutNum { get; set; }
+
+ public int? totalOutNum { get; set; }
+
+ public decimal? totalWeight { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ public int? isFinish { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? doTimeStart { get; set; }
+
+ public DateTime? doTimeEnd { get; set; }
+
+ public string itemName { get; set; }
+
+ public string itemDes { get; set; }
+
+ public string itemType { get; set; }
+
+ public string productionLineCode { get; set; }
+
+ public string productionLineName { get; set; }
+
+ public int? erpOrderId { get; set; }
+
+ public string userName { get; set; }
+
+ public int? tranLine { get; set; }
+
+ public int? isErp { get; set; }
+
+ public int? CarUserId { get; set; }
+
+ public OutOrderWebEntity()
+ {
+ enable = 1;
+ isErp = 0;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/PredicateBuilderNew.cs b/qqjf-Background/IWareDataAccess/Entity/PredicateBuilderNew.cs
new file mode 100644
index 0000000..c589da9
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/PredicateBuilderNew.cs
@@ -0,0 +1,140 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity
+{
+ /// <summary>
+ /// 璋撹瘝琛ㄨ揪寮忔瀯寤哄櫒
+ /// </summary>
+ public static class PredicateBuilderNew
+ {
+ #region Expression Joiner
+ /// <summary>
+ /// 鍒涘缓涓�涓�兼亽涓� <c>true</c> 鐨勮〃杈惧紡銆�
+ /// </summary>
+ /// <typeparam name="T">琛ㄨ揪寮忔柟娉曠被鍨�</typeparam>
+ /// <returns>涓�涓�兼亽涓� <c>true</c> 鐨勮〃杈惧紡銆�</returns>
+ public static Expression<Func<T, bool>> True<T>() { return p => true; }
+
+ /// <summary>
+ /// 鍒涘缓涓�涓�兼亽涓� <c>false</c> 鐨勮〃杈惧紡銆�
+ /// </summary>
+ /// <typeparam name="T">琛ㄨ揪寮忔柟娉曠被鍨�</typeparam>
+ /// <returns>涓�涓�兼亽涓� <c>false</c> 鐨勮〃杈惧紡銆�</returns>
+ public static Expression<Func<T, bool>> False<T>() { return f => false; }
+
+ /// <summary>
+ /// 浣跨敤 Expression.OrElse 鐨勬柟寮忔嫾鎺ヤ袱涓� System.Linq.Expression銆�
+ /// </summary>
+ /// <typeparam name="T">琛ㄨ揪寮忔柟娉曠被鍨�</typeparam>
+ /// <param name="left">宸﹁竟鐨� System.Linq.Expression 銆�</param>
+ /// <param name="right">鍙宠竟鐨� System.Linq.Expression銆�</param>
+ /// <returns>鎷兼帴瀹屾垚鐨� System.Linq.Expression銆�</returns>
+ public static Expression<T> Or<T>(this Expression<T> left, Expression<T> right)
+ {
+ return MakeBinary(left, right, Expression.OrElse);
+ }
+
+ /// <summary>
+ /// 浣跨敤 Expression.AndAlso 鐨勬柟寮忔嫾鎺ヤ袱涓� System.Linq.Expression銆�
+ /// </summary>
+ /// <typeparam name="T">琛ㄨ揪寮忔柟娉曠被鍨�</typeparam>
+ /// <param name="left">宸﹁竟鐨� System.Linq.Expression 銆�</param>
+ /// <param name="right">鍙宠竟鐨� System.Linq.Expression銆�</param>
+ /// <returns>鎷兼帴瀹屾垚鐨� System.Linq.Expression銆�</returns>
+ public static Expression<T> And<T>(this Expression<T> left, Expression<T> right)
+ {
+ return MakeBinary(left, right, Expression.AndAlso);
+ }
+
+ /// <summary>
+ /// 浣跨敤鑷畾涔夌殑鏂瑰紡鎷兼帴涓や釜 System.Linq.Expression銆�
+ /// </summary>
+ /// <typeparam name="T">琛ㄨ揪寮忔柟娉曠被鍨�</typeparam>
+ /// <param name="left">宸﹁竟鐨� System.Linq.Expression 銆�</param>
+ /// <param name="right">鍙宠竟鐨� System.Linq.Expression銆�</param>
+ /// <returns>鎷兼帴瀹屾垚鐨� System.Linq.Expression銆�</returns>
+ public static Expression<T> MakeBinary<T>(this Expression<T> left, Expression<T> right, Func<Expression, Expression, Expression> func)
+ {
+ return MakeBinary((LambdaExpression)left, right, func) as Expression<T>;
+ }
+
+ /// <summary>
+ /// 鎷兼帴涓や釜 <paramref name="System.Linq.Expression"/> 锛屼袱涓� <paramref name="System.Linq.Expression"/> 鐨勫弬鏁板繀椤诲畬鍏ㄧ浉鍚屻��
+ /// </summary>
+ /// <typeparam name="T">琛ㄨ揪寮忎腑鐨勫厓绱犵被鍨�</typeparam>
+ /// <param name="left">宸﹁竟鐨� <paramref name="System.Linq.Expression"/></param>
+ /// <param name="right">鍙宠竟鐨� <paramref name="System.Linq.Expression"/></param>
+ /// <param name="func">琛ㄨ揪寮忔嫾鎺ョ殑鍏蜂綋閫昏緫</param>
+ /// <returns>鎷兼帴瀹屾垚鐨� <paramref name="System.Linq.Expression"/></returns>
+ public static LambdaExpression MakeBinary(this LambdaExpression left, LambdaExpression right, Func<Expression, Expression, Expression> func)
+ {
+ var data = Combinate(right.Parameters, left.Parameters).ToArray();
+ right = ParameterReplace.Replace(right, data) as LambdaExpression;
+ return Expression.Lambda(func(left.Body, right.Body), left.Parameters.ToArray());
+ }
+ #endregion
+
+ #region Private Methods
+ private static IEnumerable<KeyValuePair<T, T>> Combinate<T>(IEnumerable<T> left, IEnumerable<T> right)
+ {
+ var a = left.GetEnumerator();
+ var b = right.GetEnumerator();
+ while (a.MoveNext() && b.MoveNext())
+ yield return new KeyValuePair<T, T>(a.Current, b.Current);
+ }
+ #endregion
+ }
+
+ #region class: ParameterReplace
+ internal sealed class ParameterReplace : ExpressionVisitor
+ {
+ public static Expression Replace(Expression e, IEnumerable<KeyValuePair<ParameterExpression, ParameterExpression>> paramList)
+ {
+ var item = new ParameterReplace(paramList);
+ return item.Visit(e);
+ }
+
+ private Dictionary<ParameterExpression, ParameterExpression> parameters = null;
+
+ public ParameterReplace(IEnumerable<KeyValuePair<ParameterExpression, ParameterExpression>> paramList)
+ {
+ parameters = paramList.ToDictionary(p => p.Key, p => p.Value, new ParameterEquality());
+ }
+
+ protected override Expression VisitParameter(ParameterExpression p)
+ {
+ ParameterExpression result;
+ if (parameters.TryGetValue(p, out result))
+ return result;
+ else
+ return base.VisitParameter(p);
+ }
+
+ #region class: ParameterEquality
+ private class ParameterEquality : IEqualityComparer<ParameterExpression>
+ {
+ public bool Equals(ParameterExpression x, ParameterExpression y)
+ {
+ if (x == null || y == null)
+ return false;
+
+ return x.Type == y.Type;
+ }
+
+ public int GetHashCode(ParameterExpression obj)
+ {
+ if (obj == null)
+ return 0;
+
+ return obj.Type.GetHashCode();
+ }
+ }
+ #endregion
+ }
+ #endregion
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/BarEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/BarEntity.cs
new file mode 100644
index 0000000..2e8d48a
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/BarEntity.cs
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class BarEntity
+ {
+ public List<string> legend { get; set; }
+ public List<string> xdata { get; set; }
+ public List<BarDate> data { get; set; }
+
+ public int? maxNum { get; set; }
+ }
+
+ public class BarDate
+ {
+
+ public string name { get; set; }
+
+ public List<string> xdata { get; set; }
+
+ //public string name2 { get; set; }
+
+ //public List<string> countSum { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/HomeBarEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/HomeBarEntity.cs
new file mode 100644
index 0000000..eb7dd8d
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/HomeBarEntity.cs
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class HomeBarEntity
+ {
+ public List<string> legend { get; set; }
+ public List<string> xdata { get; set; }
+ public List<Date> data { get; set; }
+ }
+
+ public class Date
+ {
+
+ public string name { get; set; }
+
+ public List<int> xdata { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntity.cs
new file mode 100644
index 0000000..6127f6c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntity.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class HomeNumDataEntity
+ {
+ public int no { get; set; }
+ public string titel { get; set; }
+ public int value { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntityVsTime.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntityVsTime.cs
new file mode 100644
index 0000000..4c93c69
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/HomeNumDataEntityVsTime.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class HomeNumDataEntityVsTime
+ {
+ public List<HomeNumDataEntity> homeNumDataEntityList { get; set; }
+
+ public DateTime time { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/HomePieDataEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/HomePieDataEntity.cs
new file mode 100644
index 0000000..05ac5b4
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/HomePieDataEntity.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class HomePieDataEntity
+ {
+ public string placeType {get;set; }
+
+ public int placeTotalNum { get; set; }
+ public int placeFullNum { get; set; }
+
+ public string placeRate { get; set; }
+
+ public int placeOtherVal { get; set; }
+
+ public int placeVal { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/PieEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/PieEntity.cs
new file mode 100644
index 0000000..b0e5bf3
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/PieEntity.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class PieEntity
+ {
+ public List<string> legend { get; set; }
+ public List<PieDate> data { get; set; }
+ }
+ public class PieDate
+ {
+
+ public string name { get; set; }
+
+ public string data { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/SummaryCommEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/SummaryCommEntity.cs
new file mode 100644
index 0000000..37b515f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/SummaryCommEntity.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class SummaryCommEntity
+ {
+ public int count1 { get; set; }
+ public int count2 { get; set; }
+
+ public decimal coast { get; set; }
+ public string time { get; set; }
+
+ public DateTime dtime { get; set; }
+
+ public string titel { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Summary/SummaryHomeEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Summary/SummaryHomeEntity.cs
new file mode 100644
index 0000000..7d62d52
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Summary/SummaryHomeEntity.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Summary
+{
+ public class SummaryHomeEntity
+ {
+ public int taskType { get; set; }
+
+ public int count { get; set; }
+
+ public string time { get; set; }
+ public string type { get; set; }
+
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Sys/DeptWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Sys/DeptWebEntity.cs
new file mode 100644
index 0000000..665dd8d
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Sys/DeptWebEntity.cs
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Sys
+{
+ public class DeptWebEntity
+ {
+ public int? id { get; set; }
+
+ public string deptName { get; set; }
+
+ public string deptDes { get; set; }
+
+ public DateTime? updateTime { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ public DeptWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Sys/PermissionVsRoleWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Sys/PermissionVsRoleWebEntity.cs
new file mode 100644
index 0000000..17ae61f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Sys/PermissionVsRoleWebEntity.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Sys
+{
+ public class PermissionVsRoleWebEntity
+ {
+ public string roleName { get; set; }
+
+ public List<int> permissionNameList = new List<int>();
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Sys/PermissionWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Sys/PermissionWebEntity.cs
new file mode 100644
index 0000000..07f1572
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Sys/PermissionWebEntity.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Sys
+{
+ public class PermissionWebEntity
+ {
+ public int? id { get; set; }
+
+ public string permission { get; set; }
+
+ public int? enable { get; set; }
+
+ public int? fatherPermissionId { get; set; }
+
+ public int? permissionLevel { get; set; }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Sys/RoleWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Sys/RoleWebEntity.cs
new file mode 100644
index 0000000..fd99ee2
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Sys/RoleWebEntity.cs
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Sys
+{
+ public class RoleWebEntity
+ {
+ public int? id { get; set; }
+
+ public string roleName { get; set; }
+
+ public int? enable { get; set; }
+
+ public string userName { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ public RoleWebEntity()
+ {
+
+ enable = 1;
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Sys/UserWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Sys/UserWebEntity.cs
new file mode 100644
index 0000000..9c88a0d
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Sys/UserWebEntity.cs
@@ -0,0 +1,42 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Sys
+{
+ public class UserWebEntity
+ {
+ public int? id { get; set; }
+
+ public string userName { get; set; }
+
+ public string userTrueName { get; set; }
+
+ public string password { get; set; }
+
+ public string roleName { get; set; }
+
+ public int? enable { get; set; }
+
+ public string createName { get; set; }
+
+ public string deptName { get; set; }
+
+ public DateTime? updateTimeStart { get; set; }
+
+ public DateTime? updateTimeEnd { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄� 鐒婅瀹℃牳缁�
+ /// </summary>
+ public bool? IsWeldingAuditGroup { get; set; }
+
+ public UserWebEntity()
+ {
+ enable = 1;
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/RgvTaskWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/RgvTaskWebEntity.cs
new file mode 100644
index 0000000..ec8c2fa
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/RgvTaskWebEntity.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class RgvTaskWebEntity
+ {
+
+ public int? mainTask { get; set; }
+
+
+ public int? isReleased { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+
+ public string taskType { get; set; }
+
+
+ public int? useRgvId { get; set; }
+
+
+ public int? toPlace { get; set; }
+
+
+ public int? sourcePlace { get; set; }
+
+
+ public int? hasFinished { get; set; }
+
+
+ public int? id { get; set; }
+
+
+ public string devName { get; set; }
+
+ public int? preTask { get; set; }
+ public DateTime? createTimeStart { get; set; }
+
+ public DateTime? createTimeEnd { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/SrmRecordWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/SrmRecordWebEntity.cs
new file mode 100644
index 0000000..9d5255b
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/SrmRecordWebEntity.cs
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class SrmRecordWebEntity
+ {
+ public int? id { get; set; }
+
+ public DateTime? createTimeEnd { get; set; }
+
+ public DateTime? createTimeStart { get; set; }
+
+ public int? itemCount { get; set; }
+
+ public int? isReleased { get; set; }
+
+ public int? hasFinished { get; set; }
+
+ public string sourcePlace { get; set; }
+
+ public string toPlace { get; set; }
+
+ public int? fastherTaskId { get; set; }
+
+ public string containerName { get; set; }
+
+ public string itemName { get; set; }
+
+ public string itemDes { get; set; }
+
+ public int? useSrmId { get; set; }
+
+ public string taskType { get; set; }
+
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/SrmTaskWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/SrmTaskWebEntity.cs
new file mode 100644
index 0000000..f5979d5
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/SrmTaskWebEntity.cs
@@ -0,0 +1,46 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class SrmTaskWebEntity
+ {
+ public int? mainTask { get; set; }
+
+ public int? isReleased { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+
+ public string taskType { get; set; }
+
+ public int? palletType { get; set; }
+
+
+ public int? useSrmId { get; set; }
+
+
+ public string toPlace { get; set; }
+
+
+ public string sourcePlace { get; set; }
+
+
+ public int? hasFinished { get; set; }
+
+
+ public int? id { get; set; }
+
+
+ public string devName { get; set; }
+
+ public DateTime? createTimeStart { get; set; }
+
+ public DateTime? createTimeEnd { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/TaskCommonEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/TaskCommonEntity.cs
new file mode 100644
index 0000000..ffda34e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/TaskCommonEntity.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class TaskCommonEntity
+ {
+ public int id{get;set;}
+
+ public string lable { get; set; }
+
+ public string value { get; set; }
+
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/TaskNumAllEnterWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/TaskNumAllEnterWebEntity.cs
new file mode 100644
index 0000000..f32db05
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/TaskNumAllEnterWebEntity.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class TaskNumAllEnterWebEntity
+ {
+ public List<TaskNumOnEnterWebEntity> outEnterVsNumList { get; set; }//鍑哄簱瀵瑰簲鍏崇郴
+
+ public List<TaskNumOnEnterWebEntity> inEnterVsNumList { get; set; }//鍏ュ簱瀵瑰簲鍏崇郴
+
+ public int outExchange { get; set; }//鍑哄簱缁忚繃涓浆鍙版暟
+
+ public int inExchange { get; set; }//鍏ュ簱缁忚繃涓浆鍙版暟
+
+ public int outNum { get; set; }//鍑哄簱鎬绘暟
+
+ public int inNum { get; set; }//鍏ュ簱鎬绘暟
+
+ public int allNum { get; set; }//鎬绘暟
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/TaskNumOnEnterWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/TaskNumOnEnterWebEntity.cs
new file mode 100644
index 0000000..986fea5
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/TaskNumOnEnterWebEntity.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class TaskNumOnEnterWebEntity
+ {
+ public int enter { get; set; }//鍑哄叆鍙�
+
+ public int num { get; set; }//浠诲姟鏁伴噺
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/TaskRecodeWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/TaskRecodeWebEntity.cs
new file mode 100644
index 0000000..1dfbc8c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/TaskRecodeWebEntity.cs
@@ -0,0 +1,67 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class TaskRecodeWebEntity
+ {
+ public int? id { get; set; }
+
+ public string itemName { get; set; }
+
+
+ public string itemDes { get; set; }
+
+
+ public string sourcePlace { get; set; }
+
+
+ public string toPlace { get; set; }
+
+ public int? taskType { get; set; }
+
+
+ public string taskStatus { get; set; }
+
+ public DateTime? taskCreateTime { get; set; }
+
+
+ public string containerName { get; set; }
+
+ public int? isMainOut { get; set; }
+
+
+ public int? itemCount { get; set; }
+
+
+ public DateTime? createTime { get; set; }
+
+
+
+ public string outOrderCode { get; set; }
+
+
+ public int? type { get; set; }
+
+ public int? enable { get; set; }
+
+ public DateTime? createTimeStart { get; set; }
+
+ public DateTime? createTimeEnd { get; set; }
+
+ public string createUser { get; set; }
+
+ public string inOrderCode { get; set; }
+
+ public int? taskId { get; set; }
+
+
+ public TaskRecodeWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/TaskWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/TaskWebEntity.cs
new file mode 100644
index 0000000..599a266
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/TaskWebEntity.cs
@@ -0,0 +1,77 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class TaskWebEntity
+ {
+ public int? id { get; set; }
+
+ public string sourcePlace { get; set; }
+
+ public string toPlace { get; set; }
+
+ public int? orderId { get; set; }
+
+ public int? taskType { get; set; }
+
+ public string taskStatus { get; set; }
+
+ public DateTime? createTimeStart { get; set; }
+
+ public DateTime? createTimeEnd { get; set; }
+
+ public string userName { get; set; }
+
+ public int? taskLevel { get; set; }
+
+ public int? isNeedRedirect { get; set; }
+
+ public int? hasFinish { get; set; }
+
+ public int? errorMsg { get; set; }
+
+ public int? errorDeviceId { get; set; }
+
+ public int? isError { get; set; }
+
+ public int? hasReaded { get; set; }
+
+ public int? outType { get; set; }
+
+ public string containerName { get; set; }
+
+ public int? palletCode { get; set; }
+
+ public int? enable { get; set; }
+
+ public int? isHurry { get; set; }
+
+ public string outOrderCode { get; set; }
+
+ public int? needTime { get; set; }
+
+ public DateTime? doTime { get; set; }
+
+ public DateTime? finishTime { get; set; }
+
+ public string localDevice { get; set; }
+
+ public string lastWeight { get; set; }
+
+ public string canNotDo { get; set; }
+
+ public int? isExchange { get; set; }
+
+ public int? must { get; set; }
+
+
+ public TaskWebEntity()
+ {
+ enable = 1;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Entity/Task/TimeVsTaskNumWebEntity.cs b/qqjf-Background/IWareDataAccess/Entity/Task/TimeVsTaskNumWebEntity.cs
new file mode 100644
index 0000000..f5d0618
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Entity/Task/TimeVsTaskNumWebEntity.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Entity.Task
+{
+ public class TimeVsTaskNumWebEntity
+ {
+ public string time { get; set; }//鏃堕棿娈�
+
+ public TaskNumAllEnterWebEntity data { get; set; }//璇︽儏
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Helper/Attribute/AttributeHelper.cs b/qqjf-Background/IWareDataAccess/Helper/Attribute/AttributeHelper.cs
new file mode 100644
index 0000000..c53d8c0
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Helper/Attribute/AttributeHelper.cs
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Helper
+{
+ public class AttributeHelper
+ {
+ /// <summary>
+ /// 鑾峰彇鐗规�с�愰潪鏁版嵁搴撳瓧娈佃繃婊ゅ睘鎬с��
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="t"></param>
+ /// <param name="pro"></param>
+ /// <returns></returns>
+ public static object[] GetNoDbFilterAttributeByPro(PropertyInfo pro)
+ {
+ object[] Attributes = pro.GetCustomAttributes(typeof(NoDbFilterAttribute), false);
+ return Attributes;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Helper/Attribute/NoDbFilterAttribute.cs b/qqjf-Background/IWareDataAccess/Helper/Attribute/NoDbFilterAttribute.cs
new file mode 100644
index 0000000..aedde35
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Helper/Attribute/NoDbFilterAttribute.cs
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Helper
+{
+ /// <summary>
+ /// 闈炴暟鎹簱瀛楁杩囨护灞炴�� 鐗规��
+ /// </summary>
+ public class NoDbFilterAttribute : Attribute
+ {
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Helper/ExcelHelper.cs b/qqjf-Background/IWareDataAccess/Helper/ExcelHelper.cs
new file mode 100644
index 0000000..089462a
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Helper/ExcelHelper.cs
@@ -0,0 +1,309 @@
+锘縰sing EnumType;
+using NPOI.SS.UserModel;
+using OfficeOpenXml;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Web;
+
+namespace IWareDataAccess.Helper
+{
+ public static class ExcelHelper
+ {
+
+ public static bool UploadFiles(HttpPostedFile file, string hostpath, out string msg)//
+ {
+ try
+ {
+ msg = "";
+ if (file == null)
+ {
+ msg="涓婁紶鐨勬枃浠朵负绌猴紝璇烽噸鏂颁笂浼�";
+ return false;
+ }
+ string filename = Path.GetFileName(file.FileName);
+ string fileEx = Path.GetExtension(filename);//鑾峰彇涓婁紶鏂囦欢鐨勬墿灞曞悕
+ string NoFileName = Path.GetFileNameWithoutExtension(filename);//鑾峰彇鏃犳墿灞曞悕鐨勬枃浠跺悕
+ string FileType = ".xls,.xlsx";//瀹氫箟涓婁紶鏂囦欢鐨勭被鍨嬪瓧绗︿覆
+ if (!FileType.Contains(fileEx))
+ {
+ msg="鏃犳晥鐨勬枃浠剁被鍨嬶紝鍙敮鎸�.xls鍜�.xlsx鏂囦欢";
+ return false;
+ }
+
+ //婧愭暟鎹�
+ MemoryStream msSource = new MemoryStream();
+ var fstream = file.InputStream;
+ byte[] b = new byte[fstream.Length];
+ fstream.Read(b, 0, b.Length);
+ msSource.Write(b, 0, b.Length);
+ msSource.Seek(0, SeekOrigin.Begin);
+ DataTable sourceExcel = ReadStreamToDataTable(msSource, "", true);
+
+ //妯℃澘鏁版嵁
+ string dataDir = hostpath;//鑾峰緱褰撳墠鏈嶅姟鍣ㄧ▼搴忕殑杩愯鐩綍
+ dataDir = Path.Combine(dataDir, "ExcelTemplate");
+ var path = dataDir + "//鍐插帇璁″垝.xlsx";
+ MemoryStream msModel = new MemoryStream();
+ FileStream stream = new FileStream(path, FileMode.Open);
+ stream.CopyTo(msModel);
+ msModel.Seek(0, SeekOrigin.Begin);
+ DataTable templateExcel = ReadStreamToDataTable(stream, "", true);
+ //楠岃瘉鏄惁鍚屾ā鏉跨浉鍚�
+ string columnName = templateExcel.Columns[0].ColumnName;
+ if (columnName != sourceExcel.Columns[0].ColumnName)
+ {
+ msg="涓婁紶鐨勬ā鏉挎枃浠朵笉姝g‘";
+ return false;
+ }
+ // 澶勭悊鍚庡彴閫昏緫 鎵ц 鎻掑叆鎿嶄綔
+
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ msg="涓婁紶鐨勬ā鏉挎枃浠朵笉姝g‘";
+ return false;
+ }
+ }
+
+
+ public static DataTable ReadStreamToDataTable(Stream fileStream, string sheetName = null, bool isFirstRowColumn = true)
+ {
+ //瀹氫箟瑕佽繑鍥炵殑datatable瀵硅薄
+ DataTable data = new DataTable();
+ //excel宸ヤ綔琛�
+ ISheet sheet = null;
+ //鏁版嵁寮�濮嬭(鎺掗櫎鏍囬琛�)
+ int startRow = 0;
+ try
+ {
+ //鏍规嵁鏂囦欢娴佸垱寤篹xcel鏁版嵁缁撴瀯,NPOI鐨勫伐鍘傜被WorkbookFactory浼氳嚜鍔ㄨ瘑鍒玡xcel鐗堟湰锛屽垱寤哄嚭涓嶅悓鐨別xcel鏁版嵁缁撴瀯
+ IWorkbook workbook = WorkbookFactory.Create(fileStream);
+ //濡傛灉鏈夋寚瀹氬伐浣滆〃鍚嶇О
+ if (!string.IsNullOrEmpty(sheetName))
+ {
+ sheet = workbook.GetSheet(sheetName);
+ //濡傛灉娌℃湁鎵惧埌鎸囧畾鐨剆heetName瀵瑰簲鐨剆heet锛屽垯灏濊瘯鑾峰彇绗竴涓猻heet
+ if (sheet == null)
+ {
+ sheet = workbook.GetSheetAt(0);
+ }
+ }
+ else
+ {
+ //濡傛灉娌℃湁鎸囧畾鐨剆heetName锛屽垯灏濊瘯鑾峰彇绗竴涓猻heet
+ sheet = workbook.GetSheetAt(0);
+ }
+ if (sheet != null)
+ {
+ IRow firstRow = sheet.GetRow(0);
+ //涓�琛屾渶鍚庝竴涓猚ell鐨勭紪鍙� 鍗虫�荤殑鍒楁暟
+ int cellCount = firstRow.LastCellNum;
+ //濡傛灉绗竴琛屾槸鏍囬鍒楀悕
+ if (isFirstRowColumn)
+ {
+ for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
+ {
+ ICell cell = firstRow.GetCell(i);
+ if (cell != null)
+ {
+ string cellValue = cell.StringCellValue;
+ if (cellValue != null)
+ {
+ DataColumn column = new DataColumn(cellValue);
+ data.Columns.Add(column);
+ }
+ }
+ }
+ startRow = sheet.FirstRowNum + 1;
+ }
+ else
+ {
+ startRow = sheet.FirstRowNum;
+ }
+ //鏈�鍚庝竴鍒楃殑鏍囧彿
+ int rowCount = sheet.LastRowNum;
+ for (int i = startRow; i <= rowCount; ++i)
+ {
+ IRow row = sheet.GetRow(i);
+ if (row == null || row.FirstCellNum < 0) continue; //娌℃湁鏁版嵁鐨勮榛樿鏄痭ull銆�銆�銆�銆�銆�銆�銆�
+
+ DataRow dataRow = data.NewRow();
+ for (int j = row.FirstCellNum; j < cellCount; ++j)
+ {
+ //鍚岀悊锛屾病鏈夋暟鎹殑鍗曞厓鏍奸兘榛樿鏄痭ull
+ ICell cell = row.GetCell(j);
+ if (cell != null)
+ {
+ if (cell.CellType == CellType.Numeric)
+ {
+ //鍒ゆ柇鏄惁鏃ユ湡绫诲瀷
+ if (DateUtil.IsCellDateFormatted(cell))
+ {
+ dataRow[j] = row.GetCell(j).DateCellValue;
+ }
+ else
+ {
+ dataRow[j] = row.GetCell(j).ToString().Trim();
+ }
+ }
+ else
+ {
+ dataRow[j] = row.GetCell(j).ToString().Trim();
+ }
+ }
+ }
+ data.Rows.Add(dataRow);
+ }
+ }
+ return data;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+
+ }
+
+
+ public static List<object> FromExcelByEPPlus<T>(string path, string sheetname,T t,out string msg)
+ {
+ msg = "";
+
+ //鏂囦欢涓嶅瓨鍦�
+ if (!File.Exists(path))
+ {
+ msg = "闇�瑕佺殑excel鏂囦欢涓嶅瓨鍦�";
+ return null;
+ }
+
+ //鏂囦欢鍚庣紑涓嶆槸xls鎴杧lsx
+ var fileSuffix = Path.GetExtension(path).ToUpper();
+
+ if (!".XLS".Equals(fileSuffix) && !".XLSX".Equals(fileSuffix))
+ {
+ msg = "璇ユ枃浠朵笉鏄痚xcel鏂囦欢";
+ return null;
+ }
+
+ try
+ {
+ var result = new List<List<object>>();
+ var package = new ExcelPackage(new FileInfo(path));
+
+ var worksheet = package.Workbook.Worksheets[sheetname];
+
+ if (worksheet == null || !sheetname.Equals(worksheet.Name))
+ {
+ msg = string.Format("鏈壘鍒癊xcel宸ヤ綔椤祘0}", sheetname);
+ return null;
+ }
+
+ Type type = t.GetType();
+ var tProps = type.GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList();
+ var propNames = new List<string>();
+ var tPropDic = new Dictionary<string, PropertyInfo>();
+
+
+ //閬嶅巻S鐨勬墍鏈夊睘鎬�,灏嗙鍚堜慨鏀圭殑瀛樺叆瀛楀吀涓�
+ tProps.ForEach(p => { propNames.Add(p.Name); tPropDic.Add(p.Name, p); });
+
+ var datas = new List<object>();
+
+ var dataStartLine = 2;
+
+ //鏄惁鍒版渶鍚庝竴琛�
+ bool endOfLine = false;
+
+ //褰撳墠琛屾暟
+ int lineIndex = 0;
+
+ while (!endOfLine)
+ {
+ //鍒ゆ柇鏄惁涓虹┖鏁版嵁
+ bool nullFlag = true;
+
+ var data = type.Assembly.CreateInstance(type.ToString());
+
+ for (int j = 0; j < propNames.Count; j++)
+ {
+ var workCell = tPropDic[propNames[j]];
+
+ object value = ((ExcelRangeBase)worksheet.Cells[dataStartLine + lineIndex, j + 1]).Value;
+ var pty = workCell.PropertyType.FullName;//鑾峰緱灞炴�х殑绫诲瀷
+ if (value != null && !string.IsNullOrEmpty(value.ToString()))
+ {
+ nullFlag = false;
+ if (pty == typeof(int).FullName)
+ {
+ value = Convert.ToInt32(value.ToString().Trim());
+ }
+ else if (pty == typeof(double).FullName)
+ {
+ value = Convert.ToDouble(value.ToString().Trim());
+ }
+ else if (pty == typeof(DateTime).FullName)
+ {
+ value = Convert.ToDateTime(value.ToString().Trim());
+ }
+ else if (pty == typeof(string).FullName)
+ {
+ value = value.ToString().Trim();
+ if (value.ToString().EndsWith("\r\n"))
+ {
+ value = value.ToString().Substring(0, value.ToString().Length - 2);
+ }
+ }
+ tPropDic[propNames[j]].SetValue(data, value, null);
+ }
+ else
+ {
+ if (pty == typeof(int).FullName)
+ {
+ value = 0;
+
+ }
+ else if (pty == typeof(double).FullName)
+ {
+ value = 0.0;
+ }
+ else if (pty == typeof(DateTime).FullName)
+ {
+ value = DateTime.Now; ;
+ }
+ else if (pty == typeof(string).FullName)
+ {
+ value = "";
+ }
+
+ tPropDic[propNames[j]].SetValue(data, value, null);
+ }
+ }
+ if (!nullFlag)
+ {
+ datas.Add(data);
+ lineIndex++;
+ continue;
+ }
+ endOfLine = true;
+ }
+
+
+ return datas;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+ return null;
+ }
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Helper/Helper.cs b/qqjf-Background/IWareDataAccess/Helper/Helper.cs
new file mode 100644
index 0000000..7834763
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Helper/Helper.cs
@@ -0,0 +1,290 @@
+锘縰sing iWareCommon.Utils;
+using IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Helper
+{
+ public static class Helper
+ {
+ /// <summary>
+ /// 鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯� 璁板綍鏃ュ織
+ /// </summary>
+ /// <param name="cviList"></param>
+ public static void LogRemoveBASE_CONTAINER_VS_ITEM(List<BASE_CONTAINER_VS_ITEM> cviList, string funName, string remark)
+ {
+ foreach (var item in cviList)
+ {
+ LogRemoveBASE_CONTAINER_VS_ITEM(item, funName, remark);
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯� 璁板綍鏃ュ織
+ /// </summary>
+ /// <param name="cviList"></param>
+ public static void LogRemoveBASE_CONTAINER_VS_ITEM(BASE_CONTAINER_VS_ITEM item, string funName, string remark)
+ {
+ var logTitle = "鏂规硶鍚�:" + funName + ",鍒犻櫎鍘熷洜:" + remark + ",";
+ try
+ {
+ //璁板綍鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯绘棩蹇� 銆怑ditby shaoc,2023-03-07銆�
+ Log4NetHelper.WriteInfoLog(LogType.RemoveBASE_CONTAINER_VS_ITEM,
+ logTitle +
+ "鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯� 鎴愬姛,cvi_id:" + item.ID + ",ITEMID:" + item.ITEMID + ",CONTAINERID:" + item.CONTAINERID
+ + ",CONTAINERNAME锛�" + item.BASE_CONTAINER.CONTAINERNAME
+ + ",ITEMNAME锛�" + item.BASE_ITEM.ITEMNAME
+ );
+ }
+ catch (Exception ex)
+ {
+ Log4NetHelper.WriteErrorLog(LogType.RemoveBASE_CONTAINER_VS_ITEM, logTitle + "璁板綍鍒犻櫎鎵樼洏鍜岀墿鏂欏叧绯诲け璐�:" + ex.Message + ",cvi_id:" + item.ID, ex);
+ }
+ }
+
+ /// <summary>
+ /// 璁$畻 鍐插帇璁″垝鍗曞彿鐨勬暟閲�
+ /// </summary>
+ /// <param name="oldCviCode"></param>
+ /// <param name="edm"></param>
+ /// <param name="cvi"></param>
+ public static void CalcInOrderNumPub(string oldCviCode, Model edm, BASE_CONTAINER_VS_ITEM cvi)
+ {
+ //璁$畻 銆怑ditBy shaocx,2022-11-08銆�
+ if (string.IsNullOrEmpty(oldCviCode))
+ {
+ if (!string.IsNullOrEmpty(cvi.CVICODE))
+ {
+ CalcInOrderNum(edm, cvi.CVICODE);
+ }
+ }
+ else
+ {//鍘熷厛鏈� 璁″垝鍗曞彿
+ if (string.IsNullOrEmpty(cvi.CVICODE))
+ {
+ CalcInOrderNum(edm, oldCviCode);
+ }
+ else
+ {
+ if (oldCviCode != cvi.CVICODE)
+ {
+ CalcInOrderNum(edm, oldCviCode);
+ CalcInOrderNum(edm, cvi.CVICODE);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 璁$畻 鍐插帇璁″垝鍗曞彿鐨勬暟閲�
+ /// </summary>
+ /// <param name="edm"></param>
+ /// <param name="cviCode"></param>
+ private static void CalcInOrderNum(Model edm, string cviCode)
+ {
+ List<BASE_CONTAINER_VS_ITEM> curCviList = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.CVICODE == cviCode).ToList();
+ //閲嶆柊璁$畻鍐插帇璁″垝鐨勬暟閲�
+
+ int doneNum = curCviList.Sum(x => x.ITEMNUM == null ? 0 : Convert.ToInt32(x.ITEMNUM));
+
+ var order = edm.ORDER_INORDER.Where(x => x.INORDERCODE == cviCode).FirstOrDefault();
+ if (order != null)
+ {
+ order.DONENUM = doneNum;
+ order.AllFinishedNum = (order.DONENUM ?? 0) + (order.UNLINENUM ?? 0);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇Dictionary鍊�
+ /// </summary>
+ /// <param name="dic"></param>
+ /// <param name="Type"></param>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ public static object GetValue(Dictionary<string, string> dic, string Type, string key)
+ {
+ string value;
+ if (dic.TryGetValue(key, out value))
+ {
+ if (Type == "string")
+ {
+ return value;
+ }
+ else if (Type == "int")
+ {
+ int intValue = 0;
+ if (int.TryParse(value, out intValue))
+ {
+ return intValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else if (Type == "datetime")
+ {
+ DateTime dateValue;
+ if (DateTime.TryParse(value, out dateValue))
+ {
+ return dateValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else if (Type == "decimal")
+ {
+ decimal decimalValue;
+ if (decimal.TryParse(value, out decimalValue))
+ {
+ return decimalValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 瀹炰綋杞敭鍊煎
+ /// </summary>
+ /// <typeparam name="T">娉涘瀷</typeparam>
+ /// <param name="obj"></param>
+ /// <returns></returns>
+ public static Dictionary<string, string> EntityToDictionary<T>(T obj) where T : class
+ {
+ //鍒濆鍖栧畾涔変竴涓敭鍊煎锛屾敞鎰忔渶鍚庣殑鎷彿
+ Dictionary<string, string> dic = new Dictionary<string, string>();
+ //杩斿洖褰撳墠 Type 鐨勬墍鏈夊叕鍏卞睘鎬roperty闆嗗悎
+ PropertyInfo[] props = typeof(T).GetProperties();
+ foreach (PropertyInfo p in props)
+ {
+ var property = obj.GetType().GetProperty(p.Name);//鑾峰彇property瀵硅薄
+ var value = p.GetValue(obj);//鑾峰彇灞炴�у��
+ dic.Add(p.Name, Helper.valueOf(value));
+ }
+ return dic;
+ }
+
+ /// <summary>
+ /// 閬垮厤绌哄��
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <returns></returns>
+ public static String valueOf(Object obj)
+ {
+ return (obj == null) ? null : obj.ToString();
+ }
+
+ /// <summary>
+ /// 瀵嗙爜杞崲鎴怣D5
+ /// </summary>
+ /// <param name="pwd"></param>
+ /// <returns></returns>
+ public static string ParseMd5(string pwd)
+ {
+
+ var md5 = new MD5CryptoServiceProvider();
+ if (string.IsNullOrEmpty(pwd))
+ {
+ pwd = "";
+ }
+ var bytes = Encoding.UTF8.GetBytes(pwd);
+ bytes = md5.ComputeHash(bytes);
+ md5.Clear();
+
+ string ret = "";
+
+ for (int i = 0; i < bytes.Length; i++)
+ {
+ ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');
+ }
+
+ return ret.PadLeft(32, '0');
+ }
+
+ /// <summary>
+ /// 鑾峰彇灞炴�у��
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <param name="fieldName"></param>
+ public static object GetFieldValueByName(Object obj, String fieldName)
+ {
+ try
+ {
+ // 鑾峰彇obj绫荤殑瀛楄妭鏂囦欢瀵硅薄
+ Type c = obj.GetType();
+ // 鑾峰彇璇ョ被鐨勬垚鍛樺彉閲�
+ PropertyInfo f = c.GetProperty(fieldName);
+ if (f == null)
+ {
+ f = c.GetProperty(fieldName.ToUpper());//灏濊瘯澶у啓
+ }
+ // 缁欏彉閲忚祴鍊�
+ //f.SetValue(obj, value);
+ object v = f.GetValue(obj);
+ return v;
+ }
+ catch
+ {
+ return null;
+ }
+
+ }
+
+ /// <summary>
+ /// 娴佽浆鏂囦欢
+ /// </summary>
+ /// <param name="stream"></param>
+ /// <param name="fileName"></param>
+ public static void StreamToFile(Stream stream, string fileName)
+ {
+ if (!Directory.Exists(fileName))
+ {
+ Directory.CreateDirectory(fileName);
+ }
+ // 鎶� Stream 杞崲鎴� byte[]
+ byte[] bytes = new byte[stream.Length];
+ stream.Read(bytes, 0, bytes.Length);
+ // 璁剧疆褰撳墠娴佺殑浣嶇疆涓烘祦鐨勫紑濮�
+ stream.Seek(0, SeekOrigin.Begin);
+ // 鎶� byte[] 鍐欏叆鏂囦欢
+
+ FileStream fs = new FileStream(fileName, FileMode.Create);
+ BinaryWriter bw = new BinaryWriter(fs);
+ bw.Write(bytes);
+ bw.Close();
+ fs.Close();
+ }
+
+ ///鑾峰彇鏃堕棿鎴崇殑鏂规硶
+ public static string GetTimeStamp()
+ {
+ TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
+ return Convert.ToInt64(ts.TotalMilliseconds).ToString();
+ }
+
+ ///// <summary>
+ ///// 璁剧疆鍊硷紝绌哄�间繚鎸佸師鏍�
+ ///// </summary>
+ //public static object SetValueWithOutNull(object old,object newValue)
+ //{
+ // object value = (newValue != null) ? newValue : old;
+ // return value;
+ //}
+ }
+
+}
diff --git a/qqjf-Background/IWareDataAccess/Helper/PredicateBuilder.cs b/qqjf-Background/IWareDataAccess/Helper/PredicateBuilder.cs
new file mode 100644
index 0000000..0c03c43
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Helper/PredicateBuilder.cs
@@ -0,0 +1,128 @@
+锘縰sing IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Helper
+{
+ public static class PredicateBuilder
+ {
+ private const String str_Start = "Start";
+ private const String str_End = "End";
+
+ public static Expression<Func<T, bool>> True<T>()
+ {
+ return f => true;
+ }
+
+ public static Expression<Func<T, bool>> False<T>()
+ {
+ return f => false;
+ }
+
+ public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
+ Expression<Func<T, bool>> expr2)
+ {
+ var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
+ return Expression.Lambda<Func<T, bool>>
+ (Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters);
+ }
+
+ public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
+ Expression<Func<T, bool>> expr2)
+ {
+ var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
+ return Expression.Lambda<Func<T, bool>>
+ (Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
+
+
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇绛涢�夋潯浠剁殑鏌ヨ琛ㄨ揪寮�
+ /// </summary>
+ /// <typeparam name="T">鏌ヨ瀵硅薄</typeparam>
+ /// <typeparam name="T2">杩斿洖瀵硅薄</typeparam>
+ /// <param name="t"></param>
+ /// <returns></returns>
+ public static Expression<Func<T2, bool>> GetFilterExpression<T, T2>(T t)
+ {
+ var f = PredicateBuilder.True<T2>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = t.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ var _noDbFilterAttribute = AttributeHelper.GetNoDbFilterAttributeByPro(i);
+ if (_noDbFilterAttribute.Length > 0)
+ {
+ continue;
+ }
+ object v = Helper.GetFieldValueByName(t, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.GetFieldValueByName(x, i.Name) != null ? Helper.GetFieldValueByName(x, i.Name).ToString() == value : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+
+ if (i.Name.IndexOf(str_Start) > -1)
+ {
+ var name = GetTimeName(i.Name, str_Start);
+ //f = f.And(x => x.updateTime > value);
+ f = f.And(x => Helper.GetFieldValueByName(x, name) != null ? Convert.ToDateTime(Helper.GetFieldValueByName(x, name)) > value : false);
+ }
+ if (i.Name.IndexOf(str_End) > -1)
+ {
+ var name = GetTimeName(i.Name, str_End);
+ //f = f.And(x => x.updateTime < value);
+ f = f.And(x => Helper.GetFieldValueByName(x, name) != null ? Convert.ToDateTime(Helper.GetFieldValueByName(x, name)) < value : false);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ return f;
+ }
+
+
+
+ /// <summary>
+ /// 瑙f瀽鍓嶅彴鏌ヨ浼犺繃鏉ョ殑灞炴�у悕
+ /// </summary>
+ /// <param name="inputName"></param>
+ /// <returns></returns>
+ private static string GetTimeName(string inputName, string indexName)
+ {
+ //updateTimeStart updateTimeEnd
+ //doTimeStart doTimeEnd createTimeEnd
+ //createTimeStart
+
+ int index = 0;
+
+ index = inputName.IndexOf(indexName);
+ if (index > -1)
+ {
+ return inputName.Substring(0, index);
+ }
+ return inputName;
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Helper/SearchHelper.cs b/qqjf-Background/IWareDataAccess/Helper/SearchHelper.cs
new file mode 100644
index 0000000..e51c8bc
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Helper/SearchHelper.cs
@@ -0,0 +1,112 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Helper
+{
+ public static class SearchHelper
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="edm"></param>
+ /// <param name="pageIndex"></param>
+ /// <param name="pagecount"></param>
+ /// <param name="totalNum"></param>
+ /// <param name="parm"></param>
+ /// <param name="t"></param>
+ /// <returns></returns>
+ public static List<T> GetSearchData<T>(Model edm, int pageIndex, int pagecount, out int totalNum, Dictionary<string, object> parm, T t)
+ {
+ try
+ {
+
+ string className = t.GetType().Name;
+ var sqlParamsCount = new List<SqlParameter>();
+ var sqlParamsData = new List<SqlParameter>();
+ string sqlCount = "SELECT COUNT(*) FROM {0} WHERE 1=1";
+ sqlCount = string.Format(sqlCount, className);
+ string sqlData = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY id ) AS ROWNUM from {0} where 1=1";
+ sqlData = string.Format(sqlData, className);
+ if (parm.Count > 0)
+ {
+ if (!parm.Keys.Contains("?"))
+ {
+ bool bl = true;
+ foreach (var key in parm.Keys)
+ {
+ if (parm[key] != null && !string.IsNullOrEmpty(parm[key] + ""))
+ {
+
+ object pi = parm[key];
+ Type ti = pi.GetType();
+ string iname = ti.Name;
+ if (iname == "String")
+ {
+ sqlParamsCount.Add(new SqlParameter("@S_" + key, "%" + parm[key] + "%"));
+ sqlParamsData.Add(new SqlParameter("@S_" + key, "%" + parm[key] + "%"));
+ sqlCount += string.Format(" AND {0} LIKE {1}", key, "@S_" + key);
+ sqlData += string.Format(" AND {0} LIKE {1}", key, "@S_" + key);
+ }
+ else if (iname == "Int32")
+ {
+ sqlParamsCount.Add(new SqlParameter("@S_" + key, parm[key]));
+ sqlParamsData.Add(new SqlParameter("@S_" + key, parm[key]));
+ sqlCount += string.Format(" AND {0} = {1}", key, "@S_" + key);
+ sqlData += string.Format(" AND {0} = {1}", key, "@S_" + key);
+ }
+ else if (iname == "DateTime")
+ {
+ if (bl)
+ {
+ sqlParamsCount.Add(new SqlParameter("@S_" + key, parm[key]));
+ sqlParamsData.Add(new SqlParameter("@S_" + key, parm[key]));
+ sqlCount += string.Format(" AND {0} >= {1}", key, "@S_" + key);
+ sqlData += string.Format(" AND {0} >= {1}", key, "@S_" + key);
+ bl = false;
+ }
+ else
+ {
+ sqlParamsCount.Add(new SqlParameter("@S_" + key, parm[key]));
+ sqlParamsData.Add(new SqlParameter("@S_" + key, parm[key]));
+ sqlCount += string.Format(" AND {0} <= {1}", key, "@S_" + key);
+ sqlData += string.Format(" AND {0} <= {1}", key, "@S_" + key);
+ }
+ }
+ }
+ }
+ }
+ }
+ pageIndex = pageIndex < 1 ? 1 : pageIndex;
+ pagecount = pagecount < 1 ? 10 : pagecount;
+ sqlParamsData.Add(new SqlParameter("@PI_Start", (pageIndex - 1) * pagecount + 1));
+ sqlParamsData.Add(new SqlParameter("@PI_End", pageIndex * pagecount));
+ sqlData += string.Format(") t Where t.ROWNUM between {0} and {1} ", "@PI_Start", "@PI_End");
+ totalNum = edm.Database.SqlQuery<int>(sqlCount, sqlParamsCount.ToArray()).ToList()[0];
+ var datas = edm.Database.SqlQuery<T>(sqlData, sqlParamsData.ToArray()).ToList();
+ if (datas != null)
+ {
+
+ return datas;
+ }
+ else
+ {
+ return new List<T>();
+ }
+
+ }
+ catch (Exception ex)
+ {
+ totalNum = 0;
+
+ return new List<T>();
+ }
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/IWareDataAccess.csproj b/qqjf-Background/IWareDataAccess/IWareDataAccess.csproj
new file mode 100644
index 0000000..20ba92b
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/IWareDataAccess.csproj
@@ -0,0 +1,302 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{56F658B5-5384-414E-8FAE-A78C8EE256E8}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>IWareDataAccess</RootNamespace>
+ <AssemblyName>IWareDataAccess</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <UseVSHostingProcess>true</UseVSHostingProcess>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework">
+ <HintPath>..\DLL\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.Extended">
+ <HintPath>..\DLL\EntityFramework.Extended.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer">
+ <HintPath>..\DLL\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="EPPlus">
+ <HintPath>..\packages\EPPlus\EPPlus.dll</HintPath>
+ </Reference>
+ <Reference Include="Interop.BarTender, Version=10.1.4.1, Culture=neutral, PublicKeyToken=109ff779a1b4cbc7, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <EmbedInteropTypes>True</EmbedInteropTypes>
+ <HintPath>..\packages\BarTender\BarTender\Interop.BarTender.dll</HintPath>
+ </Reference>
+ <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" />
+ <Reference Include="NPOI, Version=1.2.4.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\packages\NPOI.2.5.3\lib\net45\NPOI.dll</HintPath>
+ </Reference>
+ <Reference Include="NPOI.OOXML">
+ <HintPath>..\packages\NPOI.2.5.3\lib\net45\NPOI.OOXML.dll</HintPath>
+ </Reference>
+ <Reference Include="NPOI.OpenXml4Net">
+ <HintPath>..\packages\NPOI.2.5.3\lib\net45\NPOI.OpenXml4Net.dll</HintPath>
+ </Reference>
+ <Reference Include="NPOI.OpenXmlFormats">
+ <HintPath>..\packages\NPOI.2.5.3\lib\net45\NPOI.OpenXmlFormats.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Security" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Xml" />
+ <Reference Include="WZ.Useful.Commons">
+ <HintPath>..\DLL\WZ.Useful.Commons.dll</HintPath>
+ </Reference>
+ <Reference Include="Z.EntityFramework.Extensions">
+ <HintPath>..\DLL\Z.EntityFramework.Extensions.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Alert\ALERT\AlertSqlFunc.cs" />
+ <Compile Include="Base\CONTAINERVSITEM\ContainerVsItemSqlFunc.cs" />
+ <Compile Include="Base\CONTAINER\ContainerSqlFunc.cs" />
+ <Compile Include="Base\DEVICE\DeviceSqlFunc.cs" />
+ <Compile Include="Base\INTYPE\InTypeFunc.cs" />
+ <Compile Include="Base\ITEMSTORAGE\ItemStorageSqlFunc.cs" />
+ <Compile Include="Base\ITEM\ItemSqlFunc.cs" />
+ <Compile Include="Base\PALLET\PalletSqlFunc.cs" />
+ <Compile Include="Base\PLACEVSCONTAINER\PlaceVsContainerSqlFunc.cs" />
+ <Compile Include="Base\PLACE\PlaceSqlFunc.cs" />
+ <Compile Include="Base\PRINT\PrintSqlFunc.cs" />
+ <Compile Include="Base\PRODUCTIONLINE\ProductionLineSqlFunc.cs" />
+ <Compile Include="Car\CARTASK\CarTaskSqlFunc.cs" />
+ <Compile Include="Car\CAR\CarSqlFunc.cs" />
+ <Compile Include="EF\ALERT_ALERT.cs" />
+ <Compile Include="EF\ALERT_ALERTTIME.cs" />
+ <Compile Include="EF\BASE_CONTAINER.cs" />
+ <Compile Include="EF\BASE_CONTAINER_VS_ITEM.cs" />
+ <Compile Include="EF\BASE_DESTINATION.cs" />
+ <Compile Include="EF\BASE_DEVICE.cs" />
+ <Compile Include="EF\BASE_INTYPE.cs" />
+ <Compile Include="EF\BASE_ITEM.cs" />
+ <Compile Include="EF\BASE_Material.cs" />
+ <Compile Include="EF\BASE_PALLET.cs" />
+ <Compile Include="EF\BASE_PLACE.cs" />
+ <Compile Include="EF\BASE_PLACETYPE.cs" />
+ <Compile Include="EF\BASE_PLACE_VS_CONTAINER.cs" />
+ <Compile Include="EF\BASE_PRINT.cs" />
+ <Compile Include="EF\BASE_PRODUCTIONLINE.cs" />
+ <Compile Include="EF\BASE_URL.cs" />
+ <Compile Include="EF\CAR_CAR.cs" />
+ <Compile Include="EF\CAR_CARTASK.cs" />
+ <Compile Include="EF\ERP_EPRORDER.cs" />
+ <Compile Include="EF\KEYVALUE.cs" />
+ <Compile Include="EF\LOG_WMSLOG.cs" />
+ <Compile Include="EF\Model.cs" />
+ <Compile Include="EF\ORDER_INORDER.cs" />
+ <Compile Include="EF\ORDER_OUTORDER.cs" />
+ <Compile Include="EF\PDA_VERSION.cs" />
+ <Compile Include="EF\RECORD_WAREHOUSEINFO.cs" />
+ <Compile Include="EF\RgvTask.cs" />
+ <Compile Include="EF\SrmTask.cs" />
+ <Compile Include="EF\STORAGERECORD.cs" />
+ <Compile Include="EF\sysdiagrams.cs" />
+ <Compile Include="EF\SYS_DEPT.cs" />
+ <Compile Include="EF\SYS_PERMISSION.cs" />
+ <Compile Include="EF\SYS_ROLE.cs" />
+ <Compile Include="EF\SYS_ROLE_VS_PERMISSION.cs" />
+ <Compile Include="EF\SYS_USER.cs" />
+ <Compile Include="EF\SYS_USER_VS_ROLE.cs" />
+ <Compile Include="EF\TASK_RECORD.cs" />
+ <Compile Include="EF\TASK_SRMRECORD.cs" />
+ <Compile Include="EF\TASK_TASK.cs" />
+ <Compile Include="EF\TranLock.cs" />
+ <Compile Include="EF\TranTask.cs" />
+ <Compile Include="EF\v3D_Inventory.cs" />
+ <Compile Include="EF\v3D灞曠ず鏁版嵁.cs" />
+ <Compile Include="EF\View_ALERT_ALERT.cs" />
+ <Compile Include="EF\View_BASE_CONTAINER.cs" />
+ <Compile Include="EF\View_BASE_CONTAINER_VS_ITEM.cs" />
+ <Compile Include="EF\View_BASE_DEVICE.cs" />
+ <Compile Include="EF\View_BASE_INTYPE.cs" />
+ <Compile Include="EF\View_BASE_ITEM.cs" />
+ <Compile Include="EF\View_BASE_PLACE.cs" />
+ <Compile Include="EF\View_BASE_PLACE_VS_CONTAINER.cs" />
+ <Compile Include="EF\View_BASE_PRODUCTIONLINE.cs" />
+ <Compile Include="EF\View_CAR_CAR.cs" />
+ <Compile Include="EF\View_CAR_CARTASK.cs" />
+ <Compile Include="EF\View_ITEMSTORAGE.cs" />
+ <Compile Include="EF\View_ORDER_INORDER.cs" />
+ <Compile Include="EF\View_ORDER_OUTORDER.cs" />
+ <Compile Include="EF\View_RGVTASK.cs" />
+ <Compile Include="EF\View_ROLE_VS_PERMISSION.cs" />
+ <Compile Include="EF\View_SRMTASK.cs" />
+ <Compile Include="EF\View_SYS_DEPT.cs" />
+ <Compile Include="EF\View_SYS_PERMISSION.cs" />
+ <Compile Include="EF\View_SYS_ROLE.cs" />
+ <Compile Include="EF\View_SYS_USER.cs" />
+ <Compile Include="EF\View_TASK_RECORD.cs" />
+ <Compile Include="EF\View_TASK_SRMRECORD.cs" />
+ <Compile Include="EF\View_TASK_TASK.cs" />
+ <Compile Include="Entity\Alert\AlertWebEntity.cs" />
+ <Compile Include="Entity\Base\AddContainerVsItemWebEntity.cs" />
+ <Compile Include="Entity\Base\ContainerVsItemListWebEntity.cs" />
+ <Compile Include="Entity\Base\ContainerVsItemWebEntity.cs" />
+ <Compile Include="Entity\Base\ContainerWebEntity.cs" />
+ <Compile Include="Entity\Base\DeviceWebEntity.cs" />
+ <Compile Include="Entity\Base\InOrderExcelEntity.cs" />
+ <Compile Include="Entity\Base\InTypeWebEntity.cs" />
+ <Compile Include="Entity\Base\ItemListWebEntity.cs" />
+ <Compile Include="Entity\Base\ItemStorageWebEntity.cs" />
+ <Compile Include="Entity\Base\ItemWebEntity.cs" />
+ <Compile Include="Entity\Base\PalletWebEntity.cs" />
+ <Compile Include="Entity\Base\PdaPermissionEntity.cs" />
+ <Compile Include="Entity\Base\PlaceEntity.cs" />
+ <Compile Include="Entity\Base\PlaceStatusCountEntity.cs" />
+ <Compile Include="Entity\Base\PlaceVsContainerWebEntity.cs" />
+ <Compile Include="Entity\Base\PlaceWebEntity.cs" />
+ <Compile Include="Entity\Base\ProductionLineWebEntity.cs" />
+ <Compile Include="Entity\Base\ReturnItemStorageEntity.cs" />
+ <Compile Include="Entity\Base\UserRoleMenuEntity.cs" />
+ <Compile Include="Entity\Base\UserRolePermissionViewEntity.cs" />
+ <Compile Include="Entity\Base\View_BASE_CONTAINER_VS_ITEMPrint.cs" />
+ <Compile Include="Entity\Car\CarTaskWebEntity.cs" />
+ <Compile Include="Entity\Car\CarWebEntity.cs" />
+ <Compile Include="Entity\Order\InOrderWebEntity.cs" />
+ <Compile Include="Entity\Order\OutOrderWebEntity.cs" />
+ <Compile Include="Entity\PredicateBuilderNew.cs" />
+ <Compile Include="Entity\Summary\BarEntity.cs" />
+ <Compile Include="Entity\Summary\HomeBarEntity.cs" />
+ <Compile Include="Entity\Summary\HomeNumDataEntity.cs" />
+ <Compile Include="Entity\Summary\HomeNumDataEntityVsTime.cs" />
+ <Compile Include="Entity\Summary\HomePieDataEntity.cs" />
+ <Compile Include="Entity\Summary\PieEntity.cs" />
+ <Compile Include="Entity\Summary\SummaryCommEntity.cs" />
+ <Compile Include="Entity\Summary\SummaryHomeEntity.cs" />
+ <Compile Include="Entity\Sys\DeptWebEntity.cs" />
+ <Compile Include="Entity\Sys\PermissionVsRoleWebEntity.cs" />
+ <Compile Include="Entity\Sys\PermissionWebEntity.cs" />
+ <Compile Include="Entity\Sys\RoleWebEntity.cs" />
+ <Compile Include="Entity\Sys\UserWebEntity.cs" />
+ <Compile Include="Entity\Task\RgvTaskWebEntity.cs" />
+ <Compile Include="Entity\Task\SrmRecordWebEntity.cs" />
+ <Compile Include="Entity\Task\SrmTaskWebEntity.cs" />
+ <Compile Include="Entity\Task\TaskCommonEntity.cs" />
+ <Compile Include="Entity\Task\TaskNumAllEnterWebEntity.cs" />
+ <Compile Include="Entity\Task\TaskNumOnEnterWebEntity.cs" />
+ <Compile Include="Entity\Task\TaskRecodeWebEntity.cs" />
+ <Compile Include="Entity\Task\TaskWebEntity.cs" />
+ <Compile Include="Entity\Task\TimeVsTaskNumWebEntity.cs" />
+ <Compile Include="Helper\Attribute\AttributeHelper.cs" />
+ <Compile Include="Helper\Attribute\NoDbFilterAttribute.cs" />
+ <Compile Include="Helper\ExcelHelper.cs" />
+ <Compile Include="Helper\Helper.cs" />
+ <Compile Include="Helper\PredicateBuilder.cs" />
+ <Compile Include="Helper\SearchHelper.cs" />
+ <Compile Include="Order\INORDER\InOrderSqlFunc.cs" />
+ <Compile Include="Order\OUTORDER\OutOrderSqlFunc.cs" />
+ <Compile Include="PDA\Version\VersionSqlFunc.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="ReturnEntity\Alert\ReturnSearchAlertView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnCommonItem.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnIndexMessage.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnPlace.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchContainerView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchContainerVsItemView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchDeviceView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchInTypeView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchItemStorageView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchItemView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchPalletView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchPlaceView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchPlaceVsContainerView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnSearchProductionLineView.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnUserRoleMena.cs" />
+ <Compile Include="ReturnEntity\Base\ReturnUserRolePermission.cs" />
+ <Compile Include="ReturnEntity\Car\ReturnSearchCarTaskView.cs" />
+ <Compile Include="ReturnEntity\Car\ReturnSearchCarView.cs" />
+ <Compile Include="ReturnEntity\Order\ReturnSearchInOrderView.cs" />
+ <Compile Include="ReturnEntity\Order\ReturnSearchOutOrderView.cs" />
+ <Compile Include="ReturnEntity\ReturnResultAndMsg.cs" />
+ <Compile Include="ReturnEntity\Summary\ReturnResultSummary.cs" />
+ <Compile Include="ReturnEntity\Summary\ReturnResultSummaryNum.cs" />
+ <Compile Include="ReturnEntity\Summary\ReturnResultSummaryPie.cs" />
+ <Compile Include="ReturnEntity\Sys\ReturnSearchDeptView.cs" />
+ <Compile Include="ReturnEntity\Sys\ReturnSearchPermissionView.cs" />
+ <Compile Include="ReturnEntity\Sys\ReturnSearchRoleView.cs" />
+ <Compile Include="ReturnEntity\Sys\ReturnSearchRoleVsPermission.cs" />
+ <Compile Include="ReturnEntity\Sys\ReturnSearchUserView.cs" />
+ <Compile Include="ReturnEntity\Task\ReturnSearchRgvTaskView.cs" />
+ <Compile Include="ReturnEntity\Task\ReturnSearchSrmRecordView.cs" />
+ <Compile Include="ReturnEntity\Task\ReturnSearchSrmTaskView.cs" />
+ <Compile Include="ReturnEntity\Task\ReturnSearchTaskRecodeView.cs" />
+ <Compile Include="ReturnEntity\Task\ReturnSearchTaskView.cs" />
+ <Compile Include="ReturnEntity\Task\ReturnTaskCommonView.cs" />
+ <Compile Include="Summary\SummaryStatisticsSqlFunc.cs" />
+ <Compile Include="Sys\DEPT\DeptSqlFunc.cs" />
+ <Compile Include="Sys\PERMISSION\PermissionSqlFunc.cs" />
+ <Compile Include="Sys\ROLE\RoleSqlFunc.cs" />
+ <Compile Include="Sys\ROLE_VS_PERMISSION\Role_Vs_PermissionSqlFunc.cs" />
+ <Compile Include="Sys\USER\UserSqlFunc.cs" />
+ <Compile Include="Sys\USER\ViewUserSqlFunc.cs" />
+ <Compile Include="Task\TASK\RgvTaskSqlFunc.cs" />
+ <Compile Include="Task\TASK\SrmRecordSqlFunc.cs" />
+ <Compile Include="Task\TASK\SrmTaskSqlFunc.cs" />
+ <Compile Include="Task\TASK\TaskRecodeFunc.cs" />
+ <Compile Include="Task\TASK\TaskSqlFunc.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\EnumType\EnumType.csproj">
+ <Project>{50c2ccc5-0055-49c2-b2f6-b9ce452bc726}</Project>
+ <Name>EnumType</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\iWareCommon\iWareCommon.csproj">
+ <Project>{3583fcf0-92c7-406c-ad78-9fb7c11293cf}</Project>
+ <Name>iWareCommon</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Models\Models.csproj">
+ <Project>{27d81fdc-066b-4a2f-abb7-f3d38b4b1b9e}</Project>
+ <Name>Models</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/IWareDataAccess/Order/INORDER/InOrderSqlFunc.cs b/qqjf-Background/IWareDataAccess/Order/INORDER/InOrderSqlFunc.cs
new file mode 100644
index 0000000..b59b9fe
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Order/INORDER/InOrderSqlFunc.cs
@@ -0,0 +1,704 @@
+锘縰sing EnumType;
+using IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Entity.Order;
+using IWareDataAccess.Helper;
+using Models.Input;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Order.INORDER
+{
+ public static class InOrderSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<ORDER_INORDER> Search(InOrderWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<ORDER_INORDER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ //鎵ц鏃堕棿
+ if (i.Name == "doTimeStart")
+ {
+ f = f.And(x => x.DOTIME > value);
+ }
+ if (i.Name == "doTimeEnd")
+ {
+ f = f.And(x => x.DOTIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<ORDER_INORDER> list = edm.ORDER_INORDER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_ORDER_INORDER> SearchView(Expression<Func<View_ORDER_INORDER, bool>> f, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //var f = PredicateBuilder.True<View_ORDER_INORDER>();
+ ////渚垮埄鎵�鏈夊睘鎬�
+ //Type type = webEntity.GetType();
+ //foreach (var i in type.GetProperties())
+ //{
+ // object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ // if (i.PropertyType == typeof(String))
+ // {
+ // string value;
+ // if (v != null)
+ // {
+ // value = v.ToString();
+ // f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ // }
+ // }
+ // else if (i.PropertyType == typeof(DateTime?))
+ // {
+ // if (v != null)
+ // {
+ // DateTime value = DateTime.Parse(v.ToString());
+ // if (i.Name == "updateTimeStart")
+ // {
+ // f = f.And(x => x.updateTime > value);
+ // }
+ // if (i.Name == "updateTimeEnd")
+ // {
+ // f = f.And(x => x.updateTime < value);
+ // }
+ // //鎵ц鏃堕棿
+ // if (i.Name == "doTimeStart")
+ // {
+ // f = f.And(x => x.doTime > value);
+ // }
+ // if (i.Name == "doTimeEnd")
+ // {
+ // f = f.And(x => x.doTime < value);
+ // }
+ // }
+ // }
+ // else
+ // {
+ // if (v != null)
+ // {
+ // f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ // }
+ // }
+ //}
+
+
+
+ List<View_ORDER_INORDER> list = edm.View_ORDER_INORDER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(Expression<Func<View_ORDER_INORDER, bool>> f)
+ {
+ using (Model edm = new Model())
+ {
+ //var f = PredicateBuilder.True<View_ORDER_INORDER>();
+ ////渚垮埄鎵�鏈夊睘鎬�
+ //Type type = webEntity.GetType();
+ //foreach (var i in type.GetProperties())
+ //{
+ // object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ // if (i.PropertyType == typeof(String))
+ // {
+ // string value;
+ // if (v != null)
+ // {
+ // value = v.ToString();
+ // f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ // }
+ // }
+ // else if (i.PropertyType == typeof(DateTime?))
+ // {
+ // if (v != null)
+ // {
+ // DateTime value = DateTime.Parse(v.ToString());
+ // if (i.Name == "updateTimeStart")
+ // {
+ // f = f.And(x => x.updateTime > value);
+ // }
+ // if (i.Name == "updateTimeEnd")
+ // {
+ // f = f.And(x => x.updateTime < value);
+ // }
+ // //鎵ц鏃堕棿
+ // if (i.Name == "doTimeStart")
+ // {
+ // f = f.And(x => x.doTime > value);
+ // }
+ // if (i.Name == "doTimeEnd")
+ // {
+ // f = f.And(x => x.doTime < value);
+ // }
+ // }
+ // }
+ // else
+ // {
+ // if (v != null)
+ // {
+ // f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ // }
+ // }
+ //}
+ int num = edm.View_ORDER_INORDER.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞淇敼鍏ュ簱璁″垝
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(InOrderWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ ORDER_INORDER order = new ORDER_INORDER();
+ order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode);
+ if (order == null)
+ {
+ order = new ORDER_INORDER();
+ order.CreateTime = DateTime.Now;
+ //order.ORDERSTATUS ="鏈畬鎴�";
+ }
+
+ order.INORDERCODE = webEntity.inOrderCode;
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName);
+ if (item != null)
+ {
+ //msg = "鏃犳闆朵欢";
+ //return false;
+ order.ITEMID = item.ID;
+ }
+ //order.BASE_ITEM = item;
+
+ order.UPDATETIME = DateTime.Now;
+ order.ORDERTYPE = webEntity.orderType ?? order.ORDERTYPE;
+ order.TOTALNUM = webEntity.totalNum ?? order.TOTALNUM;
+ //鏍¢獙宸茬粦浠诲姟璁板綍涓庡綋鍓嶅叆搴撳崟鏄惁鍖归厤
+ var taskRecordList = edm.TASK_RECORD.Where(x => x.INORDERID == order.ID && x.ITEMID != order.ITEMID);
+ foreach (var i in taskRecordList)
+ {
+ i.INORDERID = null;//涓嶅尮閰嶇殑鑷姩鍘婚櫎
+ }
+ //鏌ヨ浠诲姟缁熻鏁伴噺
+ //order.DONENUM = webEntity.doneNum ?? order.DONENUM;
+ var taskRecord = edm.TASK_RECORD.Where(x => x.INORDERID == order.ID && x.ITEMID == order.ITEMID).ToList();
+ int doneNum = taskRecord.Sum(x => x.ITEMCOUNT);
+ order.DONENUM = doneNum;
+
+ order.UNLINENUM = webEntity.unLineNum ?? order.UNLINENUM;
+
+ order.ORDERSTATUS = webEntity.orderStatus ?? order.ORDERSTATUS;
+
+ order.AllFinishedNum = (order.DONENUM ?? 0) + (order.UNLINENUM ?? 0);//鎬诲畬宸ユ暟
+
+ order.IsSatisfyAudit = false;
+ //閫氳繃鏁伴噺鍙樺寲鐘舵��
+ if (order.TOTALNUM <= order.AllFinishedNum)
+ {
+ //order.ORDERSTATUS = "瀹屽伐";
+ order.IsSatisfyAudit = true;
+ }
+ else if (0 < order.AllFinishedNum)
+ {
+ //order.ORDERSTATUS = "鎵ц涓�";
+ }
+ else
+ {
+ var changeStatus = InOrderStatusEnum.鏂板缓;
+ order.OrderStatusId = (int)changeStatus;
+ order.ORDERSTATUS = changeStatus.ToString();
+ }
+
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.userName);
+ if (user != null)
+ {
+ order.CREATORID = user.ID;
+ }
+
+
+ order.ISFINISH = webEntity.isFinsish ?? order.ISFINISH;
+ order.DOTIME = webEntity.doTime ?? order.DOTIME;
+ order.ENABLE = webEntity.enable ?? order.ENABLE;
+ if (item != null)
+ {
+ order.TOTALWEIGHT = item.WEIGHT * order.TOTALNUM ?? order.TOTALWEIGHT;
+ }
+ order.CLASSNO = webEntity.classNo ?? order.CLASSNO;
+ //order.STATUS = webEntity.status ?? order.STATUS;
+ SYS_USER sender = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.senderName);
+ if (sender != null)
+ {
+ order.SENDERID = sender.ID;
+ }
+ SYS_USER checker = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.checkerName);
+ if (checker != null)
+ {
+ order.CHECKERID = checker.ID;
+ }
+
+ edm.ORDER_INORDER.AddOrUpdateExtension(order);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 淇敼鍏ュ簱璁″垝 鐘舵��
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool UpdateStatus(InOrderAuditInput input, string type, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ ORDER_INORDER order = new ORDER_INORDER();
+ order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == input.InOrderCode);
+ InOrderStatusEnum changeStatus = default(InOrderStatusEnum);
+ InOrderStatusEnum orderStatus = (InOrderStatusEnum)Enum.Parse(typeof(InOrderStatusEnum), order.ORDERSTATUS);
+ switch (type)
+ {
+ case "鎻愪氦瀹℃牳":
+ if (orderStatus != InOrderStatusEnum.鏂板缓 && orderStatus != InOrderStatusEnum.椹冲洖)
+ {
+ msg = "鐘舵�佸繀椤绘槸'鏂板缓'鎴�'椹冲洖'鎵嶈兘鎻愪氦瀹℃牳锛�";
+ return false;
+ }
+ if (order.AllFinishedNum == null || Convert.ToInt32(order.AllFinishedNum) <= 0)
+ {
+ msg = "鎬诲畬宸ユ暟蹇呴』澶т簬0鎵嶈兘鎻愪氦瀹℃牳锛�";
+ return false;
+ }
+
+ //淇敼
+ changeStatus = InOrderStatusEnum.鐒婅瀹℃牳涓�;
+ order.OrderStatusId = (int)changeStatus;
+ order.ORDERSTATUS = changeStatus.ToString();
+
+ order.CHECKERID = input.AuditUserId;
+ order.CheckResult = "寰呭";
+
+ order.SENDERID = input.SendUserId;
+ order.SendTime = DateTime.Now;
+
+ break;
+ case "瀹℃牳閫氳繃":
+ if (orderStatus != InOrderStatusEnum.鐒婅瀹℃牳涓�)
+ {
+ msg = "鐘舵�佸繀椤绘槸'鐒婅瀹℃牳涓�'鎵嶈兘鎻愪氦瀹℃牳锛�";
+ return false;
+ }
+ //淇敼
+ changeStatus = InOrderStatusEnum.瀹屽伐;
+ order.OrderStatusId = (int)changeStatus;
+ order.ORDERSTATUS = changeStatus.ToString();
+ order.CheckTime = DateTime.Now;
+ order.CheckResult = "閫氳繃";
+ break;
+ case "椹冲洖":
+ if (orderStatus != InOrderStatusEnum.鐒婅瀹℃牳涓�)
+ {
+ msg = "鐘舵�佸繀椤绘槸'鐒婅瀹℃牳涓�'鎵嶈兘鎻愪氦瀹℃牳锛�";
+ return false;
+ }
+ changeStatus = InOrderStatusEnum.椹冲洖;
+ order.OrderStatusId = (int)changeStatus;
+ order.ORDERSTATUS = changeStatus.ToString();
+ order.CheckRemark = input.Remark;
+ order.CheckTime = DateTime.Now;
+ order.CheckResult = "椹冲洖";
+ break;
+ default:
+ throw new Exception("涓嶆敮鎸佺殑绫诲瀷");
+ }
+
+
+ order.UPDATETIME = DateTime.Now;
+
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 淇敼 绾夸笅浜や粯鏁伴噺
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool UpdateUnlineNum(InOrderUnlineNumInput input, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ ORDER_INORDER order = new ORDER_INORDER();
+ order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == input.InOrderCode);
+
+ //閲嶆柊璁$畻璁㈠崟琛ㄧ殑鏁伴噺
+ order.UNLINENUM = input.Qty;
+ order.AllFinishedNum = (order.DONENUM ?? 0) + (order.UNLINENUM ?? 0);
+
+ order.UPDATETIME = DateTime.Now;
+
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(InOrderWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ ORDER_INORDER inOrder = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode);
+ if (inOrder == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳璁㈠崟";
+ return false;
+ }
+ else
+ {
+ //edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
+ inOrder.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇缂栧彿
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCode()
+ {
+ string month = DateTime.Now.Month.ToString("00");
+ string day = DateTime.Now.Day.ToString("00");
+ string hour = DateTime.Now.Hour.ToString("00");
+ string minute = DateTime.Now.Minute.ToString("00");
+ string second = DateTime.Now.Second.ToString("00");
+ string millSecond = DateTime.Now.Millisecond.ToString("0000");
+ string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond;
+ return "IO" + time;
+ }
+
+ /// <summary>
+ /// 瀵煎叆鍏ュ簱鍗曟暟鎹�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ public static bool ImportInOrder(List<InOrderWebEntity> model, string userName, out string msg)
+ {
+ try
+ {
+ msg = "";
+
+ using (Model edm = new Model())
+ {
+ if (model != null && model.Count > 0)
+ {
+ int userid = 1;
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == userName);
+ if (user != null)
+ {
+ userid = user.ID;
+ }
+ List<ORDER_INORDER> oinlst = new List<ORDER_INORDER>();
+ foreach (InOrderWebEntity iow in model)
+ //foreach (InOrderExcelEntity iow in model)
+ {
+ ORDER_INORDER order = new ORDER_INORDER();
+ order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == iow.inOrderCode);
+ if (order == null)
+ {
+ order = new ORDER_INORDER();
+ //order.ORDERSTATUS ="鏈畬鎴�";
+ order.CreateTime = DateTime.Now;
+ }
+ order.INORDERCODE = iow.inOrderCode;
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == iow.itemName);
+ if (item == null)
+ {
+ msg = "鏃犳闆朵欢";
+ return false;
+ }
+ order.BASE_ITEM = item;
+ order.UPDATETIME = DateTime.Now;
+ order.ORDERTYPE = iow.orderType ?? order.ORDERTYPE;
+ order.TOTALNUM = iow.totalNum ?? order.TOTALNUM;
+ //鏍¢獙宸茬粦浠诲姟璁板綍涓庡綋鍓嶅叆搴撳崟鏄惁鍖归厤
+ var taskRecordList = edm.TASK_RECORD.Where(x => x.INORDERID == order.ID && x.ITEMID != order.ITEMID);
+ foreach (var i in taskRecordList)
+ {
+ i.INORDERID = null;//涓嶅尮閰嶇殑鑷姩鍘婚櫎
+ }
+ //鏌ヨ浠诲姟缁熻鏁伴噺
+ //order.DONENUM = webEntity.doneNum ?? order.DONENUM;
+ int doneNum = edm.TASK_RECORD.Where(x => x.INORDERID == order.ID && x.ITEMID == order.ITEMID).Sum(x => x.ITEMCOUNT);
+ order.DONENUM = doneNum;
+
+ order.UNLINENUM = iow.unLineNum ?? order.UNLINENUM;
+
+ order.ORDERSTATUS = iow.orderStatus ?? order.ORDERSTATUS;
+
+ //else
+ //{
+ // //閫氳繃鏁伴噺鍙樺寲鐘舵��
+ // if (order.TOTALNUM <= order.DONENUM + order.UNLINENUM)
+ // {
+ // order.ORDERSTATUS = "瀹屽伐";
+ // }
+ // else if (0 < order.DONENUM + order.UNLINENUM)
+ // {
+ // order.ORDERSTATUS = "鎵ц涓�";
+ // }
+ // else
+ // {
+ // order.ORDERSTATUS = "鏂板缓";
+ // }
+ //}
+
+ if (user != null)
+ {
+ order.CREATORID = user.ID;
+ }
+ order.ISFINISH = iow.isFinsish ?? order.ISFINISH;
+ order.DOTIME = iow.doTime ?? order.DOTIME;
+ order.ENABLE = iow.enable ?? order.ENABLE;
+ order.TOTALWEIGHT = item.WEIGHT * order.TOTALNUM ?? order.TOTALWEIGHT;
+ order.CLASSNO = iow.classNo ?? order.CLASSNO;
+ //order.STATUS = webEntity.status ?? order.STATUS;
+ SYS_USER sender = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == iow.senderName);
+ if (sender != null)
+ {
+ order.SENDERID = sender.ID;
+ }
+ SYS_USER checker = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == iow.checkerName);
+ if (checker != null)
+ {
+ order.CHECKERID = checker.ID;
+ }
+ oinlst.Add(order);
+ }
+ if (string.IsNullOrEmpty(msg))
+ {
+ edm.ORDER_INORDER.AddRange(oinlst);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "瀵煎叆澶辫触";
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+ else
+ {
+ msg = "瀵煎叆澶辫触";
+ return false;
+ }
+
+
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "瀵煎叆澶辫触";
+ return false;
+ }
+ }
+
+ /// <summary>
+ /// 瀵煎嚭鍏ュ簱鍗曟暟鎹�
+ /// </summary>
+ /// <returns></returns>
+ public static List<InOrderExcelEntity> ExportInOrder(Expression<Func<View_ORDER_INORDER, bool>> f, int page, int onePageNum, out string msg)
+ {
+ try
+ {
+ msg = "";
+ List<InOrderExcelEntity> iowlst = new List<InOrderExcelEntity>();
+ using (Model edm = new Model())
+ {
+
+ var list = SearchView(f, page, onePageNum, out msg);
+
+ if (list != null && list.Count > 0)
+ {
+
+ foreach (var inorder in list)
+ {
+ iowlst.Add(new InOrderExcelEntity()
+ {
+ itemCode = inorder.itemName,
+ inType = inorder.orderType,
+ itemNum = (int)inorder.totalNum,
+ createTime = (DateTime)inorder.updateTime
+ });
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+ return iowlst;
+ }
+
+ catch (Exception ex)
+ {
+ msg = "瀵煎嚭澶辫触锛�";
+ return null;
+ }
+ }
+
+ public static bool ImportExcel(string path, InOrderExcelEntity inord, out string msg)
+ {
+ using (Model dbModel = new Model())
+ {
+ try
+ {
+ msg = "";
+ var ds = ExcelHelper.FromExcelByEPPlus(path, "鍐插帇璁″垝瀵煎叆妯℃澘", inord, out msg);
+ if (!string.IsNullOrEmpty(msg))
+ {
+ throw new Exception(msg);
+ }
+
+ var data = ds;
+ //鏁版嵁淇濆瓨
+ foreach (var i in data)
+ {
+ View_ORDER_INORDER newInorder = (View_ORDER_INORDER)i;
+
+ }
+ return string.IsNullOrEmpty(msg);
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+
+ return false;
+ }
+ }
+ }
+
+
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Order/OUTORDER/OutOrderSqlFunc.cs b/qqjf-Background/IWareDataAccess/Order/OUTORDER/OutOrderSqlFunc.cs
new file mode 100644
index 0000000..95361ae
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Order/OUTORDER/OutOrderSqlFunc.cs
@@ -0,0 +1,477 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Entity.Order;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Order.OUTORDER
+{
+ public static class OutOrderSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<ORDER_OUTORDER> Search(OutOrderWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<ORDER_OUTORDER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ //鎵ц鏃堕棿
+ if (i.Name == "doTimeStart")
+ {
+ f = f.And(x => x.DOTIME > value);
+ }
+ if (i.Name == "doTimeEnd")
+ {
+ f = f.And(x => x.DOTIME < value);
+ }
+ //淇敼鏃堕棿
+ if (i.Name == "changeDateStart")
+ {
+ f = f.And(x => x.CHANGEDATE > value);
+ }
+ if (i.Name == "changeDateEnd")
+ {
+ f = f.And(x => x.CHANGEDATE < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<ORDER_OUTORDER> list = edm.ORDER_OUTORDER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_ORDER_OUTORDER> SearchView(OutOrderWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ORDER_OUTORDER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ //鎵ц鏃堕棿
+ if (i.Name == "doTimeStart")
+ {
+ f = f.And(x => x.doTime > value);
+ }
+ if (i.Name == "doTimeEnd")
+ {
+ f = f.And(x => x.doTime < value);
+ }
+ //淇敼鏃堕棿
+ if (i.Name == "changeDateStart")
+ {
+ f = f.And(x => x.changeDate > value);
+ }
+ if (i.Name == "changeDateEnd")
+ {
+ f = f.And(x => x.changeDate < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<View_ORDER_OUTORDER> list = edm.View_ORDER_OUTORDER.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(OutOrderWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ORDER_OUTORDER>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ //鎵ц鏃堕棿
+ if (i.Name == "doTimeStart")
+ {
+ f = f.And(x => x.doTime > value);
+ }
+ if (i.Name == "doTimeEnd")
+ {
+ f = f.And(x => x.doTime < value);
+ }
+ //淇敼鏃堕棿
+ if (i.Name == "changeDateStart")
+ {
+ f = f.And(x => x.changeDate > value);
+ }
+ if (i.Name == "changeDateEnd")
+ {
+ f = f.And(x => x.changeDate < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_ORDER_OUTORDER.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞淇敼 鍑哄簱鍗�
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(OutOrderWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ ORDER_OUTORDER order = new ORDER_OUTORDER();
+ order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode);
+ if (order == null)
+ {
+ order = new ORDER_OUTORDER();
+ order.ORDERSTATUS = "鏂板缓";
+ order.CHECKOUTNUM = 0;
+ }
+ else
+ {
+ if (order.ORDERSTATUS == "鏂板缓")
+ {
+ msg = "姝ゅ崟鎹凡澶勭悊";
+ return false;
+ }
+ order.ORDERSTATUS = webEntity.orderStatus ?? order.ORDERSTATUS;
+ }
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.userName);
+ if (user != null)
+ {
+ order.CREATORID = user.ID;
+ }
+
+ if (string.IsNullOrEmpty(webEntity.orderType))//涓虹┖杩斿洖false
+ {
+ msg = "鏈�夋嫨鍑哄簱绫诲瀷";
+ return false;
+ }
+ else
+ {
+ //淇敼鐢ㄦ埛鍙互涓虹┖锛孾Editby kejj,20230628]
+ if (user.SYS_USER_VS_ROLE.FirstOrDefault() == null)
+ {
+ msg = "鐢ㄦ埛鏃犺鑹�";
+ return false;
+ }
+ if ((webEntity.orderType != "绌哄櫒鍏峰嚭搴�" && !webEntity.orderType.Contains("鍐插帇寰呰繑淇�")) && user.SYS_USER_VS_ROLE.FirstOrDefault().SYS_ROLE.ROLENAME.Contains("鍐插帇"))
+ {
+ msg = "鍐插帇鏃犳硶鍑洪浂浠�";
+ return false;
+ }
+ }
+ order.OUTORDERCODE = webEntity.outOrderCode ?? order.OUTORDERCODE;
+ BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName);
+ if (item == null)
+ {
+ msg = "鏃犳闆朵欢";
+ return false;
+ }
+ order.BASE_ITEM = item;
+ order.UPDATETIME = DateTime.Now;
+ order.ORDERTYPE = webEntity.orderType ?? order.ORDERTYPE;
+ order.TOTALOUTNUM = webEntity.totalOutNum ?? order.TOTALOUTNUM;
+
+ order.ISFINISH = webEntity.isFinish ?? order.ISFINISH;
+ order.TOTALWEIGHT = item.WEIGHT * order.TOTALOUTNUM ?? 0;
+ order.CARUSERID = webEntity.CarUserId;
+
+ BASE_PRODUCTIONLINE pl = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINENAME == webEntity.productionLineName);
+ if (pl != null)
+ {
+ order.BASE_PRODUCTIONLINE = pl;
+ }
+ else
+ {
+ pl = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINECODE == webEntity.productionLineCode);
+ if (pl != null)
+ {
+ order.BASE_PRODUCTIONLINE = pl;
+ }
+ }
+
+ ERP_EPRORDER erpOrder = edm.ERP_EPRORDER.FirstOrDefault(x => x.ERPORDERID == webEntity.erpOrderId);
+ if (erpOrder != null)
+ {
+ order.ERP_EPRORDER = erpOrder;
+ }
+ order.DOTIME = webEntity.doTime ?? order.DOTIME;
+ order.CHANGEDATE = webEntity.changeDate ?? order.CHANGEDATE;
+ order.ENABLE = webEntity.enable ?? order.ENABLE;
+ order.TRANLINE = webEntity.tranLine ?? order.TRANLINE;
+ order.ISERP = webEntity.isErp ?? order.ISERP;
+ if ((order.TRANLINE ?? 0) == 0)
+ {
+ msg = "閫夋嫨鍑哄簱鍙�";
+ return false;
+ }
+ edm.ORDER_OUTORDER.AddOrUpdateExtension(order);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(OutOrderWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ ORDER_OUTORDER outOrder = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode);
+ if (outOrder == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳璁㈠崟";
+ return false;
+ }
+ else
+ {
+ //edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
+ outOrder.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇缂栧彿
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCode()
+ {
+ using (Model edm = new Model())
+ {
+
+ string month = DateTime.Now.Month.ToString("00");
+ string day = DateTime.Now.Day.ToString("00");
+ string hour = DateTime.Now.Hour.ToString("00");
+ string minute = DateTime.Now.Minute.ToString("00");
+ string second = DateTime.Now.Second.ToString("00");
+ string millSecond = DateTime.Now.Millisecond.ToString("0000");
+ string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond;
+
+ return "OO" + time;
+ }
+ }
+
+ /// <summary>
+ /// 纭涓嬪彂鍑哄簱璁″垝
+ /// </summary>
+ /// <returns></returns>
+ public static bool CheckOutOrder(OutOrderWebEntity model, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ ORDER_OUTORDER order = null;
+ if (model.id != null)
+ {
+ order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.ID == model.id);
+ }
+ if(!string.IsNullOrEmpty(model.outOrderCode))
+ {
+ order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == model.outOrderCode);
+ }
+
+ if (order != null)
+ {
+ PlaceVsContainerWebEntity pvcWeb = new PlaceVsContainerWebEntity();
+ pvcWeb.itemName = order.BASE_ITEM.ITEMNAME;
+ if (order.ORDERTYPE != "绌哄櫒鍏峰嚭搴�")
+ {
+ int num = Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchItemCanUseNum(pvcWeb, out msg);
+ if (order.TOTALOUTNUM <= num)//鏁伴噺澶�
+ {
+ order.ORDERSTATUS = "鎵ц涓�";
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ else
+ {
+ msg = "搴撳瓨涓嶈冻涓嶈兘涓嬪彂";
+ return false;
+ }
+ }
+ else
+ {
+ int num = Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchEmptyContainerPlace(pvcWeb, out msg).FirstOrDefault(x => x.titel == "鏈夋晥绌哄櫒鍏锋暟").value;
+ if (order.TOTALOUTNUM <= num)//鏁伴噺澶�
+ {
+ order.ORDERSTATUS = "鎵ц涓�";
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ else
+ {
+ msg = "搴撳瓨涓嶈冻涓嶈兘涓嬪彂";
+ return false;
+ }
+ }
+ }
+ else
+ {
+ msg = "鏃犳璁″垝";
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/PDA/Version/VersionSqlFunc.cs b/qqjf-Background/IWareDataAccess/PDA/Version/VersionSqlFunc.cs
new file mode 100644
index 0000000..23bf129
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/PDA/Version/VersionSqlFunc.cs
@@ -0,0 +1,53 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.PDA.Version
+{
+ public static class VersionSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static PDA_VERSION SearchOne(string url, string version)
+ {
+ using (Model edm = new Model())
+ {
+ PDA_VERSION pda = edm.PDA_VERSION.OrderByDescending(x => x.UpdateTime).FirstOrDefault(x => x.Url.Contains(url) && x.Version.Contains(version));
+ return pda;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static bool AddOne(string url, string version)
+ {
+ using (Model edm = new Model())
+ {
+ PDA_VERSION pda = new PDA_VERSION();
+ pda.Version = version;
+ pda.Url = url;
+ pda.UpdateTime = DateTime.Now;
+ edm.PDA_VERSION.Add(pda);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Program.cs b/qqjf-Background/IWareDataAccess/Program.cs
new file mode 100644
index 0000000..80124e6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Program.cs
@@ -0,0 +1,40 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.Entity.Sys;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ ContainerVsItemListWebEntity b = new ContainerVsItemListWebEntity();
+
+ ItemListWebEntity a = new ItemListWebEntity();
+ a.inOrderCode = "IO202105300004";
+ a.itemName = "5701046BB93";
+ a.itemNum = 10;
+
+ //Dictionary<string, string> a = new Dictionary<string, string>();
+ //a.Add("ROLENAME", "ccc");
+
+ //List<string> a = new List<string>();
+ //a.Add("澧�");
+ //a.Add("鍒�");
+
+ string resultJson = JsonConvert.SerializeObject(a);
+
+ //Dictionary<string, string> dic = new Dictionary<string, string>();
+ //dic.Add("ID", 1);
+ //dic.Add("USERNAME","aaa");
+ //Sys.USER.ViewUserSqlFunc.SearchView(dic);
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Properties/AssemblyInfo.cs b/qqjf-Background/IWareDataAccess/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..41af9ad
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅閫氳繃浠ヤ笅
+// 鐗规�ч泦鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("IWareDataAccess")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("IWareDataAccess")]
+[assembly: AssemblyCopyright("Copyright 漏 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浣挎绋嬪簭闆嗕腑鐨勭被鍨�
+// 瀵� COM 缁勪欢涓嶅彲瑙併�� 濡傛灉闇�瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷锛�
+// 鍒欏皢璇ョ被鍨嬩笂鐨� ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("05c6a773-98ea-4324-829f-9cb5590189b5")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅闈㈠洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Alert/ReturnSearchAlertView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Alert/ReturnSearchAlertView.cs
new file mode 100644
index 0000000..0b2b097
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Alert/ReturnSearchAlertView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Alert
+{
+ public class ReturnSearchAlertView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_ALERT_ALERT> data = new List<View_ALERT_ALERT>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnCommonItem.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnCommonItem.cs
new file mode 100644
index 0000000..8d3b9d6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnCommonItem.cs
@@ -0,0 +1,20 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnCommonItem
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+
+ public List<View_BASE_ITEM> data = new List<View_BASE_ITEM>();//鍏蜂綋鏁版嵁
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnIndexMessage.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnIndexMessage.cs
new file mode 100644
index 0000000..0306a27
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnIndexMessage.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnIndexMessage
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<ReturnItemStorageEntity> data = new List<ReturnItemStorageEntity>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnPlace.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnPlace.cs
new file mode 100644
index 0000000..23a0f92
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnPlace.cs
@@ -0,0 +1,19 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnPlace
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+
+ public List<PlaceEntity> data = new List<PlaceEntity>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerView.cs
new file mode 100644
index 0000000..d937711
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchContainerView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_CONTAINER> data = new List<View_BASE_CONTAINER>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerVsItemView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerVsItemView.cs
new file mode 100644
index 0000000..1058716
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchContainerVsItemView.cs
@@ -0,0 +1,40 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchContainerVsItemView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_CONTAINER_VS_ITEM> data = new List<View_BASE_CONTAINER_VS_ITEM>();//鍏蜂綋鏁版嵁
+ }
+
+ public class ReturnSearchContainerVsItemViewPrint
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_CONTAINER_VS_ITEMPrint> data = new List<View_BASE_CONTAINER_VS_ITEMPrint>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchDeviceView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchDeviceView.cs
new file mode 100644
index 0000000..9f7f2b7
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchDeviceView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchDeviceView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_DEVICE> data = new List<View_BASE_DEVICE>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchInTypeView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchInTypeView.cs
new file mode 100644
index 0000000..d919d78
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchInTypeView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchInTypeView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_INTYPE> data = new List<View_BASE_INTYPE>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemStorageView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemStorageView.cs
new file mode 100644
index 0000000..f21b3dc
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemStorageView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchItemStorageView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_ITEMSTORAGE> data = new List<View_ITEMSTORAGE>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemView.cs
new file mode 100644
index 0000000..9acb183
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchItemView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchItemView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_ITEM> data = new List<View_BASE_ITEM>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPalletView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPalletView.cs
new file mode 100644
index 0000000..1f4e8c8
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPalletView.cs
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchPalletView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<PalletWebEntity> data = new List<PalletWebEntity>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceView.cs
new file mode 100644
index 0000000..d7b6c54
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchPlaceView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_PLACE> data = new List<View_BASE_PLACE>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceVsContainerView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceVsContainerView.cs
new file mode 100644
index 0000000..9aeb9d0
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchPlaceVsContainerView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchPlaceVsContainerView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_PLACE_VS_CONTAINER> data = new List<View_BASE_PLACE_VS_CONTAINER>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchProductionLineView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchProductionLineView.cs
new file mode 100644
index 0000000..47fefe6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnSearchProductionLineView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnSearchProductionLineView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_BASE_PRODUCTIONLINE> data = new List<View_BASE_PRODUCTIONLINE>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRoleMena.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRoleMena.cs
new file mode 100644
index 0000000..a8e43b9
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRoleMena.cs
@@ -0,0 +1,19 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnUserRoleMena
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+
+ public List<UserRoleMenuEntity> data = new List<UserRoleMenuEntity>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRolePermission.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRolePermission.cs
new file mode 100644
index 0000000..8c04dde
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Base/ReturnUserRolePermission.cs
@@ -0,0 +1,20 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Base
+{
+ public class ReturnUserRolePermission
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+
+ public List<UserRolePermissionViewEntity> data = new List<UserRolePermissionViewEntity>();//鍏蜂綋鏁版嵁
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarTaskView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarTaskView.cs
new file mode 100644
index 0000000..101567c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarTaskView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Car
+{
+ public class ReturnSearchCarTaskView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_CAR_CARTASK> data = new List<View_CAR_CARTASK>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarView.cs
new file mode 100644
index 0000000..3ed4302
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Car/ReturnSearchCarView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Car
+{
+ public class ReturnSearchCarView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_CAR_CAR> data = new List<View_CAR_CAR>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchInOrderView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchInOrderView.cs
new file mode 100644
index 0000000..20e2746
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchInOrderView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Order
+{
+ public class ReturnSearchInOrderView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_ORDER_INORDER> data = new List<View_ORDER_INORDER>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchOutOrderView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchOutOrderView.cs
new file mode 100644
index 0000000..c90db61
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Order/ReturnSearchOutOrderView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Order
+{
+ public class ReturnSearchOutOrderView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_ORDER_OUTORDER> data = new List<View_ORDER_OUTORDER>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/ReturnResultAndMsg.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/ReturnResultAndMsg.cs
new file mode 100644
index 0000000..bf49ee3
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/ReturnResultAndMsg.cs
@@ -0,0 +1,43 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity
+{
+ public class ReturnResultAndMsg
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ /// <summary>
+ /// 杩斿洖鎴愬姛
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static ReturnResultAndMsg Success(string msg)
+ {
+ return new ReturnResultAndMsg()
+ {
+ code = 0,
+ msg = msg
+ };
+ }
+
+ /// <summary>
+ /// 杩斿洖澶辫触
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static ReturnResultAndMsg Fail(string msg)
+ {
+ return new ReturnResultAndMsg()
+ {
+ code = 1,
+ msg = msg
+ };
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummary.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummary.cs
new file mode 100644
index 0000000..5ce9fe9
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummary.cs
@@ -0,0 +1,20 @@
+锘縰sing IWareDataAccess.Entity.Summary;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Summary
+{
+ public class ReturnResultSummary
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public HomeBarEntity data { get; set; }//璇︽儏
+
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryNum.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryNum.cs
new file mode 100644
index 0000000..47db89c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryNum.cs
@@ -0,0 +1,29 @@
+锘縰sing IWareDataAccess.Entity.Summary;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Summary
+{
+ public class ReturnResultSummaryNum
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public List<HomeNumDataEntity> data { get; set; }//璇︽儏
+
+ }
+
+ public class ReturnResultSummaryNumVsTime
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public List<HomeNumDataEntityVsTime> data { get; set; }//璇︽儏
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryPie.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryPie.cs
new file mode 100644
index 0000000..86c51b5
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Summary/ReturnResultSummaryPie.cs
@@ -0,0 +1,18 @@
+锘縰sing IWareDataAccess.Entity.Summary;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Summary
+{
+ public class ReturnResultSummaryPie
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public List<HomePieDataEntity> data { get; set; }//璇︽儏
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchDeptView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchDeptView.cs
new file mode 100644
index 0000000..7b89921
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchDeptView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Sys
+{
+ public class ReturnSearchDeptView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_SYS_DEPT> data = new List<View_SYS_DEPT>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchPermissionView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchPermissionView.cs
new file mode 100644
index 0000000..d56be10
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchPermissionView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Sys
+{
+ public class ReturnSearchPermissionView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_SYS_PERMISSION> data = new List<View_SYS_PERMISSION>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleView.cs
new file mode 100644
index 0000000..f281af6
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Sys
+{
+ public class ReturnSearchRoleView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_SYS_ROLE> data = new List<View_SYS_ROLE>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleVsPermission.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleVsPermission.cs
new file mode 100644
index 0000000..605953e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchRoleVsPermission.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Sys
+{
+ public class ReturnSearchRoleVsPermission
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_ROLE_VS_PERMISSION> data = new List<View_ROLE_VS_PERMISSION>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchUserView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchUserView.cs
new file mode 100644
index 0000000..7dbc0cc
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Sys/ReturnSearchUserView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Sys
+{
+ public class ReturnSearchUserView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_SYS_USER> data = new List<View_SYS_USER>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchRgvTaskView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchRgvTaskView.cs
new file mode 100644
index 0000000..9ae0e7c
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchRgvTaskView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Task
+{
+ public class ReturnSearchRgvTaskView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_RGVTASK> data = new List<View_RGVTASK>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmRecordView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmRecordView.cs
new file mode 100644
index 0000000..fe464a8
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmRecordView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Task
+{
+ public class ReturnSearchSrmRecordView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_TASK_SRMRECORD> data = new List<View_TASK_SRMRECORD>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmTaskView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmTaskView.cs
new file mode 100644
index 0000000..fd39862
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchSrmTaskView.cs
@@ -0,0 +1,24 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Task
+{
+ public class ReturnSearchSrmTaskView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_SRMTASK> data = new List<View_SRMTASK>();//鍏蜂綋鏁版嵁
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskRecodeView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskRecodeView.cs
new file mode 100644
index 0000000..f800004
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskRecodeView.cs
@@ -0,0 +1,25 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Task
+{
+ public class ReturnSearchTaskRecodeView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_TASK_RECORD> data = new List<View_TASK_RECORD>();//鍏蜂綋鏁版嵁
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskView.cs
new file mode 100644
index 0000000..4766444
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnSearchTaskView.cs
@@ -0,0 +1,25 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Task
+{
+ public class ReturnSearchTaskView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public int num { get; set; }//鏁版嵁鎬绘暟
+
+ public int page { get; set; }//褰撳墠椤�
+
+ public int pageNum { get; set; }//鎬婚〉鏁�
+
+ public List<View_TASK_TASK> data = new List<View_TASK_TASK>();//鍏蜂綋鏁版嵁
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnTaskCommonView.cs b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnTaskCommonView.cs
new file mode 100644
index 0000000..180ba70
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/ReturnEntity/Task/ReturnTaskCommonView.cs
@@ -0,0 +1,18 @@
+锘縰sing IWareDataAccess.Entity.Task;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.ReturnEntity.Task
+{
+ public class ReturnTaskCommonView
+ {
+ public int code { get; set; }//0鎴愬姛,1澶辫触
+
+ public string msg { get; set; }//璇︽儏
+
+ public List<TaskCommonEntity> data { get; set; }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Summary/SummaryStatisticsSqlFunc.cs b/qqjf-Background/IWareDataAccess/Summary/SummaryStatisticsSqlFunc.cs
new file mode 100644
index 0000000..16d524f
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Summary/SummaryStatisticsSqlFunc.cs
@@ -0,0 +1,1290 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Summary;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Summary
+{
+ public class SummaryStatisticsSqlFunc
+ {
+ #region 棣栭〉鏁版嵁缁熻
+ /// <summary>
+ /// 鑾峰彇鍣ㄥ叿鐨勫嚭鍏ュ簱鏁伴噺
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static HomeBarEntity GetHomeBarContainerData(string startTime, string endTime, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ HomeBarEntity hbe = new HomeBarEntity();
+ string sql = @" select A.TYPE as taskType,count(distinct A.TASKID) count,CONVERT(VARCHAR(10),A.CREATETIME,120)time,'1' as type from [dbo].[TASK_RECORD] A left join TASK_TASK B on A.TASKID=B.ID
+ where (A.TYPE=1 or A.TYPE=2) and A.ITEMID is not null and B.TASKSTATUS=N'瀹屾垚'
+ and A.CREATETIME>='{0}' and A.CREATETIME<='{1}'
+ group by TYPE,CONVERT(VARCHAR(10),A.CREATETIME,120) union
+ select A.TYPE as taskType,count(distinct A.TASKID) count,CONVERT(VARCHAR(10),A.CREATETIME,120)time,'2' as type from [dbo].[TASK_RECORD] A left join TASK_TASK B on A.TASKID=B.ID
+ where (A.TYPE=1 or A.TYPE=2) and A.ITEMID is null and B.TASKSTATUS=N'瀹屾垚'
+ and A.CREATETIME>='{2}' and A.CREATETIME<='{3}'
+ group by TYPE,CONVERT(VARCHAR(10),A.CREATETIME,120)";
+ sql = string.Format(sql, startTime, endTime, startTime, endTime);
+ List<SummaryHomeEntity> dalst = edm.Database.SqlQuery<SummaryHomeEntity>(sql).ToList();
+ List<string> timelst = new List<string>();
+ List<string> timelstNoYear = new List<string>();
+ string dt = DateTime.Parse(startTime).ToString("yyyy-MM-dd");
+ string edt = DateTime.Parse(endTime).AddDays(1).ToString("yyyy-MM-dd");
+ while (dt != edt)
+ {
+ timelst.Add(dt);
+ timelstNoYear.Add(dt.Substring(5));
+ dt = DateTime.Parse(dt).AddDays(1).ToString("yyyy-MM-dd");
+ }
+ List<int> dt1 = new List<int>();
+ List<int> dt2 = new List<int>();
+ List<int> dt3 = new List<int>();
+ List<int> dt4 = new List<int>();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ var d1 = dalst.FirstOrDefault(y => y.time == x && y.taskType == 1 && y.type == "2");
+ if (d1 != null)
+ {
+ dt1.Add(d1.count);
+ }
+ else
+ {
+ dt1.Add(0);
+ }
+ var d2 = dalst.FirstOrDefault(y => y.time == x && y.taskType == 1 && y.type == "1");
+ if (d2 != null)
+ {
+ dt2.Add(d2.count);
+ }
+ else
+ {
+ dt2.Add(0);
+ }
+ var d3 = dalst.FirstOrDefault(y => y.time == x && y.taskType == 2&&y.type=="2");
+ if (d3 != null)
+ {
+ dt3.Add(d3.count);
+ }
+ else
+ {
+ dt3.Add(0);
+ }
+ var d4 = dalst.FirstOrDefault(y => y.time == x && y.taskType == 2 && y.type == "1");
+ if (d4 != null)
+ {
+ dt4.Add(d4.count);
+ }
+ else
+ {
+ dt4.Add(0);
+ }
+
+ });
+ }
+ hbe.data = new List<Date>();
+ hbe.xdata = timelstNoYear;
+ hbe.legend = new List<string>() { "绌哄櫒鍏峰叆搴�", "甯︿欢鍣ㄥ叿鍏ュ簱","绌哄櫒鍏峰嚭搴�", "甯︿欢鍣ㄥ叿鍑哄簱" };
+ Date dd1= new Date() { name = "绌哄櫒鍏峰叆搴�" };
+ dd1.xdata = new List<int>();
+ dd1.xdata.AddRange(dt1);
+ hbe.data.Add(dd1);
+
+ Date dd2 = new Date() { name = "甯︿欢鍣ㄥ叿鍏ュ簱" };
+ dd2.xdata = new List<int>();
+ dd2.xdata.AddRange(dt2);
+ hbe.data.Add(dd2);
+
+ Date dd3 = new Date() { name = "绌哄櫒鍏峰嚭搴�" };
+ dd3.xdata = new List<int>();
+ dd3.xdata.AddRange(dt3);
+ hbe.data.Add(dd3);
+
+ Date dd4 = new Date() { name = "甯︿欢鍣ㄥ叿鍑哄簱" };
+ dd4.xdata = new List<int>();
+ dd4.xdata.AddRange(dt4);
+ hbe.data.Add(dd4);
+
+
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new HomeBarEntity();
+ }
+ }
+ /// <summary>
+ /// 鑾峰彇闆朵欢鐨勫嚭鍏ュ簱鏁伴噺
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static HomeBarEntity GetHomeBarItemData(string startTime, string endTime, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ HomeBarEntity hbe = new HomeBarEntity();
+ string sql = @" select A.TYPE as taskType,SUM(A.ITEMCOUNT) count,CONVERT(VARCHAR(10),A.CREATETIME,120)time,'1' as type from [dbo].[TASK_RECORD] A left join TASK_TASK B on A.TASKID=B.ID
+ where (A.TYPE=1 or A.TYPE=2) and A.ITEMID is not null and B.TASKSTATUS=N'瀹屾垚'
+ and A.CREATETIME>='{0}' and A.CREATETIME<='{1}'
+ group by TYPE,CONVERT(VARCHAR(10),A.CREATETIME,120)";
+
+ sql = string.Format(sql, startTime, endTime);
+ List<SummaryHomeEntity> dalst = edm.Database.SqlQuery<SummaryHomeEntity>(sql).ToList(); ;
+ List<string> timelst = new List<string>();
+ List<string> timelstNoYear = new List<string>();
+ string dt = DateTime.Parse(startTime).ToString("yyyy-MM-dd");
+ string edt = DateTime.Parse(endTime).AddDays(1).ToString("yyyy-MM-dd");
+ while (dt != edt)
+ {
+ timelst.Add(dt);
+ timelstNoYear.Add(dt.Substring(5));
+ dt = DateTime.Parse(dt).AddDays(1).ToString("yyyy-MM-dd");
+ }
+ List<int> dt1 = new List<int>();
+ List<int> dt2 = new List<int>();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ var d1 = dalst.FirstOrDefault(y => y.time == x && y.taskType == 1);
+ if (d1 != null)
+ {
+ dt1.Add(d1.count);
+ }
+ else
+ {
+ dt1.Add(0);
+ }
+ var d2 = dalst.FirstOrDefault(y => y.time == x && y.taskType == 2);
+ if (d2 != null)
+ {
+ dt2.Add(d2.count);
+ }
+ else
+ {
+ dt2.Add(0);
+ }
+
+ });
+ }
+ hbe.xdata = timelstNoYear;
+ hbe.legend = new List<string>() { "鍏ュ簱", "鍑哄簱" };
+ hbe.data = new List<Date>();
+ Date dd1 = new Date() { name = "鍏ュ簱" };
+ dd1.xdata = new List<int>();
+ dd1.xdata.AddRange(dt1);
+ hbe.data.Add(dd1);
+ Date dd2 = new Date() { name = "鍑哄簱" };
+ dd2.xdata = new List<int>();
+ dd2.xdata.AddRange(dt2);
+ hbe.data.Add(dd2);
+
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new HomeBarEntity();
+ }
+ }
+ /// <summary>
+ /// 鑾峰彇鍚勭被鍨嬪簱浣嶆暟閲忥紝鍗犵敤鐜�
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<HomePieDataEntity> GetHomePieData(out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+
+ List<HomePieDataEntity> hpdlist = new List<HomePieDataEntity>();
+ List<BASE_PLACETYPE> typelst = edm.BASE_PLACETYPE.ToList();
+ List<BASE_PLACE> placelst = edm.BASE_PLACE.Where(x => x.PLACE.Contains("-")).ToList();
+ typelst.ForEach(x =>
+ {
+ int totalplace = placelst.Where(y => y.PLACETYPEID == x.ID).ToList().Count;
+ int hascoun = placelst.Where(y => y.PLACETYPEID == x.ID && y.ISFULL == 1).ToList().Count;
+ HomePieDataEntity hpd = new HomePieDataEntity()
+ {
+ placeType=x.PLACETYPE+":"+x.LENGTH+"x"+x.WIDTH+"x"+x.HEIGHT,
+ placeTotalNum = totalplace,
+ placeFullNum = hascoun,
+ placeRate = hascoun == 0 ? "0.00%" : ((hascoun * 10000 / totalplace) / 100.00).ToString()+"%",
+ placeVal = hascoun,
+ placeOtherVal = totalplace - hascoun
+
+ };
+ hpdlist.Add(hpd);
+ });
+ return hpdlist;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new List<HomePieDataEntity>();
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳ぉ鐨勫嚭鍏ュ簱搴撻浂浠讹紝鍣ㄥ叿锛岃秴鏃舵暟閲�
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<HomeNumDataEntity> GetHomeNumData(out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+ List<HomeNumDataEntity> hnelist = new List<HomeNumDataEntity>();
+ var sdt = DateTime.Parse((DateTime.Now.ToString("yyyy-MM-dd")));
+ var edt = DateTime.Parse(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"));
+ var dt = edm.View_TASK_RECORD.Where(x => x.createTime >= sdt && x.createTime <= edt).ToList();
+ var tdt = edm.TASK_RECORD.Where(x => x.CREATETIME >= sdt && x.CREATETIME <= edt).ToList();
+ var iitdt = dt.Where(x => x.taskType == 1 && !string.IsNullOrEmpty(x.itemName)).ToList().Sum(x=>x.itemCount);
+ var oitdt = dt.Where(x => x.taskType == 2 && !string.IsNullOrEmpty(x.itemName)).ToList().Sum(x => x.itemCount);
+ var icodt = tdt.Where(x => x.TASK_TASK.TASKTYPE == 1).ToList().Select(x=>x.TASKID).Distinct().Count();
+ var ocodt = tdt.Where(x => x.TASK_TASK.TASKTYPE == 2).ToList().Select(x => x.TASKID).Distinct().Count();
+ var overdatacoun = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.stStatus=="瓒呮湡").ToList().Count;
+ hnelist.Add(new HomeNumDataEntity() { no = 1, titel = "浠婃棩鍏ュ簱闆朵欢鏁�", value = iitdt });
+ hnelist.Add(new HomeNumDataEntity() { no = 2, titel = "浠婃棩鍑哄簱闆朵欢鏁�", value = oitdt });
+ hnelist.Add(new HomeNumDataEntity() { no = 3, titel = "浠婃棩鍏ュ簱鍣ㄥ叿鏁�", value = icodt });
+ hnelist.Add(new HomeNumDataEntity() { no = 4, titel = "浠婃棩鍑哄簱鍣ㄥ叿鏁�", value = ocodt });
+ hnelist.Add(new HomeNumDataEntity() { no = 5, titel = "瓒呮湡闆朵欢鏁伴噺", value = overdatacoun });
+
+ return hnelist;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new List<HomeNumDataEntity>();
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾澶╃殑鍑哄叆搴撳簱闆朵欢锛屽櫒鍏凤紝瓒呮椂鏁伴噺
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<HomeNumDataEntityVsTime> GetHomeNumDataByDate(DateTime stday, DateTime edday, out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+
+ //绗竴鎺�
+ List<HomeNumDataEntityVsTime> hvtList = new List<HomeNumDataEntityVsTime>();
+ int dayNum = (DateTime.Parse((edday.ToString("yyyy-MM-dd"))) - DateTime.Parse((stday.AddDays(1).ToString("yyyy-MM-dd")))).Days;
+ for (int i = 0; i < dayNum; i++)
+ {
+ List<HomeNumDataEntity> hnelist = new List<HomeNumDataEntity>();
+ var sdt = DateTime.Parse((stday.AddDays(i).ToString("yyyy-MM-dd")));
+ var edt = DateTime.Parse(stday.AddDays(i + 1).ToString("yyyy-MM-dd"));
+ var dt = edm.View_TASK_RECORD.Where(x => x.createTime >= sdt && x.createTime <= edt).ToList();
+ var tdt = edm.TASK_RECORD.Where(x => x.CREATETIME >= sdt && x.CREATETIME <= edt).ToList();
+ var iitdt = dt.Where(x => x.taskType == 1 && !string.IsNullOrEmpty(x.itemName)).ToList().Sum(x => x.itemCount);
+ var oitdt = dt.Where(x => x.taskType == 2 && !string.IsNullOrEmpty(x.itemName)).ToList().Sum(x => x.itemCount);
+ var icodt = tdt.Where(x => x.TASK_TASK.TASKTYPE == 1).ToList().Select(x => x.TASKID).Distinct().Count();
+ var ocodt = tdt.Where(x => x.TASK_TASK.TASKTYPE == 2).ToList().Select(x => x.TASKID).Distinct().Count();
+ //var overdatacoun = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.stStatus == "瓒呮湡").ToList().Count;
+ hnelist.Add(new HomeNumDataEntity() { no = 1, titel = "鍏ュ簱闆朵欢鏁�", value = iitdt });
+ hnelist.Add(new HomeNumDataEntity() { no = 2, titel = "鍑哄簱闆朵欢鏁�", value = oitdt });
+ hnelist.Add(new HomeNumDataEntity() { no = 3, titel = "鍏ュ簱鍣ㄥ叿鏁�", value = icodt });
+ hnelist.Add(new HomeNumDataEntity() { no = 4, titel = "鍑哄簱鍣ㄥ叿鏁�", value = ocodt });
+ //hnelist.Add(new HomeNumDataEntity() { no = 5, titel = "瓒呮湡闆朵欢鏁伴噺", value = overdatacoun });
+ //绗簩鎺�
+ var record = edm.RECORD_WAREHOUSEINFO.FirstOrDefault(x => x.time >= sdt && x.time<=edt);
+ if (record != null)
+ {
+ hnelist.Add(new HomeNumDataEntity() { no = 5, titel = "瓒呮湡闆朵欢鏁伴噺", value = record.itemOver ?? 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 6, titel = "搴撲綅鎬绘暟", value = 2980 });
+ hnelist.Add(new HomeNumDataEntity() { no = 7, titel = "鏈夎揣搴撲綅", value = record.placeFull ?? 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 8, titel = "甯︿欢鍣ㄥ叿", value = record.containerFull ?? 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 9, titel = "绌哄櫒鍏锋暟", value = record.containerEmpty ?? 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 10, titel = "鍒朵欢鎬绘暟", value = record.itemNum ?? 0 });
+ }
+ else
+ {
+ hnelist.Add(new HomeNumDataEntity() { no = 5, titel = "瓒呮湡闆朵欢鏁伴噺", value = 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 6, titel = "搴撲綅鎬绘暟", value = 2980 });
+ hnelist.Add(new HomeNumDataEntity() { no = 7, titel = "鏈夎揣搴撲綅", value = 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 8, titel = "甯︿欢鍣ㄥ叿", value = 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 9, titel = "绌哄櫒鍏锋暟", value = 0 });
+ hnelist.Add(new HomeNumDataEntity() { no = 10, titel = "鍒朵欢鎬绘暟", value = 0 });
+ }
+ HomeNumDataEntityVsTime hvt = new HomeNumDataEntityVsTime();
+ hvt.time = sdt;
+ hvt.homeNumDataEntityList = hnelist;
+ hvtList.Add(hvt);
+ }
+ return hvtList;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new List<HomeNumDataEntityVsTime>();
+ }
+ }
+ #endregion
+
+ /// <summary>
+ /// 搴撳瓨鍒嗙被缁熻
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static PieEntity GetStockClassificationData(int type,out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ PieEntity hbe = new PieEntity();
+ string sql="";
+ if (type==1)
+ {
+ sql = @"select createLine as titel,SUM(itemNum) as value from(select itemName,itemNum,CASE WHEN createLine like '%鏉庢钵%' THEN '鏉庢钵浜х嚎'
+ELSE createLine END as createLine,containerName,place from [dbo].[View_BASE_PLACE_VS_CONTAINER]
+where createLine is not null and createLine like '%鍗冲ⅷ%' or createLine like '%鏉庢钵%') A group by createLine ";
+ }else
+ {
+ sql = @"select createLine as titel,COUNT(distinct containerName) value from(select itemName,itemNum,CASE WHEN createLine like '%鏉庢钵%' THEN '鏉庢钵浜х嚎'
+ELSE createLine END as createLine,containerName,place from [dbo].[View_BASE_PLACE_VS_CONTAINER]
+where createLine is not null and createLine like '%鍗冲ⅷ%' or createLine like '%鏉庢钵%') A group by createLine";
+ }
+
+ List<HomeNumDataEntity> dalst = edm.Database.SqlQuery<HomeNumDataEntity>(sql).ToList(); ;
+ List<string> timelst = new List<string>();
+
+ List<int> dt1 = new List<int>();
+
+ if (dalst != null && dalst.Count > 0)
+ {
+ hbe.legend = new List<string>();
+ hbe.legend.AddRange(dalst.Select(x=>x.titel).ToList());
+ List<PieDate> pdlst = new List<PieDate>();
+ double sumcount = double.Parse(dalst.Select(x => x.value).ToList().Sum().ToString());
+ dalst.ForEach(x =>
+ {
+ var pd = new PieDate();
+ pd.name = x.titel;
+ long val = string.IsNullOrEmpty(x.value.ToString()) ? 0 : long.Parse(x.value.ToString());
+ pd.data = ((val * 10000 / sumcount)/100).ToString("0.00");
+ pdlst.Add(pd);
+ });
+ hbe.data = new List<PieDate>();
+ hbe.data.AddRange(pdlst);
+ }
+ else
+ {
+ hbe.legend = new List<string>();
+ hbe.legend.Add("鍗冲ⅷA绾跨敳鐝�");
+ hbe.legend.Add("鍗冲ⅷA绾夸箼鐝�");
+ hbe.legend.Add("鍗冲ⅷB绾跨敳鐝�");
+ hbe.legend.Add("鍗冲ⅷB绾夸箼鐝�");
+ hbe.data = new List<PieDate>();
+ hbe.data.Add(new PieDate() { name = "鍗冲ⅷA绾跨敳鐝�", data = "0.00" });
+ hbe.data.Add(new PieDate() { name = "鍗冲ⅷA绾夸箼鐝�", data = "0.00" });
+ hbe.data.Add(new PieDate() { name = "鍗冲ⅷB绾跨敳鐝�", data = "0.00" });
+ hbe.data.Add(new PieDate() { name = "鍗冲ⅷB绾夸箼鐝�", data = "0.00" });
+ }
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new PieEntity();
+ }
+ }
+ /// <summary>
+ /// 鍑哄叆搴撲换鍔″钩鍧囨椂闀�
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetInOutAverageTime(string startTime, string endTime, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ BarEntity hbe = new BarEntity();
+ string sql = @"select CASE
+WHEN TASKTYPE=1 THEN '鍏ュ簱'
+WHEN TASKTYPE=2 THEN '鍑哄簱'
+END as type,count(id)taskType,CONVERT(varchar(100), FINISHTIME, 23)time,sum(DATEDIFF ( mi , DOTIME, FINISHTIME))count from [dbo].[TASK_TASK]
+where FINISHTIME>='{0}' and FINISHTIME<='{1}' and TASKSTATUS='瀹屾垚'
+group by CONVERT(varchar(100), FINISHTIME, 23),TASKTYPE";
+ sql = string.Format(sql, startTime, endTime);
+ List<SummaryHomeEntity> dalst = edm.Database.SqlQuery<SummaryHomeEntity>(sql).ToList();
+ List<string> timelst = new List<string>();
+ List<string> timelstNoYear = new List<string>();
+
+ string dt = DateTime.Parse(startTime).ToString("yyyy-MM-dd");
+ string edt = DateTime.Parse(endTime).AddDays(1).ToString("yyyy-MM-dd");
+ while (dt != edt)
+ {
+ timelstNoYear.Add(dt.Substring(5));
+ timelst.Add(dt);
+ dt = DateTime.Parse(dt).AddDays(1).ToString("yyyy-MM-dd");
+ }
+ List<string> dt1 = new List<string>();
+ List<string> dt2 = new List<string>();
+ List<string> dt3 = new List<string>();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ var d1 = dalst.FirstOrDefault(y => y.time == x && y.type == "鍏ュ簱");
+ if (d1 != null)
+ {
+ double taskcoun = long.Parse(d1.taskType.ToString());
+ long taskmin = long.Parse(d1.count.ToString());
+ string val = ((taskmin / taskcoun)).ToString("0.00");
+ dt1.Add(val);
+ }
+ else
+ {
+ dt1.Add("0.00");
+ }
+ var d2 = dalst.FirstOrDefault(y => y.time == x && y.type == "鍑哄簱");
+ if (d2 != null)
+ {
+ double taskcoun = long.Parse(d2.taskType.ToString());
+ long taskmin = long.Parse(d2.count.ToString());
+ string val = ((taskmin/ taskcoun)).ToString("0.00");
+ dt2.Add(val);
+ }
+ else
+ {
+ dt2.Add("0.00");
+ }
+ var d3 = dalst.Where(y => y.time == x).ToList() ;
+ if (d3 != null && d3.Count>0)
+ {
+ double taskcoun=long.Parse(d3.Select(y=>y.taskType).Sum().ToString());
+ long taskmin=long.Parse(d3.Select(y=>y.count).Sum().ToString());
+ string val = ((taskmin / taskcoun)).ToString("0.00");
+ dt3.Add(val);
+ }
+ else
+ {
+ dt3.Add("0.00");
+ }
+ });
+ }
+ hbe.data = new List<BarDate>();
+ hbe.xdata = timelstNoYear;
+ hbe.legend = new List<string>() { "鍏ュ簱", "鍑哄簱", "骞冲潎" };
+ BarDate dd1 = new BarDate() { name = "鍏ュ簱" };
+ dd1.xdata = new List<string>();
+ dd1.xdata.AddRange(dt1);
+ hbe.data.Add(dd1);
+
+ BarDate dd2 = new BarDate() { name = "鍑哄簱" };
+ dd2.xdata = new List<string>();
+ dd2.xdata.AddRange(dt2);
+ hbe.data.Add(dd2);
+
+ BarDate dd3 = new BarDate() { name = "骞冲潎" };
+ dd3.xdata = new List<string>();
+ dd3.xdata.AddRange(dt3);
+ hbe.data.Add(dd3);
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+
+ /// <summary>
+ /// 姣忓皬鏃跺嚭鍏ュ簱鏁�
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetInOutCountByHour(string startTime, string endTime, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ BarEntity hbe = new BarEntity();
+ string sql = @"select CASE
+WHEN TASKTYPE=1 THEN '鍏ュ簱'
+WHEN TASKTYPE=2 THEN '鍑哄簱'
+END as type,count(id)taskType,CONVERT(varchar(100), FINISHTIME, 23) +' '+right('00'+(CONVERT(varchar(10),(DATEPART(hh,FINISHTIME)))),2) time,sum(DATEDIFF ( mi , DOTIME, FINISHTIME))count from [dbo].[TASK_TASK]
+where FINISHTIME>='{0}' and FINISHTIME<='{1}' and TASKSTATUS='瀹屾垚'
+group by CONVERT(varchar(100), FINISHTIME, 23)+' '+right('00'+(CONVERT(varchar(10),(DATEPART(hh,FINISHTIME)))),2),TASKTYPE";
+ string dt = DateTime.Parse(startTime).ToString("yyyy-MM-dd 00:00:00");
+ string edt = DateTime.Parse(endTime).AddDays(1).ToString("yyyy-MM-dd 00:00:00");
+
+ sql = string.Format(sql, dt, edt);
+ List<SummaryHomeEntity> dalst = edm.Database.SqlQuery<SummaryHomeEntity>(sql).ToList();
+ List<string> timelst = new List<string>();
+
+ while (dt != edt)
+ {
+ timelst.Add(dt);
+ dt = DateTime.Parse(dt).AddHours(1).ToString("yyyy-MM-dd HH:mm:ss");
+ }
+ List<string> dt1 = new List<string>();
+ List<string> dt2 = new List<string>();
+ List<string> dt3 = new List<string>();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ var d1 = dalst.FirstOrDefault(y => y.time.Substring(0, 13) == x.Substring(0, 13) && y.type == "鍏ュ簱");
+ if (d1 != null)
+ {
+ double taskcoun = long.Parse(d1.taskType.ToString());
+ //long taskmin = long.Parse(d1.count.ToString());
+ //string val = ((taskmin / taskcoun)).ToString("0.00");
+ dt1.Add(taskcoun.ToString());
+ }
+ else
+ {
+ dt1.Add("0.00");
+ }
+ var d2 = dalst.FirstOrDefault(y => y.time.Substring(0, 13) == x.Substring(0, 13) && y.type == "鍑哄簱");
+ if (d2 != null)
+ {
+ double taskcoun = long.Parse(d2.taskType.ToString());
+ //long taskmin = long.Parse(d2.count.ToString());
+ //string val = ((taskmin / taskcoun)).ToString("0.00");
+ dt2.Add(taskcoun.ToString());
+ }
+ else
+ {
+ dt2.Add("0.00");
+ }
+ var d3 = dalst.Where(y => y.time.Substring(0, 13) == x.Substring(0, 13)).ToList();
+ if (d3 != null && d3.Count > 0)
+ {
+ double taskcoun = long.Parse(d3.Select(y => y.taskType).Sum().ToString());
+ //long taskmin = long.Parse(d3.Select(y => y.count).Sum().ToString());
+ //string val = ((taskmin / taskcoun)).ToString("0.00");
+ dt3.Add(taskcoun.ToString());
+ }
+ else
+ {
+ dt3.Add("0.00");
+ }
+ });
+ }
+ hbe.data = new List<BarDate>();
+ hbe.xdata = timelst;
+ hbe.legend = new List<string>() { "鍏ュ簱", "鍑哄簱", "鎬昏" };
+ BarDate dd1 = new BarDate() { name = "鍏ュ簱" };
+ dd1.xdata = new List<string>();
+ dd1.xdata.AddRange(dt1);
+ hbe.data.Add(dd1);
+
+ BarDate dd2 = new BarDate() { name = "鍑哄簱" };
+ dd2.xdata = new List<string>();
+ dd2.xdata.AddRange(dt2);
+ hbe.data.Add(dd2);
+
+ BarDate dd3 = new BarDate() { name = "鎬昏" };
+ dd3.xdata = new List<string>();
+ dd3.xdata.AddRange(dt3);
+ hbe.data.Add(dd3);
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+
+
+ /// <summary>
+ /// 浠诲姟鑺傛媿鍒嗘瀽
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetTaskBeatAnalysis(string startTime, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ BarEntity hbe = new BarEntity();
+ string sql = @"select CONVERT(varchar(100), FINISHTIME, 23)titel,DATEDIFF ( mi , DOTIME, FINISHTIME) as value from [dbo].[TASK_TASK]
+where CONVERT(varchar(100), FINISHTIME, 23)='{0}' and TASKSTATUS='瀹屾垚'";
+ sql = string.Format(sql, startTime);
+ List<HomeNumDataEntity> dalst = edm.Database.SqlQuery<HomeNumDataEntity>(sql).ToList();
+ List<string> timelst = new List<string>();
+ List<int> timeintlst = new List<int>();
+ timeintlst.Add(2);
+ timeintlst.Add(3);
+ timeintlst.Add(4);
+ timeintlst.Add(5);
+ timeintlst.Add(6);
+ timeintlst.Add(7);
+ timeintlst.Add(8);
+ timeintlst.Add(9);
+ timeintlst.Add(10);
+ timeintlst.Add(20);
+ timeintlst.Add(30);
+ List<string> dt1 = new List<string>();
+ List<string> count1 = new List<string>();
+
+ if (timeintlst != null && timeintlst.Count > 0)
+ {
+ double sumcount = double.Parse(dalst.Count().ToString());
+ timeintlst.ForEach(x =>
+ {
+
+ int st = x;
+ int et = 0;
+ if (x >= 10)
+ {
+ et = x + 10;
+ }
+ else
+ {
+ et = x + 1;
+ }
+ if (x >= 10)
+ {
+ et = x + 10;
+ timelst.Add("澶т簬" + x + "鍒嗛挓");
+
+ }
+ else
+ {
+ timelst.Add(x + "鍒嗛挓");
+ }
+ List<HomeNumDataEntity> d1 = new List<HomeNumDataEntity>();
+ if (st >= 30)
+ {
+ d1 = dalst.Where(y => y.value >= st).ToList();
+
+ }
+ else
+ {
+ d1 = dalst.Where(y => y.value >= st && y.value < et).ToList();
+ }
+ string val = (dalst.Where(y => y.value < et).Count() * 100 / sumcount).ToString("0.00");
+ dt1.Add(val);
+ if (d1 != null && d1.Count>0)
+ {
+
+ long count = long.Parse(d1.Count.ToString());
+ //string val = ((count*100 / sumcount)).ToString("0.00");
+ count1.Add(count.ToString());
+ }
+ else
+ {
+ //dt1.Add("0.00");
+ count1.Add("0");
+ }
+
+ });
+ }
+ //for (int i = 0; i < dt1.Count; i++)
+ //{
+ // if (i > 0)
+ // {
+ // dt1[i] = (double.Parse(dt1[i]) + double.Parse(dt1[i - 1])).ToString();
+ // }
+ //}
+
+ int maxNum = 0;
+ foreach (var i in count1)
+ {
+ maxNum+=int.Parse(i);
+ }
+ hbe.data = new List<BarDate>();
+ hbe.xdata = timelst;
+ hbe.legend = new List<string>();
+ BarDate dd1 = new BarDate() { name = "鍗犳瘮" };
+ dd1.xdata = new List<string>();
+ dd1.xdata.AddRange(dt1);
+ hbe.data.Add(dd1);
+ BarDate dd2 = new BarDate() { name = "鏁伴噺" };
+ dd2.xdata = new List<string>();
+ dd2.xdata.AddRange(count1);
+ hbe.data.Add(dd2);
+ hbe.legend.Add("鍗犳瘮");
+ hbe.legend.Add("鏁伴噺");
+ //绾佃酱鏈�澶у��
+ hbe.maxNum = maxNum;
+ return hbe;
+ }
+ }
+ catch
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+ /// <summary>
+ /// 璐ф牸鍒╃敤鐜�
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetStorageVailability(string startTime, string endTime, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ BarEntity hbe = new BarEntity();
+ string sql = @"select A.PlaceCount as count1,isnull(B.EmplaceCount,0) as count2,A.Tm as time from (
+(select COUNT(distinct PLACEID)PlaceCount,CONVERT(varchar,CREATETIME,23) as Tm
+from [dbo].[STORAGERECORD] where CREATETIME>='{0}' and CREATETIME<='{1}' group by CONVERT(varchar,CREATETIME,23))A left join
+(select COUNT(distinct PLACEID)EmplaceCount,CONVERT(varchar,CREATETIME,23) as Tm
+from [dbo].[STORAGERECORD] where ITEMID is null and CREATETIME>='{2}' and CREATETIME<='{3}' group by CONVERT(varchar,CREATETIME,23)) B on A.Tm=B.Tm
+)";
+ sql = string.Format(sql, startTime, endTime, startTime, endTime);
+ List<SummaryCommEntity> dalst = edm.Database.SqlQuery<SummaryCommEntity>(sql).ToList();
+ List<string> timelst = new List<string>();
+ List<string> timelstNoYear = new List<string>();
+
+ string dt = DateTime.Parse(startTime).ToString("yyyy-MM-dd");
+ string edt = DateTime.Parse(endTime).AddDays(1).ToString("yyyy-MM-dd");
+ while (dt != edt)
+ {
+ timelstNoYear.Add(dt.Substring(5));
+ timelst.Add(dt);
+ dt = DateTime.Parse(dt).AddDays(1).ToString("yyyy-MM-dd");
+ }
+ int placeallcount = 2980;
+
+ List<string> dt1 = new List<string>();
+ List<string> dt2 = new List<string>();
+ List<string> dt3 = new List<string>();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ var d1 = dalst.FirstOrDefault(y => y.time == x);
+ if (d1 != null)
+ {
+ double c1 = double.Parse(d1.count1.ToString());
+ double c2 = double.Parse(d1.count2.ToString());
+ string val1 = ((c1 / placeallcount)*100).ToString("0.00");
+ string val2 = ((c2 / placeallcount)*100).ToString("0.00");
+ dt1.Add(val1);
+ dt2.Add(val2);
+ }
+ else
+ {
+ dt1.Add("0.00");
+ dt2.Add("0.00");
+ }
+ });
+ }
+ hbe.data = new List<BarDate>();
+ hbe.xdata = timelstNoYear;
+ //hbe.legend = new List<string>() { "璐ф牸鍒╃敤鐜�", "绌哄櫒鍏峰埄鐢ㄧ巼"};
+ hbe.legend = new List<string>() { "璐ф牸鍒╃敤鐜�" };
+ BarDate dd1 = new BarDate() { name = "璐ф牸鍒╃敤鐜�" };
+ dd1.xdata = new List<string>();
+ dd1.xdata.AddRange(dt1);
+ hbe.data.Add(dd1);
+
+ //BarDate dd2 = new BarDate() { name = "绌哄櫒鍏峰埄鐢ㄧ巼" };
+ //dd2.xdata = new List<string>();
+ //dd2.xdata.AddRange(dt2);
+ //hbe.data.Add(dd2);
+
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+
+ /// <summary>
+ /// 鍦ㄥ埗鍝佽祫閲戝垎鏋�
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetStorageCapitalAnalysis(string startTime, string endTime, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ BarEntity hbe = new BarEntity();
+ string sql = @"select SUM(ITEMNUM*PRICE) as coast,CONVERT(varchar,CREATETIME,23) as time from [dbo].[STORAGERECORD] where ITEMID is not null and CREATETIME>='{0}' and CREATETIME<='{1}'
+ group by CONVERT(varchar,CREATETIME,23)";
+ string sqlCount = @"select CAST(SUM(ITEMNUM) as decimal(10,2)) as coast,CONVERT(varchar,CREATETIME,23) as time from [dbo].[STORAGERECORD] where ITEMID is not null and CREATETIME>='{0}' and CREATETIME<='{1}'
+ group by CONVERT(varchar,CREATETIME,23)";
+ sql = string.Format(sql, startTime, endTime);
+ sqlCount = string.Format(sqlCount, startTime, endTime);
+ List<SummaryCommEntity> dalst = edm.Database.SqlQuery<SummaryCommEntity>(sql).ToList();
+ List<SummaryCommEntity> countList = edm.Database.SqlQuery<SummaryCommEntity>(sqlCount).ToList();
+
+ List<string> timelst = new List<string>();
+ List<string> timelstNoYear = new List<string>();
+ string dt = DateTime.Parse(startTime).ToString("yyyy-MM-dd");
+ string edt = DateTime.Parse(endTime).AddDays(1).ToString("yyyy-MM-dd");
+ while (dt != edt)
+ {
+ timelst.Add(dt);
+ timelstNoYear.Add(dt.Substring(5));
+ dt = DateTime.Parse(dt).AddDays(1).ToString("yyyy-MM-dd");
+ }
+ decimal allcost = dalst.Select(x => x.coast).Sum();
+ decimal averahe = allcost / timelst.Count;
+
+ List<string> dt1 = new List<string>();
+ List<string> dt2 = new List<string>();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ var d1 = dalst.FirstOrDefault(y => y.time == x);
+ var count1=countList.FirstOrDefault(y => y.time == x);
+ if (d1 != null)
+ {
+
+ string val = d1.coast.ToString("0.00"); ;
+ dt1.Add(val);
+
+ decimal a = d1.coast / count1.coast;
+ dt2.Add(a.ToString("0.00"));
+
+ }
+ else
+ {
+ dt1.Add("0.00");
+ dt2.Add("0.00");
+ }
+
+ //dt2.Add(averahe.ToString("0.00"));
+ });
+ }
+ hbe.data = new List<BarDate>();
+ hbe.xdata = timelstNoYear;
+ hbe.legend = new List<string>() { "鍦ㄥ埗鎬婚噾棰�", "鍦ㄥ埗骞冲潎閲戦"};
+ BarDate dd1 = new BarDate() { name = "鍦ㄥ埗鎬婚噾棰�" };
+ dd1.xdata = new List<string>();
+ dd1.xdata.AddRange(dt1);
+ hbe.data.Add(dd1);
+
+ BarDate dd2 = new BarDate() { name = "鍦ㄥ埗骞冲潎閲戦" };
+ dd2.xdata = new List<string>();
+ dd2.xdata.AddRange(dt2);
+ hbe.data.Add(dd2);
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+
+ /// <summary>
+ /// 绔嬪簱鎬昏鍜屽埗浠舵�昏
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<HomeNumDataEntity> GetStorageOverviewData(out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+ List<HomeNumDataEntity> hnelist = new List<HomeNumDataEntity>();
+ var overdatacoun = edm.View_BASE_PLACE_VS_CONTAINER.ToList();
+ int hasplace = overdatacoun.Select(x => x.place).Distinct().Count();
+ int emptyitemplace = overdatacoun.Where(x=>string.IsNullOrEmpty(x.itemName)).Select(x => x.place).Distinct().Count();
+ int itemcoun = (int)overdatacoun.Select(x => x.itemNum).Sum();
+ hnelist.Add(new HomeNumDataEntity() { no = 1, titel = "搴撲綅鎬绘暟", value = 2980 });
+ hnelist.Add(new HomeNumDataEntity() { no = 2, titel = "鏈夎揣搴撲綅", value = hasplace });
+ hnelist.Add(new HomeNumDataEntity() { no = 3, titel = "甯︿欢鍣ㄥ叿", value = (hasplace - emptyitemplace) });
+ hnelist.Add(new HomeNumDataEntity() { no = 4, titel = "绌哄櫒鍏锋暟", value = emptyitemplace });
+ hnelist.Add(new HomeNumDataEntity() { no = 5, titel = "鍒朵欢鎬绘暟", value = itemcoun });
+
+ return hnelist;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new List<HomeNumDataEntity>();
+ }
+ }
+
+ /// <summary>
+ /// 璁惧鍒╃敤鐜�
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetDevAvailability(string startTime, string endTime, int type,out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ string sql = "";
+
+ if (type != 1)//RGV
+ {
+ sql = @"select ('RGV' +cast(USERGVID as varchar(5))) as titel,SUM(datediff( minute, DOTIME, FINISHTIME )) as count1,CONVERT(varchar,FINISHTIME,23)as time FROM [dbo].[RgvTask]
+ where FINISHTIME is not null and FINISHTIME>='{0}' and FINISHTIME<='{1}' group by CONVERT(varchar,FINISHTIME,23),USERGVID";
+ }
+ else //鍫嗗灈鏈�
+ {
+ sql = @"select ('鍫嗗灈鏈�' +cast(USESRMID as varchar(5))) as titel,SUM(datediff( minute, DOTIME, FINISHTIME )) as count1,CONVERT(varchar,FINISHTIME,23)as time FROM [dbo].[SrmTask]
+ where FINISHTIME is not null and FINISHTIME>='{0}' and FINISHTIME<='{1}' group by CONVERT(varchar,FINISHTIME,23),USESRMID
+ ";
+ }
+ BarEntity hbe = new BarEntity();
+ sql = string.Format(sql,startTime, endTime);
+ List<SummaryCommEntity> dalst = edm.Database.SqlQuery<SummaryCommEntity>(sql).ToList();
+ List<string> timelst = new List<string>();
+ List<string> devlst = new List<string>();
+ List<BarDate> bdlst = new List<BarDate>();
+ timelst = dalst.Select(x => x.time).OrderBy(x => x).Distinct().ToList();
+ devlst = dalst.Select(x => x.titel).Distinct().ToList();
+
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ devlst.ForEach(y =>
+ {
+ string rat = "0.00";
+ var dt = dalst.FirstOrDefault(b => b.time == x && b.titel == y);
+ if (dt != null)
+ {
+ rat = ((double.Parse(dt.count1.ToString()) / (18 * 60)) * 100).ToString("0.00");
+ }
+ var bd = bdlst.FirstOrDefault(a => a.name == y);
+ if (bd == null)
+ {
+ BarDate dd1 = new BarDate() { name = y };
+ dd1.xdata = new List<string>();
+ dd1.xdata.Add(rat);
+ bdlst.Add(dd1);
+ }
+ else
+ {
+ bd.xdata.Add(rat);
+ }
+
+
+ });
+ });
+ }
+ hbe.data = new List<BarDate>();
+ //涓存椂鏍煎紡鍖栨椂闂�
+ for (int i = 0; i < timelst.Count; i++)
+ {
+ timelst[i] = timelst[i].Substring(5);
+ }
+ hbe.xdata = timelst;
+ hbe.legend = new List<string>();
+ hbe.legend = devlst;
+
+ hbe.data.AddRange(bdlst);
+
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+
+ /// <summary>
+ /// 璁惧鍙姩鐜�
+ /// </summary>
+ /// <param name="startTime"></param>
+ /// <param name="endTime"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetDevMovable(string startTime, string endTime,int type, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ List<string> devlst = new List<string>();
+ string devname="鍫嗗灈鏈�";
+ if (type != 1)
+ {
+ devname = "RGV";
+ devlst.Add("RGV1");
+ devlst.Add("RGV2");
+ devlst.Add("RGV3");
+ devlst.Add("RGV4");
+ }
+ else
+ {
+ devlst.Add("鍫嗗灈鏈�1");
+ devlst.Add("鍫嗗灈鏈�2");
+ devlst.Add("鍫嗗灈鏈�3");
+ devlst.Add("鍫嗗灈鏈�4");
+ devlst.Add("鍫嗗灈鏈�5");
+ devlst.Add("鍫嗗灈鏈�6");
+ devlst.Add("鍫嗗灈鏈�7");
+ devlst.Add("鍫嗗灈鏈�8");
+ devlst.Add("鍫嗗灈鏈�9");
+ }
+
+ BarEntity hbe = new BarEntity();
+ string sql = @" select DEVICENAME as titel, COUNT(DEVICENAME)as count1,CONVERT(varchar,DAY,23) as time from [dbo].[ALERT_ALERTTIME]
+ where ISERROR=1 and DEVICENAME like '%{0}%' and DAY>='{1}' and DAY<='{2}' group by DAY,DEVICENAME";
+ sql = string.Format(sql,devname,startTime, endTime);
+ List<SummaryCommEntity> dalst = edm.Database.SqlQuery<SummaryCommEntity>(sql).ToList();
+ List<string> timelst = new List<string>();
+
+ List<BarDate> bdlst = new List<BarDate>();
+ timelst = dalst.Select(x => x.time).OrderBy(x=>x).Distinct().ToList();
+ //devlst = dalst.Select(x => x.titel).Distinct().ToList();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ devlst.ForEach(y =>
+ {
+ string rat = "100";
+ var dt = dalst.FirstOrDefault(b => b.time == x && b.titel == y);
+ if (dt!=null)
+ {
+ if(((double.Parse(dt.count1.ToString()) / (24 * 60)) * 100)>100)
+ {
+ string st = "1";
+ }
+ rat = (100 - (double.Parse(dt.count1.ToString()) / (24 * 60)) * 100).ToString("0.00");
+ }
+ var bd = bdlst.FirstOrDefault(a => a.name == y);
+ if (bd==null)
+ {
+ BarDate dd1 = new BarDate() { name = y };
+ dd1.xdata = new List<string>();
+ dd1.xdata.Add(rat);
+ bdlst.Add(dd1);
+ }
+ else
+ {
+ bd.xdata.Add(rat);
+ }
+
+
+ });
+ });
+ }
+ hbe.data = new List<BarDate>();
+ hbe.xdata = timelst;
+ //涓存椂鏍煎紡鍖栨椂闂�
+ for (int i = 0; i < timelst.Count; i++)
+ {
+ timelst[i] = timelst[i].Substring(5);
+ }
+ hbe.legend = new List<string>();
+ hbe.legend = devlst;
+
+ hbe.data.AddRange(bdlst);
+
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+
+ /// <summary>
+ /// 鍒朵欢鍛ㄨ浆鏃堕棿
+ /// </summary>
+ /// <param name="year"></param>
+ /// <param name="stMonth"></param>
+ /// <param name="edMonth"></param>
+ /// <param name="stWeek"></param>
+ /// <param name="edWeek"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static BarEntity GetPartTurnover(int stYear, int edYear, int stMonth, int edMonth, int stWeek, int edWeek, out string msg)
+ {
+ try
+ {
+ msg = "";
+ string startTime = (DateTime.Parse((stYear + "-" + stMonth + "-" + (stWeek) * 7)).AddDays(-6)).ToString("yyyy-MM-dd");
+ string endTime = edYear + "-" + edMonth + "-" + edWeek * 7;
+
+ using (Model edm = new Model())
+ {
+ BarEntity hbe = new BarEntity();
+ string stsql = @"select SUM(ITEMNUM) as count1 ,Line as titel,CONVERT(datetime, CreateTime, 111) as dtime from (select A.ITEMID,A.ITEMNUM,A.PRICE,CONVERT(varchar ,A.CREATETIME, 23) CreateTime,left(B.CREATELINE,4) Line
+from [dbo].[STORAGERECORD] A left join BASE_ITEM B on A.ITEMID=B.ID where ITEMID is not null and CREATELINE like '%鍗冲ⅷ%' and A.CREATETIME>='{0}' and A.CREATETIME<='{1}'
+union
+select A.ITEMID,A.ITEMNUM,A.PRICE,CONVERT(varchar ,A.CREATETIME, 23) CreateTime, '鏉庢钵浜х嚎' Line
+from [dbo].[STORAGERECORD] A left join BASE_ITEM B on A.ITEMID=B.ID where ITEMID is not null and CREATELINE like '%鏉庢钵%' and A.CREATETIME>='{2}' and A.CREATETIME<='{3}')A
+ group by Line,CreateTime";
+ string outsql = @" select SUM(ITEMCOUNT) as count1 ,Line as titel,CONVERT(datetime, CreateTime, 111) as dtime from (select A.ITEMID,A.ITEMCOUNT,CONVERT(varchar ,A.CREATETIME, 23) CreateTime,left(B.CREATELINE,4) Line
+from [dbo].[TASK_RECORD] A left join BASE_ITEM B on A.ITEMID=B.ID where TYPE=2 and ITEMID is not null and CREATELINE like '%鍗冲ⅷ%' and A.CREATETIME>='{0}' and A.CREATETIME<='{1}'
+union
+select A.ITEMID,A.ITEMCOUNT,CONVERT(varchar ,A.CREATETIME, 23) CreateTime, '鏉庢钵浜х嚎' Line
+from [dbo].[TASK_RECORD] A left join BASE_ITEM B on A.ITEMID=B.ID where TYPE=2 and ITEMID is not null and CREATELINE like '%鏉庢钵%' and A.CREATETIME>='{2}' and A.CREATETIME<='{3}')A
+ group by Line,CreateTime having SUM(ITEMCOUNT)>20";
+ stsql = string.Format(stsql, startTime, endTime, startTime, endTime);
+ outsql = string.Format(outsql, startTime, endTime, startTime, endTime);
+ List<SummaryCommEntity> stdalst = edm.Database.SqlQuery<SummaryCommEntity>(stsql).ToList();
+ List<SummaryCommEntity> outdalst = edm.Database.SqlQuery<SummaryCommEntity>(outsql).ToList();
+ List<string> timelst = new List<string>();
+ List<string> devlst = new List<string>();
+ List<string> lst = new List<string>();
+ List<string> ti1lst = stdalst.Select(x => x.titel).ToList();
+ List<string> ti2lst = outdalst.Select(x => x.titel).ToList();
+ List<BarDate> bdlst = new List<BarDate>();
+ lst.AddRange(ti1lst);
+ lst.AddRange(ti2lst);
+ devlst = lst.Select(x=>x).Distinct().ToList() ;
+ int smon = stMonth;
+ int swek = stWeek;
+ int emon = edMonth;
+ int ewek = edWeek;
+ if (ewek == 4)
+ {
+ emon = emon + 1;
+ ewek = 1;
+ }
+ else
+ {
+ ewek += 1;
+ }
+ while (smon != emon || swek != ewek)
+ {
+ if (smon < 10)
+ {
+ timelst.Add("0"+smon + "M" + swek + "W");
+ }
+ else
+ {
+ timelst.Add(smon + "M" + swek + "W");
+ }
+ swek =swek+ 1;
+ if (swek>4)
+ {
+ swek = 1;
+ smon = smon + 1;
+ }
+ }
+ List<string> dt1 = new List<string>();
+ List<string> dt2 = new List<string>();
+ if (timelst != null && timelst.Count > 0)
+ {
+ timelst.ForEach(x =>
+ {
+ devlst.ForEach(d =>
+ {
+
+ double con1 = 0;
+ double con2 = 0;
+ string st = stYear + "-" + int.Parse(x[0].ToString()) + int.Parse(x[1].ToString()) + "-" + (int.Parse(x[3].ToString()) * 7);
+ DateTime sdt = DateTime.Parse(st).AddDays(-6);
+ DateTime edt = DateTime.Parse(st);
+ var d1 = stdalst.Where(y => y.dtime >= sdt && y.dtime <= edt&&y.titel==d).ToList();
+ if (d1 != null && d1.Count>0)
+ {
+
+ con1=d1.Select(a=>a.count1).Average();
+
+ }
+ var d2 = outdalst.Where(y => y.dtime >= sdt && y.dtime <= edt && y.titel == d).ToList(); ;
+ if (d2 != null && d2.Count > 0)
+ {
+
+ con2 = d2.Select(a => a.count1).Average();
+ }
+ string dcon = con2==0?"0":(con1 / con2).ToString("0.0");
+ var bd = bdlst.FirstOrDefault(a => a.name == d);
+ if (bd == null)
+ {
+ BarDate dd1 = new BarDate() { name = d };
+ dd1.xdata = new List<string>();
+ dd1.xdata.Add(dcon);
+ bdlst.Add(dd1);
+ }
+ else
+ {
+ bd.xdata.Add(dcon);
+ }
+ });
+ });
+ }
+ hbe.data = new List<BarDate>();
+ hbe.xdata = timelst;
+ hbe.legend = new List<string>();
+ hbe.legend = devlst;
+ hbe.data.AddRange(bdlst);
+ return hbe;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏁版嵁鑾峰彇澶辫触";
+ return new BarEntity();
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Sys/DEPT/DeptSqlFunc.cs b/qqjf-Background/IWareDataAccess/Sys/DEPT/DeptSqlFunc.cs
new file mode 100644
index 0000000..e915392
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Sys/DEPT/DeptSqlFunc.cs
@@ -0,0 +1,270 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Sys.DEPT
+{
+ public static class DeptSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<SYS_DEPT> Search(DeptWebEntity webEntity,int page,int onePageNum,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<SYS_DEPT>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<SYS_DEPT> list = edm.SYS_DEPT.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储锛堣鍥撅級
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_SYS_DEPT> SearchView(DeptWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_DEPT>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_SYS_DEPT> list = edm.View_SYS_DEPT.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储锛堣鍥撅級
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(DeptWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_DEPT>();
+
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+
+ int num = edm.View_SYS_DEPT.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞閮ㄩ棬
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(DeptWebEntity webDept, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鏉冮檺
+ SYS_DEPT dept = edm.SYS_DEPT.FirstOrDefault(x => x.DEPTNAME == webDept.deptName);
+ if (dept == null)
+ {
+ //鏃犳閮ㄩ棬锛屽睘浜庢柊寤�
+ dept = new SYS_DEPT();
+ }
+
+ dept.DEPTNAME = webDept.deptName ?? dept.DEPTNAME;
+ dept.DEPTDES = webDept.deptDes?? dept.DEPTDES;
+ dept.ENABLE = webDept.enable ?? dept.ENABLE;
+
+ dept.UPDATETIME = DateTime.Now;
+ edm.SYS_DEPT.AddOrUpdateExtension(dept);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇敼澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎閮ㄩ棬
+ /// </summary>
+ /// <param name="webUser"></param>
+ /// <returns></returns>
+ public static bool Delete(DeptWebEntity webDept,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鏉冮檺
+ SYS_DEPT dept = edm.SYS_DEPT.FirstOrDefault(x => x.DEPTNAME == webDept.deptName);
+ if (dept == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳閮ㄩ棬";
+ return false;
+ }
+ else
+ {
+ return DeleteDeptRelevance(dept);
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 鍏宠仈鍒犻櫎
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ public static bool DeleteDeptRelevance(SYS_DEPT dept)
+ {
+ using (Model edm = new Model())
+ {
+ //鍥犲凡閲婃斁杩炴帴锛屾晠閲嶆柊鎸囧悜鏁版嵁搴撳璞¤繘琛岀储寮�
+ SYS_DEPT deptDelete = edm.SYS_DEPT.FirstOrDefault(x => x.DEPTNAME == dept.DEPTNAME);
+ deptDelete.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Sys/PERMISSION/PermissionSqlFunc.cs b/qqjf-Background/IWareDataAccess/Sys/PERMISSION/PermissionSqlFunc.cs
new file mode 100644
index 0000000..b45b4cc
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Sys/PERMISSION/PermissionSqlFunc.cs
@@ -0,0 +1,416 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Entity.Summary;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Sys.PERMISSION
+{
+ public static class PermissionSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储鍏ㄩ儴锛堣鍥撅級
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_SYS_PERMISSION> SearchView(PermissionWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_PERMISSION>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_SYS_PERMISSION> list = edm.View_SYS_PERMISSION.Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鍏ㄩ儴锛堣鍥撅級
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(PermissionWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_PERMISSION>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_SYS_PERMISSION.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鍏ㄩ儴锛堣〃锛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<SYS_PERMISSION> Search(PermissionWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<SYS_PERMISSION>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<SYS_PERMISSION> list = edm.SYS_PERMISSION.Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+
+ public static List<UserRolePermissionViewEntity> urpvlst;
+ /// <summary>
+ /// 鑾峰彇鎸囧畾瑙掕壊鐨勮彍鍗�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<UserRolePermissionViewEntity> GetUserRoleAllPermission(string roleName, int type,out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ urpvlst = new List<UserRolePermissionViewEntity>();
+ var rvplst = edm.SYS_ROLE_VS_PERMISSION.Where(x => x.SYS_ROLE.ROLENAME == roleName).ToList();
+
+ var prolst = edm.SYS_PERMISSION.Where(x => x.ENABLE == 1&&x.TYPE==type).ToList();
+
+ if (prolst != null && prolst.Count > 0)
+ {
+ foreach (var item in prolst.FindAll(c => c.FATHERPERMISSIONID == 0))
+ {
+ UserRolePermissionViewEntity ure = new UserRolePermissionViewEntity();
+ ure.menu_Id = item.ID;
+ ure.menuName = item.PERMISSION;
+ ure.state = "open";
+ ure.parentId = (int)item.FATHERPERMISSIONID;
+ urpvlst.Add(ure);
+
+ FillMenu(ure, prolst, rvplst);
+ }
+ }
+ else
+ {
+ msg = "鏌ヨ寮傚父";
+ return new List<UserRolePermissionViewEntity>();
+ }
+ return urpvlst;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏌ヨ寮傚父";
+ return new List<UserRolePermissionViewEntity>();
+ }
+
+ }
+ private static void FillMenu(UserRolePermissionViewEntity node, List<SYS_PERMISSION> list, List<SYS_ROLE_VS_PERMISSION> rplst)
+ {
+ foreach (var i in list.FindAll(i => i.FATHERPERMISSIONID == node.menu_Id))
+ {
+ UserRolePermissionViewEntity ure = new UserRolePermissionViewEntity();
+ ure.menu_Id = i.ID;
+ ure.menuName = i.PERMISSION;
+ ure.state = "open";
+ ure.parentId = (int)i.FATHERPERMISSIONID;
+ int vl = 0;
+ if (rplst != null && rplst.Count > 0)
+ {
+ var rp = rplst.FirstOrDefault(x => x.PERMISSIONID == i.ID);
+ if (rp != null)
+ {
+ vl = 1;
+ }
+ else
+ {
+ vl = 0;
+ }
+ }
+ else
+ {
+ vl = 0;
+ }
+
+ if (i.ISBUTTON == 1)
+ {
+
+ node.hasChild = "false";
+ if (node.auth == null)
+ {
+ node.auth = new List<AuthEntity>();
+ }
+ node.auth.Add(new AuthEntity()
+ {
+ menu_Id=i.ID,
+ label = i.PERMISSION,
+ nodeName = i.BUTTONNAME,
+ value = vl
+ });
+ }
+ else
+ {
+ var pd = list.FirstOrDefault(x => x.FATHERPERMISSIONID == i.ID);
+ if (pd == null)
+ {
+ node.hasChild = "false";
+ if (node.auth == null)
+ {
+ node.auth = new List<AuthEntity>();
+ }
+ node.auth.Add(new AuthEntity()
+ {
+ menu_Id = i.ID,
+ label = i.PERMISSION,
+ nodeName = i.BUTTONNAME,
+ value = vl
+ });
+ }
+ else
+ {
+ if (node.children == null)
+ {
+ node.children = new List<UserRolePermissionViewEntity>();
+ }
+ node.children.Add(ure);
+ if (node.children != null && node.children.Count > 0)
+ {
+ node.hasChild = "true";
+
+ }
+ }
+
+ }
+ FillMenu(ure, list, rplst);
+ }
+ }
+ public static List<UserRoleMenuEntity> urmlst;
+ public static List<UserRoleMenuEntity> GetUserRolePermission(string roleName,int type, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ List<UserRolePermissionViewEntity> urplst = new List<UserRolePermissionViewEntity>();
+ urmlst = new List<UserRoleMenuEntity>();
+ var rvplst = edm.SYS_ROLE_VS_PERMISSION.Where(x => x.SYS_ROLE.ROLENAME==roleName).ToList();
+
+ var prolst = edm.SYS_PERMISSION.Where(x => x.ENABLE == 1&&x.TYPE==type).ToList();
+
+ if (prolst != null && prolst.Count > 0)
+ {
+ foreach (var item in prolst.FindAll(c => c.FATHERPERMISSIONID == 0))
+ {
+ var rp = rvplst.FirstOrDefault(x => x.PERMISSIONID == item.ID);
+ if (rp!=null)
+ {
+ UserRolePermissionViewEntity ure = new UserRolePermissionViewEntity();
+ ure.menu_Id = item.ID;
+ ure.parentId = (int)item.FATHERPERMISSIONID;
+ urplst.Add(ure);
+ UserRoleMenuEntity urm = new UserRoleMenuEntity();
+ var titlels=item.PERMISSION.Split('-');
+ urm.path = item.PATH;
+ if (!string.IsNullOrEmpty(item.PATH))
+ {
+ var pn = item.PATH.Split('/');
+ urm.name = pn[pn.Length - 1];
+ }
+ urm.meta = new Meta() { icon = item.ICON, title = titlels[titlels.Length - 1] };
+ urmlst.Add(urm);
+ FillRoleMenu(ure,urm,prolst, rvplst);
+ }
+
+ }
+ }
+ else
+ {
+ msg = "鏌ヨ寮傚父";
+ return new List<UserRoleMenuEntity>();
+ }
+ return urmlst;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏌ヨ寮傚父";
+ return new List<UserRoleMenuEntity>();
+ }
+ }
+ private static void FillRoleMenu(UserRolePermissionViewEntity node,UserRoleMenuEntity urm, List<SYS_PERMISSION> list, List<SYS_ROLE_VS_PERMISSION> rplst)
+ {
+ foreach (var i in list.FindAll(i => i.FATHERPERMISSIONID == node.menu_Id))
+ {
+ int vl = 0;
+ if (rplst != null && rplst.Count > 0)
+ {
+ var rp = rplst.FirstOrDefault(x => x.PERMISSIONID == i.ID);
+ if (rp != null)
+ {
+ vl = 1;
+ }
+ else
+ {
+ vl = 0;
+ }
+ }
+ else
+ {
+
+ vl = 0;
+ }
+ if (vl==1)
+ {
+ UserRolePermissionViewEntity ure = new UserRolePermissionViewEntity();
+ ure.menu_Id = i.ID;
+ ure.parentId = (int)i.FATHERPERMISSIONID;
+
+ UserRoleMenuEntity ur = new UserRoleMenuEntity();
+ var titlels = i.PERMISSION.Split('-');
+ ur.path = i.PATH;
+ if (!string.IsNullOrEmpty(i.PATH) &&i.PATH.Contains('/'))
+ {
+ var pn = i.PATH.Split('/');
+ ur.name = pn[pn.Length - 1];
+ }
+ else
+ {
+ ur.name = "";
+ }
+ ur.meta = new Meta() { icon =i.ICON, title = titlels[titlels.Length-1] };
+
+ if (i.ISBUTTON != 1)
+ {
+ if (node.children == null)
+ {
+ node.children = new List<UserRolePermissionViewEntity>();
+ }
+ node.children.Add(ure);
+ if (urm.children == null)
+ {
+ urm.children = new List<UserRoleMenuEntity>();
+ }
+ urm.children.Add(ur);
+
+ }
+ else //娣诲姞鎸夐挳绾у埆鐨勫瓙鍔熻兘
+ {
+
+ }
+ FillRoleMenu(ure, ur, list, rplst);
+ }
+
+ }
+ }
+
+ public static List<PdaPermissionEntity> GetPdaUserRolePermission(string roleName, out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ List<PdaPermissionEntity> meanlst = new List<PdaPermissionEntity>();
+ var pdalst = edm.SYS_PERMISSION.Where(x => x.TYPE == 2&&x.PERMISSIONLEVEL==2).ToList();
+ var rolevplst = edm.View_ROLE_VS_PERMISSION.Where(x => x.roleName == roleName);
+ if (pdalst!=null)
+ {
+ pdalst.ForEach(x =>
+ {
+ var ishave = rolevplst.FirstOrDefault(y => y.permission == x.PERMISSION);
+ if (ishave!=null)
+ {
+ meanlst.Add(new PdaPermissionEntity() { title = x.PERMISSION, name = x.DEC,color=x.BUTTONNAME });
+ }
+ });
+ }
+ return meanlst;
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "鏌ヨ寮傚父";
+ return new List<PdaPermissionEntity>();
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Sys/ROLE/RoleSqlFunc.cs b/qqjf-Background/IWareDataAccess/Sys/ROLE/RoleSqlFunc.cs
new file mode 100644
index 0000000..998ac5e
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Sys/ROLE/RoleSqlFunc.cs
@@ -0,0 +1,269 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Sys.ROLE
+{
+ public static class RoleSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储锛堣〃锛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<SYS_ROLE> Search(RoleWebEntity webEntity, int page,int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<SYS_ROLE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<SYS_ROLE> list = edm.SYS_ROLE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储锛堣鍥撅級
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_SYS_ROLE> SearchView(RoleWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_ROLE>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_SYS_ROLE> list = edm.View_SYS_ROLE.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储锛堣鍥撅級
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(RoleWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_ROLE>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_SYS_ROLE.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+
+ /// <summary>
+ /// 娣诲姞鏉冮檺
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(RoleWebEntity webRole, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ Dictionary<string, string> dic = new Dictionary<string, string>();
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鏉冮檺
+ SYS_ROLE role = edm.SYS_ROLE.FirstOrDefault(x => x.ROLENAME == webRole.roleName);
+ if (role == null)
+ {
+ //鏃犳瑙掕壊锛屽睘浜庢柊寤�
+ role = new SYS_ROLE();
+ }
+ role.ROLENAME= webRole.roleName??role.ROLENAME;
+ role.ENABLE= webRole.enable?? role.ENABLE;
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webRole.userName);
+ if (user != null)
+ {
+ role.CREATORID = user.ID;
+
+ }
+ else
+ {
+ role.CREATORID = 1;
+ }
+ role.UPDATETIME = DateTime.Now;
+ edm.SYS_ROLE.AddOrUpdateExtension(role);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇敼澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏉冮檺
+ /// </summary>
+ /// <param name="webUser"></param>
+ /// <returns></returns>
+ public static bool Delete(RoleWebEntity webRole,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ Dictionary<string, string> dic = new Dictionary<string, string>();
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鏉冮檺
+ SYS_ROLE role = edm.SYS_ROLE.FirstOrDefault(x => x.ROLENAME == webRole.roleName);
+ if (role == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳瑙掕壊";
+ return false;
+ }
+ else
+ {
+ return DeleteRoleRelevance(role,out msg);
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 鍏宠仈鍒犻櫎
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ public static bool DeleteRoleRelevance(SYS_ROLE role,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鍥犲凡閲婃斁杩炴帴锛屾晠閲嶆柊鎸囧悜鏁版嵁搴撳璞¤繘琛岀储寮�
+ SYS_ROLE roleDelete = edm.SYS_ROLE.FirstOrDefault(x => x.ROLENAME == role.ROLENAME);
+ ////鍒犻櫎瑙掕壊鍏崇郴
+ //edm.SYS_USER_VS_ROLE.RemoveRange(roleDelete.SYS_USER_VS_ROLE);
+ //edm.SYS_ROLE_VS_PERMISSION.RemoveRange(roleDelete.SYS_ROLE_VS_PERMISSION);
+ //鍒犻櫎瑙掕壊
+ //edm.SYS_ROLE.Remove(roleDelete);
+ roleDelete.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "鍒犻櫎澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Sys/ROLE_VS_PERMISSION/Role_Vs_PermissionSqlFunc.cs b/qqjf-Background/IWareDataAccess/Sys/ROLE_VS_PERMISSION/Role_Vs_PermissionSqlFunc.cs
new file mode 100644
index 0000000..7e76920
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Sys/ROLE_VS_PERMISSION/Role_Vs_PermissionSqlFunc.cs
@@ -0,0 +1,193 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Sys.ROLE_VS_PERMISSION
+{
+ public static class Role_Vs_PermissionSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <returns></returns>
+ public static List<View_ROLE_VS_PERMISSION> SearchView(PermissionVsRoleWebEntity webEntity,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ROLE_VS_PERMISSION>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_ROLE_VS_PERMISSION> list = edm.View_ROLE_VS_PERMISSION.Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(PermissionVsRoleWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_ROLE_VS_PERMISSION>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_ROLE_VS_PERMISSION.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞鏉冮檺
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(PermissionVsRoleWebEntity webRoleVsPermission,out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ RoleWebEntity searchEntity = new RoleWebEntity();
+ //鏌ヨ鏄惁瀛樺湪姝よ鑹�
+ SYS_ROLE role = edm.SYS_ROLE.FirstOrDefault(x => x.ROLENAME == webRoleVsPermission.roleName);
+ if (role == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳瑙掕壊";
+ return false;
+ }
+ int type = 1;
+ if (webRoleVsPermission.permissionNameList != null && webRoleVsPermission.permissionNameList.Count > 0)
+ {
+ int id = webRoleVsPermission.permissionNameList[0];
+ type=(int)edm.SYS_PERMISSION.FirstOrDefault(x=>x.ID==id).TYPE;
+ }
+ else
+ {
+ msg = "鑾峰彇璇ヨ鑹茬殑鏉冮檺澶辫触锛�";
+ return false;
+ }
+ if (DeleteAll(webRoleVsPermission.roleName, type, out msg))
+ {
+ foreach (var i in webRoleVsPermission.permissionNameList)
+ {
+ //濡傛灉杈撳叆鏉冮檺鍖呭惈閬嶅巻鐨勬潈闄愶紝娣诲姞
+
+ SYS_ROLE_VS_PERMISSION rvp = new SYS_ROLE_VS_PERMISSION();
+ rvp.PERMISSIONID = i;
+ rvp.ROLEID = role.ID;
+ edm.SYS_ROLE_VS_PERMISSION.AddOrUpdateExtension(rvp);
+
+ }
+
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触锛�";
+ return false;
+ }
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇敼澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栬鑹叉潈闄�
+ /// </summary>
+ /// <param name="roleName"></param>
+ /// <returns></returns>
+ public static bool DeleteAll(string roleName,int type,out string msg)
+ {
+ try
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ List<SYS_ROLE_VS_PERMISSION> rvplst = new List<SYS_ROLE_VS_PERMISSION>();
+ var list = edm.SYS_ROLE_VS_PERMISSION.Where(x => x.SYS_ROLE.ROLENAME == roleName);
+ var plst = edm.SYS_PERMISSION.Where(x => x.TYPE == type).ToList();
+ plst.ForEach(x =>
+ {
+ var rvp = list.FirstOrDefault(y => y.PERMISSIONID == x.ID);
+ if (rvp != null)
+ {
+ rvplst.Add(rvp);
+ }
+ });
+ edm.SYS_ROLE_VS_PERMISSION.RemoveRange(rvplst);
+ edm.SaveChanges();
+ return true;
+
+ }
+ }
+ catch (Exception ex)
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Sys/USER/UserSqlFunc.cs b/qqjf-Background/IWareDataAccess/Sys/USER/UserSqlFunc.cs
new file mode 100644
index 0000000..3321710
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Sys/USER/UserSqlFunc.cs
@@ -0,0 +1,59 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Sys.USER
+{
+ public static class UserSqlFunc
+ {
+ /// <summary>
+ /// 鐧诲綍
+ /// </summary>
+ /// <param name="userName"></param>
+ /// <param name="password"></param>
+ /// <returns></returns>
+ public static View_SYS_USER Login(string userName, string password, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ if (string.IsNullOrEmpty(userName))
+ {
+ msg = "璇疯緭鍏ョ敤鎴�";
+ return null;
+ }
+ if (string.IsNullOrEmpty(password))
+ {
+ msg = "璇疯緭鍏ュ瘑鐮�";
+ return null;
+ }
+
+ //var psd= Helper.Helper.ParseMd5(password);
+
+ var user = edm.View_SYS_USER.FirstOrDefault(x => x.userName == userName);
+ if (user != null)
+ {
+ if (user.passWord != password)
+ {
+ msg = "杈撳叆瀵嗙爜涓嶆纭�";
+ return null;
+ }else
+ {
+
+ return user;
+ }
+ }
+ else
+ {
+ msg = "杈撳叆鐢ㄦ埛涓嶅瓨鍦�";
+ return null;
+ }
+
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Sys/USER/ViewUserSqlFunc.cs b/qqjf-Background/IWareDataAccess/Sys/USER/ViewUserSqlFunc.cs
new file mode 100644
index 0000000..bc78cd0
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Sys/USER/ViewUserSqlFunc.cs
@@ -0,0 +1,313 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Sys.USER
+{
+ public static class ViewUserSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储鐢ㄦ埛(瑙嗗浘)
+ /// </summary>
+ public static List<View_SYS_USER> SearchView(UserWebEntity webEntity, int page, int onePageNum)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_USER>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_SYS_USER> list = edm.View_SYS_USER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鐢ㄦ埛鎬绘暟
+ /// </summary>
+ public static int SearchViewNum(UserWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SYS_USER>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.updateTime > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.updateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_SYS_USER.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储鐢ㄦ埛(琛�)
+ /// </summary>
+ public static List<SYS_USER> Search(UserWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<SYS_USER>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "updateTimeStart")
+ {
+ f = f.And(x => x.UPDATETIME > value);
+ }
+ if (i.Name == "updateTimeEnd")
+ {
+ f = f.And(x => x.UPDATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+
+ List<SYS_USER> list = edm.SYS_USER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞鐢ㄦ埛
+ /// </summary>
+ /// <returns></returns>
+ public static bool AddOrUpdate(UserWebEntity webUser, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鐢ㄦ埛
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webUser.userName);
+ if (user == null)
+ {
+ //鏃犳鐢ㄦ埛锛屽睘浜庢柊寤�
+ user = new SYS_USER();
+ }
+ string pas = "";
+ if (webUser.password.Contains(","))
+ {
+
+ pas = webUser.password.Split(',')[0];
+ }
+ else
+ {
+ pas = webUser.password;
+ }
+ user.IsWeldingAuditGroup = webUser.IsWeldingAuditGroup;//鏄惁鏄剨瑁呭鏍哥粍
+ user.USERNAME = webUser.userName ?? user.USERNAME;
+ user.USERTRUENAME = webUser.userTrueName ?? user.USERTRUENAME;
+ user.PASSWORD = pas ?? user.PASSWORD;
+ user.ENABLE = webUser.enable ?? user.ENABLE;
+ SYS_USER creator = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webUser.createName);
+ if (creator != null)
+ {
+ user.CREATORID = creator.ID;
+ }
+ user.UPDATETIME = DateTime.Now;
+ //缁戝畾瑙掕壊
+ SYS_ROLE role = edm.SYS_ROLE.FirstOrDefault(x => x.ROLENAME == webUser.roleName);
+ if (role != null)
+ {
+ SYS_USER_VS_ROLE uvr = edm.SYS_USER_VS_ROLE.FirstOrDefault(x => x.USERID == user.ID);
+ if (uvr == null)//鏂板缓鎴栦慨鏀硅鑹�
+ {
+ uvr = new SYS_USER_VS_ROLE();
+ }
+ //鍒ゆ柇鐢ㄦ埛鏄惁鏂板缓
+ if (user.ID == 0)
+ {
+ uvr.SYS_USER = user;
+ }
+ else
+ {
+ uvr.USERID = user.ID;
+ }
+ uvr.ROLEID = role.ID;
+ edm.SYS_USER_VS_ROLE.AddOrUpdateExtension(uvr);
+ }
+ //缁戝畾閮ㄩ棬
+ SYS_DEPT dept = edm.SYS_DEPT.FirstOrDefault(x => x.DEPTNAME == webUser.deptName);
+ if (dept != null)
+ {
+ user.SYS_DEPT = dept;
+ }
+ edm.SYS_USER.AddOrUpdateExtension(user);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇敼澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鐢ㄦ埛
+ /// </summary>
+ /// <param name="webUser"></param>
+ /// <returns></returns>
+ public static bool Delete(UserWebEntity webUser, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鏌ヨ鏄惁宸插瓨鍦ㄦ鐢ㄦ埛
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webUser.userName);
+ if (user == null)
+ {
+ //鏃犳鐢ㄦ埛锛岄敊璇�
+ msg = "鏃犳鐢ㄦ埛";
+ return false;
+ }
+ else
+ {
+ return DeleteUserRelevance(user, out msg);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍏宠仈鍒犻櫎(閫昏緫鍒犻櫎)
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ public static bool DeleteUserRelevance(SYS_USER user, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鍥犲凡閲婃斁杩炴帴锛屾晠閲嶆柊鎸囧悜鏁版嵁搴撳璞¤繘琛岀储寮�
+ SYS_USER userDelte = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == user.USERNAME);
+ ////鍒犻櫎瑙掕壊鍏崇郴
+ //edm.SYS_USER_VS_ROLE.RemoveRange(userDelte.SYS_USER_VS_ROLE);
+ ////鍒犻櫎涓�浜涘垱寤轰汉
+ //List<SYS_ROLE> srList = userDelte.SYS_ROLE.ToList();
+ //foreach (var i in srList)
+ //{
+ // i.CREATORID = 0;
+ //}
+ //鍒犻櫎鐢ㄦ埛
+ //edm.SYS_USER.Remove(userDelte);
+ userDelte.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "鍒犻櫎澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Task/TASK/RgvTaskSqlFunc.cs b/qqjf-Background/IWareDataAccess/Task/TASK/RgvTaskSqlFunc.cs
new file mode 100644
index 0000000..3935306
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Task/TASK/RgvTaskSqlFunc.cs
@@ -0,0 +1,129 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Task;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Task.TASK
+{
+ public static class RgvTaskSqlFunc
+ {
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_RGVTASK> SearchView(RgvTaskWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_RGVTASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.doTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.doTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_RGVTASK> list = edm.View_RGVTASK.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(RgvTaskWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_RGVTASK>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.doTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.doTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_RGVTASK.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Task/TASK/SrmRecordSqlFunc.cs b/qqjf-Background/IWareDataAccess/Task/TASK/SrmRecordSqlFunc.cs
new file mode 100644
index 0000000..861a529
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Task/TASK/SrmRecordSqlFunc.cs
@@ -0,0 +1,330 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Task;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Task.TASK
+{
+ public class SrmRecordSqlFunc
+ { /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<TASK_SRMRECORD> Search(SrmRecordWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<TASK_SRMRECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<TASK_SRMRECORD> list = edm.TASK_SRMRECORD.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_TASK_SRMRECORD> SearchView(SrmRecordWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_SRMRECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ //鐗规畩澶勭悊
+ if (i.Name == "taskType")
+ {
+ if (value == "绉诲簱")
+ {
+ f = f.And(x => (x.useSrmId == 1 && x.toPlace != "02-01-01" && x.sourcePlace != "01-01-01" && x.toPlace != "01-19-01" && x.sourcePlace != "02-19-01") || x.useSrmId != 1);
+ f = f.And(x => (x.useSrmId == 2 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-20-01" && x.sourcePlace != "03-20-01") || x.useSrmId != 2);
+ f = f.And(x => (x.useSrmId == 3 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-19-01" && x.sourcePlace != "03-19-01") || x.useSrmId != 3);
+ f = f.And(x => (x.useSrmId == 4 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-21-01" && x.sourcePlace != "03-21-01") || x.useSrmId != 4);
+ f = f.And(x => (x.useSrmId == 5 && x.toPlace != "02-01-01" && x.sourcePlace != "01-01-01" && x.toPlace != "01-20-01" && x.sourcePlace != "02-20-01") || x.useSrmId != 5);
+ f = f.And(x => (x.useSrmId == 6 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-20-01" && x.sourcePlace != "03-20-01") || x.useSrmId != 6);
+ f = f.And(x => (x.useSrmId == 7 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-24-01" && x.sourcePlace != "03-24-01") || x.useSrmId != 7);
+ f = f.And(x => (x.useSrmId == 8 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-25-01" && x.sourcePlace != "03-25-01") || x.useSrmId != 8);
+ f = f.And(x => (x.useSrmId == 9 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-23-01" && x.sourcePlace != "03-23-01") || x.useSrmId != 9);
+ }
+ }
+ else
+ {
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_TASK_SRMRECORD> list = edm.View_TASK_SRMRECORD.OrderByDescending(x => x.createTime).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘(鍏ㄩ儴)
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_TASK_SRMRECORD> SearchViewAll(SrmRecordWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_SRMRECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ //鐗规畩澶勭悊
+ if (i.Name == "taskType")
+ {
+ if (value == "绉诲簱")
+ {
+ f = f.And(x => (x.useSrmId == 1 && x.toPlace != "02-01-01" && x.sourcePlace != "01-01-01" && x.toPlace != "01-19-01" && x.sourcePlace != "02-19-01") || x.useSrmId != 1);
+ f = f.And(x => (x.useSrmId == 2 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-20-01" && x.sourcePlace != "03-20-01") || x.useSrmId != 2);
+ f = f.And(x => (x.useSrmId == 3 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-19-01" && x.sourcePlace != "03-19-01") || x.useSrmId != 3);
+ f = f.And(x => (x.useSrmId == 4 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-21-01" && x.sourcePlace != "03-21-01") || x.useSrmId != 4);
+ f = f.And(x => (x.useSrmId == 5 && x.toPlace != "02-01-01" && x.sourcePlace != "01-01-01" && x.toPlace != "01-20-01" && x.sourcePlace != "02-20-01") || x.useSrmId != 5);
+ f = f.And(x => (x.useSrmId == 6 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-20-01" && x.sourcePlace != "03-20-01") || x.useSrmId != 6);
+ f = f.And(x => (x.useSrmId == 7 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-24-01" && x.sourcePlace != "03-24-01") || x.useSrmId != 7);
+ f = f.And(x => (x.useSrmId == 8 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-25-01" && x.sourcePlace != "03-25-01") || x.useSrmId != 8);
+ f = f.And(x => (x.useSrmId == 9 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-23-01" && x.sourcePlace != "03-23-01") || x.useSrmId != 9);
+ }
+ }
+ else
+ {
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_TASK_SRMRECORD> list = edm.View_TASK_SRMRECORD.OrderByDescending(x => x.createTime).Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(SrmRecordWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_SRMRECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString(); //鐗规畩澶勭悊
+ if (i.Name == "taskType")
+ {
+ if (value == "绉诲簱")
+ {
+ f = f.And(x => (x.useSrmId == 1 && x.toPlace != "02-01-01" && x.sourcePlace != "01-01-01" && x.toPlace != "01-19-01" && x.sourcePlace != "02-19-01") || x.useSrmId != 1);
+ f = f.And(x => (x.useSrmId == 2 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-20-01" && x.sourcePlace != "03-20-01") || x.useSrmId != 2);
+ f = f.And(x => (x.useSrmId == 3 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-19-01" && x.sourcePlace != "03-19-01") || x.useSrmId != 3);
+ f = f.And(x => (x.useSrmId == 4 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-21-01" && x.sourcePlace != "03-21-01") || x.useSrmId != 4);
+ f = f.And(x => (x.useSrmId == 5 && x.toPlace != "02-01-01" && x.sourcePlace != "01-01-01" && x.toPlace != "01-20-01" && x.sourcePlace != "02-20-01") || x.useSrmId != 5);
+ f = f.And(x => (x.useSrmId == 6 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-20-01" && x.sourcePlace != "03-20-01") || x.useSrmId != 6);
+ f = f.And(x => (x.useSrmId == 7 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-24-01" && x.sourcePlace != "03-24-01") || x.useSrmId != 7);
+ f = f.And(x => (x.useSrmId == 8 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-25-01" && x.sourcePlace != "03-25-01") || x.useSrmId != 8);
+ f = f.And(x => (x.useSrmId == 9 && x.toPlace != "03-01-01" && x.sourcePlace != "02-01-01" && x.toPlace != "02-23-01" && x.sourcePlace != "03-23-01") || x.useSrmId != 9);
+ }
+ }
+ else
+ {
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_TASK_SRMRECORD.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(SrmRecordWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ var task = edm.TASK_SRMRECORD.FirstOrDefault(x => x.id == webEntity.id);
+ if (task == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ else
+ {
+ edm.TASK_SRMRECORD.Remove(task);
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Task/TASK/SrmTaskSqlFunc.cs b/qqjf-Background/IWareDataAccess/Task/TASK/SrmTaskSqlFunc.cs
new file mode 100644
index 0000000..c2d7ce3
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Task/TASK/SrmTaskSqlFunc.cs
@@ -0,0 +1,129 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Task;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Task.TASK
+{
+ public static class SrmTaskSqlFunc
+ {
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_SRMTASK> SearchView(SrmTaskWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SRMTASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.doTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.doTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_SRMTASK> list = edm.View_SRMTASK.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘鏁伴噺
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(SrmTaskWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_SRMTASK>();
+
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.doTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.doTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_SRMTASK.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Task/TASK/TaskRecodeFunc.cs b/qqjf-Background/IWareDataAccess/Task/TASK/TaskRecodeFunc.cs
new file mode 100644
index 0000000..a48d8bf
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Task/TASK/TaskRecodeFunc.cs
@@ -0,0 +1,458 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Order;
+using IWareDataAccess.Entity.Task;
+using IWareDataAccess.Helper;
+using IWareDataAccess.Order.INORDER;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Task.TASK
+{
+ public class TaskRecodeFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<TASK_TASK> Search(TaskRecodeWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<TASK_TASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.CREATETIME > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.CREATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<TASK_TASK> list = edm.TASK_TASK.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_TASK_RECORD> SearchView(TaskRecodeWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_RECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.taskCreateTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.taskCreateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_TASK_RECORD> list = edm.View_TASK_RECORD.OrderByDescending(x=>x.createTime).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(TaskRecodeWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_RECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.taskCreateTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.taskCreateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_TASK_RECORD.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘(鏈粦瀹氱殑鍏ュ簱鍗曠殑)
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_TASK_RECORD> SearchViewNotInOrder(TaskRecodeWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var taskRecordList = edm.View_TASK_RECORD.Where(x => string.IsNullOrEmpty(x.inOrderCode));//鎺掗櫎宸茬粦瀹氬叆搴撳崟鐨�
+ DateTime timeValue = DateTime.Now.AddDays(-15);//涓存椂15澶╄繃鏈�
+ taskRecordList = taskRecordList.Where(x => x.createTime > timeValue);//鎺掗櫎鏃堕棿杩囦箙鐨�
+
+ var f = PredicateBuilder.True<View_TASK_RECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.taskCreateTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.taskCreateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_TASK_RECORD> list = edm.View_TASK_RECORD.OrderByDescending(x => x.createTime).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘(鏈粦瀹氱殑鍏ュ簱鍗曠殑)
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNotInOrderNum(TaskRecodeWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var taskRecordList = edm.View_TASK_RECORD.Where(x => string.IsNullOrEmpty(x.inOrderCode));//鎺掗櫎宸茬粦瀹氬叆搴撳崟鐨�
+ DateTime timeValue = DateTime.Now.AddDays(-15);//涓存椂15澶╄繃鏈�
+ taskRecordList = taskRecordList.Where(x => x.createTime > timeValue);//鎺掗櫎鏃堕棿杩囦箙鐨�
+ var f = PredicateBuilder.True<View_TASK_RECORD>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.taskCreateTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.taskCreateTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_TASK_RECORD.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 鏇存柊(缁戝叆搴撹鍗�)
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Update(TaskRecodeWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ var task = edm.TASK_RECORD.FirstOrDefault(x => x.ID == webEntity.id);
+ if (task == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ else
+ {
+ ORDER_INORDER order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode);
+ if (order != null)
+ {
+ task.INORDERID = order.ID;
+
+ }
+ else
+ {
+ task.INORDERID = null;//鐢ㄤ簬瑙g粦
+ }
+
+ if (edm.SaveChanges() > 0)
+ {
+ //绠$悊鏇存柊鍏ュ簱鍗曠姸鎬�
+ InOrderWebEntity inOrderWebEntity = new InOrderWebEntity();
+ inOrderWebEntity.inOrderCode = webEntity.inOrderCode;
+ bool result = InOrderSqlFunc.AddOrUpdate(inOrderWebEntity, out msg);
+ if (!result)
+ {
+ return result;
+ }
+ return true;
+ }
+ else
+ {
+ msg = "鏈慨鏀逛竴鏉℃暟鎹�";
+ return false;
+ }
+ }
+ }
+ }
+
+
+
+ /// <summary>
+ /// 鎵归噺鏇存柊(缁戝叆搴撹鍗�)
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool UpdateList(List<TaskRecodeWebEntity> webEntityList,string inOrderCode, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ //鍒濆鍖栨墍灞炶鍗曠粦瀹�
+
+ ORDER_INORDER order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == inOrderCode);
+ if (order != null)
+ {
+ var taskRecordList = edm.TASK_RECORD.Where(x => x.INORDERID == order.ID).ToList();
+ foreach (var i in taskRecordList)
+ {
+ i.INORDERID = null;
+ }
+ }
+
+ else
+ {
+ msg = "鏈紶鍏ヨ鍗�";
+ return false;
+ }
+
+ foreach (var webEntity in webEntityList)
+ {
+ var task = edm.TASK_RECORD.FirstOrDefault(x => x.ID == webEntity.id);
+ if (task == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ else
+ {
+
+ task.INORDERID = order.ID;
+ }
+ }
+ if (edm.SaveChanges() > 0)
+ {
+ //绠$悊鏇存柊鍏ュ簱鍗曠姸鎬�
+ InOrderWebEntity inOrderWebEntity = new InOrderWebEntity();
+
+ inOrderWebEntity.inOrderCode = inOrderCode;
+ bool result = InOrderSqlFunc.AddOrUpdate(inOrderWebEntity, out msg);
+ if (!result)
+ {
+ return result;
+ }
+
+
+ return true;
+ }
+ else
+ {
+ msg = "鏈慨鏀逛竴鏉℃暟鎹�";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(TaskRecodeWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ var task = edm.TASK_RECORD.FirstOrDefault(x => x.ID == webEntity.id);
+ if (task == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ else
+ {
+ //edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
+ task.ENABLE = 0;
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/Task/TASK/TaskSqlFunc.cs b/qqjf-Background/IWareDataAccess/Task/TASK/TaskSqlFunc.cs
new file mode 100644
index 0000000..0540123
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/Task/TASK/TaskSqlFunc.cs
@@ -0,0 +1,793 @@
+锘縰sing EnumType;
+using IWareDataAccess.EF;
+using IWareDataAccess.Entity.Task;
+using IWareDataAccess.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IWareDataAccess.Task.TASK
+{
+ public static class TaskSqlFunc
+ {
+ /// <summary>
+ /// 鎼滅储琛�
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<TASK_TASK> Search(TaskWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<TASK_TASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.CREATETIME > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.CREATETIME < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+ List<TASK_TASK> list = edm.TASK_TASK.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static List<View_TASK_TASK> SearchView(TaskWebEntity webEntity, int page, int onePageNum, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_TASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_TASK_TASK> list = edm.View_TASK_TASK.OrderByDescending(x=>x.createTime).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
+
+ return list;
+ }
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎵�鏈夌殑涓讳换鍔′俊鎭�
+ /// </summary>
+ /// <param name="webEntity"></param>
+ /// <returns></returns>
+ public static List<View_TASK_TASK> GetAllMainTask(TaskWebEntity webEntity)
+ {
+
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_TASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ List<View_TASK_TASK> list = edm.View_TASK_TASK.OrderByDescending(x => x.createTime).Where(f.Compile()).ToList();
+
+ return list;
+ }
+ }
+
+ /// <summary>
+ /// 鎼滅储瑙嗗浘
+ /// </summary>
+ /// <param name="keyValue"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public static int SearchViewNum(TaskWebEntity webEntity)
+ {
+ using (Model edm = new Model())
+ {
+ var f = PredicateBuilder.True<View_TASK_TASK>();
+ //渚垮埄鎵�鏈夊睘鎬�
+ Type type = webEntity.GetType();
+ foreach (var i in type.GetProperties())
+ {
+ object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
+ if (i.PropertyType == typeof(String))
+ {
+ string value;
+ if (v != null)
+ {
+ value = v.ToString();
+ f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
+ }
+ }
+ else if (i.PropertyType == typeof(DateTime?))
+ {
+ if (v != null)
+ {
+ DateTime value = DateTime.Parse(v.ToString());
+ if (i.Name == "createTimeStart")
+ {
+ f = f.And(x => x.createTime > value);
+ }
+ if (i.Name == "createTimeEnd")
+ {
+ f = f.And(x => x.createTime < value);
+ }
+ }
+ }
+ else
+ {
+ if (v != null)
+ {
+ f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
+ }
+ }
+ }
+
+ int num = edm.View_TASK_TASK.Where(f.Compile()).Count();
+
+ return num;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞浠诲姟
+ /// </summary>
+ /// <param name="role"></param>
+ /// <returns></returns>
+ public static bool AddOrUpdate(TaskWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ TASK_TASK task = new TASK_TASK();
+ task = edm.TASK_TASK.FirstOrDefault(x => x.ID == webEntity.id);
+ if (task == null)
+ {
+ task = new TASK_TASK();
+ task.HASFINISHED = 0;
+ }
+ //BASE_PLACE sourcePlace = edm.BASE_PLACE.FirstOrDefault(x => x.PLACE == webEntity.sourcePlace);
+ //if (sourcePlace != null)
+ //{
+ // task.SOURCEPLACE = webEntity.sourcePlace;
+ //}
+ //else
+ //{
+ // msg = "璧峰浣嶆湁璇�";
+ // return false;
+ //}
+ //BASE_PLACE toPlace = edm.BASE_PLACE.FirstOrDefault(x => x.PLACE == webEntity.toPlace);
+ //if (toPlace != null)
+ //{
+ // task.TOPLACE = webEntity.toPlace;
+ //}
+ //else
+ //{
+ // msg = "鐩爣浣嶆湁璇�";
+ // return false;
+ //}
+ task.SOURCEPLACE = webEntity.sourcePlace ?? task.SOURCEPLACE;
+ task.TOPLACE = webEntity.toPlace ?? task.TOPLACE;
+ task.ORDERID = webEntity.orderId??task.ORDERID;
+ task.TASKTYPE = webEntity.taskType?? task.TASKTYPE ;
+ task.TASKSTATUS=webEntity.taskStatus??task.TASKSTATUS;
+ SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.userName);
+ if (user != null)
+ {
+ task.CREATEUSERID = user.ID;
+ }
+ task.TASKLEVEL= webEntity.taskLevel??task.TASKLEVEL;
+ task.ISNEEDREDIRECT= webEntity.isNeedRedirect?? task.ISNEEDREDIRECT;
+
+ if (string.IsNullOrEmpty(webEntity.containerName))
+ {
+ var pvc = edm.BASE_PLACE_VS_CONTAINER.FirstOrDefault(x => x.BASE_PLACE.PLACE== webEntity.sourcePlace);
+ if (pvc != null)
+ {
+ task.BASE_CONTAINER = pvc.BASE_CONTAINER;
+ }
+ else
+ {
+ msg = "鍣ㄥ叿鍙锋湁璇�";
+ return false;
+ }
+ }
+ else
+ {
+ BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName);
+ if (container != null)
+ {
+ task.BASE_CONTAINER = container;
+ }
+ else
+ {
+ msg = "鍣ㄥ叿鍙锋湁璇�";
+ return false;
+ }
+ }
+
+ task.HASFINISHED = webEntity.hasFinish?? task.HASFINISHED ;
+ task.ERRORMSG= webEntity.errorMsg??task.ERRORMSG;
+ task.ERRORDEVICEID= webEntity.errorDeviceId?? task.ERRORDEVICEID;
+ task.ISERROR=webEntity.isError?? task.ISERROR;
+ task.HASREADED= webEntity.hasReaded?? task.HASREADED;
+ task.OUTTYPE= webEntity.outType??task.OUTTYPE;
+ task.ENABLE = webEntity.enable ?? task.ENABLE;
+
+
+ task.CREATETIME = DateTime.Now;
+ edm.TASK_TASK.AddOrUpdateExtension(task);
+ //鍑哄叆搴撹褰�
+ if (task.BASE_CONTAINER.BASE_CONTAINER_VS_ITEM.Count != 0)
+ {
+ foreach (var i in task.BASE_CONTAINER.BASE_CONTAINER_VS_ITEM)
+ {
+ ORDER_OUTORDER order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.ID == (task.ORDERID ?? 0));
+ TASK_RECORD taskRecord = new TASK_RECORD()
+ {
+
+ TYPE = task.TASKTYPE ?? 0,
+ CREATETIME = DateTime.Now,
+ ITEMID = i.BASE_ITEM.ID,
+ CONTAINERID = task.BASE_CONTAINER.ID,
+ TASKID = task.ID,
+ ENABLE = 1,
+ ITEMCOUNT = i.ITEMNUM ?? 0,
+ ISMAINOUT = 0
+ };
+ if (order != null)
+ {
+ taskRecord.OUTORDERCODE = order.OUTORDERCODE;
+ if (order.ITEMID == taskRecord.ITEMID)
+ {
+ taskRecord.ISMAINOUT = 1;//灞炰簬涓昏鍑哄簱闆朵欢
+ }
+ }
+ edm.TASK_RECORD.Add(taskRecord);
+ }
+ }
+ else
+ {
+ ORDER_OUTORDER order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.ID == (task.ORDERID ?? 0));
+ TASK_RECORD taskRecord = new TASK_RECORD()
+ {
+
+ TYPE = task.TASKTYPE ?? 0,
+ CREATETIME = DateTime.Now,
+ CONTAINERID = task.BASE_CONTAINER.ID,
+ TASKID = task.ID,
+ ENABLE = 1,
+ ISMAINOUT = 0
+ };
+ if (order != null)
+ {
+ taskRecord.OUTORDERCODE = order.OUTORDERCODE;
+ }
+ edm.TASK_RECORD.Add(taskRecord);
+ }
+
+ if (edm.SaveChanges() > 0)
+ {
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎻愰珮浼樺厛绾�
+ /// </summary>
+ /// <param name="webEntity"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static bool UpTaskLevel(TaskWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.ID == webEntity.id);
+ if (task == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ else
+ {
+ task.TASKLEVEL = -1;
+ task.ISHURRY = 1;
+ edm.SaveChanges();
+ return true;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎻愰珮浼樺厛绾э紙寮猴級
+ /// </summary>
+ /// <param name="webEntity"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static bool MustTask(TaskWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+ TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.ID == webEntity.id);
+
+ if (task == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ else
+ {
+ if ((!task.SOURCEPLACE.Contains("-") && Convert.ToInt32(task.SOURCEPLACE) > 34) || (!task.TOPLACE.Contains("-") && Convert.ToInt32(task.TOPLACE) > 34))
+ {
+ TASK_TASK anotherTask = edm.TASK_TASK.FirstOrDefault(x => x.ENABLE == 1 && x.MUST == 1 && x.HASFINISHED == 0 && ((!x.SOURCEPLACE.Contains("-") && x.SOURCEPLACE.CompareTo("34") > 0) || (!x.TOPLACE.Contains("-") && x.TOPLACE.CompareTo("34") > 0)));
+ if (anotherTask != null)
+ {
+ msg = "姝や晶宸插瓨鍦ㄥ己鍒朵换鍔�";
+ return false;
+ }
+ }
+ else if ((!task.SOURCEPLACE.Contains("-") && Convert.ToInt32(task.SOURCEPLACE) <= 34) || (!task.TOPLACE.Contains("-") && Convert.ToInt32(task.TOPLACE) <= 34))
+ {
+ TASK_TASK anotherTask = edm.TASK_TASK.FirstOrDefault(x => x.ENABLE == 1 && x.MUST == 1 && x.HASFINISHED == 0 && ((!x.SOURCEPLACE.Contains("-") && x.SOURCEPLACE.CompareTo("34") <= 0) || (!x.TOPLACE.Contains("-") && x.TOPLACE.CompareTo("34") <= 0)));
+ if (anotherTask != null)
+ {
+ msg = "姝や晶宸插瓨鍦ㄥ己鍒朵换鍔�";
+ return false;
+ }
+ }
+ task.MUST = 1;
+ edm.SaveChanges();
+ return true;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="webDevice"></param>
+ /// <returns></returns>
+ public static bool Delete(TaskWebEntity webEntity, out string msg)
+ {
+ msg = "";
+ using (Model edm = new Model())
+ {
+
+ TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.ID == webEntity.id);
+ if (task == null)
+ {
+ //鏃犳瑙掕壊
+ msg = "鏃犳浠诲姟";
+ return false;
+ }
+ if (task.HASREADED == 1)
+ {
+ //宸茶В鏋�
+ msg = "宸茶В鏋�";
+ return false;
+ }
+ else
+ {
+ //鍒犻櫎璁板綍
+ List<TASK_RECORD> recordList = edm.TASK_RECORD.Where(x => x.TASKID == task.ID).ToList();
+ edm.TASK_RECORD.RemoveRange(recordList);
+ ////鍒犵粍鐩�
+ //List<BASE_CONTAINER_VS_ITEM> cviList = edm.BASE_CONTAINER_VS_ITEM.Where(x => (x.ENABLE ?? 0) == 1 && x.CONTAINERID == task.CONTAINERID).ToList();
+ //edm.BASE_CONTAINER_VS_ITEM.RemoveRange(cviList);
+ //鍒犱换鍔�
+ task.ENABLE = 0;
+ task.TASKSTATUS = "浠诲姟鍒犻櫎";
+ if (edm.SaveChanges() > 0)
+ {
+ WZ.Useful.Commons.LogTextHelper.WriteLine("TaskSqlFunc", "Delete", "鍒犻櫎鎴愬姛"+task.ID);
+ return true;
+ }
+ else
+ {
+ msg = "淇濆瓨澶辫触";
+ return false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// Pda鍑哄簱搴撲綅涓嬫媺鏁版嵁
+ /// </summary>
+ /// <param name="itemName"></param>
+ /// <param name="containerName"></param>
+ /// <param name="isStartPlace"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<TaskCommonEntity> GetOutTaskPlace(string itemName, string containerName, int isStartPlace, out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+ List<TaskCommonEntity> tclst = new List<TaskCommonEntity>();
+
+ List<string> pvclst = new List<string>();
+ if (isStartPlace==1)
+ {
+ if (!string.IsNullOrEmpty(containerName))
+ {
+ pvclst = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.containerName.Contains(containerName)).Select(x => x.place).Distinct().ToList();
+ }
+ else
+ {
+ if (!string.IsNullOrEmpty(itemName))
+ {
+ pvclst = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.itemName.Contains(itemName)).Select(x => x.place).Distinct().ToList();
+ }
+ else
+ {
+ pvclst = edm.View_BASE_PLACE_VS_CONTAINER.Select(x => x.place).Distinct().ToList();
+ }
+ }
+ var conlst = edm.View_BASE_PLACE.Where(x => pvclst.Contains(x.place)).ToList();
+ var maintask = edm.View_TASK_TASK.Where(x => x.hasFinished == 0).ToList();
+ int id = 1;
+ conlst.ForEach(x =>
+ {
+ var task = maintask.FirstOrDefault(y => y.sourcePlace == x.place || y.toPlace == x.place);
+ if (task == null)
+ {
+ tclst.Add(new TaskCommonEntity() { id = id, lable = x.place, value = x.place });
+ id++;
+ }
+ });
+ }
+ else
+ {
+ var lst = edm.BASE_PRODUCTIONLINE.Where(x => x.ISDESTINATION == 0 && x.PRODUCTIONLINENAME.Contains("鍑哄彛")).ToList();
+ if (lst != null && lst.Count > 0)
+ {
+ int id = 1;
+ lst.ForEach(x =>
+ {
+ tclst.Add(new TaskCommonEntity() { id = id, lable = x.PRODUCTIONLINENAME, value = x.PRODUCTIONLINECODE });
+ id++;
+ });
+ }
+ }
+ return tclst;
+ }
+ }
+ catch (Exception)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return null;
+ }
+ }
+ /// <summary>
+ /// 鍑哄簱涓嬫媺闆朵欢淇℃伅
+ /// </summary>
+ /// <param name="itemName"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<TaskCommonEntity> GetOutTaskItem(string itemName, out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+ List<TaskCommonEntity> tclst = new List<TaskCommonEntity>();
+ List<string> pvclst = new List<string>();
+ if (!string.IsNullOrEmpty(itemName))
+ {
+ pvclst = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.itemName.Contains(itemName)).Select(x => x.itemName).Distinct().ToList();
+ }
+ else
+ {
+ pvclst = edm.View_BASE_PLACE_VS_CONTAINER.Select(x => x.itemName).Distinct().ToList();
+ }
+ var itemlst = edm.View_BASE_ITEM.Where(x => pvclst.Contains(x.itemName)).ToList();
+ int id = 1;
+ itemlst.ForEach(x =>
+ {
+ tclst.Add(new TaskCommonEntity() { id = id, lable=x.itemName,value=x.itemDes });
+ id++;
+ });
+ return tclst;
+ }
+ }
+ catch (Exception)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return null;
+ }
+ }
+
+ /// <summary>
+ /// 鍑哄簱涓嬫媺鎵樼洏淇℃伅
+ /// </summary>
+ /// <param name="itemName"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<TaskCommonEntity> GetOutTaskContainer(string itemName, out string msg)
+ {
+ msg = "";
+ try
+ {
+ using (Model edm = new Model())
+ {
+ List<TaskCommonEntity> tclst = new List<TaskCommonEntity>();
+ List<string> pvclst = new List<string>();
+ if (!string.IsNullOrEmpty(itemName))
+ {
+ pvclst = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.itemName.Contains(itemName)).Select(x => x.containerName).Distinct().ToList();
+ }else
+ {
+ pvclst = edm.View_BASE_PLACE_VS_CONTAINER.Select(x => x.containerName).Distinct().ToList();
+ }
+ var conlst = edm.View_BASE_CONTAINER.Where(x => pvclst.Contains(x.containerName)).ToList();
+ var maintask = edm.View_TASK_TASK.Where(x => x.hasFinished == 0).Select(x => x.containerName).Distinct().ToList();
+ int id = 1;
+ conlst.ForEach(x =>
+ {
+ if (maintask == null ||!maintask.Contains(x.containerName))
+ {
+ tclst.Add(new TaskCommonEntity() { id = id, lable = x.containerName, value = x.containerName });
+ id++;
+ }
+ });
+
+ return tclst;
+ }
+ }
+ catch (Exception)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return null;
+ }
+ }
+
+ /// <summary>
+ /// 缁熻鍑哄叆鍙f暟閲�
+ /// </summary>
+ /// <param name="itemName"></param>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ public static List<TimeVsTaskNumWebEntity> GetOutTaskContainer(TaskWebEntity webEntity, out string msg)
+ {
+ Dictionary<int, int> InEnter = new Dictionary<int, int>()
+ {
+ {1,47},
+ {2,48},
+ {3,61},
+ {4,65},
+ {5,32},
+ {7,15}
+ };
+ Dictionary<int, int> OutEnter = new Dictionary<int, int>()
+ {
+ {1,68},
+ {2,51},
+ {3,64},
+ {4,67},
+ {5,34},
+ {6,30},
+ {7,19},
+ {8,12}
+ };
+ msg = "";
+ try
+ {
+ List<TimeVsTaskNumWebEntity> result = new List<TimeVsTaskNumWebEntity>();
+
+
+ webEntity.createTimeStart=webEntity.createTimeStart.Value.Date;
+ //webEntity.createTimeEnd = webEntity.createTimeEnd.Value.Date.AddDays(1);
+
+ List<View_TASK_TASK> taskList = SearchView(webEntity, 1, 99999999, out msg);
+
+ TimeVsTaskNumWebEntity allTimeVsTaskNumWebEntity = new TimeVsTaskNumWebEntity();
+ TaskNumAllEnterWebEntity allTaskNumAllEnterWebEntity = new TaskNumAllEnterWebEntity();
+ allTaskNumAllEnterWebEntity.inEnterVsNumList = new List<TaskNumOnEnterWebEntity>();
+ allTaskNumAllEnterWebEntity.outEnterVsNumList = new List<TaskNumOnEnterWebEntity>();
+ allTimeVsTaskNumWebEntity.time = "0:00 - " + "24:00";
+ for (var h = 0; h < 24; h++)//24灏忔椂
+ {
+ DateTime start=webEntity.createTimeStart.Value.AddHours(h);
+ DateTime end=webEntity.createTimeStart.Value.AddHours(h+1);
+ List<View_TASK_TASK> hourTaskList = taskList.Where(x => x.createTime > start && x.createTime < end).ToList();
+ TaskNumAllEnterWebEntity taskNumAllEnterWebEntity = new TaskNumAllEnterWebEntity();
+ taskNumAllEnterWebEntity.inEnterVsNumList = new List<TaskNumOnEnterWebEntity>();
+ taskNumAllEnterWebEntity.outEnterVsNumList = new List<TaskNumOnEnterWebEntity>();
+ taskNumAllEnterWebEntity.inNum = hourTaskList.Where(x => x.taskType == 1).Count();
+ taskNumAllEnterWebEntity.outNum = hourTaskList.Where(x => x.taskType == 2).Count();
+ taskNumAllEnterWebEntity.allNum = taskNumAllEnterWebEntity.inNum + taskNumAllEnterWebEntity.outNum;
+ taskNumAllEnterWebEntity.inExchange = hourTaskList.Where(x => x.taskType == 1 && x.isExchange == 1).Count();
+ taskNumAllEnterWebEntity.outExchange = hourTaskList.Where(x => x.taskType == 2 && x.isExchange == 1).Count();
+
+ allTaskNumAllEnterWebEntity.inNum += taskNumAllEnterWebEntity.inNum;
+ allTaskNumAllEnterWebEntity.outNum += taskNumAllEnterWebEntity.outNum;
+ allTaskNumAllEnterWebEntity.allNum = allTaskNumAllEnterWebEntity.inNum + allTaskNumAllEnterWebEntity.outNum;
+ allTaskNumAllEnterWebEntity.inExchange += taskNumAllEnterWebEntity.inExchange;
+ allTaskNumAllEnterWebEntity.outExchange += taskNumAllEnterWebEntity.outExchange;
+
+ for (int i = 1; i < 9; i++)
+ {
+ int enterNo = 0;
+ if (InEnter.TryGetValue(i, out enterNo))
+ {
+ TaskNumOnEnterWebEntity nve = new TaskNumOnEnterWebEntity();
+ nve.enter = enterNo;
+ nve.num = hourTaskList.Where(x => x.taskType == 1 && x.sourcePlace == enterNo.ToString()).Count();
+ taskNumAllEnterWebEntity.inEnterVsNumList.Add(nve);
+ //鎬昏
+ if (allTaskNumAllEnterWebEntity.inEnterVsNumList.FirstOrDefault(x => x.enter == enterNo) == null)
+ {
+ TaskNumOnEnterWebEntity allNve = new TaskNumOnEnterWebEntity();
+ allNve.enter = enterNo;
+ allNve.num += nve.num;
+ allTaskNumAllEnterWebEntity.inEnterVsNumList.Add(allNve);
+ }
+ else
+ {
+ allTaskNumAllEnterWebEntity.inEnterVsNumList.FirstOrDefault(x => x.enter == enterNo).num += nve.num;
+ }
+ }
+ }
+ for (int i = 1; i < 9; i++)
+ {
+ int enterNo = 0;
+ if (OutEnter.TryGetValue(i, out enterNo))
+ {
+ TaskNumOnEnterWebEntity nve = new TaskNumOnEnterWebEntity();
+ nve.enter = enterNo;
+ nve.num = hourTaskList.Where(x => x.taskType == 2 && x.toPlace == enterNo.ToString()).Count();
+ taskNumAllEnterWebEntity.outEnterVsNumList.Add(nve);
+
+ //鎬昏
+ if (allTaskNumAllEnterWebEntity.outEnterVsNumList.FirstOrDefault(x => x.enter == enterNo) == null)
+ {
+ TaskNumOnEnterWebEntity allNve = new TaskNumOnEnterWebEntity();
+ allNve.enter = enterNo;
+ allNve.num += nve.num;
+ allTaskNumAllEnterWebEntity.outEnterVsNumList.Add(allNve);
+ }
+ else
+ {
+ allTaskNumAllEnterWebEntity.outEnterVsNumList.FirstOrDefault(x => x.enter == enterNo).num += nve.num;
+ }
+ }
+ }
+ TimeVsTaskNumWebEntity timeVsTaskNumWebEntity = new TimeVsTaskNumWebEntity();
+ timeVsTaskNumWebEntity.data = taskNumAllEnterWebEntity;
+ timeVsTaskNumWebEntity.time = h + ":00 - " + (h + 1) + ":00";
+ result.Add(timeVsTaskNumWebEntity);
+ }
+ allTimeVsTaskNumWebEntity.data = allTaskNumAllEnterWebEntity;
+ result.Add(allTimeVsTaskNumWebEntity);
+
+ return result;
+ }
+ catch (Exception)
+ {
+ msg = "鑾峰彇澶辫触锛�";
+ return null;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/IWareDataAccess/packages.config b/qqjf-Background/IWareDataAccess/packages.config
new file mode 100644
index 0000000..3ab774b
--- /dev/null
+++ b/qqjf-Background/IWareDataAccess/packages.config
@@ -0,0 +1,5 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
+ <package id="EntityFramework.zh-Hans" version="6.1.3" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/qqjf-Background/Models/Input/InOrderAuditInput.cs b/qqjf-Background/Models/Input/InOrderAuditInput.cs
new file mode 100644
index 0000000..dee06e0
--- /dev/null
+++ b/qqjf-Background/Models/Input/InOrderAuditInput.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Models.Input
+{
+ /// <summary>
+ /// 鍐插帇鐢熶骇璁″垝瀹℃牳璇锋眰鍙傛暟
+ /// </summary>
+ public class InOrderAuditInput
+ {
+ /// <summary>
+ /// 璁″垝鍗曞彿
+ /// </summary>
+ public string InOrderCode { get; set; }
+
+ /// <summary>
+ /// 鎻愪氦瀹℃牳鐢ㄦ埛ID
+ /// </summary>
+ public int? SendUserId { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳鐢ㄦ埛ID
+ /// </summary>
+ public int? AuditUserId { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+}
diff --git a/qqjf-Background/Models/Input/InOrderUnlineNumInput.cs b/qqjf-Background/Models/Input/InOrderUnlineNumInput.cs
new file mode 100644
index 0000000..6386302
--- /dev/null
+++ b/qqjf-Background/Models/Input/InOrderUnlineNumInput.cs
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Models.Input
+{
+ /// <summary>
+ /// 鏇存敼绾夸笅浜や粯鐨勬暟閲� 璇锋眰鍙傛暟
+ /// </summary>
+ public class InOrderUnlineNumInput
+ {
+ /// <summary>
+ /// 璁″垝鍗曞彿
+ /// </summary>
+ public string InOrderCode { get; set; }
+
+ /// <summary>
+ /// 绾夸笅浜や粯鐨勬暟閲�
+ /// </summary>
+ public int Qty { get; set; }
+ }
+}
diff --git a/qqjf-Background/Models/Input/UpdateCviCodeInput.cs b/qqjf-Background/Models/Input/UpdateCviCodeInput.cs
new file mode 100644
index 0000000..7fa136b
--- /dev/null
+++ b/qqjf-Background/Models/Input/UpdateCviCodeInput.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Models.Input
+{
+ /// <summary>
+ /// 鏇存柊BASE_CONTAINER_VS_ITEM琛ㄧ殑cviCode鏂规硶鍏ュ弬
+ /// </summary>
+ public class UpdateCviCodeInput
+ {
+ /// <summary>
+ /// 璁″垝鍗曞彿
+ /// </summary>
+ public string cviCode { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鑰匢D
+ /// </summary>
+ public int creatorId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鑰呭悕绉�
+ /// </summary>
+ public string creatorName { get; set; }
+
+ /// <summary>
+ /// BASE_CONTAINER_VS_ITEM琛ㄧ殑Id闆嗗悎
+ /// </summary>
+ public List<int> cviIds { get; set; }
+ }
+}
diff --git a/qqjf-Background/Models/Models.csproj b/qqjf-Background/Models/Models.csproj
new file mode 100644
index 0000000..b589acc
--- /dev/null
+++ b/qqjf-Background/Models/Models.csproj
@@ -0,0 +1,55 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{27D81FDC-066B-4A2F-ABB7-F3D38B4B1B9E}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Models</RootNamespace>
+ <AssemblyName>Models</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Input\InOrderUnlineNumInput.cs" />
+ <Compile Include="Input\InOrderAuditInput.cs" />
+ <Compile Include="Input\UpdateCviCodeInput.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/Models/Properties/AssemblyInfo.cs b/qqjf-Background/Models/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..139bb07
--- /dev/null
+++ b/qqjf-Background/Models/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅閫氳繃浠ヤ笅
+// 鐗规�ч泦鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("Models")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Models")]
+[assembly: AssemblyCopyright("Copyright 漏 2022")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浣挎绋嬪簭闆嗕腑鐨勭被鍨�
+// 瀵� COM 缁勪欢涓嶅彲瑙併�� 濡傛灉闇�瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷锛�
+// 鍒欏皢璇ョ被鍨嬩笂鐨� ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("3f04d899-3f76-4a3b-ad80-7dee80d917e4")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅闈㈠洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/WMSPatch/App.config b/qqjf-Background/WMSPatch/App.config
new file mode 100644
index 0000000..3c6c057
--- /dev/null
+++ b/qqjf-Background/WMSPatch/App.config
@@ -0,0 +1,36 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <configSections>
+ <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </configSections>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+ </startup>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
+ <parameters>
+ <parameter value="mssqllocaldb" />
+ </parameters>
+ </defaultConnectionFactory>
+ <providers>
+ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+ </providers>
+ </entityFramework>
+ <connectionStrings>
+ <!--<add name="Model1" connectionString="data source=10.103.11.236;initial catalog=YrtWMS_QingQi;user id=wms_dev;password=wms@123qaz;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <add name="Model" connectionString="data source=10.103.11.236;initial catalog=YrtWMS_QingQi;persist security info=True;user id=wms_dev;password=wms@123qaz;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
+ </connectionStrings>
+ <system.serviceModel>
+ <bindings>
+ <basicHttpBinding>
+ <binding name="BasicHttpBinding_ISrmService" />
+ </basicHttpBinding>
+ </bindings>
+ <client>
+ <endpoint address="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/"
+ binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
+ contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />
+ </client>
+ </system.serviceModel>
+</configuration>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/EF/Base_EmptyEquipment.cs b/qqjf-Background/WMSPatch/EF/Base_EmptyEquipment.cs
new file mode 100644
index 0000000..7d926cc
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Base_EmptyEquipment.cs
@@ -0,0 +1,98 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_EmptyEquipment
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public Base_EmptyEquipment()
+ {
+ Base_EmptyEquipmentList = new HashSet<Base_EmptyEquipmentList>();
+ }
+
+ [Key]
+ public int EmptyEquipment_Id { get; set; }
+
+ [StringLength(50)]
+ public string EmptyEquipmentCode { get; set; }
+
+ [StringLength(50)]
+ public string OrderType { get; set; }
+
+ public int? Consignor_Id { get; set; }
+
+ [StringLength(50)]
+ public string ConsignorCode { get; set; }
+
+ [StringLength(50)]
+ public string ConsignorName { get; set; }
+
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ public int? Storage_Id { get; set; }
+
+ public byte? StatusID { get; set; }
+
+ [StringLength(50)]
+ public string StatusText { get; set; }
+
+ public decimal? TotalQuantity { get; set; }
+
+ [StringLength(50)]
+ public string Checkout { get; set; }
+
+ public int? Destination_Id { get; set; }
+
+ [StringLength(800)]
+ public string DestinationName { get; set; }
+
+ [StringLength(50)]
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ public int? UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [StringLength(50)]
+ public string Auditor { get; set; }
+
+ public byte? Auditing { get; set; }
+
+ public DateTime? AuditDate { get; set; }
+
+ public long? Product_Id { get; set; }
+
+ [StringLength(500)]
+ public string ProductName { get; set; }
+
+ public decimal? DemandQuantity { get; set; }
+
+ [StringLength(500)]
+ public string TransId { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<Base_EmptyEquipmentList> Base_EmptyEquipmentList { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Base_EmptyEquipmentList.cs b/qqjf-Background/WMSPatch/EF/Base_EmptyEquipmentList.cs
new file mode 100644
index 0000000..ebf26e3
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Base_EmptyEquipmentList.cs
@@ -0,0 +1,88 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_EmptyEquipmentList
+ {
+ [Key]
+ public int EmptyEquipmentList_Id { get; set; }
+
+ public int? Plate_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateName { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ [StringLength(50)]
+ public string PlateState { get; set; }
+
+ [StringLength(500)]
+ public string CurrentArea { get; set; }
+
+ [StringLength(500)]
+ public string CurrentLocation { get; set; }
+
+ public long? Product_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [StringLength(500)]
+ public string ProductName { get; set; }
+
+ public decimal? Long { get; set; }
+
+ public decimal? Wide { get; set; }
+
+ public decimal? Hight { get; set; }
+
+ public decimal? PlateWeight { get; set; }
+
+ public decimal? Quantity { get; set; }
+
+ public int? IsPrinted { get; set; }
+
+ public int? Enable { get; set; }
+
+ public string Photo { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ public int? UserProduct_Id { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public int EmptyEquipment_Id { get; set; }
+
+ [StringLength(50)]
+ public string Status { get; set; }
+
+ [StringLength(50)]
+ public string PlateTypeCode { get; set; }
+
+ public virtual Base_EmptyEquipment Base_EmptyEquipment { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Base_Plate.cs b/qqjf-Background/WMSPatch/EF/Base_Plate.cs
new file mode 100644
index 0000000..9faa31a
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Base_Plate.cs
@@ -0,0 +1,107 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_Plate
+ {
+ [Key]
+ public int Plate_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ [StringLength(50)]
+ public string PlateName { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int? UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ public int? Storage_Id { get; set; }
+
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ public int? IsPrinted { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? OrderNo { get; set; }
+
+ public int? Enable { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public int? IsUse { get; set; }
+
+ [StringLength(50)]
+ public string PlateState { get; set; }
+
+ [StringLength(50)]
+ public string PrintState { get; set; }
+
+ public int? PringQuantity { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ [StringLength(500)]
+ public string CurrentArea { get; set; }
+
+ [StringLength(500)]
+ public string CurrentLocation { get; set; }
+
+ public decimal? Length { get; set; }
+
+ public decimal? Width { get; set; }
+
+ public decimal? Height { get; set; }
+
+ public decimal? PlateWeight { get; set; }
+
+ public decimal? PackingQuantity { get; set; }
+
+ public string Photo { get; set; }
+
+ public int? PlateType_Id { get; set; }
+
+ [StringLength(50)]
+ public string AreaCode { get; set; }
+
+ [StringLength(50)]
+ public string PlateTypeCode { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Base_PlateType.cs b/qqjf-Background/WMSPatch/EF/Base_PlateType.cs
new file mode 100644
index 0000000..42a19ca
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Base_PlateType.cs
@@ -0,0 +1,69 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_PlateType
+ {
+ [Key]
+ public int PlateType_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ public int? Plate_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateName { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ public int? UserProduct_Id { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? Enable { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public int? Storage_Id { get; set; }
+
+ [StringLength(50)]
+ public string StorageCode { get; set; }
+
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ [StringLength(50)]
+ public string AreaCode { get; set; }
+
+ public decimal? Length { get; set; }
+
+ public decimal? Width { get; set; }
+
+ public decimal? Height { get; set; }
+
+ public decimal? ToleranceQuantity { get; set; }
+
+ [StringLength(50)]
+ public string PalletType { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Base_Position.cs b/qqjf-Background/WMSPatch/EF/Base_Position.cs
new file mode 100644
index 0000000..0dfe809
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Base_Position.cs
@@ -0,0 +1,118 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_Position
+ {
+ [Key]
+ public int Position_Id { get; set; }
+
+ public int ParentId { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string PositionName { get; set; }
+
+ public int Storage_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ public byte PositionType { get; set; }
+
+ public byte IsLocked { get; set; }
+
+ public byte? IsFreeze { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? OrderNo { get; set; }
+
+ public int? MaxCapacity { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public int? Enable { get; set; }
+
+ [StringLength(50)]
+ public string ChannelCode { get; set; }
+
+ [StringLength(50)]
+ public string LineCode { get; set; }
+
+ [StringLength(50)]
+ public string ShelveCode { get; set; }
+
+ [StringLength(50)]
+ public string ColumnCode { get; set; }
+
+ [StringLength(50)]
+ public string RowCode { get; set; }
+
+ [StringLength(50)]
+ public string AreaCode { get; set; }
+
+ [StringLength(50)]
+ public string ShelveMode { get; set; }
+
+ public byte? IsMixProduct { get; set; }
+
+ public decimal? PositionLength { get; set; }
+
+ public decimal? PositionWidth { get; set; }
+
+ public int? MinCapacity { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int? UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ public string PlateType { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ public decimal? Length { get; set; }
+
+ public decimal? Width { get; set; }
+
+ public decimal? Height { get; set; }
+
+ [StringLength(50)]
+ public string IsFull { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Base_ProductPlaceHolder.cs b/qqjf-Background/WMSPatch/EF/Base_ProductPlaceHolder.cs
new file mode 100644
index 0000000..479b052
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Base_ProductPlaceHolder.cs
@@ -0,0 +1,199 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_ProductPlaceHolder
+ {
+ [Key]
+ public int Placeholder_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ClassName { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string Code { get; set; }
+
+ public int MainID { get; set; }
+
+ public int DetailID { get; set; }
+
+ public long ProductPosition_Id { get; set; }
+
+ public int Storage_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string PositionName { get; set; }
+
+ public long Product_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [Required]
+ [StringLength(500)]
+ public string ProductName { get; set; }
+
+ [StringLength(300)]
+ public string ProductModel { get; set; }
+
+ public string ProductSpec { get; set; }
+
+ public int Provider_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProviderCode { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ProviderShortName { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? PurchasePrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Rate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? RatePrice { get; set; }
+
+ public DateTime? InStorageDate { get; set; }
+
+ public decimal? PlaceholderStorage { get; set; }
+
+ public decimal? OrignHolderStorage { get; set; }
+
+ public int? UsedStorage { get; set; }
+
+ public int? UnouterStorage { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ [StringLength(50)]
+ public string DeleteBy { get; set; }
+
+ [StringLength(50)]
+ public string StoreOrderCode { get; set; }
+
+ [StringLength(50)]
+ public string SingleSignCode { get; set; }
+
+ public int? Consignor_Id { get; set; }
+
+ [StringLength(50)]
+ public string ConsignorCode { get; set; }
+
+ [StringLength(150)]
+ public string ConsignorName { get; set; }
+
+ [StringLength(50)]
+ public string BatchNumber { get; set; }
+
+ public DateTime? ProduceDate { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ [StringLength(50)]
+ public string RelationCode { get; set; }
+
+ [StringLength(150)]
+ public string DeclareNo { get; set; }
+
+ public byte? IsFullContainerLoad { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField01 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField02 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField03 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField04 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField05 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField06 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField07 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField08 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField09 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField10 { get; set; }
+
+ public decimal? PlaceholderWeight { get; set; }
+
+ public decimal? OrignHolderWeight { get; set; }
+
+ public decimal? Weight { get; set; }
+
+ public decimal? TotalWeight { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ [StringLength(150)]
+ public string ContainerNo { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ public string DetailExpandFields { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ public int? PlateType_Id { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Base_ProductPosition.cs b/qqjf-Background/WMSPatch/EF/Base_ProductPosition.cs
new file mode 100644
index 0000000..647a0f1
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Base_ProductPosition.cs
@@ -0,0 +1,230 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Base_ProductPosition
+ {
+ [Key]
+ public long ProductPosition_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ClassName { get; set; }
+
+ [StringLength(50)]
+ public string BillCode { get; set; }
+
+ public int Storage_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string PositionName { get; set; }
+
+ public long Product_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [Required]
+ [StringLength(500)]
+ public string ProductName { get; set; }
+
+ [Required]
+ [StringLength(300)]
+ public string ProductModel { get; set; }
+
+ public decimal? ProductStorage { get; set; }
+
+ public decimal? OrignStorage { get; set; }
+
+ public DateTime InStorageDate { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ public int Consignor_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ConsignorCode { get; set; }
+
+ [Required]
+ [StringLength(150)]
+ public string ConsignorName { get; set; }
+
+ [StringLength(50)]
+ public string SingleSignCode { get; set; }
+
+ public decimal? DynamicWeight { get; set; }
+
+ public int MainID { get; set; }
+
+ public int DetailID { get; set; }
+
+ public int? Provider_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProviderCode { get; set; }
+
+ [StringLength(50)]
+ public string ProviderShortName { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? PurchasePrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? PurchaseMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Rate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? RatePrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? RateMoney { get; set; }
+
+ public string ProductSpec { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? AvgPrice { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ [StringLength(50)]
+ public string DeleteBy { get; set; }
+
+ [StringLength(50)]
+ public string EnterCode { get; set; }
+
+ [StringLength(50)]
+ public string OrderCode { get; set; }
+
+ public int Class_Id { get; set; }
+
+ [StringLength(50)]
+ public string BatchNumber { get; set; }
+
+ public DateTime? ProduceDate { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ [StringLength(50)]
+ public string RelationCode { get; set; }
+
+ public int? ShelfLifeDay { get; set; }
+
+ public DateTime? ShelfLifeDate { get; set; }
+
+ public int? ValidShelfLifeDay { get; set; }
+
+ [StringLength(50)]
+ public string StorageStatus { get; set; }
+
+ [StringLength(50)]
+ public string ProductAttribute { get; set; }
+
+ [StringLength(150)]
+ public string DeclareNo { get; set; }
+
+ public DateTime? LimitDate { get; set; }
+
+ [StringLength(50)]
+ public string AreaCode { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField01 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField02 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField03 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField04 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField05 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField06 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField07 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField08 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField09 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField10 { get; set; }
+
+ public decimal? Weight { get; set; }
+
+ public decimal? TotalWeight { get; set; }
+
+ public decimal? TotalWeightOrign { get; set; }
+
+ [StringLength(50)]
+ public string OriginPlace { get; set; }
+
+ [StringLength(50)]
+ public string ContainerNo { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ public string DetailExpandFields { get; set; }
+
+ [StringLength(50)]
+ public string PartStatus { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ [StringLength(50)]
+ public string PlateTypeCode { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Model.cs b/qqjf-Background/WMSPatch/EF/Model.cs
new file mode 100644
index 0000000..8434490
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Model.cs
@@ -0,0 +1,468 @@
+锘縩amespace WMSPatch.EF
+{
+ using System;
+ using System.Data.Entity;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Linq;
+
+ public partial class Model : DbContext
+ {
+ public Model()
+ : base("name=Model")
+ {
+ }
+
+ public virtual DbSet<Base_EmptyEquipment> Base_EmptyEquipment { get; set; }
+ public virtual DbSet<Base_EmptyEquipmentList> Base_EmptyEquipmentList { get; set; }
+ public virtual DbSet<Base_Plate> Base_Plate { get; set; }
+ public virtual DbSet<Base_PlateType> Base_PlateType { get; set; }
+ public virtual DbSet<Base_Position> Base_Position { get; set; }
+ public virtual DbSet<Base_ProductPlaceHolder> Base_ProductPlaceHolder { get; set; }
+ public virtual DbSet<Base_ProductPosition> Base_ProductPosition { get; set; }
+ public virtual DbSet<Purchase_Order> Purchase_Order { get; set; }
+ public virtual DbSet<Purchase_OrderList> Purchase_OrderList { get; set; }
+ public virtual DbSet<Sale_Order> Sale_Order { get; set; }
+ public virtual DbSet<Task_Queue> Task_Queue { get; set; }
+ public virtual DbSet<v3D灞曠ず鏁版嵁> v3D灞曠ず鏁版嵁 { get; set; }
+
+ protected override void OnModelCreating(DbModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity<Base_EmptyEquipment>()
+ .Property(e => e.TotalQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_EmptyEquipment>()
+ .Property(e => e.DemandQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_EmptyEquipmentList>()
+ .Property(e => e.PlateCode)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<Base_EmptyEquipmentList>()
+ .Property(e => e.PlateWeight)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_EmptyEquipmentList>()
+ .Property(e => e.Quantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_Plate>()
+ .Property(e => e.PlateCode)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<Base_Plate>()
+ .Property(e => e.Length)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_Plate>()
+ .Property(e => e.Width)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_Plate>()
+ .Property(e => e.Height)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_Plate>()
+ .Property(e => e.PlateWeight)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_Plate>()
+ .Property(e => e.PackingQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_PlateType>()
+ .Property(e => e.PlateCode)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<Base_Position>()
+ .Property(e => e.PlateCode)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.PurchasePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.Rate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.RatePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.PlaceholderStorage)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.OrignHolderStorage)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.PlaceholderWeight)
+ .HasPrecision(18, 6);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.OrignHolderWeight)
+ .HasPrecision(18, 6);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.Weight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Base_ProductPlaceHolder>()
+ .Property(e => e.TotalWeight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.ProductStorage)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.OrignStorage)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.DynamicWeight)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.PurchasePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.PurchaseMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.Rate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.RatePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.RateMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.AvgPrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.Weight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.TotalWeight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Base_ProductPosition>()
+ .Property(e => e.TotalWeightOrign)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.CorpURL)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalPaidMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.SurplusTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.ExpressFee)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.Rate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalRateMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.Refund)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TaxAmountTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalWeight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.TotalPaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.Unpaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .Property(e => e.DynamicWeight)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Purchase_Order>()
+ .HasMany(e => e.Purchase_OrderList)
+ .WithOptional(e => e.Purchase_Order)
+ .WillCascadeOnDelete();
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.URL)
+ .IsUnicode(false);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.Quantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.PurchasePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.PurchaseMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.Rate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.RatePrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.RateMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.TaxAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.EnterQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.ReturnQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.MarketPrice)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.DiscountRate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.Weight)
+ .HasPrecision(18, 4);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.TotalWeight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.BigQty)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.TotalPackageQty)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.PaiQty)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Purchase_OrderList>()
+ .Property(e => e.ValidQty)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalQuantityOrder)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalQuantityCanceled)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalQuantityInvoiced)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalQuantityRefunded)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalQuantityOuted)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalQuantityShipped)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.Weight)
+ .HasPrecision(18, 3);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.MaterialCount)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTaxAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseShippingAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseDiscountAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseSubTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseGrandTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTotalPaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTotalUnPaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTotalRefunded)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTotalCanceled)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTotalInvoiced)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTotalOnlineRefunded)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseTotalOffRefunded)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TaxAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.ShippingAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.FactFreightRMB)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.DiscountAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.SubTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.GrandTotal)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalPaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.Unpaid)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalRefunded)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalCanceled)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalInvoiced)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalOnlineRefunded)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalOffRefunded)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.StoreBaseRate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.StoreOrderRate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseGlobalRate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.BaseOrderRate)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.FavourAmount)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalRateMoney)
+ .HasPrecision(19, 4);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.TotalWeight)
+ .HasPrecision(18, 5);
+
+ modelBuilder.Entity<Sale_Order>()
+ .Property(e => e.ValidQuantity)
+ .HasPrecision(14, 4);
+
+ modelBuilder.Entity<v3D灞曠ず鏁版嵁>()
+ .Property(e => e.鏁伴噺)
+ .HasPrecision(38, 4);
+ }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Purchase_Order.cs b/qqjf-Background/WMSPatch/EF/Purchase_Order.cs
new file mode 100644
index 0000000..16f1a6c
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Purchase_Order.cs
@@ -0,0 +1,241 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Purchase_Order
+ {
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+ public Purchase_Order()
+ {
+ Purchase_OrderList = new HashSet<Purchase_OrderList>();
+ }
+
+ [Key]
+ public int Order_Id { get; set; }
+
+ [StringLength(50)]
+ public string OrderCode { get; set; }
+
+ public int Storage_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ public int? User_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserTrueName { get; set; }
+
+ public int? Dept_Id { get; set; }
+
+ [StringLength(50)]
+ public string DeptName { get; set; }
+
+ public DateTime? ApplyDate { get; set; }
+
+ public DateTime? ArrivedDate { get; set; }
+
+ public int? Provider_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProviderCode { get; set; }
+
+ [StringLength(50)]
+ public string ProviderShortName { get; set; }
+
+ [StringLength(200)]
+ public string CorpURL { get; set; }
+
+ public decimal? TotalQuantity { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalPaidMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? SurplusTotal { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? ExpressFee { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Rate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalRateMoney { get; set; }
+
+ [StringLength(50)]
+ public string ProductionStatus { get; set; }
+
+ public byte? StatusID { get; set; }
+
+ [StringLength(50)]
+ public string StatusText { get; set; }
+
+ public byte? ReturnStatusID { get; set; }
+
+ [StringLength(50)]
+ public string ReturnStatusText { get; set; }
+
+ [StringLength(50)]
+ public string Auditor { get; set; }
+
+ public byte? Auditing { get; set; }
+
+ public DateTime? AuditDate { get; set; }
+
+ public string AuditRemark { get; set; }
+
+ [StringLength(250)]
+ public string TrackingNumber { get; set; }
+
+ public byte? Enable { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Refund { get; set; }
+
+ public int Consignor_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ConsignorCode { get; set; }
+
+ [Required]
+ [StringLength(150)]
+ public string ConsignorName { get; set; }
+
+ public byte? IsChecking { get; set; }
+
+ public int? IsArrivalProcess { get; set; }
+
+ public byte? FinStatusID { get; set; }
+
+ [StringLength(50)]
+ public string FinStatusText { get; set; }
+
+ [StringLength(32)]
+ public string ExternalNo { get; set; }
+
+ [StringLength(32)]
+ public string ExternalNo2 { get; set; }
+
+ public long? SourceId { get; set; }
+
+ public byte? IsCiqDeclare { get; set; }
+
+ [StringLength(50)]
+ public string OrderType { get; set; }
+
+ [StringLength(50)]
+ public string ReturnOrderCode { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TaxAmountTotal { get; set; }
+
+ public decimal? TotalWeight { get; set; }
+
+ [StringLength(50)]
+ public string ContainerNo { get; set; }
+
+ [StringLength(300)]
+ public string FeeItem_Ids { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalPaid { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Unpaid { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ public int? Plate_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ public int? ProductionLine_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProductionLineCode { get; set; }
+
+ [StringLength(50)]
+ public string ProductionLineName { get; set; }
+
+ public int? Printing { get; set; }
+
+ [StringLength(50)]
+ public string PartStatus { get; set; }
+
+ public decimal? DynamicWeight { get; set; }
+
+ [StringLength(50)]
+ public string RelationDrivers { get; set; }
+
+ [StringLength(50)]
+ public string PlateName { get; set; }
+
+ [StringLength(50)]
+ public string RepairType { get; set; }
+
+ public int? PlateType_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ public byte? OverRun { get; set; }
+
+ [StringLength(50)]
+ public string PositionName { get; set; }
+
+ public byte? IsOverWeight { get; set; }
+
+ public int? packingQuantity { get; set; }
+
+ public byte? isPassWeight { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+ public virtual ICollection<Purchase_OrderList> Purchase_OrderList { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Purchase_OrderList.cs b/qqjf-Background/WMSPatch/EF/Purchase_OrderList.cs
new file mode 100644
index 0000000..a34adfc
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Purchase_OrderList.cs
@@ -0,0 +1,198 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Purchase_OrderList
+ {
+ [Key]
+ public int OrderList_Id { get; set; }
+
+ public int? Order_Id { get; set; }
+
+ public int? SourceType { get; set; }
+
+ public int? SourceMainID { get; set; }
+
+ public int? SourceListID { get; set; }
+
+ public long Product_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [StringLength(500)]
+ public string ProductName { get; set; }
+
+ [Required]
+ [StringLength(300)]
+ public string ProductModel { get; set; }
+
+ public string ProductSpec { get; set; }
+
+ [StringLength(500)]
+ public string URL { get; set; }
+
+ [StringLength(50)]
+ public string SmallUnit { get; set; }
+
+ [StringLength(50)]
+ public string BigUnit { get; set; }
+
+ public decimal? Quantity { get; set; }
+
+ public decimal? UnitConvert { get; set; }
+
+ [StringLength(50)]
+ public string UnitConvertText { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? PurchasePrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? PurchaseMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Rate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? RatePrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? RateMoney { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TaxAmount { get; set; }
+
+ public decimal? EnterQuantity { get; set; }
+
+ public decimal? ReturnQuantity { get; set; }
+
+ public byte? Enable { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public byte? CustomProduct { get; set; }
+
+ [StringLength(800)]
+ public string AppendParameter { get; set; }
+
+ [StringLength(50)]
+ public string SingleSignCode { get; set; }
+
+ public string FromOrderIds { get; set; }
+
+ public DateTime? DeliveryDate { get; set; }
+
+ [StringLength(500)]
+ public string SpecAlias { get; set; }
+
+ [StringLength(500)]
+ public string ProductBarCode { get; set; }
+
+ [StringLength(50)]
+ public string BatchNumber { get; set; }
+
+ public DateTime? ProduceDate { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ [StringLength(50)]
+ public string RelationCode { get; set; }
+
+ public long? SourceId { get; set; }
+
+ [StringLength(150)]
+ public string DeclareNo { get; set; }
+
+ public decimal? shelfLifeDay { get; set; }
+
+ public decimal? Overcharges { get; set; }
+
+ public DateTime? NoReceivingDate { get; set; }
+
+ public DateTime? LimitDate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? MarketPrice { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? DiscountRate { get; set; }
+
+ public decimal? Weight { get; set; }
+
+ public decimal? TotalWeight { get; set; }
+
+ public decimal? BigQty { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField01 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField02 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField03 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField04 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField05 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField06 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField07 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField08 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField09 { get; set; }
+
+ [StringLength(300)]
+ public string ExtendField10 { get; set; }
+
+ [StringLength(50)]
+ public string OriginPlace { get; set; }
+
+ public decimal? TotalPackageQty { get; set; }
+
+ public decimal? PaiQty { get; set; }
+
+ public string UnitPackage { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ [StringLength(500)]
+ public string Images { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ public decimal? ValidQty { get; set; }
+
+ public virtual Purchase_Order Purchase_Order { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Sale_Order.cs b/qqjf-Background/WMSPatch/EF/Sale_Order.cs
new file mode 100644
index 0000000..ad2c8fa
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Sale_Order.cs
@@ -0,0 +1,465 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Sale_Order
+ {
+ [Key]
+ public long Order_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string OrderCode { get; set; }
+
+ [StringLength(50)]
+ public string StoreOrderCode { get; set; }
+
+ public byte? OrderChannel { get; set; }
+
+ public int? StoreInfo_Id { get; set; }
+
+ public int? Store_Id { get; set; }
+
+ [StringLength(250)]
+ public string StoreName { get; set; }
+
+ public int? Storage_Id { get; set; }
+
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ public int? User_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserTrueName { get; set; }
+
+ public int? Dept_Id { get; set; }
+
+ [StringLength(50)]
+ public string DeptName { get; set; }
+
+ public DateTime? ApplyDate { get; set; }
+
+ public int? Client_Id { get; set; }
+
+ [StringLength(50)]
+ public string ClientCode { get; set; }
+
+ [StringLength(500)]
+ public string ClientShortName { get; set; }
+
+ [StringLength(500)]
+ public string Email { get; set; }
+
+ [StringLength(350)]
+ public string Telephone { get; set; }
+
+ [StringLength(350)]
+ public string Fax { get; set; }
+
+ public DateTime? DeliveryDate { get; set; }
+
+ public decimal? TotalQuantityOrder { get; set; }
+
+ public decimal? TotalQuantityCanceled { get; set; }
+
+ public decimal? TotalQuantityInvoiced { get; set; }
+
+ public decimal? TotalQuantityRefunded { get; set; }
+
+ public decimal? TotalQuantityOuted { get; set; }
+
+ public decimal? TotalQuantityShipped { get; set; }
+
+ public decimal? Weight { get; set; }
+
+ public decimal? MaterialCount { get; set; }
+
+ [StringLength(50)]
+ public string Package { get; set; }
+
+ public byte? StatusID { get; set; }
+
+ [StringLength(50)]
+ public string StatusText { get; set; }
+
+ public byte? FinStatusID { get; set; }
+
+ [StringLength(50)]
+ public string FinStatusText { get; set; }
+
+ public byte? PayMode { get; set; }
+
+ [StringLength(150)]
+ public string Payment { get; set; }
+
+ public byte? SortingStatus { get; set; }
+
+ public DateTime? SortingDate { get; set; }
+
+ [StringLength(50)]
+ public string Auditor { get; set; }
+
+ public byte? Auditing { get; set; }
+
+ public DateTime? AuditDate { get; set; }
+
+ public string AuditRemark { get; set; }
+
+ public int? OrderPrint_Id { get; set; }
+
+ [StringLength(50)]
+ public string OrderPrintCode { get; set; }
+
+ public int? SortStorage_Id { get; set; }
+
+ [StringLength(50)]
+ public string SortStorageName { get; set; }
+
+ [StringLength(500)]
+ public string Company { get; set; }
+
+ [StringLength(50)]
+ public string PostCode { get; set; }
+
+ public int? Country_Id { get; set; }
+
+ [StringLength(50)]
+ public string CountryName { get; set; }
+
+ [StringLength(150)]
+ public string CountryFullName { get; set; }
+
+ public int? Province_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProvinceName { get; set; }
+
+ public int? City_Id { get; set; }
+
+ [StringLength(800)]
+ public string CityName { get; set; }
+
+ public int? Region_Id { get; set; }
+
+ [StringLength(800)]
+ public string RegionName { get; set; }
+
+ [StringLength(1000)]
+ public string Street { get; set; }
+
+ public byte? ExpressCorpType { get; set; }
+
+ public int? ExpressCorp_Id { get; set; }
+
+ [StringLength(500)]
+ public string ExpressCorpName { get; set; }
+
+ [StringLength(150)]
+ public string ExpressCode { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTaxAmount { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseShippingAmount { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseDiscountAmount { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseSubTotal { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseGrandTotal { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTotalPaid { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTotalUnPaid { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTotalRefunded { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTotalCanceled { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTotalInvoiced { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTotalOnlineRefunded { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseTotalOffRefunded { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TaxAmount { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? ShippingAmount { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? FactFreightRMB { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? DiscountAmount { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? SubTotal { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? GrandTotal { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalPaid { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? Unpaid { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalRefunded { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalCanceled { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalInvoiced { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalOnlineRefunded { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalOffRefunded { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? StoreBaseRate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? StoreOrderRate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseGlobalRate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? BaseOrderRate { get; set; }
+
+ [StringLength(50)]
+ public string GlobalCurrencyCode { get; set; }
+
+ [StringLength(50)]
+ public string BaseCurrencyCode { get; set; }
+
+ [StringLength(50)]
+ public string StoreCurrencyCode { get; set; }
+
+ [StringLength(50)]
+ public string OrderCurrencyCode { get; set; }
+
+ public string ShippingMethod { get; set; }
+
+ public string ShippingDescription { get; set; }
+
+ public byte? IsSendEmail { get; set; }
+
+ public string GiftMessage { get; set; }
+
+ [StringLength(800)]
+ public string ShippingName { get; set; }
+
+ [StringLength(800)]
+ public string BillingName { get; set; }
+
+ public string ShippingAddress { get; set; }
+
+ public string BillingAddress { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? FavourAmount { get; set; }
+
+ [Column(TypeName = "numeric")]
+ public decimal? Rate { get; set; }
+
+ [Column(TypeName = "money")]
+ public decimal? TotalRateMoney { get; set; }
+
+ public byte? CustomProduct { get; set; }
+
+ [StringLength(50)]
+ public string StoreOrderId { get; set; }
+
+ public string Tag { get; set; }
+
+ public byte? Flag { get; set; }
+
+ [StringLength(50)]
+ public string OrderType { get; set; }
+
+ public int? TuotouDays { get; set; }
+
+ public int Consignor_Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string ConsignorCode { get; set; }
+
+ [Required]
+ [StringLength(150)]
+ public string ConsignorName { get; set; }
+
+ [StringLength(50)]
+ public string Mobile { get; set; }
+
+ [StringLength(150)]
+ public string ExternalNo { get; set; }
+
+ [StringLength(150)]
+ public string ExternalNo2 { get; set; }
+
+ [StringLength(150)]
+ public string SourceId { get; set; }
+
+ [StringLength(50)]
+ public string CiqStatus { get; set; }
+
+ [StringLength(50)]
+ public string CiqCheckType { get; set; }
+
+ [StringLength(50)]
+ public string BigPen { get; set; }
+
+ [StringLength(50)]
+ public string ReturnOrderCode { get; set; }
+
+ [StringLength(150)]
+ public string BillingTel { get; set; }
+
+ [StringLength(50)]
+ public string BillingCountry { get; set; }
+
+ [StringLength(50)]
+ public string BillingZip { get; set; }
+
+ [StringLength(50)]
+ public string PaymentWay { get; set; }
+
+ [StringLength(50)]
+ public string Driver { get; set; }
+
+ public decimal? TotalWeight { get; set; }
+
+ [StringLength(50)]
+ public string sortingCode { get; set; }
+
+ [StringLength(50)]
+ public string ContainerNo { get; set; }
+
+ [StringLength(50)]
+ public string feeItem_Ids { get; set; }
+
+ public byte? Enable { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserCode { get; set; }
+
+ [StringLength(50)]
+ public string PlatUserName { get; set; }
+
+ [StringLength(50)]
+ public string PlatCorpName { get; set; }
+
+ public int UserProduct_Id { get; set; }
+
+ [StringLength(50)]
+ public string UserProductCode { get; set; }
+
+ [StringLength(100)]
+ public string UserProductAlias { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ [StringLength(100)]
+ public string PickUpPort { get; set; }
+
+ public int? Destination_Id { get; set; }
+
+ [StringLength(50)]
+ public string DestinationName { get; set; }
+
+ [StringLength(50)]
+ public string RelationDrivers { get; set; }
+
+ public int? Plate_Id { get; set; }
+
+ [StringLength(50)]
+ public string PlateName { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ public int? OrderExit { get; set; }
+
+ public long? Product_Id { get; set; }
+
+ [StringLength(50)]
+ public string ProductCode { get; set; }
+
+ [StringLength(500)]
+ public string ProductName { get; set; }
+
+ public decimal? ValidQuantity { get; set; }
+
+ [StringLength(50)]
+ public string BatchNumber { get; set; }
+
+ [StringLength(50)]
+ public string AllocatedForklift { get; set; }
+
+ public int? Forklift_Id { get; set; }
+
+ [StringLength(50)]
+ public string ForkliftCode { get; set; }
+
+ [StringLength(50)]
+ public string ForkliftName { get; set; }
+
+ public DateTime? PickupBeginDate { get; set; }
+
+ public DateTime? PickupEndDate { get; set; }
+
+ [StringLength(50)]
+ public string PickUpPortState { get; set; }
+
+ [StringLength(50)]
+ public string RelationState { get; set; }
+
+ [StringLength(50)]
+ public string OutTransId { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/EF/Task_Queue.cs b/qqjf-Background/WMSPatch/EF/Task_Queue.cs
new file mode 100644
index 0000000..297c1c8
--- /dev/null
+++ b/qqjf-Background/WMSPatch/EF/Task_Queue.cs
@@ -0,0 +1,97 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class Task_Queue
+ {
+ [Key]
+ public int Task_Id { get; set; }
+
+ [StringLength(50)]
+ public string TaskType { get; set; }
+
+ public int? Bill_Id { get; set; }
+
+ [StringLength(50)]
+ public string BillCode { get; set; }
+
+ [StringLength(50)]
+ public string TaskStatus { get; set; }
+
+ [StringLength(50)]
+ public string TranCode { get; set; }
+
+ [StringLength(50)]
+ public string TranStatus { get; set; }
+
+ [StringLength(50)]
+ public string RgvCode { get; set; }
+
+ [StringLength(50)]
+ public string RgvStatus { get; set; }
+
+ [StringLength(50)]
+ public string SrmCode { get; set; }
+
+ [StringLength(50)]
+ public string SrmStatus { get; set; }
+
+ public int? PlatUser_Id { get; set; }
+
+ public int? UserProduct_Id { get; set; }
+
+ public int? CreateID { get; set; }
+
+ [StringLength(50)]
+ public string Creator { get; set; }
+
+ public DateTime? CreateDate { get; set; }
+
+ public int? ModifyID { get; set; }
+
+ [StringLength(50)]
+ public string Modifier { get; set; }
+
+ public DateTime? ModifyDate { get; set; }
+
+ public string Remark { get; set; }
+
+ public int? Enable { get; set; }
+
+ public int? DoCount { get; set; }
+
+ public int? IsDoing { get; set; }
+
+ public int? RelationTask_Id { get; set; }
+
+ public string ExpandFields { get; set; }
+
+ [StringLength(50)]
+ public string FromPositionName { get; set; }
+
+ [StringLength(50)]
+ public string ToPositionName { get; set; }
+
+ public int? Storage_Id { get; set; }
+
+ [StringLength(50)]
+ public string StorageName { get; set; }
+
+ [StringLength(50)]
+ public string PlateType { get; set; }
+
+ [StringLength(50)]
+ public string PlateCode { get; set; }
+
+ [StringLength(50)]
+ public string Direction { get; set; }
+
+ public int? OrderNumber { get; set; }
+
+ public long? ProductPosition_Id { get; set; }
+ }
+}
diff --git "a/qqjf-Background/WMSPatch/EF/v3D\345\261\225\347\244\272\346\225\260\346\215\256.cs" "b/qqjf-Background/WMSPatch/EF/v3D\345\261\225\347\244\272\346\225\260\346\215\256.cs"
new file mode 100644
index 0000000..91bc802
--- /dev/null
+++ "b/qqjf-Background/WMSPatch/EF/v3D\345\261\225\347\244\272\346\225\260\346\215\256.cs"
@@ -0,0 +1,28 @@
+namespace WMSPatch.EF
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class v3D灞曠ず鏁版嵁
+ {
+ [Key]
+ [StringLength(50)]
+ public string 璐т綅缂栧彿 { get; set; }
+
+ [StringLength(50)]
+ public string 闆朵欢缂栧彿 { get; set; }
+
+ [StringLength(500)]
+ public string 闆朵欢鍚嶇О { get; set; }
+
+ public decimal? 鏁伴噺 { get; set; }
+
+ public DateTime? 鍏ュ簱鏃堕棿 { get; set; }
+
+ [StringLength(50)]
+ public string 鍣ㄥ叿缂栧彿 { get; set; }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/Form1.Designer.cs b/qqjf-Background/WMSPatch/Form1.Designer.cs
new file mode 100644
index 0000000..df55f14
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Form1.Designer.cs
@@ -0,0 +1,62 @@
+锘縩amespace WMSPatch
+{
+ partial class Form1
+ {
+ /// <summary>
+ /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆�
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// 娓呯悊鎵�鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆�
+ /// </summary>
+ /// <param name="disposing">濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓� true锛涘惁鍒欎负 false銆�</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 绐椾綋璁捐鍣ㄧ敓鎴愮殑浠g爜
+
+ /// <summary>
+ /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈
+ /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.label1 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(50, 37);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(71, 12);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "WMS寮ヨˉ绋嬪簭";
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(157, 72);
+ this.Controls.Add(this.label1);
+ this.Name = "Form1";
+ this.Text = "Form1";
+ this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ }
+}
+
diff --git a/qqjf-Background/WMSPatch/Form1.cs b/qqjf-Background/WMSPatch/Form1.cs
new file mode 100644
index 0000000..0b783bb
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Form1.cs
@@ -0,0 +1,322 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using WMSPatch.EF;
+
+namespace WMSPatch
+{
+ public partial class Form1 : Form
+ {
+ Thread sendWmsTaskThread;
+ Thread finishWmsTaskThread;
+
+ public Form1()
+ {
+ InitializeComponent();
+
+ sendWmsTaskThread = new Thread(sendWmsTask);
+ sendWmsTaskThread.Start();
+ finishWmsTaskThread = new Thread(finishWmsTask);
+ finishWmsTaskThread.Start();
+ }
+
+ private void Form1_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ sendWmsTaskThread.Abort();
+ finishWmsTaskThread.Abort();
+ }
+
+ /// <summary>
+ /// 涓嬪彂浠诲姟绾跨▼
+ /// </summary>
+ public void sendWmsTask()
+ {
+ while (true)
+ {
+ using (Model edm = new Model())
+ {
+ List<string> statusList=new List<string>();
+ statusList.Add("浠诲姟鍒涘缓鎴愬姛");
+ statusList.Add("浠诲姟涓嬪彂澶辫触");
+ statusList.Add("鍒嗛厤璐т綅澶辫触");
+ statusList.Add("鐩爣璐т綅鏈垎閰�");
+ statusList.Add("绛夊緟绉诲簱浠诲姟瀹屾垚");
+ statusList.Add("鏈垎閰嶅埌搴撳瓨");
+ statusList.Add("婧愯揣浣嶉噸澶嶅垎閰�");
+ statusList.Add("璁惧鏁呴殰宸插鐞�");
+ statusList.Add("鐩爣璐т綅閲嶅鍒嗛厤");
+
+ List<Task_Queue> taskList = edm.Task_Queue.Where(x => statusList.Contains(x.TaskStatus) && x.FromPositionName.Contains("-") && x.DoCount < 2000).ToList();
+ for (int i = 1; i < 10; i++)
+ {
+ //浼樺厛绉诲簱
+ Task_Queue task = taskList.OrderBy(x => x.OrderNumber).ThenBy(x => x.Task_Id).FirstOrDefault(x => statusList.Contains(x.TaskStatus) && x.FromPositionName.Contains("-") && x.ToPositionName.Contains("-") && x.FromPositionName.Substring(0, 1) == i.ToString());
+ Task_Queue sendTask = new Task_Queue();
+
+ if (task != null)
+ {
+ //瀛樺湪绉诲簱
+ sendTask=task;
+ }
+ else
+ {
+ task = taskList.OrderBy(x => x.OrderNumber).ThenBy(x => x.Task_Id).FirstOrDefault(x => statusList.Contains(x.TaskStatus) && x.FromPositionName.Contains("-") && !x.ToPositionName.Contains("-") && x.FromPositionName.Substring(0, 1) == i.ToString());
+ if (task != null)
+ {
+ //瀛樺湪鍑哄簱
+ //鍒ゆ柇绉诲簱
+ int row = int.Parse(task.FromPositionName.Substring(3, 1));
+ if (row == 4)
+ {
+ row = 3;
+ }
+ if (row == 1)
+ {
+ row = 2;
+ }
+ string sidePosistionName = task.FromPositionName.Remove(3, 1);
+ sidePosistionName = sidePosistionName.Insert(3, row.ToString());
+ Base_ProductPosition pp = edm.Base_ProductPosition.FirstOrDefault(x => x.ProductStorage > 0 && x.PositionName == sidePosistionName);
+ if (pp != null)
+ {
+ string layer = pp.PositionName.Substring(8,2);
+ Base_Position bpEmpty = edm.Base_Position.FirstOrDefault(x => x.IsFull == "N" && x.AreaCode == pp.AreaCode && x.RowCode == layer);
+ //闇�瑕佺Щ搴�
+ Task_Queue newTask = new Task_Queue();
+ newTask.TaskType = "绉诲簱鍗�";
+ newTask.Bill_Id = task.Bill_Id;
+ newTask.BillCode = task.BillCode;
+ newTask.TaskStatus = "浠诲姟鍒涘缓鎴愬姛";
+ newTask.PlatUser_Id = task.PlatUser_Id;
+ newTask.UserProduct_Id = task.UserProduct_Id;
+ newTask.CreateID = task.CreateID;
+ newTask.Creator = task.Creator;
+ newTask.CreateDate = DateTime.Now;
+ newTask.ModifyDate = DateTime.Now;
+ newTask.Enable = 1;
+ newTask.DoCount = 0;
+ newTask.IsDoing = 0;
+ newTask.RelationTask_Id = task.Task_Id;
+ newTask.FromPositionName = pp.PositionName;
+ newTask.ToPositionName = bpEmpty.PositionName;
+ newTask.PlateType = task.PlateType;
+ newTask.PlateCode = task.PlateCode;
+ newTask.OrderNumber = task.OrderNumber;
+ newTask.ProductPosition_Id = pp.ProductPosition_Id;
+ edm.Task_Queue.Add(newTask);
+ edm.SaveChanges();
+ continue;
+ }
+ else
+ {
+ //鍙互鍑哄簱
+ //鍑哄簱閲嶅垎閰�
+ if (task.FromPositionName.Contains("-"))
+ {
+ Base_Position bp = edm.Base_Position.FirstOrDefault(x => x.PositionName == task.FromPositionName);
+ if (bp.IsFull != "Y")
+ {
+ //璧峰浣嶆棤璐�(鍗犵敤),鍙﹂��
+ v3D灞曠ず鏁版嵁 bpNow = edm.v3D灞曠ず鏁版嵁.FirstOrDefault(x => x.鍣ㄥ叿缂栧彿 == task.PlateCode);
+ Base_Position bpFrom = edm.Base_Position.FirstOrDefault(x => x.IsFull == "Y" && x.PositionName==bpNow.璐т綅缂栧彿);
+ if (bpFrom != null)
+ {
+ task.ToPositionName = bpFrom.PositionName;
+ edm.SaveChanges();
+ }
+ continue;
+ }
+ }
+ sendTask = task;
+ }
+ }
+ else
+ {
+ task = taskList.OrderBy(x => x.OrderNumber).ThenBy(x => x.Task_Id).FirstOrDefault(x => statusList.Contains(x.TaskStatus) && !x.FromPositionName.Contains("-") && x.ToPositionName.Contains("-") && x.FromPositionName.Substring(0, 1) == i.ToString());
+ if (task != null)
+ {
+ //鍏ュ簱閲嶅畾鍚�
+ if (task.ToPositionName.Contains("-"))
+ {
+ Base_Position bp = edm.Base_Position.FirstOrDefault(x => x.PositionName == task.ToPositionName);
+ if (!string.IsNullOrEmpty(bp.IsFull) && bp.IsFull != "N")
+ {
+ //鐩爣浣嶆湁璐�(鍗犵敤)锛屽彟閫変竴涓�
+ Base_Position bpEmpty = edm.Base_Position.FirstOrDefault(x => x.IsFull == "N" && x.AreaCode == bp.AreaCode && x.PlateType == bp.PlateType);
+ task.ToPositionName = bpEmpty.PositionName;
+ edm.SaveChanges();
+ continue;
+ }
+ }
+ //瀛樺湪鍏ュ簱
+ sendTask = task;
+ }
+ }
+ }
+ if (sendTask != null)
+ {
+ //涓嬪彂浠诲姟
+ string sourcePlace = sendTask.FromPositionName;
+ string toPlace = sendTask.ToPositionName;
+ string palletTypeString = edm.Base_PlateType.FirstOrDefault(x => x.PlateType == sendTask.PlateType).PalletType;
+ int palletType = int.Parse(palletTypeString);
+ int taskType = 0;
+ int outType = 0;
+ if (sendTask.TaskType=="绉诲簱鍗�")
+ {
+ taskType = 3;
+ }
+ else if (sendTask.ToPositionName.Contains("-"))
+ {
+ taskType = 1;
+ }
+ else
+ {
+ taskType = 2;
+ }
+
+ if (sendTask.TaskType == "鍑哄簱鍗�")
+ {
+ Sale_Order orderInfo = edm.Sale_Order.FirstOrDefault(x => x.Order_Id == sendTask.Bill_Id);
+ if (!string.IsNullOrEmpty(orderInfo.OutTransId))
+ {
+ if (orderInfo.DestinationName.Contains("鍒嗘嫞鍖�"))
+ {
+ toPlace = "34"; // 5鍙峰彛
+ }
+ else if (orderInfo.OrderType == "鐒婅鍑哄簱")
+ {
+ toPlace = "999";
+ }
+ else if (orderInfo.OrderType == "璋冧欢鍑哄簱")
+ {
+ toPlace = "997";
+ }
+ }
+ else
+ {
+ toPlace = orderInfo.OutTransId;
+ }
+ }
+ //鍙戦��
+ SrmServer.SrmServiceClient srv = new SrmServer.SrmServiceClient();
+ SrmServer.SendTaskClass result = srv.SendTask(palletType,sourcePlace,toPlace,sendTask.Task_Id,taskType,outType);
+ if (result.result)
+ {
+ //涓嬪彂鎴愬姛
+ Task_Queue taskSunccess = edm.Task_Queue.FirstOrDefault(x => x.Task_Id == sendTask.Task_Id);
+ taskSunccess.TaskStatus = "浠诲姟涓嬪彂鎴愬姛";
+ if (taskType == 2)
+ {
+ int toTranId = result.outTransId;
+ if (taskSunccess.Bill_Id != 0 && result.statusId != 90)
+ {
+ Sale_Order so = edm.Sale_Order.FirstOrDefault(x => x.Order_Id == taskSunccess.Bill_Id);
+ so.OutTransId = toTranId.ToString();
+ taskSunccess.ToPositionName = toTranId.ToString();
+ }
+ }
+ Base_Position fromBp = edm.Base_Position.FirstOrDefault(x => x.PositionName == taskSunccess.FromPositionName);
+ Base_Position toBp = edm.Base_Position.FirstOrDefault(x => x.PositionName == taskSunccess.ToPositionName);
+ if (fromBp!=null)
+ {
+ fromBp.IsFull = "TEMPOUT";
+ }
+ if (toBp != null)
+ {
+ toBp.IsFull = "TEMPIN";
+ }
+ edm.SaveChanges();
+ }
+ else
+ {
+ //涓嬪彂澶辫触
+ Task_Queue taskFail = edm.Task_Queue.FirstOrDefault(x => x.Task_Id == sendTask.Task_Id);
+ if (result.statusId == 0)
+ {
+ taskFail.TaskStatus = "浠诲姟瀹屾垚涓�";
+ }
+ else if (result.statusId == 1)
+ {
+ taskFail.TaskStatus = "浠诲姟涓嬪彂澶辫触";
+ }
+ else if (result.statusId == 2)
+ {
+ taskFail.TaskStatus = "杈撻�佺嚎鏁呴殰涓�";
+ }
+ else if (result.statusId == 3)
+ {
+ taskFail.TaskStatus = "RGV鏁呴殰";
+ }
+ else if (result.statusId == 4)
+ {
+ taskFail.TaskStatus = "鐮佸灈鏈烘晠闅�";
+ }
+ else
+ {
+ taskFail.TaskStatus = "浠诲姟涓嬪彂澶辫触";
+ }
+
+ edm.SaveChanges();
+ }
+ Thread.Sleep(1000);
+ }
+ }
+ }
+ Thread.Sleep(1000);
+ }
+ }
+
+ /// <summary>
+ /// 瀹屾垚浠诲姟绾跨▼
+ /// </summary>
+ public void finishWmsTask()
+ {
+ while (true)
+ {
+ Thread.Sleep(1000);
+ using (Model edm = new Model())
+ {
+ List<string> statusList=new List<string>();
+ statusList.Add("浠诲姟涓嬪彂鎴愬姛");
+ statusList.Add("浠诲姟瀹屾垚澶辫触");
+ statusList.Add("浠诲姟瀹屾垚涓�");
+ List<Task_Queue> taskList = edm.Task_Queue.Where(x => statusList.Contains(x.TaskStatus)).ToList();
+ foreach (var i in taskList)
+ {
+ SrmServer.SrmServiceClient srv = new SrmServer.SrmServiceClient();
+ SrmServer.TaskFinishClass result = srv.TaskFinish(i.Task_Id);
+ ////寮傚父
+ //if (result.isError == 1)
+ //{
+
+ //}
+ if (result.result == true)
+ {
+ //浠诲姟瀹屾垚
+ Base_Position fromPlace = edm.Base_Position.FirstOrDefault(x => x.PositionName == i.FromPositionName);
+ Base_Position toPlace = edm.Base_Position.FirstOrDefault(x => x.PositionName == i.ToPositionName);
+ if (fromPlace != null)
+ {
+ fromPlace.IsFull = "N";
+ }
+ if (toPlace != null)
+ {
+ toPlace.IsFull = "Y";
+ }
+ }
+ }
+ edm.SaveChanges();
+
+ }
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/Form1.resx b/qqjf-Background/WMSPatch/Form1.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Form1.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Program.cs b/qqjf-Background/WMSPatch/Program.cs
new file mode 100644
index 0000000..9f45aa7
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Program.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace WMSPatch
+{
+ static class Program
+ {
+ /// <summary>
+ /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
+ /// </summary>
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/Properties/AssemblyInfo.cs b/qqjf-Background/WMSPatch/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..ab01bd8
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅閫氳繃浠ヤ笅
+// 鐗规�ч泦鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("WMSPatch")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WMSPatch")]
+[assembly: AssemblyCopyright("Copyright 漏 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浣挎绋嬪簭闆嗕腑鐨勭被鍨�
+// 瀵� COM 缁勪欢涓嶅彲瑙併�� 濡傛灉闇�瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷锛�
+// 鍒欏皢璇ョ被鍨嬩笂鐨� ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("0904f94d-41b5-41c0-9473-c30039f43926")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅闈㈠洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/WMSPatch/Properties/Resources.Designer.cs b/qqjf-Background/WMSPatch/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..40e8c28
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�: 4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢涓㈠け銆�
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WMSPatch.Properties
+{
+
+
+ /// <summary>
+ /// 涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勩�佺紦瀛樼殑 ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WMSPatch.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// 涓烘墍鏈夎祫婧愭煡鎵鹃噸鍐欏綋鍓嶇嚎绋嬬殑 CurrentUICulture 灞炴�э紝
+ /// 鏂规硶鏄娇鐢ㄦ寮虹被鍨嬭祫婧愮被銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/Properties/Resources.resx b/qqjf-Background/WMSPatch/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Properties/Resources.resx
@@ -0,0 +1,117 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Properties/Settings.Designer.cs b/qqjf-Background/WMSPatch/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..8878faf
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WMSPatch.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/Properties/Settings.settings b/qqjf-Background/WMSPatch/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile>
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/Reference.cs b/qqjf-Background/WMSPatch/Service References/SrmServer/Reference.cs
new file mode 100644
index 0000000..da0f85b
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/Reference.cs
@@ -0,0 +1,509 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WMSPatch.SrmServer {
+ using System.Runtime.Serialization;
+ using System;
+
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+ [System.Runtime.Serialization.DataContractAttribute(Name="TaskFinishClass", Namespace="http://tempuri.org/")]
+ [System.SerializableAttribute()]
+ public partial class TaskFinishClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+ [System.NonSerializedAttribute()]
+ private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+ private bool resultField;
+
+ private int statusIdField;
+
+ [System.Runtime.Serialization.OptionalFieldAttribute()]
+ private string messageField;
+
+ private int isErrorField;
+
+ [global::System.ComponentModel.BrowsableAttribute(false)]
+ public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+ get {
+ return this.extensionDataField;
+ }
+ set {
+ this.extensionDataField = value;
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
+ public bool result {
+ get {
+ return this.resultField;
+ }
+ set {
+ if ((this.resultField.Equals(value) != true)) {
+ this.resultField = value;
+ this.RaisePropertyChanged("result");
+ }
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
+ public int statusId {
+ get {
+ return this.statusIdField;
+ }
+ set {
+ if ((this.statusIdField.Equals(value) != true)) {
+ this.statusIdField = value;
+ this.RaisePropertyChanged("statusId");
+ }
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=2)]
+ public string message {
+ get {
+ return this.messageField;
+ }
+ set {
+ if ((object.ReferenceEquals(this.messageField, value) != true)) {
+ this.messageField = value;
+ this.RaisePropertyChanged("message");
+ }
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=3)]
+ public int isError {
+ get {
+ return this.isErrorField;
+ }
+ set {
+ if ((this.isErrorField.Equals(value) != true)) {
+ this.isErrorField = value;
+ this.RaisePropertyChanged("isError");
+ }
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+ [System.Runtime.Serialization.DataContractAttribute(Name="SendTaskClass", Namespace="http://tempuri.org/")]
+ [System.SerializableAttribute()]
+ public partial class SendTaskClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+ [System.NonSerializedAttribute()]
+ private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+ private bool resultField;
+
+ private int statusIdField;
+
+ private int deviceIdField;
+
+ private int outTransIdField;
+
+ private int outTypeField;
+
+ [global::System.ComponentModel.BrowsableAttribute(false)]
+ public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+ get {
+ return this.extensionDataField;
+ }
+ set {
+ this.extensionDataField = value;
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
+ public bool result {
+ get {
+ return this.resultField;
+ }
+ set {
+ if ((this.resultField.Equals(value) != true)) {
+ this.resultField = value;
+ this.RaisePropertyChanged("result");
+ }
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
+ public int statusId {
+ get {
+ return this.statusIdField;
+ }
+ set {
+ if ((this.statusIdField.Equals(value) != true)) {
+ this.statusIdField = value;
+ this.RaisePropertyChanged("statusId");
+ }
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=2)]
+ public int deviceId {
+ get {
+ return this.deviceIdField;
+ }
+ set {
+ if ((this.deviceIdField.Equals(value) != true)) {
+ this.deviceIdField = value;
+ this.RaisePropertyChanged("deviceId");
+ }
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=3)]
+ public int outTransId {
+ get {
+ return this.outTransIdField;
+ }
+ set {
+ if ((this.outTransIdField.Equals(value) != true)) {
+ this.outTransIdField = value;
+ this.RaisePropertyChanged("outTransId");
+ }
+ }
+ }
+
+ [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=4)]
+ public int outType {
+ get {
+ return this.outTypeField;
+ }
+ set {
+ if ((this.outTypeField.Equals(value) != true)) {
+ this.outTypeField = value;
+ this.RaisePropertyChanged("outType");
+ }
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+ [System.Runtime.Serialization.CollectionDataContractAttribute(Name="ArrayOfInt", Namespace="http://tempuri.org/", ItemName="int")]
+ [System.SerializableAttribute()]
+ public class ArrayOfInt : System.Collections.Generic.List<int> {
+ }
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.ServiceContractAttribute(ConfigurationName="SrmServer.ISrmService")]
+ public interface ISrmService {
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrmInfo", ReplyAction="http://tempuri.org/ISrmService/GetSrmInfoResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ string GetSrmInfo(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrmInfo", ReplyAction="http://tempuri.org/ISrmService/GetSrmInfoResponse")]
+ System.Threading.Tasks.Task<string> GetSrmInfoAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDelete", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmDelete(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDelete", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteResponse")]
+ System.Threading.Tasks.Task<int> SendSrmDeleteAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirmResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmTaskFinishConfirm(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirmResponse")]
+ System.Threading.Tasks.Task<int> SendSrmTaskFinishConfirmAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmEStop", ReplyAction="http://tempuri.org/ISrmService/SendSrmEStopResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmEStop(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmEStop", ReplyAction="http://tempuri.org/ISrmService/SendSrmEStopResponse")]
+ System.Threading.Tasks.Task<int> SendSrmEStopAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmMove", ReplyAction="http://tempuri.org/ISrmService/SendSrmMoveResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmMove(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmMove", ReplyAction="http://tempuri.org/ISrmService/SendSrmMoveResponse")]
+ System.Threading.Tasks.Task<int> SendSrmMoveAsync(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTask", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmTask(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTask", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskResponse")]
+ System.Threading.Tasks.Task<int> SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SrmRlsAlert", ReplyAction="http://tempuri.org/ISrmService/SrmRlsAlertResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ void SrmRlsAlert(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SrmRlsAlert", ReplyAction="http://tempuri.org/ISrmService/SrmRlsAlertResponse")]
+ System.Threading.Tasks.Task SrmRlsAlertAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsTaskFinish", ReplyAction="http://tempuri.org/ISrmService/IsTaskFinishResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int IsTaskFinish(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsTaskFinish", ReplyAction="http://tempuri.org/ISrmService/IsTaskFinishResponse")]
+ System.Threading.Tasks.Task<int> IsTaskFinishAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsReady", ReplyAction="http://tempuri.org/ISrmService/IsReadyResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ bool IsReady(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsReady", ReplyAction="http://tempuri.org/ISrmService/IsReadyResponse")]
+ System.Threading.Tasks.Task<bool> IsReadyAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/FinishTask", ReplyAction="http://tempuri.org/ISrmService/FinishTaskResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int FinishTask(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/FinishTask", ReplyAction="http://tempuri.org/ISrmService/FinishTaskResponse")]
+ System.Threading.Tasks.Task<int> FinishTaskAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/TaskFinish", ReplyAction="http://tempuri.org/ISrmService/TaskFinishResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ WMSPatch.SrmServer.TaskFinishClass TaskFinish(int taskId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/TaskFinish", ReplyAction="http://tempuri.org/ISrmService/TaskFinishResponse")]
+ System.Threading.Tasks.Task<WMSPatch.SrmServer.TaskFinishClass> TaskFinishAsync(int taskId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendTask", ReplyAction="http://tempuri.org/ISrmService/SendTaskResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ WMSPatch.SrmServer.SendTaskClass SendTask(int palletType, string sourcePlace, string toPlace, int taskId, int taskType, int outType);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendTask", ReplyAction="http://tempuri.org/ISrmService/SendTaskResponse")]
+ System.Threading.Tasks.Task<WMSPatch.SrmServer.SendTaskClass> SendTaskAsync(int palletType, string sourcePlace, string toPlace, int taskId, int taskType, int outType);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDeleteAll", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteAllResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmDeleteAll(int srmID);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDeleteAll", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteAllResponse")]
+ System.Threading.Tasks.Task<int> SendSrmDeleteAllAsync(int srmID);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/DeleteMainTask", ReplyAction="http://tempuri.org/ISrmService/DeleteMainTaskResponse")]
+ WMSPatch.SrmServer.DeleteMainTaskResponse DeleteMainTask(WMSPatch.SrmServer.DeleteMainTaskRequest request);
+
+ // CODEGEN: 姝e湪鐢熸垚娑堟伅鍗忓畾锛屽簲涓鸿鎿嶄綔鍏锋湁澶氫釜杩斿洖鍊笺��
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/DeleteMainTask", ReplyAction="http://tempuri.org/ISrmService/DeleteMainTaskResponse")]
+ System.Threading.Tasks.Task<WMSPatch.SrmServer.DeleteMainTaskResponse> DeleteMainTaskAsync(WMSPatch.SrmServer.DeleteMainTaskRequest request);
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="DeleteMainTask", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
+ public partial class DeleteMainTaskRequest {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
+ public int id;
+
+ public DeleteMainTaskRequest() {
+ }
+
+ public DeleteMainTaskRequest(int id) {
+ this.id = id;
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="DeleteMainTaskResponse", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
+ public partial class DeleteMainTaskResponse {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
+ public WMSPatch.SrmServer.ArrayOfInt tranDoingId;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=1)]
+ public WMSPatch.SrmServer.ArrayOfInt rgvDoingId;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=2)]
+ public WMSPatch.SrmServer.ArrayOfInt srmDoingId;
+
+ public DeleteMainTaskResponse() {
+ }
+
+ public DeleteMainTaskResponse(WMSPatch.SrmServer.ArrayOfInt tranDoingId, WMSPatch.SrmServer.ArrayOfInt rgvDoingId, WMSPatch.SrmServer.ArrayOfInt srmDoingId) {
+ this.tranDoingId = tranDoingId;
+ this.rgvDoingId = rgvDoingId;
+ this.srmDoingId = srmDoingId;
+ }
+ }
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public interface ISrmServiceChannel : WMSPatch.SrmServer.ISrmService, System.ServiceModel.IClientChannel {
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public partial class SrmServiceClient : System.ServiceModel.ClientBase<WMSPatch.SrmServer.ISrmService>, WMSPatch.SrmServer.ISrmService {
+
+ public SrmServiceClient() {
+ }
+
+ public SrmServiceClient(string endpointConfigurationName) :
+ base(endpointConfigurationName) {
+ }
+
+ public SrmServiceClient(string endpointConfigurationName, string remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public SrmServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public SrmServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(binding, remoteAddress) {
+ }
+
+ public string GetSrmInfo(int srmId) {
+ return base.Channel.GetSrmInfo(srmId);
+ }
+
+ public System.Threading.Tasks.Task<string> GetSrmInfoAsync(int srmId) {
+ return base.Channel.GetSrmInfoAsync(srmId);
+ }
+
+ public int SendSrmDelete(int srmId) {
+ return base.Channel.SendSrmDelete(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmDeleteAsync(int srmId) {
+ return base.Channel.SendSrmDeleteAsync(srmId);
+ }
+
+ public int SendSrmTaskFinishConfirm(int srmId) {
+ return base.Channel.SendSrmTaskFinishConfirm(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmTaskFinishConfirmAsync(int srmId) {
+ return base.Channel.SendSrmTaskFinishConfirmAsync(srmId);
+ }
+
+ public int SendSrmEStop(int srmId) {
+ return base.Channel.SendSrmEStop(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmEStopAsync(int srmId) {
+ return base.Channel.SendSrmEStopAsync(srmId);
+ }
+
+ public int SendSrmMove(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather) {
+ return base.Channel.SendSrmMove(srmId, taskId, toPlace, command, palletType, taskFather);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmMoveAsync(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather) {
+ return base.Channel.SendSrmMoveAsync(srmId, taskId, toPlace, command, palletType, taskFather);
+ }
+
+ public int SendSrmTask(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather) {
+ return base.Channel.SendSrmTask(srmId, taskId, sourcePlace, toPlace, pallet, taskFather);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather) {
+ return base.Channel.SendSrmTaskAsync(srmId, taskId, sourcePlace, toPlace, pallet, taskFather);
+ }
+
+ public void SrmRlsAlert(int srmId) {
+ base.Channel.SrmRlsAlert(srmId);
+ }
+
+ public System.Threading.Tasks.Task SrmRlsAlertAsync(int srmId) {
+ return base.Channel.SrmRlsAlertAsync(srmId);
+ }
+
+ public int IsTaskFinish(int srmId) {
+ return base.Channel.IsTaskFinish(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> IsTaskFinishAsync(int srmId) {
+ return base.Channel.IsTaskFinishAsync(srmId);
+ }
+
+ public bool IsReady(int srmId) {
+ return base.Channel.IsReady(srmId);
+ }
+
+ public System.Threading.Tasks.Task<bool> IsReadyAsync(int srmId) {
+ return base.Channel.IsReadyAsync(srmId);
+ }
+
+ public int FinishTask(int srmId) {
+ return base.Channel.FinishTask(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> FinishTaskAsync(int srmId) {
+ return base.Channel.FinishTaskAsync(srmId);
+ }
+
+ public WMSPatch.SrmServer.TaskFinishClass TaskFinish(int taskId) {
+ return base.Channel.TaskFinish(taskId);
+ }
+
+ public System.Threading.Tasks.Task<WMSPatch.SrmServer.TaskFinishClass> TaskFinishAsync(int taskId) {
+ return base.Channel.TaskFinishAsync(taskId);
+ }
+
+ public WMSPatch.SrmServer.SendTaskClass SendTask(int palletType, string sourcePlace, string toPlace, int taskId, int taskType, int outType) {
+ return base.Channel.SendTask(palletType, sourcePlace, toPlace, taskId, taskType, outType);
+ }
+
+ public System.Threading.Tasks.Task<WMSPatch.SrmServer.SendTaskClass> SendTaskAsync(int palletType, string sourcePlace, string toPlace, int taskId, int taskType, int outType) {
+ return base.Channel.SendTaskAsync(palletType, sourcePlace, toPlace, taskId, taskType, outType);
+ }
+
+ public int SendSrmDeleteAll(int srmID) {
+ return base.Channel.SendSrmDeleteAll(srmID);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmDeleteAllAsync(int srmID) {
+ return base.Channel.SendSrmDeleteAllAsync(srmID);
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ WMSPatch.SrmServer.DeleteMainTaskResponse WMSPatch.SrmServer.ISrmService.DeleteMainTask(WMSPatch.SrmServer.DeleteMainTaskRequest request) {
+ return base.Channel.DeleteMainTask(request);
+ }
+
+ public WMSPatch.SrmServer.ArrayOfInt DeleteMainTask(int id, out WMSPatch.SrmServer.ArrayOfInt rgvDoingId, out WMSPatch.SrmServer.ArrayOfInt srmDoingId) {
+ WMSPatch.SrmServer.DeleteMainTaskRequest inValue = new WMSPatch.SrmServer.DeleteMainTaskRequest();
+ inValue.id = id;
+ WMSPatch.SrmServer.DeleteMainTaskResponse retVal = ((WMSPatch.SrmServer.ISrmService)(this)).DeleteMainTask(inValue);
+ rgvDoingId = retVal.rgvDoingId;
+ srmDoingId = retVal.srmDoingId;
+ return retVal.tranDoingId;
+ }
+
+ public System.Threading.Tasks.Task<WMSPatch.SrmServer.DeleteMainTaskResponse> DeleteMainTaskAsync(WMSPatch.SrmServer.DeleteMainTaskRequest request) {
+ return base.Channel.DeleteMainTaskAsync(request);
+ }
+ }
+}
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/Reference.svcmap b/qqjf-Background/WMSPatch/Service References/SrmServer/Reference.svcmap
new file mode 100644
index 0000000..27f415c
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/Reference.svcmap
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="adba417d-6041-44aa-a9c5-0f5c88532171" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
+ <ClientOptions>
+ <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
+ <GenerateTaskBasedAsynchronousMethod>true</GenerateTaskBasedAsynchronousMethod>
+ <EnableDataBinding>true</EnableDataBinding>
+ <ExcludedTypes />
+ <ImportXmlTypes>false</ImportXmlTypes>
+ <GenerateInternalTypes>false</GenerateInternalTypes>
+ <GenerateMessageContracts>false</GenerateMessageContracts>
+ <NamespaceMappings />
+ <CollectionMappings />
+ <GenerateSerializableTypes>true</GenerateSerializableTypes>
+ <Serializer>Auto</Serializer>
+ <UseSerializerForFaults>true</UseSerializerForFaults>
+ <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
+ <ReferencedAssemblies />
+ <ReferencedDataContractTypes />
+ <ServiceContractMappings />
+ </ClientOptions>
+ <MetadataSources>
+ <MetadataSource Address="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" Protocol="http" SourceId="1" />
+ </MetadataSources>
+ <Metadata>
+ <MetadataFile FileName="SrmService.wsdl" MetadataType="Wsdl" ID="0f83e4bd-bc1e-42e5-b8e2-8d83150dd60f" SourceId="1" SourceUrl="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?wsdl" />
+ <MetadataFile FileName="item.xsd" MetadataType="Schema" ID="4f56378b-8cfd-4e0f-a7a7-2849152d18aa" SourceId="1" SourceUrl="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?xsd=xsd0" />
+ <MetadataFile FileName="item.disco" MetadataType="Disco" ID="34846d9a-9bfd-40d9-8e57-87ae9c996cbc" SourceId="1" SourceUrl="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?disco" />
+ </Metadata>
+ <Extensions>
+ <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
+ <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
+ </Extensions>
+</ReferenceGroup>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/SrmService.wsdl b/qqjf-Background/WMSPatch/Service References/SrmServer/SrmService.wsdl
new file mode 100644
index 0000000..8fc7d3b
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/SrmService.wsdl
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SrmService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://tempuri.org/Imports">
+ <xsd:import namespace="http://www.w3.org/2001/XMLSchema" />
+ <xsd:import schemaLocation="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?xsd=xsd0" namespace="http://tempuri.org/" />
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="ISrmService_GetSrmInfo_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_GetSrmInfo_OutputMessage">
+ <wsdl:part name="GetSrmInfoResult" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDelete_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDelete_OutputMessage">
+ <wsdl:part name="SendSrmDeleteResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTaskFinishConfirm_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTaskFinishConfirm_OutputMessage">
+ <wsdl:part name="SendSrmTaskFinishConfirmResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmEStop_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmEStop_OutputMessage">
+ <wsdl:part name="SendSrmEStopResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmMove_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="toPlace" type="xsd:string" />
+ <wsdl:part name="command" type="xsd:int" />
+ <wsdl:part name="palletType" type="xsd:int" />
+ <wsdl:part name="taskFather" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmMove_OutputMessage">
+ <wsdl:part name="SendSrmMoveResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTask_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="sourcePlace" type="xsd:string" />
+ <wsdl:part name="toPlace" type="xsd:string" />
+ <wsdl:part name="pallet" type="xsd:int" />
+ <wsdl:part name="taskFather" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTask_OutputMessage">
+ <wsdl:part name="SendSrmTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SrmRlsAlert_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SrmRlsAlert_OutputMessage" />
+ <wsdl:message name="ISrmService_IsTaskFinish_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsTaskFinish_OutputMessage">
+ <wsdl:part name="IsTaskFinishResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsReady_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsReady_OutputMessage">
+ <wsdl:part name="IsReadyResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_FinishTask_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_FinishTask_OutputMessage">
+ <wsdl:part name="FinishTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_TaskFinish_InputMessage">
+ <wsdl:part name="taskId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_TaskFinish_OutputMessage">
+ <wsdl:part name="TaskFinishResult" type="tns:TaskFinishClass" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendTask_InputMessage">
+ <wsdl:part name="palletType" type="xsd:int" />
+ <wsdl:part name="sourcePlace" type="xsd:string" />
+ <wsdl:part name="toPlace" type="xsd:string" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="taskType" type="xsd:int" />
+ <wsdl:part name="outType" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendTask_OutputMessage">
+ <wsdl:part name="SendTaskResult" type="tns:SendTaskClass" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDeleteAll_InputMessage">
+ <wsdl:part name="srmID" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDeleteAll_OutputMessage">
+ <wsdl:part name="SendSrmDeleteAllResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTask_InputMessage">
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTask_OutputMessage">
+ <wsdl:part name="tranDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="rgvDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="srmDoingId" type="tns:ArrayOfInt" />
+ </wsdl:message>
+ <wsdl:portType name="ISrmService">
+ <wsdl:operation name="GetSrmInfo" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfo" message="tns:ISrmService_GetSrmInfo_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfoResponse" message="tns:ISrmService_GetSrmInfo_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDelete" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmDelete" message="tns:ISrmService_SendSrmDelete_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmDeleteResponse" message="tns:ISrmService_SendSrmDelete_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTaskFinishConfirm" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm" message="tns:ISrmService_SendSrmTaskFinishConfirm_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirmResponse" message="tns:ISrmService_SendSrmTaskFinishConfirm_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmEStop" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStop" message="tns:ISrmService_SendSrmEStop_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStopResponse" message="tns:ISrmService_SendSrmEStop_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmMove" parameterOrder="srmId taskId toPlace command palletType taskFather">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmMove" message="tns:ISrmService_SendSrmMove_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmMoveResponse" message="tns:ISrmService_SendSrmMove_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTask" parameterOrder="srmId taskId sourcePlace toPlace pallet taskFather">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTask" message="tns:ISrmService_SendSrmTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskResponse" message="tns:ISrmService_SendSrmTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SrmRlsAlert" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlert" message="tns:ISrmService_SrmRlsAlert_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlertResponse" message="tns:ISrmService_SrmRlsAlert_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinish" message="tns:ISrmService_IsTaskFinish_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinishResponse" message="tns:ISrmService_IsTaskFinish_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsReady" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsReady" message="tns:ISrmService_IsReady_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsReadyResponse" message="tns:ISrmService_IsReady_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/FinishTask" message="tns:ISrmService_FinishTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/FinishTaskResponse" message="tns:ISrmService_FinishTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="TaskFinish" parameterOrder="taskId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/TaskFinish" message="tns:ISrmService_TaskFinish_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/TaskFinishResponse" message="tns:ISrmService_TaskFinish_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendTask" parameterOrder="palletType sourcePlace toPlace taskId taskType outType">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendTask" message="tns:ISrmService_SendTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendTaskResponse" message="tns:ISrmService_SendTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDeleteAll" parameterOrder="srmID">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmDeleteAll" message="tns:ISrmService_SendSrmDeleteAll_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmDeleteAllResponse" message="tns:ISrmService_SendSrmDeleteAll_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTask" parameterOrder="id tranDoingId rgvDoingId srmDoingId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTask" message="tns:ISrmService_DeleteMainTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTaskResponse" message="tns:ISrmService_DeleteMainTask_OutputMessage" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="BasicHttpBinding_ISrmService" type="tns:ISrmService">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
+ <wsdl:operation name="GetSrmInfo">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/GetSrmInfo" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDelete">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmDelete" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTaskFinishConfirm">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmEStop">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmEStop" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmMove">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmMove" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SrmRlsAlert">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SrmRlsAlert" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsTaskFinish" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsReady">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsReady" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/FinishTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="TaskFinish">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/TaskFinish" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDeleteAll">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmDeleteAll" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/DeleteMainTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SrmService">
+ <wsdl:port name="BasicHttpBinding_ISrmService" binding="tns:BasicHttpBinding_ISrmService">
+ <soap:address location="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.ArrayOfInt.datasource b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.ArrayOfInt.datasource
new file mode 100644
index 0000000..377e87c
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.ArrayOfInt.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ArrayOfInt" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>WMSPatch.SrmServer.ArrayOfInt, Service References.SrmServer.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.DeleteMainTaskResponse.datasource b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.DeleteMainTaskResponse.datasource
new file mode 100644
index 0000000..155fb2b
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.DeleteMainTaskResponse.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="DeleteMainTaskResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>WMSPatch.SrmServer.DeleteMainTaskResponse, Service References.SrmServer.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.SendTaskClass.datasource b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.SendTaskClass.datasource
new file mode 100644
index 0000000..edfad04
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.SendTaskClass.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="SendTaskClass" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>WMSPatch.SrmServer.SendTaskClass, Service References.SrmServer.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.TaskFinishClass.datasource b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.TaskFinishClass.datasource
new file mode 100644
index 0000000..3dcb8c9
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/WMSPatch.SrmServer.TaskFinishClass.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="TaskFinishClass" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>WMSPatch.SrmServer.TaskFinishClass, Service References.SrmServer.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/configuration.svcinfo b/qqjf-Background/WMSPatch/Service References/SrmServer/configuration.svcinfo
new file mode 100644
index 0000000..b2e8d3f
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/configuration.svcinfo
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
+ <behaviors />
+ <bindings>
+ <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:<?xml version="1.0" encoding="utf-16"?><Data name="BasicHttpBinding_ISrmService" />" bindingType="basicHttpBinding" name="BasicHttpBinding_ISrmService" />
+ </bindings>
+ <endpoints>
+ <endpoint normalizedDigest="<?xml version="1.0" encoding="utf-16"?><Data address="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService" contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />" digest="<?xml version="1.0" encoding="utf-16"?><Data address="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService" contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />" contractName="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />
+ </endpoints>
+</configurationSnapshot>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/configuration91.svcinfo b/qqjf-Background/WMSPatch/Service References/SrmServer/configuration91.svcinfo
new file mode 100644
index 0000000..418d848
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/configuration91.svcinfo
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="nd5d6j/qN198L7erAK3KABKMGm8=">
+ <bindingConfigurations>
+ <bindingConfiguration bindingType="basicHttpBinding" name="BasicHttpBinding_ISrmService">
+ <properties>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
+ </property>
+ <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>StrongWildcard</serializedValue>
+ </property>
+ <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>65536</serializedValue>
+ </property>
+ <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.Text.UTF8Encoding</serializedValue>
+ </property>
+ <property path="/transferMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Buffered</serializedValue>
+ </property>
+ <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Text</serializedValue>
+ </property>
+ <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
+ </property>
+ <property path="/security/mode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
+ </property>
+ <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Never</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>TransportSelected</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>(闆嗗悎)</serializedValue>
+ </property>
+ <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
+ </property>
+ <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>UserName</serializedValue>
+ </property>
+ <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Default</serializedValue>
+ </property>
+ </properties>
+ </bindingConfiguration>
+ </bindingConfigurations>
+ <endpoints>
+ <endpoint name="BasicHttpBinding_ISrmService" contract="SrmServer.ISrmService" bindingType="basicHttpBinding" address="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" bindingConfiguration="BasicHttpBinding_ISrmService">
+ <properties>
+ <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/</serializedValue>
+ </property>
+ <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>basicHttpBinding</serializedValue>
+ </property>
+ <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
+ </property>
+ <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>SrmServer.ISrmService</serializedValue>
+ </property>
+ <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+ </property>
+ <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue><Header /></serializedValue>
+ </property>
+ <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+ </property>
+ <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+ </property>
+ <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+ </property>
+ <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>My</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>LocalMachine</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>False</serializedValue>
+ </property>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
+ </property>
+ <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ </properties>
+ </endpoint>
+ </endpoints>
+</SavedWcfConfigurationInformation>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/item.disco b/qqjf-Background/WMSPatch/Service References/SrmServer/item.disco
new file mode 100644
index 0000000..f14b1f6
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/item.disco
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
+ <contractRef ref="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?wsdl" docRef="http://10.103.11.236:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
+</discovery>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/Service References/SrmServer/item.xsd b/qqjf-Background/WMSPatch/Service References/SrmServer/item.xsd
new file mode 100644
index 0000000..43d6a56
--- /dev/null
+++ b/qqjf-Background/WMSPatch/Service References/SrmServer/item.xsd
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="TaskFinishClass">
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="result" type="xs:boolean" />
+ <xs:element minOccurs="1" maxOccurs="1" name="statusId" type="xs:int" />
+ <xs:element minOccurs="0" maxOccurs="1" name="message" type="xs:string" />
+ <xs:element minOccurs="1" maxOccurs="1" name="isError" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="SendTaskClass">
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="result" type="xs:boolean" />
+ <xs:element minOccurs="1" maxOccurs="1" name="statusId" type="xs:int" />
+ <xs:element minOccurs="1" maxOccurs="1" name="deviceId" type="xs:int" />
+ <xs:element minOccurs="1" maxOccurs="1" name="outTransId" type="xs:int" />
+ <xs:element minOccurs="1" maxOccurs="1" name="outType" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ArrayOfInt">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/WMSPatch.csproj b/qqjf-Background/WMSPatch/WMSPatch.csproj
new file mode 100644
index 0000000..8424363
--- /dev/null
+++ b/qqjf-Background/WMSPatch/WMSPatch.csproj
@@ -0,0 +1,154 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{E216B782-6ED7-4F25-960C-8ADDB8487307}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>WMSPatch</RootNamespace>
+ <AssemblyName>WMSPatch</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework">
+ <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer">
+ <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Security" />
+ <Reference Include="System.ServiceModel" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Deployment" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="EF\Base_EmptyEquipment.cs" />
+ <Compile Include="EF\Base_EmptyEquipmentList.cs" />
+ <Compile Include="EF\Base_Plate.cs" />
+ <Compile Include="EF\Base_PlateType.cs" />
+ <Compile Include="EF\Base_Position.cs" />
+ <Compile Include="EF\Base_ProductPlaceHolder.cs" />
+ <Compile Include="EF\Base_ProductPosition.cs" />
+ <Compile Include="EF\Model.cs" />
+ <Compile Include="EF\Purchase_Order.cs" />
+ <Compile Include="EF\Purchase_OrderList.cs" />
+ <Compile Include="EF\Sale_Order.cs" />
+ <Compile Include="EF\Task_Queue.cs" />
+ <Compile Include="EF\v3D灞曠ず鏁版嵁.cs" />
+ <Compile Include="Form1.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Form1.Designer.cs">
+ <DependentUpon>Form1.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Service References\SrmServer\Reference.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </Compile>
+ <EmbeddedResource Include="Form1.resx">
+ <DependentUpon>Form1.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <None Include="packages.config" />
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ <None Include="Service References\SrmServer\item.xsd">
+ <SubType>Designer</SubType>
+ </None>
+ <None Include="Service References\SrmServer\SrmService.wsdl" />
+ <None Include="Service References\SrmServer\WMSPatch.SrmServer.ArrayOfInt.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\SrmServer\WMSPatch.SrmServer.DeleteMainTaskResponse.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\SrmServer\WMSPatch.SrmServer.SendTaskClass.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\SrmServer\WMSPatch.SrmServer.TaskFinishClass.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <WCFMetadata Include="Service References\" />
+ </ItemGroup>
+ <ItemGroup>
+ <WCFMetadataStorage Include="Service References\SrmServer\" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Service References\SrmServer\item.disco" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Service References\SrmServer\configuration91.svcinfo" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Service References\SrmServer\configuration.svcinfo" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Service References\SrmServer\Reference.svcmap">
+ <Generator>WCF Proxy Generator</Generator>
+ <LastGenOutput>Reference.cs</LastGenOutput>
+ </None>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/WMSPatch/packages.config b/qqjf-Background/WMSPatch/packages.config
new file mode 100644
index 0000000..3ab774b
--- /dev/null
+++ b/qqjf-Background/WMSPatch/packages.config
@@ -0,0 +1,5 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
+ <package id="EntityFramework.zh-Hans" version="6.1.3" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/App_Start/BundleConfig.cs b/qqjf-Background/WebApi_QQJF/App_Start/BundleConfig.cs
new file mode 100644
index 0000000..4f8e9c8
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/App_Start/BundleConfig.cs
@@ -0,0 +1,28 @@
+锘縰sing System.Web;
+using System.Web.Optimization;
+
+namespace WebApi_QQJF
+{
+ public class BundleConfig
+ {
+ // 鏈夊叧缁戝畾鐨勮缁嗕俊鎭紝璇疯闂� http://go.microsoft.com/fwlink/?LinkId=301862
+ public static void RegisterBundles(BundleCollection bundles)
+ {
+ bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
+ "~/Scripts/jquery-{version}.js"));
+
+ // 浣跨敤瑕佺敤浜庡紑鍙戝拰瀛︿範鐨� Modernizr 鐨勫紑鍙戠増鏈�傜劧鍚庯紝褰撲綘鍋氬ソ
+ // 鐢熶骇鍑嗗鏃讹紝璇蜂娇鐢� http://modernizr.com 涓婄殑鐢熸垚宸ュ叿鏉ヤ粎閫夋嫨鎵�闇�鐨勬祴璇曘��
+ bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
+ "~/Scripts/modernizr-*"));
+
+ bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
+ "~/Scripts/bootstrap.js",
+ "~/Scripts/respond.js"));
+
+ bundles.Add(new StyleBundle("~/Content/css").Include(
+ "~/Content/bootstrap.css",
+ "~/Content/site.css"));
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/App_Start/FilterConfig.cs b/qqjf-Background/WebApi_QQJF/App_Start/FilterConfig.cs
new file mode 100644
index 0000000..958b2a5
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/App_Start/FilterConfig.cs
@@ -0,0 +1,13 @@
+锘縰sing System.Web;
+using System.Web.Mvc;
+
+namespace WebApi_QQJF
+{
+ public class FilterConfig
+ {
+ public static void RegisterGlobalFilters(GlobalFilterCollection filters)
+ {
+ filters.Add(new HandleErrorAttribute());
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/App_Start/RouteConfig.cs b/qqjf-Background/WebApi_QQJF/App_Start/RouteConfig.cs
new file mode 100644
index 0000000..48665e7
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/App_Start/RouteConfig.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+using System.Web.Routing;
+
+namespace WebApi_QQJF
+{
+ public class RouteConfig
+ {
+ public static void RegisterRoutes(RouteCollection routes)
+ {
+ routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
+
+ routes.MapRoute(
+ name: "Default",
+ url: "{controller}/{action}/{id}",
+ defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
+ );
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/App_Start/WebApiConfig.cs b/qqjf-Background/WebApi_QQJF/App_Start/WebApiConfig.cs
new file mode 100644
index 0000000..253bedc
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/App_Start/WebApiConfig.cs
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web.Http;
+using System.Web.Http.Cors;
+
+namespace WebApi_QQJF
+{
+ public static class WebApiConfig
+ {
+ public static void Register(HttpConfiguration config)
+ {
+ // Web API configuration and services
+ config.EnableCors(new EnableCorsAttribute("*", "*", "*")); ;//閰嶇疆璺ㄥ煙 [Editby shaocx,2023-05-21]
+
+ // Web API routes
+ config.MapHttpAttributeRoutes();
+
+ // config.Routes.MapHttpRoute(
+ // name: "testapi",
+ // routeTemplate: "api/{controller}/{action}/{id}",
+ // defaults: new { id = RouteParameter.Optional }
+ //);
+
+ config.Routes.MapHttpRoute(
+ name: "DefaultApi",
+ routeTemplate: "api/{controller}/{id}",
+ defaults: new { id = RouteParameter.Optional }
+ );
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/ApiDescriptionExtensions.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/ApiDescriptionExtensions.cs
new file mode 100644
index 0000000..9677505
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/ApiDescriptionExtensions.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Text;
+using System.Web;
+using System.Web.Http.Description;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ public static class ApiDescriptionExtensions
+ {
+ /// <summary>
+ /// Generates an URI-friendly ID for the <see cref="ApiDescription"/>. E.g. "Get-Values-id_name" instead of "GetValues/{id}?name={name}"
+ /// </summary>
+ /// <param name="description">The <see cref="ApiDescription"/>.</param>
+ /// <returns>The ID as a string.</returns>
+ public static string GetFriendlyId(this ApiDescription description)
+ {
+ string path = description.RelativePath;
+ string[] urlParts = path.Split('?');
+ string localPath = urlParts[0];
+ string queryKeyString = null;
+ if (urlParts.Length > 1)
+ {
+ string query = urlParts[1];
+ string[] queryKeys = HttpUtility.ParseQueryString(query).AllKeys;
+ queryKeyString = String.Join("_", queryKeys);
+ }
+
+ StringBuilder friendlyPath = new StringBuilder();
+ friendlyPath.AppendFormat("{0}-{1}",
+ description.HttpMethod.Method,
+ localPath.Replace("/", "-").Replace("{", String.Empty).Replace("}", String.Empty));
+ if (queryKeyString != null)
+ {
+ friendlyPath.AppendFormat("_{0}", queryKeyString);
+ }
+ return friendlyPath.ToString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/App_Start/HelpPageConfig.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/App_Start/HelpPageConfig.cs
new file mode 100644
index 0000000..e96332a
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/App_Start/HelpPageConfig.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Net.Http.Headers;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// Use this class to customize the Help Page.
+ /// For example you can set a custom <see cref="System.Web.Http.Description.IDocumentationProvider"/> to supply the documentation
+ /// or you can provide the samples for the requests/responses.
+ /// </summary>
+ public static class HelpPageConfig
+ {
+ public static void Register(HttpConfiguration config)
+ {
+ //// Uncomment the following to use the documentation from XML documentation file.
+ //config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
+
+ //// Uncomment the following to use "sample string" as the sample for all actions that have string as the body parameter or return type.
+ //// Also, the string arrays will be used for IEnumerable<string>. The sample objects will be serialized into different media type
+ //// formats by the available formatters.
+ //config.SetSampleObjects(new Dictionary<Type, object>
+ //{
+ // {typeof(string), "sample string"},
+ // {typeof(IEnumerable<string>), new string[]{"sample 1", "sample 2"}}
+ //});
+
+ //// Uncomment the following to use "[0]=foo&[1]=bar" directly as the sample for all actions that support form URL encoded format
+ //// and have IEnumerable<string> as the body parameter or return type.
+ //config.SetSampleForType("[0]=foo&[1]=bar", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(IEnumerable<string>));
+
+ //// Uncomment the following to use "1234" directly as the request sample for media type "text/plain" on the controller named "Values"
+ //// and action named "Put".
+ //config.SetSampleRequest("1234", new MediaTypeHeaderValue("text/plain"), "Values", "Put");
+
+ //// Uncomment the following to use the image on "../images/aspNetHome.png" directly as the response sample for media type "image/png"
+ //// on the controller named "Values" and action named "Get" with parameter "id".
+ //config.SetSampleResponse(new ImageSample("../images/aspNetHome.png"), new MediaTypeHeaderValue("image/png"), "Values", "Get", "id");
+
+ //// Uncomment the following to correct the sample request when the action expects an HttpRequestMessage with ObjectContent<string>.
+ //// The sample will be generated as if the controller named "Values" and action named "Get" were having string as the body parameter.
+ //config.SetActualRequestType(typeof(string), "Values", "Get");
+
+ //// Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>.
+ //// The sample will be generated as if the controller named "Values" and action named "Post" were returning a string.
+ //config.SetActualResponseType(typeof(string), "Values", "Post");
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Controllers/HelpController.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Controllers/HelpController.cs
new file mode 100644
index 0000000..8403900
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Controllers/HelpController.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Web.Http;
+using System.Web.Mvc;
+using WebApi_QQJF.Areas.HelpPage.Models;
+
+namespace WebApi_QQJF.Areas.HelpPage.Controllers
+{
+ /// <summary>
+ /// The controller that will handle requests for the help page.
+ /// </summary>
+ public class HelpController : Controller
+ {
+ public HelpController()
+ : this(GlobalConfiguration.Configuration)
+ {
+ }
+
+ public HelpController(HttpConfiguration config)
+ {
+ Configuration = config;
+ }
+
+ public HttpConfiguration Configuration { get; private set; }
+
+ public ActionResult Index()
+ {
+ ViewBag.DocumentationProvider = Configuration.Services.GetDocumentationProvider();
+ return View(Configuration.Services.GetApiExplorer().ApiDescriptions);
+ }
+
+ public ActionResult Api(string apiId)
+ {
+ if (!String.IsNullOrEmpty(apiId))
+ {
+ HelpPageApiModel apiModel = Configuration.GetHelpPageApiModel(apiId);
+ if (apiModel != null)
+ {
+ return View(apiModel);
+ }
+ }
+
+ return View("Error");
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPage.css b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPage.css
new file mode 100644
index 0000000..ee461e0
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPage.css
@@ -0,0 +1,89 @@
+pre.wrapped {
+ white-space: -moz-pre-wrap;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ white-space: pre-wrap;
+}
+
+.warning-message-container {
+ margin-top: 20px;
+ padding: 0 10px;
+ color: #525252;
+ background: #EFDCA9;
+ border: 1px solid #CCCCCC;
+}
+
+.help-page-table {
+ width: 100%;
+ border-collapse: collapse;
+ text-align: left;
+ margin: 0px 0px 20px 0px;
+ border-top: 2px solid #D4D4D4;
+}
+
+.help-page-table th {
+ text-align: left;
+ font-weight: bold;
+ border-bottom: 2px solid #D4D4D4;
+ padding: 8px 6px 8px 6px;
+}
+
+.help-page-table td {
+ border-bottom: 2px solid #D4D4D4;
+ padding: 15px 8px 15px 8px;
+ vertical-align: top;
+}
+
+.help-page-table pre, .help-page-table p {
+ margin: 0px;
+ padding: 0px;
+ font-family: inherit;
+ font-size: 100%;
+}
+
+.help-page-table tbody tr:hover td {
+ background-color: #F3F3F3;
+}
+
+a:hover {
+ background-color: transparent;
+}
+
+.sample-header {
+ border: 2px solid #D4D4D4;
+ background: #76B8DB;
+ color: #FFFFFF;
+ padding: 8px 15px;
+ border-bottom: none;
+ display: inline-block;
+ margin: 10px 0px 0px 0px;
+}
+
+.sample-content {
+ display: block;
+ border-width: 0;
+ padding: 15px 20px;
+ background: #FFFFFF;
+ border: 2px solid #D4D4D4;
+ margin: 0px 0px 10px 0px;
+}
+
+.api-name {
+ width: 40%;
+}
+
+.api-documentation {
+ width: 60%;
+}
+
+.parameter-name {
+ width: 20%;
+}
+
+.parameter-documentation {
+ width: 50%;
+}
+
+.parameter-source {
+ width: 30%;
+}
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageAreaRegistration.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageAreaRegistration.cs
new file mode 100644
index 0000000..e3e3e33
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageAreaRegistration.cs
@@ -0,0 +1,26 @@
+using System.Web.Http;
+using System.Web.Mvc;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ public class HelpPageAreaRegistration : AreaRegistration
+ {
+ public override string AreaName
+ {
+ get
+ {
+ return "HelpPage";
+ }
+ }
+
+ public override void RegisterArea(AreaRegistrationContext context)
+ {
+ context.MapRoute(
+ "HelpPage_Default",
+ "Help/{action}/{apiId}",
+ new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });
+
+ HelpPageConfig.Register(GlobalConfiguration.Configuration);
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageConfigurationExtensions.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageConfigurationExtensions.cs
new file mode 100644
index 0000000..eab19be
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/HelpPageConfigurationExtensions.cs
@@ -0,0 +1,247 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Diagnostics.CodeAnalysis;
+using System.Globalization;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Web.Http;
+using System.Web.Http.Description;
+using WebApi_QQJF.Areas.HelpPage.Models;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ public static class HelpPageConfigurationExtensions
+ {
+ private const string ApiModelPrefix = "MS_HelpPageApiModel_";
+
+ /// <summary>
+ /// Sets the documentation provider for help page.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="documentationProvider">The documentation provider.</param>
+ public static void SetDocumentationProvider(this HttpConfiguration config, IDocumentationProvider documentationProvider)
+ {
+ config.Services.Replace(typeof(IDocumentationProvider), documentationProvider);
+ }
+
+ /// <summary>
+ /// Sets the objects that will be used by the formatters to produce sample requests/responses.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="sampleObjects">The sample objects.</param>
+ public static void SetSampleObjects(this HttpConfiguration config, IDictionary<Type, object> sampleObjects)
+ {
+ config.GetHelpPageSampleGenerator().SampleObjects = sampleObjects;
+ }
+
+ /// <summary>
+ /// Sets the sample request directly for the specified media type and action.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="sample">The sample request.</param>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ public static void SetSampleRequest(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName)
+ {
+ config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Request, controllerName, actionName, new[] { "*" }), sample);
+ }
+
+ /// <summary>
+ /// Sets the sample request directly for the specified media type and action with parameters.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="sample">The sample request.</param>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ public static void SetSampleRequest(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName, params string[] parameterNames)
+ {
+ config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Request, controllerName, actionName, parameterNames), sample);
+ }
+
+ /// <summary>
+ /// Sets the sample request directly for the specified media type of the action.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="sample">The sample response.</param>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ public static void SetSampleResponse(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName)
+ {
+ config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Response, controllerName, actionName, new[] { "*" }), sample);
+ }
+
+ /// <summary>
+ /// Sets the sample response directly for the specified media type of the action with specific parameters.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="sample">The sample response.</param>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ public static void SetSampleResponse(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName, params string[] parameterNames)
+ {
+ config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Response, controllerName, actionName, parameterNames), sample);
+ }
+
+ /// <summary>
+ /// Sets the sample directly for all actions with the specified type and media type.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="sample">The sample.</param>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="type">The parameter type or return type of an action.</param>
+ public static void SetSampleForType(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, Type type)
+ {
+ config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, type), sample);
+ }
+
+ /// <summary>
+ /// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> passed to the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
+ /// The help page will use this information to produce more accurate request samples.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="type">The type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ public static void SetActualRequestType(this HttpConfiguration config, Type type, string controllerName, string actionName)
+ {
+ config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Request, controllerName, actionName, new[] { "*" }), type);
+ }
+
+ /// <summary>
+ /// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> passed to the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
+ /// The help page will use this information to produce more accurate request samples.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="type">The type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ public static void SetActualRequestType(this HttpConfiguration config, Type type, string controllerName, string actionName, params string[] parameterNames)
+ {
+ config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Request, controllerName, actionName, parameterNames), type);
+ }
+
+ /// <summary>
+ /// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> returned as part of the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
+ /// The help page will use this information to produce more accurate response samples.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="type">The type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ public static void SetActualResponseType(this HttpConfiguration config, Type type, string controllerName, string actionName)
+ {
+ config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Response, controllerName, actionName, new[] { "*" }), type);
+ }
+
+ /// <summary>
+ /// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> returned as part of the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
+ /// The help page will use this information to produce more accurate response samples.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="type">The type.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ public static void SetActualResponseType(this HttpConfiguration config, Type type, string controllerName, string actionName, params string[] parameterNames)
+ {
+ config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Response, controllerName, actionName, parameterNames), type);
+ }
+
+ /// <summary>
+ /// Gets the help page sample generator.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <returns>The help page sample generator.</returns>
+ public static HelpPageSampleGenerator GetHelpPageSampleGenerator(this HttpConfiguration config)
+ {
+ return (HelpPageSampleGenerator)config.Properties.GetOrAdd(
+ typeof(HelpPageSampleGenerator),
+ k => new HelpPageSampleGenerator());
+ }
+
+ /// <summary>
+ /// Sets the help page sample generator.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="sampleGenerator">The help page sample generator.</param>
+ public static void SetHelpPageSampleGenerator(this HttpConfiguration config, HelpPageSampleGenerator sampleGenerator)
+ {
+ config.Properties.AddOrUpdate(
+ typeof(HelpPageSampleGenerator),
+ k => sampleGenerator,
+ (k, o) => sampleGenerator);
+ }
+
+ /// <summary>
+ /// Gets the model that represents an API displayed on the help page. The model is initialized on the first call and cached for subsequent calls.
+ /// </summary>
+ /// <param name="config">The <see cref="HttpConfiguration"/>.</param>
+ /// <param name="apiDescriptionId">The <see cref="ApiDescription"/> ID.</param>
+ /// <returns>
+ /// An <see cref="HelpPageApiModel"/>
+ /// </returns>
+ public static HelpPageApiModel GetHelpPageApiModel(this HttpConfiguration config, string apiDescriptionId)
+ {
+ object model;
+ string modelId = ApiModelPrefix + apiDescriptionId;
+ if (!config.Properties.TryGetValue(modelId, out model))
+ {
+ Collection<ApiDescription> apiDescriptions = config.Services.GetApiExplorer().ApiDescriptions;
+ ApiDescription apiDescription = apiDescriptions.FirstOrDefault(api => String.Equals(api.GetFriendlyId(), apiDescriptionId, StringComparison.OrdinalIgnoreCase));
+ if (apiDescription != null)
+ {
+ HelpPageSampleGenerator sampleGenerator = config.GetHelpPageSampleGenerator();
+ model = GenerateApiModel(apiDescription, sampleGenerator);
+ config.Properties.TryAdd(modelId, model);
+ }
+ }
+
+ return (HelpPageApiModel)model;
+ }
+
+ [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "The exception is recorded as ErrorMessages.")]
+ private static HelpPageApiModel GenerateApiModel(ApiDescription apiDescription, HelpPageSampleGenerator sampleGenerator)
+ {
+ HelpPageApiModel apiModel = new HelpPageApiModel();
+ apiModel.ApiDescription = apiDescription;
+
+ try
+ {
+ foreach (var item in sampleGenerator.GetSampleRequests(apiDescription))
+ {
+ apiModel.SampleRequests.Add(item.Key, item.Value);
+ LogInvalidSampleAsError(apiModel, item.Value);
+ }
+
+ foreach (var item in sampleGenerator.GetSampleResponses(apiDescription))
+ {
+ apiModel.SampleResponses.Add(item.Key, item.Value);
+ LogInvalidSampleAsError(apiModel, item.Value);
+ }
+ }
+ catch (Exception e)
+ {
+ apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture, "An exception has occurred while generating the sample. Exception Message: {0}", e.Message));
+ }
+
+ return apiModel;
+ }
+
+ private static void LogInvalidSampleAsError(HelpPageApiModel apiModel, object sample)
+ {
+ InvalidSample invalidSample = sample as InvalidSample;
+ if (invalidSample != null)
+ {
+ apiModel.ErrorMessages.Add(invalidSample.ErrorMessage);
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Models/HelpPageApiModel.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Models/HelpPageApiModel.cs
new file mode 100644
index 0000000..78ed001
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Models/HelpPageApiModel.cs
@@ -0,0 +1,43 @@
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Net.Http.Headers;
+using System.Web.Http.Description;
+
+namespace WebApi_QQJF.Areas.HelpPage.Models
+{
+ /// <summary>
+ /// The model that represents an API displayed on the help page.
+ /// </summary>
+ public class HelpPageApiModel
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HelpPageApiModel"/> class.
+ /// </summary>
+ public HelpPageApiModel()
+ {
+ SampleRequests = new Dictionary<MediaTypeHeaderValue, object>();
+ SampleResponses = new Dictionary<MediaTypeHeaderValue, object>();
+ ErrorMessages = new Collection<string>();
+ }
+
+ /// <summary>
+ /// Gets or sets the <see cref="ApiDescription"/> that describes the API.
+ /// </summary>
+ public ApiDescription ApiDescription { get; set; }
+
+ /// <summary>
+ /// Gets the sample requests associated with the API.
+ /// </summary>
+ public IDictionary<MediaTypeHeaderValue, object> SampleRequests { get; private set; }
+
+ /// <summary>
+ /// Gets the sample responses associated with the API.
+ /// </summary>
+ public IDictionary<MediaTypeHeaderValue, object> SampleResponses { get; private set; }
+
+ /// <summary>
+ /// Gets the error messages associated with this model.
+ /// </summary>
+ public Collection<string> ErrorMessages { get; private set; }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleGenerator.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleGenerator.cs
new file mode 100644
index 0000000..eb93483
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleGenerator.cs
@@ -0,0 +1,372 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Formatting;
+using System.Net.Http.Headers;
+using System.Web.Http.Description;
+using System.Xml.Linq;
+using Newtonsoft.Json;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// This class will generate the samples for the help page.
+ /// </summary>
+ public class HelpPageSampleGenerator
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HelpPageSampleGenerator"/> class.
+ /// </summary>
+ public HelpPageSampleGenerator()
+ {
+ ActualHttpMessageTypes = new Dictionary<HelpPageSampleKey, Type>();
+ ActionSamples = new Dictionary<HelpPageSampleKey, object>();
+ SampleObjects = new Dictionary<Type, object>();
+ }
+
+ /// <summary>
+ /// Gets CLR types that are used as the content of <see cref="HttpRequestMessage"/> or <see cref="HttpResponseMessage"/>.
+ /// </summary>
+ public IDictionary<HelpPageSampleKey, Type> ActualHttpMessageTypes { get; internal set; }
+
+ /// <summary>
+ /// Gets the objects that are used directly as samples for certain actions.
+ /// </summary>
+ public IDictionary<HelpPageSampleKey, object> ActionSamples { get; internal set; }
+
+ /// <summary>
+ /// Gets the objects that are serialized as samples by the supported formatters.
+ /// </summary>
+ public IDictionary<Type, object> SampleObjects { get; internal set; }
+
+ /// <summary>
+ /// Gets the request body samples for a given <see cref="ApiDescription"/>.
+ /// </summary>
+ /// <param name="api">The <see cref="ApiDescription"/>.</param>
+ /// <returns>The samples keyed by media type.</returns>
+ public IDictionary<MediaTypeHeaderValue, object> GetSampleRequests(ApiDescription api)
+ {
+ return GetSample(api, SampleDirection.Request);
+ }
+
+ /// <summary>
+ /// Gets the response body samples for a given <see cref="ApiDescription"/>.
+ /// </summary>
+ /// <param name="api">The <see cref="ApiDescription"/>.</param>
+ /// <returns>The samples keyed by media type.</returns>
+ public IDictionary<MediaTypeHeaderValue, object> GetSampleResponses(ApiDescription api)
+ {
+ return GetSample(api, SampleDirection.Response);
+ }
+
+ /// <summary>
+ /// Gets the request or response body samples.
+ /// </summary>
+ /// <param name="api">The <see cref="ApiDescription"/>.</param>
+ /// <param name="sampleDirection">The value indicating whether the sample is for a request or for a response.</param>
+ /// <returns>The samples keyed by media type.</returns>
+ public virtual IDictionary<MediaTypeHeaderValue, object> GetSample(ApiDescription api, SampleDirection sampleDirection)
+ {
+ if (api == null)
+ {
+ throw new ArgumentNullException("api");
+ }
+ string controllerName = api.ActionDescriptor.ControllerDescriptor.ControllerName;
+ string actionName = api.ActionDescriptor.ActionName;
+ IEnumerable<string> parameterNames = api.ParameterDescriptions.Select(p => p.Name);
+ Collection<MediaTypeFormatter> formatters;
+ Type type = ResolveType(api, controllerName, actionName, parameterNames, sampleDirection, out formatters);
+ var samples = new Dictionary<MediaTypeHeaderValue, object>();
+
+ // Use the samples provided directly for actions
+ var actionSamples = GetAllActionSamples(controllerName, actionName, parameterNames, sampleDirection);
+ foreach (var actionSample in actionSamples)
+ {
+ samples.Add(actionSample.Key.MediaType, WrapSampleIfString(actionSample.Value));
+ }
+
+ // Do the sample generation based on formatters only if an action doesn't return an HttpResponseMessage.
+ // Here we cannot rely on formatters because we don't know what's in the HttpResponseMessage, it might not even use formatters.
+ if (type != null && !typeof(HttpResponseMessage).IsAssignableFrom(type))
+ {
+ object sampleObject = GetSampleObject(type);
+ foreach (var formatter in formatters)
+ {
+ foreach (MediaTypeHeaderValue mediaType in formatter.SupportedMediaTypes)
+ {
+ if (!samples.ContainsKey(mediaType))
+ {
+ object sample = GetActionSample(controllerName, actionName, parameterNames, type, formatter, mediaType, sampleDirection);
+
+ // If no sample found, try generate sample using formatter and sample object
+ if (sample == null && sampleObject != null)
+ {
+ sample = WriteSampleObjectUsingFormatter(formatter, sampleObject, type, mediaType);
+ }
+
+ samples.Add(mediaType, WrapSampleIfString(sample));
+ }
+ }
+ }
+ }
+
+ return samples;
+ }
+
+ /// <summary>
+ /// Search for samples that are provided directly through <see cref="ActionSamples"/>.
+ /// </summary>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ /// <param name="type">The CLR type.</param>
+ /// <param name="formatter">The formatter.</param>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="sampleDirection">The value indicating whether the sample is for a request or for a response.</param>
+ /// <returns>The sample that matches the parameters.</returns>
+ public virtual object GetActionSample(string controllerName, string actionName, IEnumerable<string> parameterNames, Type type, MediaTypeFormatter formatter, MediaTypeHeaderValue mediaType, SampleDirection sampleDirection)
+ {
+ object sample;
+
+ // First, try get sample provided for a specific mediaType, controllerName, actionName and parameterNames.
+ // If not found, try get the sample provided for a specific mediaType, controllerName and actionName regardless of the parameterNames
+ // If still not found, try get the sample provided for a specific type and mediaType
+ if (ActionSamples.TryGetValue(new HelpPageSampleKey(mediaType, sampleDirection, controllerName, actionName, parameterNames), out sample) ||
+ ActionSamples.TryGetValue(new HelpPageSampleKey(mediaType, sampleDirection, controllerName, actionName, new[] { "*" }), out sample) ||
+ ActionSamples.TryGetValue(new HelpPageSampleKey(mediaType, type), out sample))
+ {
+ return sample;
+ }
+
+ return null;
+ }
+
+ /// <summary>
+ /// Gets the sample object that will be serialized by the formatters.
+ /// First, it will look at the <see cref="SampleObjects"/>. If no sample object is found, it will try to create one using <see cref="ObjectGenerator"/>.
+ /// </summary>
+ /// <param name="type">The type.</param>
+ /// <returns>The sample object.</returns>
+ public virtual object GetSampleObject(Type type)
+ {
+ object sampleObject;
+
+ if (!SampleObjects.TryGetValue(type, out sampleObject))
+ {
+ // Try create a default sample object
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ sampleObject = objectGenerator.GenerateObject(type);
+ }
+
+ return sampleObject;
+ }
+
+ /// <summary>
+ /// Resolves the type of the action parameter or return value when <see cref="HttpRequestMessage"/> or <see cref="HttpResponseMessage"/> is used.
+ /// </summary>
+ /// <param name="api">The <see cref="ApiDescription"/>.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ /// <param name="sampleDirection">The value indicating whether the sample is for a request or a response.</param>
+ /// <param name="formatters">The formatters.</param>
+ [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", Justification = "This is only used in advanced scenarios.")]
+ public virtual Type ResolveType(ApiDescription api, string controllerName, string actionName, IEnumerable<string> parameterNames, SampleDirection sampleDirection, out Collection<MediaTypeFormatter> formatters)
+ {
+ if (!Enum.IsDefined(typeof(SampleDirection), sampleDirection))
+ {
+ throw new InvalidEnumArgumentException("sampleDirection", (int)sampleDirection, typeof(SampleDirection));
+ }
+ if (api == null)
+ {
+ throw new ArgumentNullException("api");
+ }
+ Type type;
+ if (ActualHttpMessageTypes.TryGetValue(new HelpPageSampleKey(sampleDirection, controllerName, actionName, parameterNames), out type) ||
+ ActualHttpMessageTypes.TryGetValue(new HelpPageSampleKey(sampleDirection, controllerName, actionName, new[] { "*" }), out type))
+ {
+ // Re-compute the supported formatters based on type
+ Collection<MediaTypeFormatter> newFormatters = new Collection<MediaTypeFormatter>();
+ foreach (var formatter in api.ActionDescriptor.Configuration.Formatters)
+ {
+ if (IsFormatSupported(sampleDirection, formatter, type))
+ {
+ newFormatters.Add(formatter);
+ }
+ }
+ formatters = newFormatters;
+ }
+ else
+ {
+ switch (sampleDirection)
+ {
+ case SampleDirection.Request:
+ ApiParameterDescription requestBodyParameter = api.ParameterDescriptions.FirstOrDefault(p => p.Source == ApiParameterSource.FromBody);
+ type = requestBodyParameter == null ? null : requestBodyParameter.ParameterDescriptor.ParameterType;
+ formatters = api.SupportedRequestBodyFormatters;
+ break;
+ case SampleDirection.Response:
+ default:
+ type = api.ResponseDescription.ResponseType ?? api.ResponseDescription.DeclaredType;
+ formatters = api.SupportedResponseFormatters;
+ break;
+ }
+ }
+
+ return type;
+ }
+
+ /// <summary>
+ /// Writes the sample object using formatter.
+ /// </summary>
+ /// <param name="formatter">The formatter.</param>
+ /// <param name="value">The value.</param>
+ /// <param name="type">The type.</param>
+ /// <param name="mediaType">Type of the media.</param>
+ /// <returns></returns>
+ [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "The exception is recorded as InvalidSample.")]
+ public virtual object WriteSampleObjectUsingFormatter(MediaTypeFormatter formatter, object value, Type type, MediaTypeHeaderValue mediaType)
+ {
+ if (formatter == null)
+ {
+ throw new ArgumentNullException("formatter");
+ }
+ if (mediaType == null)
+ {
+ throw new ArgumentNullException("mediaType");
+ }
+
+ object sample = String.Empty;
+ MemoryStream ms = null;
+ HttpContent content = null;
+ try
+ {
+ if (formatter.CanWriteType(type))
+ {
+ ms = new MemoryStream();
+ content = new ObjectContent(type, value, formatter, mediaType);
+ formatter.WriteToStreamAsync(type, value, ms, content, null).Wait();
+ ms.Position = 0;
+ StreamReader reader = new StreamReader(ms);
+ string serializedSampleString = reader.ReadToEnd();
+ if (mediaType.MediaType.ToUpperInvariant().Contains("XML"))
+ {
+ serializedSampleString = TryFormatXml(serializedSampleString);
+ }
+ else if (mediaType.MediaType.ToUpperInvariant().Contains("JSON"))
+ {
+ serializedSampleString = TryFormatJson(serializedSampleString);
+ }
+
+ sample = new TextSample(serializedSampleString);
+ }
+ else
+ {
+ sample = new InvalidSample(String.Format(
+ CultureInfo.CurrentCulture,
+ "Failed to generate the sample for media type '{0}'. Cannot use formatter '{1}' to write type '{2}'.",
+ mediaType,
+ formatter.GetType().Name,
+ type.Name));
+ }
+ }
+ catch (Exception e)
+ {
+ sample = new InvalidSample(String.Format(
+ CultureInfo.CurrentCulture,
+ "An exception has occurred while using the formatter '{0}' to generate sample for media type '{1}'. Exception message: {2}",
+ formatter.GetType().Name,
+ mediaType.MediaType,
+ e.Message));
+ }
+ finally
+ {
+ if (ms != null)
+ {
+ ms.Dispose();
+ }
+ if (content != null)
+ {
+ content.Dispose();
+ }
+ }
+
+ return sample;
+ }
+
+ [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Handling the failure by returning the original string.")]
+ private static string TryFormatJson(string str)
+ {
+ try
+ {
+ object parsedJson = JsonConvert.DeserializeObject(str);
+ return JsonConvert.SerializeObject(parsedJson, Formatting.Indented);
+ }
+ catch
+ {
+ // can't parse JSON, return the original string
+ return str;
+ }
+ }
+
+ [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Handling the failure by returning the original string.")]
+ private static string TryFormatXml(string str)
+ {
+ try
+ {
+ XDocument xml = XDocument.Parse(str);
+ return xml.ToString();
+ }
+ catch
+ {
+ // can't parse XML, return the original string
+ return str;
+ }
+ }
+
+ private static bool IsFormatSupported(SampleDirection sampleDirection, MediaTypeFormatter formatter, Type type)
+ {
+ switch (sampleDirection)
+ {
+ case SampleDirection.Request:
+ return formatter.CanReadType(type);
+ case SampleDirection.Response:
+ return formatter.CanWriteType(type);
+ }
+ return false;
+ }
+
+ private IEnumerable<KeyValuePair<HelpPageSampleKey, object>> GetAllActionSamples(string controllerName, string actionName, IEnumerable<string> parameterNames, SampleDirection sampleDirection)
+ {
+ HashSet<string> parameterNamesSet = new HashSet<string>(parameterNames, StringComparer.OrdinalIgnoreCase);
+ foreach (var sample in ActionSamples)
+ {
+ HelpPageSampleKey sampleKey = sample.Key;
+ if (String.Equals(controllerName, sampleKey.ControllerName, StringComparison.OrdinalIgnoreCase) &&
+ String.Equals(actionName, sampleKey.ActionName, StringComparison.OrdinalIgnoreCase) &&
+ (sampleKey.ParameterNames.SetEquals(new[] { "*" }) || parameterNamesSet.SetEquals(sampleKey.ParameterNames)) &&
+ sampleDirection == sampleKey.SampleDirection)
+ {
+ yield return sample;
+ }
+ }
+ }
+
+ private static object WrapSampleIfString(object sample)
+ {
+ string stringSample = sample as string;
+ if (stringSample != null)
+ {
+ return new TextSample(stringSample);
+ }
+
+ return sample;
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleKey.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleKey.cs
new file mode 100644
index 0000000..801b6a3
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/HelpPageSampleKey.cs
@@ -0,0 +1,178 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Net.Http.Headers;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// This is used to identify the place where the sample should be applied.
+ /// </summary>
+ public class HelpPageSampleKey
+ {
+ /// <summary>
+ /// Creates a new <see cref="HelpPageSampleKey"/> based on media type and CLR type.
+ /// </summary>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="type">The CLR type.</param>
+ public HelpPageSampleKey(MediaTypeHeaderValue mediaType, Type type)
+ {
+ if (mediaType == null)
+ {
+ throw new ArgumentNullException("mediaType");
+ }
+ if (type == null)
+ {
+ throw new ArgumentNullException("type");
+ }
+ ControllerName = String.Empty;
+ ActionName = String.Empty;
+ ParameterNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
+ ParameterType = type;
+ MediaType = mediaType;
+ }
+
+ /// <summary>
+ /// Creates a new <see cref="HelpPageSampleKey"/> based on <see cref="SampleDirection"/>, controller name, action name and parameter names.
+ /// </summary>
+ /// <param name="sampleDirection">The <see cref="SampleDirection"/>.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ public HelpPageSampleKey(SampleDirection sampleDirection, string controllerName, string actionName, IEnumerable<string> parameterNames)
+ {
+ if (!Enum.IsDefined(typeof(SampleDirection), sampleDirection))
+ {
+ throw new InvalidEnumArgumentException("sampleDirection", (int)sampleDirection, typeof(SampleDirection));
+ }
+ if (controllerName == null)
+ {
+ throw new ArgumentNullException("controllerName");
+ }
+ if (actionName == null)
+ {
+ throw new ArgumentNullException("actionName");
+ }
+ if (parameterNames == null)
+ {
+ throw new ArgumentNullException("parameterNames");
+ }
+ ControllerName = controllerName;
+ ActionName = actionName;
+ ParameterNames = new HashSet<string>(parameterNames, StringComparer.OrdinalIgnoreCase);
+ SampleDirection = sampleDirection;
+ }
+
+ /// <summary>
+ /// Creates a new <see cref="HelpPageSampleKey"/> based on media type, <see cref="SampleDirection"/>, controller name, action name and parameter names.
+ /// </summary>
+ /// <param name="mediaType">The media type.</param>
+ /// <param name="sampleDirection">The <see cref="SampleDirection"/>.</param>
+ /// <param name="controllerName">Name of the controller.</param>
+ /// <param name="actionName">Name of the action.</param>
+ /// <param name="parameterNames">The parameter names.</param>
+ public HelpPageSampleKey(MediaTypeHeaderValue mediaType, SampleDirection sampleDirection, string controllerName, string actionName, IEnumerable<string> parameterNames)
+ {
+ if (mediaType == null)
+ {
+ throw new ArgumentNullException("mediaType");
+ }
+ if (!Enum.IsDefined(typeof(SampleDirection), sampleDirection))
+ {
+ throw new InvalidEnumArgumentException("sampleDirection", (int)sampleDirection, typeof(SampleDirection));
+ }
+ if (controllerName == null)
+ {
+ throw new ArgumentNullException("controllerName");
+ }
+ if (actionName == null)
+ {
+ throw new ArgumentNullException("actionName");
+ }
+ if (parameterNames == null)
+ {
+ throw new ArgumentNullException("parameterNames");
+ }
+ ControllerName = controllerName;
+ ActionName = actionName;
+ MediaType = mediaType;
+ ParameterNames = new HashSet<string>(parameterNames, StringComparer.OrdinalIgnoreCase);
+ SampleDirection = sampleDirection;
+ }
+
+ /// <summary>
+ /// Gets the name of the controller.
+ /// </summary>
+ /// <value>
+ /// The name of the controller.
+ /// </value>
+ public string ControllerName { get; private set; }
+
+ /// <summary>
+ /// Gets the name of the action.
+ /// </summary>
+ /// <value>
+ /// The name of the action.
+ /// </value>
+ public string ActionName { get; private set; }
+
+ /// <summary>
+ /// Gets the media type.
+ /// </summary>
+ /// <value>
+ /// The media type.
+ /// </value>
+ public MediaTypeHeaderValue MediaType { get; private set; }
+
+ /// <summary>
+ /// Gets the parameter names.
+ /// </summary>
+ public HashSet<string> ParameterNames { get; private set; }
+
+ public Type ParameterType { get; private set; }
+
+ /// <summary>
+ /// Gets the <see cref="SampleDirection"/>.
+ /// </summary>
+ public SampleDirection? SampleDirection { get; private set; }
+
+ public override bool Equals(object obj)
+ {
+ HelpPageSampleKey otherKey = obj as HelpPageSampleKey;
+ if (otherKey == null)
+ {
+ return false;
+ }
+
+ return String.Equals(ControllerName, otherKey.ControllerName, StringComparison.OrdinalIgnoreCase) &&
+ String.Equals(ActionName, otherKey.ActionName, StringComparison.OrdinalIgnoreCase) &&
+ (MediaType == otherKey.MediaType || (MediaType != null && MediaType.Equals(otherKey.MediaType))) &&
+ ParameterType == otherKey.ParameterType &&
+ SampleDirection == otherKey.SampleDirection &&
+ ParameterNames.SetEquals(otherKey.ParameterNames);
+ }
+
+ public override int GetHashCode()
+ {
+ int hashCode = ControllerName.ToUpperInvariant().GetHashCode() ^ ActionName.ToUpperInvariant().GetHashCode();
+ if (MediaType != null)
+ {
+ hashCode ^= MediaType.GetHashCode();
+ }
+ if (SampleDirection != null)
+ {
+ hashCode ^= SampleDirection.GetHashCode();
+ }
+ if (ParameterType != null)
+ {
+ hashCode ^= ParameterType.GetHashCode();
+ }
+ foreach (string parameterName in ParameterNames)
+ {
+ hashCode ^= parameterName.ToUpperInvariant().GetHashCode();
+ }
+
+ return hashCode;
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ImageSample.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ImageSample.cs
new file mode 100644
index 0000000..8dc6734
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ImageSample.cs
@@ -0,0 +1,41 @@
+using System;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// This represents an image sample on the help page. There's a display template named ImageSample associated with this class.
+ /// </summary>
+ public class ImageSample
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ImageSample"/> class.
+ /// </summary>
+ /// <param name="src">The URL of an image.</param>
+ public ImageSample(string src)
+ {
+ if (src == null)
+ {
+ throw new ArgumentNullException("src");
+ }
+ Src = src;
+ }
+
+ public string Src { get; private set; }
+
+ public override bool Equals(object obj)
+ {
+ ImageSample other = obj as ImageSample;
+ return other != null && Src == other.Src;
+ }
+
+ public override int GetHashCode()
+ {
+ return Src.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return Src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/InvalidSample.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/InvalidSample.cs
new file mode 100644
index 0000000..d6a04c0
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/InvalidSample.cs
@@ -0,0 +1,37 @@
+using System;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// This represents an invalid sample on the help page. There's a display template named InvalidSample associated with this class.
+ /// </summary>
+ public class InvalidSample
+ {
+ public InvalidSample(string errorMessage)
+ {
+ if (errorMessage == null)
+ {
+ throw new ArgumentNullException("errorMessage");
+ }
+ ErrorMessage = errorMessage;
+ }
+
+ public string ErrorMessage { get; private set; }
+
+ public override bool Equals(object obj)
+ {
+ InvalidSample other = obj as InvalidSample;
+ return other != null && ErrorMessage == other.ErrorMessage;
+ }
+
+ public override int GetHashCode()
+ {
+ return ErrorMessage.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return ErrorMessage;
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ObjectGenerator.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ObjectGenerator.cs
new file mode 100644
index 0000000..b369488
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/ObjectGenerator.cs
@@ -0,0 +1,456 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// This class will create an object of a given type and populate it with sample data.
+ /// </summary>
+ public class ObjectGenerator
+ {
+ private const int DefaultCollectionSize = 3;
+ private readonly SimpleTypeObjectGenerator SimpleObjectGenerator = new SimpleTypeObjectGenerator();
+
+ /// <summary>
+ /// Generates an object for a given type. The type needs to be public, have a public default constructor and settable public properties/fields. Currently it supports the following types:
+ /// Simple types: <see cref="int"/>, <see cref="string"/>, <see cref="Enum"/>, <see cref="DateTime"/>, <see cref="Uri"/>, etc.
+ /// Complex types: POCO types.
+ /// Nullables: <see cref="Nullable{T}"/>.
+ /// Arrays: arrays of simple types or complex types.
+ /// Key value pairs: <see cref="KeyValuePair{TKey,TValue}"/>
+ /// Tuples: <see cref="Tuple{T1}"/>, <see cref="Tuple{T1,T2}"/>, etc
+ /// Dictionaries: <see cref="IDictionary{TKey,TValue}"/> or anything deriving from <see cref="IDictionary{TKey,TValue}"/>.
+ /// Collections: <see cref="IList{T}"/>, <see cref="IEnumerable{T}"/>, <see cref="ICollection{T}"/>, <see cref="IList"/>, <see cref="IEnumerable"/>, <see cref="ICollection"/> or anything deriving from <see cref="ICollection{T}"/> or <see cref="IList"/>.
+ /// Queryables: <see cref="IQueryable"/>, <see cref="IQueryable{T}"/>.
+ /// </summary>
+ /// <param name="type">The type.</param>
+ /// <returns>An object of the given type.</returns>
+ public object GenerateObject(Type type)
+ {
+ return GenerateObject(type, new Dictionary<Type, object>());
+ }
+
+ [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Here we just want to return null if anything goes wrong.")]
+ private object GenerateObject(Type type, Dictionary<Type, object> createdObjectReferences)
+ {
+ try
+ {
+ if (SimpleTypeObjectGenerator.CanGenerateObject(type))
+ {
+ return SimpleObjectGenerator.GenerateObject(type);
+ }
+
+ if (type.IsArray)
+ {
+ return GenerateArray(type, DefaultCollectionSize, createdObjectReferences);
+ }
+
+ if (type.IsGenericType)
+ {
+ return GenerateGenericType(type, DefaultCollectionSize, createdObjectReferences);
+ }
+
+ if (type == typeof(IDictionary))
+ {
+ return GenerateDictionary(typeof(Hashtable), DefaultCollectionSize, createdObjectReferences);
+ }
+
+ if (typeof(IDictionary).IsAssignableFrom(type))
+ {
+ return GenerateDictionary(type, DefaultCollectionSize, createdObjectReferences);
+ }
+
+ if (type == typeof(IList) ||
+ type == typeof(IEnumerable) ||
+ type == typeof(ICollection))
+ {
+ return GenerateCollection(typeof(ArrayList), DefaultCollectionSize, createdObjectReferences);
+ }
+
+ if (typeof(IList).IsAssignableFrom(type))
+ {
+ return GenerateCollection(type, DefaultCollectionSize, createdObjectReferences);
+ }
+
+ if (type == typeof(IQueryable))
+ {
+ return GenerateQueryable(type, DefaultCollectionSize, createdObjectReferences);
+ }
+
+ if (type.IsEnum)
+ {
+ return GenerateEnum(type);
+ }
+
+ if (type.IsPublic || type.IsNestedPublic)
+ {
+ return GenerateComplexObject(type, createdObjectReferences);
+ }
+ }
+ catch
+ {
+ // Returns null if anything fails
+ return null;
+ }
+
+ return null;
+ }
+
+ private static object GenerateGenericType(Type type, int collectionSize, Dictionary<Type, object> createdObjectReferences)
+ {
+ Type genericTypeDefinition = type.GetGenericTypeDefinition();
+ if (genericTypeDefinition == typeof(Nullable<>))
+ {
+ return GenerateNullable(type, createdObjectReferences);
+ }
+
+ if (genericTypeDefinition == typeof(KeyValuePair<,>))
+ {
+ return GenerateKeyValuePair(type, createdObjectReferences);
+ }
+
+ if (IsTuple(genericTypeDefinition))
+ {
+ return GenerateTuple(type, createdObjectReferences);
+ }
+
+ Type[] genericArguments = type.GetGenericArguments();
+ if (genericArguments.Length == 1)
+ {
+ if (genericTypeDefinition == typeof(IList<>) ||
+ genericTypeDefinition == typeof(IEnumerable<>) ||
+ genericTypeDefinition == typeof(ICollection<>))
+ {
+ Type collectionType = typeof(List<>).MakeGenericType(genericArguments);
+ return GenerateCollection(collectionType, collectionSize, createdObjectReferences);
+ }
+
+ if (genericTypeDefinition == typeof(IQueryable<>))
+ {
+ return GenerateQueryable(type, collectionSize, createdObjectReferences);
+ }
+
+ Type closedCollectionType = typeof(ICollection<>).MakeGenericType(genericArguments[0]);
+ if (closedCollectionType.IsAssignableFrom(type))
+ {
+ return GenerateCollection(type, collectionSize, createdObjectReferences);
+ }
+ }
+
+ if (genericArguments.Length == 2)
+ {
+ if (genericTypeDefinition == typeof(IDictionary<,>))
+ {
+ Type dictionaryType = typeof(Dictionary<,>).MakeGenericType(genericArguments);
+ return GenerateDictionary(dictionaryType, collectionSize, createdObjectReferences);
+ }
+
+ Type closedDictionaryType = typeof(IDictionary<,>).MakeGenericType(genericArguments[0], genericArguments[1]);
+ if (closedDictionaryType.IsAssignableFrom(type))
+ {
+ return GenerateDictionary(type, collectionSize, createdObjectReferences);
+ }
+ }
+
+ if (type.IsPublic || type.IsNestedPublic)
+ {
+ return GenerateComplexObject(type, createdObjectReferences);
+ }
+
+ return null;
+ }
+
+ private static object GenerateTuple(Type type, Dictionary<Type, object> createdObjectReferences)
+ {
+ Type[] genericArgs = type.GetGenericArguments();
+ object[] parameterValues = new object[genericArgs.Length];
+ bool failedToCreateTuple = true;
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ for (int i = 0; i < genericArgs.Length; i++)
+ {
+ parameterValues[i] = objectGenerator.GenerateObject(genericArgs[i], createdObjectReferences);
+ failedToCreateTuple &= parameterValues[i] == null;
+ }
+ if (failedToCreateTuple)
+ {
+ return null;
+ }
+ object result = Activator.CreateInstance(type, parameterValues);
+ return result;
+ }
+
+ private static bool IsTuple(Type genericTypeDefinition)
+ {
+ return genericTypeDefinition == typeof(Tuple<>) ||
+ genericTypeDefinition == typeof(Tuple<,>) ||
+ genericTypeDefinition == typeof(Tuple<,,>) ||
+ genericTypeDefinition == typeof(Tuple<,,,>) ||
+ genericTypeDefinition == typeof(Tuple<,,,,>) ||
+ genericTypeDefinition == typeof(Tuple<,,,,,>) ||
+ genericTypeDefinition == typeof(Tuple<,,,,,,>) ||
+ genericTypeDefinition == typeof(Tuple<,,,,,,,>);
+ }
+
+ private static object GenerateKeyValuePair(Type keyValuePairType, Dictionary<Type, object> createdObjectReferences)
+ {
+ Type[] genericArgs = keyValuePairType.GetGenericArguments();
+ Type typeK = genericArgs[0];
+ Type typeV = genericArgs[1];
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ object keyObject = objectGenerator.GenerateObject(typeK, createdObjectReferences);
+ object valueObject = objectGenerator.GenerateObject(typeV, createdObjectReferences);
+ if (keyObject == null && valueObject == null)
+ {
+ // Failed to create key and values
+ return null;
+ }
+ object result = Activator.CreateInstance(keyValuePairType, keyObject, valueObject);
+ return result;
+ }
+
+ private static object GenerateArray(Type arrayType, int size, Dictionary<Type, object> createdObjectReferences)
+ {
+ Type type = arrayType.GetElementType();
+ Array result = Array.CreateInstance(type, size);
+ bool areAllElementsNull = true;
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ for (int i = 0; i < size; i++)
+ {
+ object element = objectGenerator.GenerateObject(type, createdObjectReferences);
+ result.SetValue(element, i);
+ areAllElementsNull &= element == null;
+ }
+
+ if (areAllElementsNull)
+ {
+ return null;
+ }
+
+ return result;
+ }
+
+ private static object GenerateDictionary(Type dictionaryType, int size, Dictionary<Type, object> createdObjectReferences)
+ {
+ Type typeK = typeof(object);
+ Type typeV = typeof(object);
+ if (dictionaryType.IsGenericType)
+ {
+ Type[] genericArgs = dictionaryType.GetGenericArguments();
+ typeK = genericArgs[0];
+ typeV = genericArgs[1];
+ }
+
+ object result = Activator.CreateInstance(dictionaryType);
+ MethodInfo addMethod = dictionaryType.GetMethod("Add") ?? dictionaryType.GetMethod("TryAdd");
+ MethodInfo containsMethod = dictionaryType.GetMethod("Contains") ?? dictionaryType.GetMethod("ContainsKey");
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ for (int i = 0; i < size; i++)
+ {
+ object newKey = objectGenerator.GenerateObject(typeK, createdObjectReferences);
+ if (newKey == null)
+ {
+ // Cannot generate a valid key
+ return null;
+ }
+
+ bool containsKey = (bool)containsMethod.Invoke(result, new object[] { newKey });
+ if (!containsKey)
+ {
+ object newValue = objectGenerator.GenerateObject(typeV, createdObjectReferences);
+ addMethod.Invoke(result, new object[] { newKey, newValue });
+ }
+ }
+
+ return result;
+ }
+
+ private static object GenerateEnum(Type enumType)
+ {
+ Array possibleValues = Enum.GetValues(enumType);
+ if (possibleValues.Length > 0)
+ {
+ return possibleValues.GetValue(0);
+ }
+ return null;
+ }
+
+ private static object GenerateQueryable(Type queryableType, int size, Dictionary<Type, object> createdObjectReferences)
+ {
+ bool isGeneric = queryableType.IsGenericType;
+ object list;
+ if (isGeneric)
+ {
+ Type listType = typeof(List<>).MakeGenericType(queryableType.GetGenericArguments());
+ list = GenerateCollection(listType, size, createdObjectReferences);
+ }
+ else
+ {
+ list = GenerateArray(typeof(object[]), size, createdObjectReferences);
+ }
+ if (list == null)
+ {
+ return null;
+ }
+ if (isGeneric)
+ {
+ Type argumentType = typeof(IEnumerable<>).MakeGenericType(queryableType.GetGenericArguments());
+ MethodInfo asQueryableMethod = typeof(Queryable).GetMethod("AsQueryable", new[] { argumentType });
+ return asQueryableMethod.Invoke(null, new[] { list });
+ }
+
+ return Queryable.AsQueryable((IEnumerable)list);
+ }
+
+ private static object GenerateCollection(Type collectionType, int size, Dictionary<Type, object> createdObjectReferences)
+ {
+ Type type = collectionType.IsGenericType ?
+ collectionType.GetGenericArguments()[0] :
+ typeof(object);
+ object result = Activator.CreateInstance(collectionType);
+ MethodInfo addMethod = collectionType.GetMethod("Add");
+ bool areAllElementsNull = true;
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ for (int i = 0; i < size; i++)
+ {
+ object element = objectGenerator.GenerateObject(type, createdObjectReferences);
+ addMethod.Invoke(result, new object[] { element });
+ areAllElementsNull &= element == null;
+ }
+
+ if (areAllElementsNull)
+ {
+ return null;
+ }
+
+ return result;
+ }
+
+ private static object GenerateNullable(Type nullableType, Dictionary<Type, object> createdObjectReferences)
+ {
+ Type type = nullableType.GetGenericArguments()[0];
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ return objectGenerator.GenerateObject(type, createdObjectReferences);
+ }
+
+ private static object GenerateComplexObject(Type type, Dictionary<Type, object> createdObjectReferences)
+ {
+ object result = null;
+
+ if (createdObjectReferences.TryGetValue(type, out result))
+ {
+ // The object has been created already, just return it. This will handle the circular reference case.
+ return result;
+ }
+
+ if (type.IsValueType)
+ {
+ result = Activator.CreateInstance(type);
+ }
+ else
+ {
+ ConstructorInfo defaultCtor = type.GetConstructor(Type.EmptyTypes);
+ if (defaultCtor == null)
+ {
+ // Cannot instantiate the type because it doesn't have a default constructor
+ return null;
+ }
+
+ result = defaultCtor.Invoke(new object[0]);
+ }
+ createdObjectReferences.Add(type, result);
+ SetPublicProperties(type, result, createdObjectReferences);
+ SetPublicFields(type, result, createdObjectReferences);
+ return result;
+ }
+
+ private static void SetPublicProperties(Type type, object obj, Dictionary<Type, object> createdObjectReferences)
+ {
+ PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ foreach (PropertyInfo property in properties)
+ {
+ if (property.CanWrite)
+ {
+ object propertyValue = objectGenerator.GenerateObject(property.PropertyType, createdObjectReferences);
+ property.SetValue(obj, propertyValue, null);
+ }
+ }
+ }
+
+ private static void SetPublicFields(Type type, object obj, Dictionary<Type, object> createdObjectReferences)
+ {
+ FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance);
+ ObjectGenerator objectGenerator = new ObjectGenerator();
+ foreach (FieldInfo field in fields)
+ {
+ object fieldValue = objectGenerator.GenerateObject(field.FieldType, createdObjectReferences);
+ field.SetValue(obj, fieldValue);
+ }
+ }
+
+ private class SimpleTypeObjectGenerator
+ {
+ private long _index = 0;
+ private static readonly Dictionary<Type, Func<long, object>> DefaultGenerators = InitializeGenerators();
+
+ [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These are simple type factories and cannot be split up.")]
+ private static Dictionary<Type, Func<long, object>> InitializeGenerators()
+ {
+ return new Dictionary<Type, Func<long, object>>
+ {
+ { typeof(Boolean), index => true },
+ { typeof(Byte), index => (Byte)64 },
+ { typeof(Char), index => (Char)65 },
+ { typeof(DateTime), index => DateTime.Now },
+ { typeof(DateTimeOffset), index => new DateTimeOffset(DateTime.Now) },
+ { typeof(DBNull), index => DBNull.Value },
+ { typeof(Decimal), index => (Decimal)index },
+ { typeof(Double), index => (Double)(index + 0.1) },
+ { typeof(Guid), index => Guid.NewGuid() },
+ { typeof(Int16), index => (Int16)(index % Int16.MaxValue) },
+ { typeof(Int32), index => (Int32)(index % Int32.MaxValue) },
+ { typeof(Int64), index => (Int64)index },
+ { typeof(Object), index => new object() },
+ { typeof(SByte), index => (SByte)64 },
+ { typeof(Single), index => (Single)(index + 0.1) },
+ {
+ typeof(String), index =>
+ {
+ return String.Format(CultureInfo.CurrentCulture, "sample string {0}", index);
+ }
+ },
+ {
+ typeof(TimeSpan), index =>
+ {
+ return TimeSpan.FromTicks(1234567);
+ }
+ },
+ { typeof(UInt16), index => (UInt16)(index % UInt16.MaxValue) },
+ { typeof(UInt32), index => (UInt32)(index % UInt32.MaxValue) },
+ { typeof(UInt64), index => (UInt64)index },
+ {
+ typeof(Uri), index =>
+ {
+ return new Uri(String.Format(CultureInfo.CurrentCulture, "http://webapihelppage{0}.com", index));
+ }
+ },
+ };
+ }
+
+ public static bool CanGenerateObject(Type type)
+ {
+ return DefaultGenerators.ContainsKey(type);
+ }
+
+ public object GenerateObject(Type type)
+ {
+ return DefaultGenerators[type](++_index);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/SampleDirection.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/SampleDirection.cs
new file mode 100644
index 0000000..f5163fe
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/SampleDirection.cs
@@ -0,0 +1,11 @@
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// Indicates whether the sample is used for request or response
+ /// </summary>
+ public enum SampleDirection
+ {
+ Request = 0,
+ Response
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/TextSample.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/TextSample.cs
new file mode 100644
index 0000000..9a817c7
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/SampleGeneration/TextSample.cs
@@ -0,0 +1,37 @@
+using System;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// This represents a preformatted text sample on the help page. There's a display template named TextSample associated with this class.
+ /// </summary>
+ public class TextSample
+ {
+ public TextSample(string text)
+ {
+ if (text == null)
+ {
+ throw new ArgumentNullException("text");
+ }
+ Text = text;
+ }
+
+ public string Text { get; private set; }
+
+ public override bool Equals(object obj)
+ {
+ TextSample other = obj as TextSample;
+ return other != null && Text == other.Text;
+ }
+
+ public override int GetHashCode()
+ {
+ return Text.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return Text;
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Api.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Api.cshtml
new file mode 100644
index 0000000..180cc2e
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Api.cshtml
@@ -0,0 +1,25 @@
+@using System.Web.Http
+@using WebApi_QQJF.Areas.HelpPage.Models
+@model HelpPageApiModel
+
+@{
+ var description = Model.ApiDescription;
+ ViewBag.Title = description.HttpMethod.Method + " " + description.RelativePath;
+}
+
+<div id="body">
+ <section class="featured">
+ <div class="content-wrapper">
+ <p>
+ @Html.ActionLink("Help Page Home", "Index")
+ </p>
+ </div>
+ </section>
+ <section class="content-wrapper main-content clear-fix">
+ @Html.DisplayFor(m => Model)
+ </section>
+</div>
+
+@section Scripts {
+ <link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml
new file mode 100644
index 0000000..0057f47
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml
@@ -0,0 +1,41 @@
+@using System.Web.Http
+@using System.Web.Http.Controllers
+@using System.Web.Http.Description
+@using WebApi_QQJF.Areas.HelpPage
+@using WebApi_QQJF.Areas.HelpPage.Models
+@model IGrouping<HttpControllerDescriptor, ApiDescription>
+
+@{
+ var controllerDocumentation = ViewBag.DocumentationProvider != null ?
+ ViewBag.DocumentationProvider.GetDocumentation(Model.Key) :
+ null;
+}
+
+<h2 id="@Model.Key">@Model.Key.ControllerName</h2>
+@if (!String.IsNullOrEmpty(controllerDocumentation))
+{
+ <p>@controllerDocumentation</p>
+}
+<table class="help-page-table">
+ <thead>
+ <tr><th>API</th><th>Description</th></tr>
+ </thead>
+ <tbody>
+ @foreach (var api in Model)
+ {
+ <tr>
+ <td class="api-name"><a href="@Url.Action("Api", "Help", new { apiId = api.GetFriendlyId() })">@api.HttpMethod.Method @api.RelativePath</a></td>
+ <td class="api-documentation">
+ @if (api.Documentation != null)
+ {
+ <p>@api.Documentation</p>
+ }
+ else
+ {
+ <p>No documentation available.</p>
+ }
+ </td>
+ </tr>
+ }
+ </tbody>
+</table>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml
new file mode 100644
index 0000000..30d65a8
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml
@@ -0,0 +1,51 @@
+@using System.Web.Http
+@using WebApi_QQJF.Areas.HelpPage.Models
+@model HelpPageApiModel
+
+@{
+ var description = Model.ApiDescription;
+ bool hasParameters = description.ParameterDescriptions.Count > 0;
+ bool hasRequestSamples = Model.SampleRequests.Count > 0;
+ bool hasResponseSamples = Model.SampleResponses.Count > 0;
+}
+<h1>@description.HttpMethod.Method @description.RelativePath</h1>
+<div>
+ @if (description.Documentation != null)
+ {
+ <p>@description.Documentation</p>
+ }
+ else
+ {
+ <p>No documentation available.</p>
+ }
+
+ @if (hasParameters || hasRequestSamples)
+ {
+ <h2>Request Information</h2>
+ if (hasParameters)
+ {
+ <h3>Parameters</h3>
+ @Html.DisplayFor(apiModel => apiModel.ApiDescription.ParameterDescriptions, "Parameters")
+ }
+ if (hasRequestSamples)
+ {
+ <h3>Request body formats</h3>
+ @Html.DisplayFor(apiModel => apiModel.SampleRequests, "Samples")
+ }
+ }
+
+ @if (hasResponseSamples)
+ {
+ <h2>Response Information</h2>
+ if (description.ResponseDescription.Documentation != null)
+ {
+ <p>@description.ResponseDescription.Documentation</p>
+ }
+ else
+ {
+ <p>No documentation available.</p>
+ }
+ <h3>Response body formats</h3>
+ @Html.DisplayFor(apiModel => apiModel.SampleResponses, "Samples")
+ }
+</div>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml
new file mode 100644
index 0000000..8730a28
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml
@@ -0,0 +1,4 @@
+@using WebApi_QQJF.Areas.HelpPage
+@model ImageSample
+
+<img src="@Model.Src" />
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml
new file mode 100644
index 0000000..0434906
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml
@@ -0,0 +1,13 @@
+@using WebApi_QQJF.Areas.HelpPage
+@model InvalidSample
+
+@if (HttpContext.Current.IsDebuggingEnabled)
+{
+ <div class="warning-message-container">
+ <p>@Model.ErrorMessage</p>
+ </div>
+}
+else
+{
+ <p>Sample not available.</p>
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml
new file mode 100644
index 0000000..2bcce2f
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml
@@ -0,0 +1,44 @@
+@using System.Collections.ObjectModel
+@using System.Web.Http.Description
+@using System.Threading
+@model Collection<ApiParameterDescription>
+
+<table class="help-page-table">
+ <thead>
+ <tr><th>Name</th><th>Description</th><th>Additional information</th></tr>
+ </thead>
+ <tbody>
+ @foreach (ApiParameterDescription parameter in Model)
+ {
+ string parameterDocumentation = parameter.Documentation != null ?
+ parameter.Documentation :
+ "No documentation available.";
+
+ // Don't show CancellationToken because it's a special parameter
+ if (parameter.ParameterDescriptor == null ||
+ (parameter.ParameterDescriptor != null &&
+ !typeof(CancellationToken).IsAssignableFrom(parameter.ParameterDescriptor.ParameterType)))
+ {
+ <tr>
+ <td class="parameter-name"><b>@parameter.Name</b></td>
+ <td class="parameter-documentation"><pre>@parameterDocumentation</pre></td>
+ <td class="parameter-source">
+ @switch (parameter.Source)
+ {
+ case ApiParameterSource.FromBody:
+ <p>Define this parameter in the request <b>body</b>.</p>
+ break;
+ case ApiParameterSource.FromUri:
+ <p>Define this parameter in the request <b>URI</b>.</p>
+ break;
+ case ApiParameterSource.Unknown:
+ default:
+ <p>None.</p>
+ break;
+ }
+ </td>
+ </tr>
+ }
+ }
+ </tbody>
+</table>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml
new file mode 100644
index 0000000..c19596f
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml
@@ -0,0 +1,30 @@
+@using System.Net.Http.Headers
+@model Dictionary<MediaTypeHeaderValue, object>
+
+@{
+ // Group the samples into a single tab if they are the same.
+ Dictionary<string, object> samples = Model.GroupBy(pair => pair.Value).ToDictionary(
+ pair => String.Join(", ", pair.Select(m => m.Key.ToString()).ToArray()),
+ pair => pair.Key);
+ var mediaTypes = samples.Keys;
+}
+<div>
+ @foreach (var mediaType in mediaTypes)
+ {
+ <h4 class="sample-header">@mediaType</h4>
+ <div class="sample-content">
+ <span><b>Sample:</b></span>
+ @{
+ var sample = samples[mediaType];
+ if (sample == null)
+ {
+ <p>Sample not available.</p>
+ }
+ else
+ {
+ @Html.DisplayFor(s => sample);
+ }
+ }
+ </div>
+ }
+</div>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml
new file mode 100644
index 0000000..c9ae4a3
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml
@@ -0,0 +1,6 @@
+@using WebApi_QQJF.Areas.HelpPage
+@model TextSample
+
+<pre class="wrapped">
+@Model.Text
+</pre>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Index.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Index.cshtml
new file mode 100644
index 0000000..4307edd
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Help/Index.cshtml
@@ -0,0 +1,41 @@
+@using System.Web.Http
+@using System.Web.Http.Controllers
+@using System.Web.Http.Description
+@using System.Collections.ObjectModel
+@using WebApi_QQJF.Areas.HelpPage.Models
+@model Collection<ApiDescription>
+
+@{
+ ViewBag.Title = "ASP.NET Web API Help Page";
+
+ // Group APIs by controller
+ ILookup<HttpControllerDescriptor, ApiDescription> apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor);
+}
+
+<header>
+ <div class="content-wrapper">
+ <div class="float-left">
+ <h1>@ViewBag.Title</h1>
+ </div>
+ </div>
+</header>
+<div id="body">
+ <section class="featured">
+ <div class="content-wrapper">
+ <h2>Introduction</h2>
+ <p>
+ Provide a general description of your APIs here.
+ </p>
+ </div>
+ </section>
+ <section class="content-wrapper main-content clear-fix">
+ @foreach (var group in apiGroups)
+ {
+ @Html.DisplayFor(m => group, "ApiGroup")
+ }
+ </section>
+</div>
+
+@section Scripts {
+ <link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Shared/_Layout.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Shared/_Layout.cshtml
new file mode 100644
index 0000000..bc2e96f
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Shared/_Layout.cshtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width" />
+ <title>@ViewBag.Title</title>
+ @RenderSection("scripts", required: false)
+</head>
+<body>
+ @RenderBody()
+</body>
+</html>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Web.config b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Web.config
new file mode 100644
index 0000000..1ac07c6
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/Web.config
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+
+<configuration>
+ <configSections>
+ <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+ <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
+ <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
+ </sectionGroup>
+ </configSections>
+
+ <system.web.webPages.razor>
+ <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ <pages pageBaseType="System.Web.Mvc.WebViewPage">
+ <namespaces>
+ <add namespace="System.Web.Mvc" />
+ <add namespace="System.Web.Mvc.Ajax" />
+ <add namespace="System.Web.Mvc.Html" />
+ <add namespace="System.Web.Routing" />
+ </namespaces>
+ </pages>
+ </system.web.webPages.razor>
+
+ <appSettings>
+ <add key="webpages:Enabled" value="false" />
+ </appSettings>
+
+ <system.web>
+ <httpHandlers>
+ <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
+ </httpHandlers>
+ <compilation debug="true">
+ <assemblies>
+ <add assembly="System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ </assemblies>
+ </compilation>
+ <!--
+ Enabling request validation in view pages would cause validation to occur
+ after the input has already been processed by the controller. By default
+ MVC performs request validation before a controller processes the input.
+ To change this behavior apply the ValidateInputAttribute to a
+ controller or action.
+ -->
+ <pages
+ validateRequest="false"
+ pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
+ pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
+ userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+ <controls>
+ <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
+ </controls>
+ </pages>
+ </system.web>
+
+ <system.webServer>
+ <validation validateIntegratedModeConfiguration="false" />
+
+ <handlers>
+ <remove name="BlockViewHandler"/>
+ <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
+ </handlers>
+ </system.webServer>
+</configuration>
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/_ViewStart.cshtml b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/_ViewStart.cshtml
new file mode 100644
index 0000000..d735b1c
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/Views/_ViewStart.cshtml
@@ -0,0 +1,4 @@
+锘緻{
+ // Change the Layout path below to blend the look and feel of the help page with your existing web pages
+ Layout = "~/Views/Shared/_Layout.cshtml";
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Areas/HelpPage/XmlDocumentationProvider.cs b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/XmlDocumentationProvider.cs
new file mode 100644
index 0000000..f1d7653
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Areas/HelpPage/XmlDocumentationProvider.cs
@@ -0,0 +1,143 @@
+using System;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
+using System.Web.Http.Controllers;
+using System.Web.Http.Description;
+using System.Xml.XPath;
+
+namespace WebApi_QQJF.Areas.HelpPage
+{
+ /// <summary>
+ /// A custom <see cref="IDocumentationProvider"/> that reads the API documentation from an XML documentation file.
+ /// </summary>
+ public class XmlDocumentationProvider : IDocumentationProvider
+ {
+ private XPathNavigator _documentNavigator;
+ private const string TypeExpression = "/doc/members/member[@name='T:{0}']";
+ private const string MethodExpression = "/doc/members/member[@name='M:{0}']";
+ private const string ParameterExpression = "param[@name='{0}']";
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="XmlDocumentationProvider"/> class.
+ /// </summary>
+ /// <param name="documentPath">The physical path to XML document.</param>
+ public XmlDocumentationProvider(string documentPath)
+ {
+ if (documentPath == null)
+ {
+ throw new ArgumentNullException("documentPath");
+ }
+ XPathDocument xpath = new XPathDocument(documentPath);
+ _documentNavigator = xpath.CreateNavigator();
+ }
+
+ public string GetDocumentation(HttpControllerDescriptor controllerDescriptor)
+ {
+ XPathNavigator typeNode = GetTypeNode(controllerDescriptor);
+ return GetTagValue(typeNode, "summary");
+ }
+
+ public virtual string GetDocumentation(HttpActionDescriptor actionDescriptor)
+ {
+ XPathNavigator methodNode = GetMethodNode(actionDescriptor);
+ return GetTagValue(methodNode, "summary");
+ }
+
+ public virtual string GetDocumentation(HttpParameterDescriptor parameterDescriptor)
+ {
+ ReflectedHttpParameterDescriptor reflectedParameterDescriptor = parameterDescriptor as ReflectedHttpParameterDescriptor;
+ if (reflectedParameterDescriptor != null)
+ {
+ XPathNavigator methodNode = GetMethodNode(reflectedParameterDescriptor.ActionDescriptor);
+ if (methodNode != null)
+ {
+ string parameterName = reflectedParameterDescriptor.ParameterInfo.Name;
+ XPathNavigator parameterNode = methodNode.SelectSingleNode(String.Format(CultureInfo.InvariantCulture, ParameterExpression, parameterName));
+ if (parameterNode != null)
+ {
+ return parameterNode.Value.Trim();
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public string GetResponseDocumentation(HttpActionDescriptor actionDescriptor)
+ {
+ XPathNavigator methodNode = GetMethodNode(actionDescriptor);
+ return GetTagValue(methodNode, "returns");
+ }
+
+ private XPathNavigator GetMethodNode(HttpActionDescriptor actionDescriptor)
+ {
+ ReflectedHttpActionDescriptor reflectedActionDescriptor = actionDescriptor as ReflectedHttpActionDescriptor;
+ if (reflectedActionDescriptor != null)
+ {
+ string selectExpression = String.Format(CultureInfo.InvariantCulture, MethodExpression, GetMemberName(reflectedActionDescriptor.MethodInfo));
+ return _documentNavigator.SelectSingleNode(selectExpression);
+ }
+
+ return null;
+ }
+
+ private static string GetMemberName(MethodInfo method)
+ {
+ string name = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", method.DeclaringType.FullName, method.Name);
+ ParameterInfo[] parameters = method.GetParameters();
+ if (parameters.Length != 0)
+ {
+ string[] parameterTypeNames = parameters.Select(param => GetTypeName(param.ParameterType)).ToArray();
+ name += String.Format(CultureInfo.InvariantCulture, "({0})", String.Join(",", parameterTypeNames));
+ }
+
+ return name;
+ }
+
+ private static string GetTagValue(XPathNavigator parentNode, string tagName)
+ {
+ if (parentNode != null)
+ {
+ XPathNavigator node = parentNode.SelectSingleNode(tagName);
+ if (node != null)
+ {
+ return node.Value.Trim();
+ }
+ }
+
+ return null;
+ }
+
+ private static string GetTypeName(Type type)
+ {
+ if (type.IsGenericType)
+ {
+ // Format the generic type name to something like: Generic{System.Int32,System.String}
+ Type genericType = type.GetGenericTypeDefinition();
+ Type[] genericArguments = type.GetGenericArguments();
+ string typeName = genericType.FullName;
+
+ // Trim the generic parameter counts from the name
+ typeName = typeName.Substring(0, typeName.IndexOf('`'));
+ string[] argumentTypeNames = genericArguments.Select(t => GetTypeName(t)).ToArray();
+ return String.Format(CultureInfo.InvariantCulture, "{0}{{{1}}}", typeName, String.Join(",", argumentTypeNames));
+ }
+
+ return type.FullName;
+ }
+
+ private XPathNavigator GetTypeNode(HttpControllerDescriptor controllerDescriptor)
+ {
+ Type controllerType = controllerDescriptor.ControllerType;
+ string controllerTypeName = controllerType.FullName;
+ if (controllerType.IsNested)
+ {
+ // Changing the nested type name from OuterType+InnerType to OuterType.InnerType to match the XML documentation syntax.
+ controllerTypeName = controllerTypeName.Replace("+", ".");
+ }
+ string selectExpression = String.Format(CultureInfo.InvariantCulture, TypeExpression, controllerTypeName);
+ return _documentNavigator.SelectSingleNode(selectExpression);
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Content/Site.css b/qqjf-Background/WebApi_QQJF/Content/Site.css
new file mode 100644
index 0000000..ad542f3
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Content/Site.css
@@ -0,0 +1,42 @@
+锘縝ody {
+ padding-top: 50px;
+ padding-bottom: 20px;
+}
+
+/* Set padding to keep content from hitting the edges */
+.body-content {
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+/* Set width on the form input elements since they're 100% wide by default */
+input,
+select,
+textarea {
+ max-width: 280px;
+}
+
+/* styles for validation helpers */
+.field-validation-error {
+ color: #b94a48;
+}
+
+.field-validation-valid {
+ display: none;
+}
+
+input.input-validation-error {
+ border: 1px solid #b94a48;
+}
+
+input[type="checkbox"].input-validation-error {
+ border: 0 none;
+}
+
+.validation-summary-errors {
+ color: #b94a48;
+}
+
+.validation-summary-valid {
+ display: none;
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Content/bootstrap.css b/qqjf-Background/WebApi_QQJF/Content/bootstrap.css
new file mode 100644
index 0000000..6d6e682
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Content/bootstrap.css
@@ -0,0 +1,6816 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. The notices and licenses below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+/*!
+ * Bootstrap v3.0.0
+ *
+ * Copyright 2013 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world by @mdo and @fat.
+ */
+
+/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+
+audio,
+canvas,
+video {
+ display: inline-block;
+}
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+[hidden] {
+ display: none;
+}
+
+html {
+ font-family: sans-serif;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+body {
+ margin: 0;
+}
+
+a:focus {
+ outline: thin dotted;
+}
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+h1 {
+ margin: 0.67em 0;
+ font-size: 2em;
+}
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+b,
+strong {
+ font-weight: bold;
+}
+
+dfn {
+ font-style: italic;
+}
+
+hr {
+ height: 0;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+mark {
+ color: #000;
+ background: #ff0;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, serif;
+ font-size: 1em;
+}
+
+pre {
+ white-space: pre-wrap;
+}
+
+q {
+ quotes: "\201C" "\201D" "\2018" "\2019";
+}
+
+small {
+ font-size: 80%;
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+img {
+ border: 0;
+}
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+figure {
+ margin: 0;
+}
+
+fieldset {
+ padding: 0.35em 0.625em 0.75em;
+ margin: 0 2px;
+ border: 1px solid #c0c0c0;
+}
+
+legend {
+ padding: 0;
+ border: 0;
+}
+
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: 100%;
+}
+
+button,
+input {
+ line-height: normal;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+ padding: 0;
+ box-sizing: border-box;
+}
+
+input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+@media print {
+ * {
+ color: #000 !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ box-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ .ir a:after,
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ @page {
+ margin: 2cm .5cm;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ .navbar {
+ display: none;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+
+*,
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+html {
+ font-size: 62.5%;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+body {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 1.428571429;
+ color: #333333;
+ background-color: #ffffff;
+}
+
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+button,
+input,
+select[multiple],
+textarea {
+ background-image: none;
+}
+
+a {
+ color: #428bca;
+ text-decoration: none;
+}
+
+a:hover,
+a:focus {
+ color: #2a6496;
+ text-decoration: underline;
+}
+
+a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+img {
+ vertical-align: middle;
+}
+
+.img-responsive {
+ display: block;
+ height: auto;
+ max-width: 100%;
+}
+
+.img-rounded {
+ border-radius: 6px;
+}
+
+.img-thumbnail {
+ display: inline-block;
+ height: auto;
+ max-width: 100%;
+ padding: 4px;
+ line-height: 1.428571429;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 4px;
+ -webkit-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+
+.img-circle {
+ border-radius: 50%;
+}
+
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+}
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0 0 0 0);
+ border: 0;
+}
+
+p {
+ margin: 0 0 10px;
+}
+
+.lead {
+ margin-bottom: 20px;
+ font-size: 16.099999999999998px;
+ font-weight: 200;
+ line-height: 1.4;
+}
+
+@media (min-width: 768px) {
+ .lead {
+ font-size: 21px;
+ }
+}
+
+small {
+ font-size: 85%;
+}
+
+cite {
+ font-style: normal;
+}
+
+.text-muted {
+ color: #999999;
+}
+
+.text-primary {
+ color: #428bca;
+}
+
+.text-warning {
+ color: #c09853;
+}
+
+.text-danger {
+ color: #b94a48;
+}
+
+.text-success {
+ color: #468847;
+}
+
+.text-info {
+ color: #3a87ad;
+}
+
+.text-left {
+ text-align: left;
+}
+
+.text-right {
+ text-align: right;
+}
+
+.text-center {
+ text-align: center;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-weight: 500;
+ line-height: 1.1;
+}
+
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+
+h1,
+h2,
+h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+
+h4,
+h5,
+h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+h1,
+.h1 {
+ font-size: 36px;
+}
+
+h2,
+.h2 {
+ font-size: 30px;
+}
+
+h3,
+.h3 {
+ font-size: 24px;
+}
+
+h4,
+.h4 {
+ font-size: 18px;
+}
+
+h5,
+.h5 {
+ font-size: 14px;
+}
+
+h6,
+.h6 {
+ font-size: 12px;
+}
+
+h1 small,
+.h1 small {
+ font-size: 24px;
+}
+
+h2 small,
+.h2 small {
+ font-size: 18px;
+}
+
+h3 small,
+.h3 small,
+h4 small,
+.h4 small {
+ font-size: 14px;
+}
+
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eeeeee;
+}
+
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline > li {
+ display: inline-block;
+ padding-right: 5px;
+ padding-left: 5px;
+}
+
+dl {
+ margin-bottom: 20px;
+}
+
+dt,
+dd {
+ line-height: 1.428571429;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd {
+ margin-left: 0;
+}
+
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+ .dl-horizontal dd:before,
+ .dl-horizontal dd:after {
+ display: table;
+ content: " ";
+ }
+ .dl-horizontal dd:after {
+ clear: both;
+ }
+ .dl-horizontal dd:before,
+ .dl-horizontal dd:after {
+ display: table;
+ content: " ";
+ }
+ .dl-horizontal dd:after {
+ clear: both;
+ }
+}
+
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+
+abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eeeeee;
+}
+
+blockquote p {
+ font-size: 17.5px;
+ font-weight: 300;
+ line-height: 1.25;
+}
+
+blockquote p:last-child {
+ margin-bottom: 0;
+}
+
+blockquote small {
+ display: block;
+ line-height: 1.428571429;
+ color: #999999;
+}
+
+blockquote small:before {
+ content: '\2014 \00A0';
+}
+
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+}
+
+blockquote.pull-right p,
+blockquote.pull-right small {
+ text-align: right;
+}
+
+blockquote.pull-right small:before {
+ content: '';
+}
+
+blockquote.pull-right small:after {
+ content: '\00A0 \2014';
+}
+
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+
+address {
+ display: block;
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.428571429;
+}
+
+code,
+pre {
+ font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+}
+
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ white-space: nowrap;
+ background-color: #f9f2f4;
+ border-radius: 4px;
+}
+
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 1.428571429;
+ color: #333333;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: #f5f5f5;
+ border: 1px solid #cccccc;
+ border-radius: 4px;
+}
+
+pre.prettyprint {
+ margin-bottom: 20px;
+}
+
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border: 0;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+
+.container {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.container:before,
+.container:after {
+ display: table;
+ content: " ";
+}
+
+.container:after {
+ clear: both;
+}
+
+.container:before,
+.container:after {
+ display: table;
+ content: " ";
+}
+
+.container:after {
+ clear: both;
+}
+
+.row {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+.row:before,
+.row:after {
+ display: table;
+ content: " ";
+}
+
+.row:after {
+ clear: both;
+}
+
+.row:before,
+.row:after {
+ display: table;
+ content: " ";
+}
+
+.row:after {
+ clear: both;
+}
+
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11,
+.col-xs-12,
+.col-sm-1,
+.col-sm-2,
+.col-sm-3,
+.col-sm-4,
+.col-sm-5,
+.col-sm-6,
+.col-sm-7,
+.col-sm-8,
+.col-sm-9,
+.col-sm-10,
+.col-sm-11,
+.col-sm-12,
+.col-md-1,
+.col-md-2,
+.col-md-3,
+.col-md-4,
+.col-md-5,
+.col-md-6,
+.col-md-7,
+.col-md-8,
+.col-md-9,
+.col-md-10,
+.col-md-11,
+.col-md-12,
+.col-lg-1,
+.col-lg-2,
+.col-lg-3,
+.col-lg-4,
+.col-lg-5,
+.col-lg-6,
+.col-lg-7,
+.col-lg-8,
+.col-lg-9,
+.col-lg-10,
+.col-lg-11,
+.col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11 {
+ float: left;
+}
+
+.col-xs-1 {
+ width: 8.333333333333332%;
+}
+
+.col-xs-2 {
+ width: 16.666666666666664%;
+}
+
+.col-xs-3 {
+ width: 25%;
+}
+
+.col-xs-4 {
+ width: 33.33333333333333%;
+}
+
+.col-xs-5 {
+ width: 41.66666666666667%;
+}
+
+.col-xs-6 {
+ width: 50%;
+}
+
+.col-xs-7 {
+ width: 58.333333333333336%;
+}
+
+.col-xs-8 {
+ width: 66.66666666666666%;
+}
+
+.col-xs-9 {
+ width: 75%;
+}
+
+.col-xs-10 {
+ width: 83.33333333333334%;
+}
+
+.col-xs-11 {
+ width: 91.66666666666666%;
+}
+
+.col-xs-12 {
+ width: 100%;
+}
+
+@media (min-width: 768px) {
+ .container {
+ max-width: 750px;
+ }
+ .col-sm-1,
+ .col-sm-2,
+ .col-sm-3,
+ .col-sm-4,
+ .col-sm-5,
+ .col-sm-6,
+ .col-sm-7,
+ .col-sm-8,
+ .col-sm-9,
+ .col-sm-10,
+ .col-sm-11 {
+ float: left;
+ }
+ .col-sm-1 {
+ width: 8.333333333333332%;
+ }
+ .col-sm-2 {
+ width: 16.666666666666664%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-4 {
+ width: 33.33333333333333%;
+ }
+ .col-sm-5 {
+ width: 41.66666666666667%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-7 {
+ width: 58.333333333333336%;
+ }
+ .col-sm-8 {
+ width: 66.66666666666666%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-10 {
+ width: 83.33333333333334%;
+ }
+ .col-sm-11 {
+ width: 91.66666666666666%;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-sm-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-sm-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-sm-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+}
+
+@media (min-width: 992px) {
+ .container {
+ max-width: 970px;
+ }
+ .col-md-1,
+ .col-md-2,
+ .col-md-3,
+ .col-md-4,
+ .col-md-5,
+ .col-md-6,
+ .col-md-7,
+ .col-md-8,
+ .col-md-9,
+ .col-md-10,
+ .col-md-11 {
+ float: left;
+ }
+ .col-md-1 {
+ width: 8.333333333333332%;
+ }
+ .col-md-2 {
+ width: 16.666666666666664%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-4 {
+ width: 33.33333333333333%;
+ }
+ .col-md-5 {
+ width: 41.66666666666667%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-7 {
+ width: 58.333333333333336%;
+ }
+ .col-md-8 {
+ width: 66.66666666666666%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-10 {
+ width: 83.33333333333334%;
+ }
+ .col-md-11 {
+ width: 91.66666666666666%;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-md-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-md-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-md-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-md-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-md-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+}
+
+@media (min-width: 1200px) {
+ .container {
+ max-width: 1170px;
+ }
+ .col-lg-1,
+ .col-lg-2,
+ .col-lg-3,
+ .col-lg-4,
+ .col-lg-5,
+ .col-lg-6,
+ .col-lg-7,
+ .col-lg-8,
+ .col-lg-9,
+ .col-lg-10,
+ .col-lg-11 {
+ float: left;
+ }
+ .col-lg-1 {
+ width: 8.333333333333332%;
+ }
+ .col-lg-2 {
+ width: 16.666666666666664%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-4 {
+ width: 33.33333333333333%;
+ }
+ .col-lg-5 {
+ width: 41.66666666666667%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-7 {
+ width: 58.333333333333336%;
+ }
+ .col-lg-8 {
+ width: 66.66666666666666%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-10 {
+ width: 83.33333333333334%;
+ }
+ .col-lg-11 {
+ width: 91.66666666666666%;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-lg-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-lg-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+}
+
+table {
+ max-width: 100%;
+ background-color: transparent;
+}
+
+th {
+ text-align: left;
+}
+
+.table {
+ width: 100%;
+ margin-bottom: 20px;
+}
+
+.table thead > tr > th,
+.table tbody > tr > th,
+.table tfoot > tr > th,
+.table thead > tr > td,
+.table tbody > tr > td,
+.table tfoot > tr > td {
+ padding: 8px;
+ line-height: 1.428571429;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
+}
+
+.table thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #dddddd;
+}
+
+.table caption + thead tr:first-child th,
+.table colgroup + thead tr:first-child th,
+.table thead:first-child tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child td {
+ border-top: 0;
+}
+
+.table tbody + tbody {
+ border-top: 2px solid #dddddd;
+}
+
+.table .table {
+ background-color: #ffffff;
+}
+
+.table-condensed thead > tr > th,
+.table-condensed tbody > tr > th,
+.table-condensed tfoot > tr > th,
+.table-condensed thead > tr > td,
+.table-condensed tbody > tr > td,
+.table-condensed tfoot > tr > td {
+ padding: 5px;
+}
+
+.table-bordered {
+ border: 1px solid #dddddd;
+}
+
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #dddddd;
+}
+
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+
+.table-striped > tbody > tr:nth-child(odd) > td,
+.table-striped > tbody > tr:nth-child(odd) > th {
+ background-color: #f9f9f9;
+}
+
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+ background-color: #f5f5f5;
+}
+
+table col[class*="col-"] {
+ display: table-column;
+ float: none;
+}
+
+table td[class*="col-"],
+table th[class*="col-"] {
+ display: table-cell;
+ float: none;
+}
+
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #f5f5f5;
+}
+
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td {
+ background-color: #d0e9c6;
+ border-color: #c9e2b3;
+}
+
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td {
+ background-color: #ebcccc;
+ border-color: #e6c1c7;
+}
+
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+ border-color: #fbeed5;
+}
+
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td {
+ background-color: #faf2cc;
+ border-color: #f8e5be;
+}
+
+@media (max-width: 768px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ border: 1px solid #dddddd;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ background-color: #fff;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > thead > tr:last-child > td,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: inherit;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+label {
+ display: inline-block;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ /* IE8-9 */
+
+ line-height: normal;
+}
+
+input[type="file"] {
+ display: block;
+}
+
+select[multiple],
+select[size] {
+ height: auto;
+}
+
+select optgroup {
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+}
+
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+input[type="number"]::-webkit-outer-spin-button,
+input[type="number"]::-webkit-inner-spin-button {
+ height: auto;
+}
+
+.form-control:-moz-placeholder {
+ color: #999999;
+}
+
+.form-control::-moz-placeholder {
+ color: #999999;
+}
+
+.form-control:-ms-input-placeholder {
+ color: #999999;
+}
+
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.428571429;
+ color: #555555;
+ vertical-align: middle;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+ transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+}
+
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+ background-color: #eeeeee;
+}
+
+textarea.form-control {
+ height: auto;
+}
+
+.form-group {
+ margin-bottom: 15px;
+}
+
+.radio,
+.checkbox {
+ display: block;
+ min-height: 20px;
+ padding-left: 20px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ vertical-align: middle;
+}
+
+.radio label,
+.checkbox label {
+ display: inline;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ float: left;
+ margin-left: -20px;
+}
+
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+
+.radio-inline,
+.checkbox-inline {
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ vertical-align: middle;
+ cursor: pointer;
+}
+
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+.radio[disabled],
+.radio-inline[disabled],
+.checkbox[disabled],
+.checkbox-inline[disabled],
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"],
+fieldset[disabled] .radio,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+
+.input-sm {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+select.input-sm {
+ height: 30px;
+ line-height: 30px;
+}
+
+textarea.input-sm {
+ height: auto;
+}
+
+.input-lg {
+ height: 45px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
+}
+
+select.input-lg {
+ height: 45px;
+ line-height: 45px;
+}
+
+textarea.input-lg {
+ height: auto;
+}
+
+.has-warning .help-block,
+.has-warning .control-label {
+ color: #c09853;
+}
+
+.has-warning .form-control {
+ border-color: #c09853;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.has-warning .form-control:focus {
+ border-color: #a47e3c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+
+.has-warning .input-group-addon {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
+}
+
+.has-error .help-block,
+.has-error .control-label {
+ color: #b94a48;
+}
+
+.has-error .form-control {
+ border-color: #b94a48;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.has-error .form-control:focus {
+ border-color: #953b39;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+
+.has-error .input-group-addon {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
+}
+
+.has-success .help-block,
+.has-success .control-label {
+ color: #468847;
+}
+
+.has-success .form-control {
+ border-color: #468847;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.has-success .form-control:focus {
+ border-color: #356635;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+
+.has-success .input-group-addon {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
+}
+
+.form-control-static {
+ padding-top: 7px;
+ margin-bottom: 0;
+}
+
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ padding-left: 0;
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ float: none;
+ margin-left: 0;
+ }
+}
+
+.form-horizontal .control-label,
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ padding-top: 7px;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.form-horizontal .form-group {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after {
+ display: table;
+ content: " ";
+}
+
+.form-horizontal .form-group:after {
+ clear: both;
+}
+
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after {
+ display: table;
+ content: " ";
+}
+
+.form-horizontal .form-group:after {
+ clear: both;
+}
+
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ text-align: right;
+ }
+}
+
+.btn {
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.428571429;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ cursor: pointer;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+}
+
+.btn:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.btn:hover,
+.btn:focus {
+ color: #333333;
+ text-decoration: none;
+}
+
+.btn:active,
+.btn.active {
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ pointer-events: none;
+ cursor: not-allowed;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn-default {
+ color: #333333;
+ background-color: #ffffff;
+ border-color: #cccccc;
+}
+
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ color: #333333;
+ background-color: #ebebeb;
+ border-color: #adadad;
+}
+
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-image: none;
+}
+
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #ffffff;
+ border-color: #cccccc;
+}
+
+.btn-primary {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #357ebd;
+}
+
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ color: #ffffff;
+ background-color: #3276b1;
+ border-color: #285e8e;
+}
+
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #428bca;
+ border-color: #357ebd;
+}
+
+.btn-warning {
+ color: #ffffff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+ color: #ffffff;
+ background-color: #ed9c28;
+ border-color: #d58512;
+}
+
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+.btn-danger {
+ color: #ffffff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ color: #ffffff;
+ background-color: #d2322d;
+ border-color: #ac2925;
+}
+
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+
+.btn-success {
+ color: #ffffff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+ color: #ffffff;
+ background-color: #47a447;
+ border-color: #398439;
+}
+
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+ background-image: none;
+}
+
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+
+.btn-info {
+ color: #ffffff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+ color: #ffffff;
+ background-color: #39b3d7;
+ border-color: #269abc;
+}
+
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+ background-image: none;
+}
+
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+
+.btn-link {
+ font-weight: normal;
+ color: #428bca;
+ cursor: pointer;
+ border-radius: 0;
+}
+
+.btn-link,
+.btn-link:active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+
+.btn-link:hover,
+.btn-link:focus {
+ color: #2a6496;
+ text-decoration: underline;
+ background-color: transparent;
+}
+
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #999999;
+ text-decoration: none;
+}
+
+.btn-lg {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
+}
+
+.btn-sm,
+.btn-xs {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+.btn-xs {
+ padding: 1px 5px;
+}
+
+.btn-block {
+ display: block;
+ width: 100%;
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+
+.fade.in {
+ opacity: 1;
+}
+
+.collapse {
+ display: none;
+}
+
+.collapse.in {
+ display: block;
+}
+
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.35s ease;
+ transition: height 0.35s ease;
+}
+
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('../fonts/glyphicons-halflings-regular.eot');
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
+}
+
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ -webkit-font-smoothing: antialiased;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+}
+
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+
+.glyphicon-plus:before {
+ content: "\2b";
+}
+
+.glyphicon-euro:before {
+ content: "\20ac";
+}
+
+.glyphicon-minus:before {
+ content: "\2212";
+}
+
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+
+.glyphicon-glass:before {
+ content: "\e001";
+}
+
+.glyphicon-music:before {
+ content: "\e002";
+}
+
+.glyphicon-search:before {
+ content: "\e003";
+}
+
+.glyphicon-heart:before {
+ content: "\e005";
+}
+
+.glyphicon-star:before {
+ content: "\e006";
+}
+
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+
+.glyphicon-user:before {
+ content: "\e008";
+}
+
+.glyphicon-film:before {
+ content: "\e009";
+}
+
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+
+.glyphicon-th:before {
+ content: "\e011";
+}
+
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+
+.glyphicon-ok:before {
+ content: "\e013";
+}
+
+.glyphicon-remove:before {
+ content: "\e014";
+}
+
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+
+.glyphicon-off:before {
+ content: "\e017";
+}
+
+.glyphicon-signal:before {
+ content: "\e018";
+}
+
+.glyphicon-cog:before {
+ content: "\e019";
+}
+
+.glyphicon-trash:before {
+ content: "\e020";
+}
+
+.glyphicon-home:before {
+ content: "\e021";
+}
+
+.glyphicon-file:before {
+ content: "\e022";
+}
+
+.glyphicon-time:before {
+ content: "\e023";
+}
+
+.glyphicon-road:before {
+ content: "\e024";
+}
+
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+
+.glyphicon-download:before {
+ content: "\e026";
+}
+
+.glyphicon-upload:before {
+ content: "\e027";
+}
+
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+
+.glyphicon-flag:before {
+ content: "\e034";
+}
+
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+
+.glyphicon-tag:before {
+ content: "\e041";
+}
+
+.glyphicon-tags:before {
+ content: "\e042";
+}
+
+.glyphicon-book:before {
+ content: "\e043";
+}
+
+.glyphicon-print:before {
+ content: "\e045";
+}
+
+.glyphicon-font:before {
+ content: "\e047";
+}
+
+.glyphicon-bold:before {
+ content: "\e048";
+}
+
+.glyphicon-italic:before {
+ content: "\e049";
+}
+
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+
+.glyphicon-list:before {
+ content: "\e056";
+}
+
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+
+.glyphicon-picture:before {
+ content: "\e060";
+}
+
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+
+.glyphicon-tint:before {
+ content: "\e064";
+}
+
+.glyphicon-edit:before {
+ content: "\e065";
+}
+
+.glyphicon-share:before {
+ content: "\e066";
+}
+
+.glyphicon-check:before {
+ content: "\e067";
+}
+
+.glyphicon-move:before {
+ content: "\e068";
+}
+
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+
+.glyphicon-backward:before {
+ content: "\e071";
+}
+
+.glyphicon-play:before {
+ content: "\e072";
+}
+
+.glyphicon-pause:before {
+ content: "\e073";
+}
+
+.glyphicon-stop:before {
+ content: "\e074";
+}
+
+.glyphicon-forward:before {
+ content: "\e075";
+}
+
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+
+.glyphicon-eject:before {
+ content: "\e078";
+}
+
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+
+.glyphicon-gift:before {
+ content: "\e102";
+}
+
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+
+.glyphicon-plane:before {
+ content: "\e108";
+}
+
+.glyphicon-random:before {
+ content: "\e110";
+}
+
+.glyphicon-comment:before {
+ content: "\e111";
+}
+
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+
+.glyphicon-globe:before {
+ content: "\e135";
+}
+
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+
+.glyphicon-filter:before {
+ content: "\e138";
+}
+
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+
+.glyphicon-link:before {
+ content: "\e144";
+}
+
+.glyphicon-phone:before {
+ content: "\e145";
+}
+
+.glyphicon-usd:before {
+ content: "\e148";
+}
+
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+
+.glyphicon-sort:before {
+ content: "\e150";
+}
+
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+
+.glyphicon-expand:before {
+ content: "\e158";
+}
+
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+
+.glyphicon-flash:before {
+ content: "\e162";
+}
+
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+
+.glyphicon-record:before {
+ content: "\e165";
+}
+
+.glyphicon-save:before {
+ content: "\e166";
+}
+
+.glyphicon-open:before {
+ content: "\e167";
+}
+
+.glyphicon-saved:before {
+ content: "\e168";
+}
+
+.glyphicon-import:before {
+ content: "\e169";
+}
+
+.glyphicon-export:before {
+ content: "\e170";
+}
+
+.glyphicon-send:before {
+ content: "\e171";
+}
+
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+
+.glyphicon-header:before {
+ content: "\e180";
+}
+
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+
+.glyphicon-tower:before {
+ content: "\e184";
+}
+
+.glyphicon-stats:before {
+ content: "\e185";
+}
+
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+
+.glyphicon-briefcase:before {
+ content: "\1f4bc";
+}
+
+.glyphicon-calendar:before {
+ content: "\1f4c5";
+}
+
+.glyphicon-pushpin:before {
+ content: "\1f4cc";
+}
+
+.glyphicon-paperclip:before {
+ content: "\1f4ce";
+}
+
+.glyphicon-camera:before {
+ content: "\1f4f7";
+}
+
+.glyphicon-lock:before {
+ content: "\1f512";
+}
+
+.glyphicon-bell:before {
+ content: "\1f514";
+}
+
+.glyphicon-bookmark:before {
+ content: "\1f516";
+}
+
+.glyphicon-fire:before {
+ content: "\1f525";
+}
+
+.glyphicon-wrench:before {
+ content: "\1f527";
+}
+
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px solid #000000;
+ border-right: 4px solid transparent;
+ border-bottom: 0 dotted;
+ border-left: 4px solid transparent;
+ content: "";
+}
+
+.dropdown {
+ position: relative;
+}
+
+.dropdown-toggle:focus {
+ outline: 0;
+}
+
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ font-size: 14px;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+}
+
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.428571429;
+ color: #333333;
+ white-space: nowrap;
+}
+
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #428bca;
+}
+
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #428bca;
+ outline: 0;
+}
+
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #999999;
+}
+
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.open > .dropdown-menu {
+ display: block;
+}
+
+.open > a {
+ outline: 0;
+}
+
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 12px;
+ line-height: 1.428571429;
+ color: #999999;
+}
+
+.dropdown-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 990;
+}
+
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0 dotted;
+ border-bottom: 4px solid #000000;
+ content: "";
+}
+
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ right: 0;
+ left: auto;
+ }
+}
+
+.btn-default .caret {
+ border-top-color: #333333;
+}
+
+.btn-primary .caret,
+.btn-success .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret {
+ border-top-color: #fff;
+}
+
+.dropup .btn-default .caret {
+ border-bottom-color: #333333;
+}
+
+.dropup .btn-primary .caret,
+.dropup .btn-success .caret,
+.dropup .btn-warning .caret,
+.dropup .btn-danger .caret,
+.dropup .btn-info .caret {
+ border-bottom-color: #fff;
+}
+
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus {
+ outline: none;
+}
+
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+
+.btn-toolbar:before,
+.btn-toolbar:after {
+ display: table;
+ content: " ";
+}
+
+.btn-toolbar:after {
+ clear: both;
+}
+
+.btn-toolbar:before,
+.btn-toolbar:after {
+ display: table;
+ content: " ";
+}
+
+.btn-toolbar:after {
+ clear: both;
+}
+
+.btn-toolbar .btn-group {
+ float: left;
+}
+
+.btn-toolbar > .btn + .btn,
+.btn-toolbar > .btn-group + .btn,
+.btn-toolbar > .btn + .btn-group,
+.btn-toolbar > .btn-group + .btn-group {
+ margin-left: 5px;
+}
+
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.btn-group > .btn-group {
+ float: left;
+}
+
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+
+.btn-group > .btn-group:first-child > .btn:last-child,
+.btn-group > .btn-group:first-child > .dropdown-toggle {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.btn-group > .btn-group:last-child > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+
+.btn-group-xs > .btn {
+ padding: 5px 10px;
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+.btn-group-lg > .btn {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
+}
+
+.btn-group > .btn + .dropdown-toggle {
+ padding-right: 8px;
+ padding-left: 8px;
+}
+
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-right: 12px;
+ padding-left: 12px;
+}
+
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn .caret {
+ margin-left: 0;
+}
+
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+ border-bottom-width: 0;
+}
+
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after {
+ display: table;
+ content: " ";
+}
+
+.btn-group-vertical > .btn-group:after {
+ clear: both;
+}
+
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after {
+ display: table;
+ content: " ";
+}
+
+.btn-group-vertical > .btn-group:after {
+ clear: both;
+}
+
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-top-right-radius: 0;
+ border-bottom-left-radius: 4px;
+ border-top-left-radius: 0;
+}
+
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+
+.btn-group-vertical > .btn-group:first-child > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group-vertical > .btn-group:last-child > .btn:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ border-collapse: separate;
+ table-layout: fixed;
+}
+
+.btn-group-justified .btn {
+ display: table-cell;
+ float: none;
+ width: 1%;
+}
+
+[data-toggle="buttons"] > .btn > input[type="radio"],
+[data-toggle="buttons"] > .btn > input[type="checkbox"] {
+ display: none;
+}
+
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+
+.input-group.col {
+ float: none;
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.input-group .form-control {
+ width: 100%;
+ margin-bottom: 0;
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 45px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
+}
+
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 45px;
+ line-height: 45px;
+}
+
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ line-height: 30px;
+}
+
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.input-group-addon {
+ padding: 6px 12px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1;
+ text-align: center;
+ background-color: #eeeeee;
+ border: 1px solid #cccccc;
+ border-radius: 4px;
+}
+
+.input-group-addon.input-sm {
+ padding: 5px 10px;
+ font-size: 12px;
+ border-radius: 3px;
+}
+
+.input-group-addon.input-lg {
+ padding: 10px 16px;
+ font-size: 18px;
+ border-radius: 6px;
+}
+
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.input-group-addon:first-child {
+ border-right: 0;
+}
+
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.input-group-addon:last-child {
+ border-left: 0;
+}
+
+.input-group-btn {
+ position: relative;
+ white-space: nowrap;
+}
+
+.input-group-btn > .btn {
+ position: relative;
+}
+
+.input-group-btn > .btn + .btn {
+ margin-left: -4px;
+}
+
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+
+.nav {
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.nav:before,
+.nav:after {
+ display: table;
+ content: " ";
+}
+
+.nav:after {
+ clear: both;
+}
+
+.nav:before,
+.nav:after {
+ display: table;
+ content: " ";
+}
+
+.nav:after {
+ clear: both;
+}
+
+.nav > li {
+ position: relative;
+ display: block;
+}
+
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+
+.nav > li.disabled > a {
+ color: #999999;
+}
+
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #999999;
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+}
+
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eeeeee;
+ border-color: #428bca;
+}
+
+.nav .nav-divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+
+.nav > li > a > img {
+ max-width: none;
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #dddddd;
+}
+
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.428571429;
+ border: 1px solid transparent;
+ border-radius: 4px 4px 0 0;
+}
+
+.nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #dddddd;
+}
+
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #555555;
+ cursor: default;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-bottom-color: transparent;
+}
+
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+
+.nav-tabs.nav-justified > li > a {
+ text-align: center;
+}
+
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+}
+
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-bottom: 1px solid #dddddd;
+}
+
+.nav-tabs.nav-justified > .active > a {
+ border-bottom-color: #ffffff;
+}
+
+.nav-pills > li {
+ float: left;
+}
+
+.nav-pills > li > a {
+ border-radius: 5px;
+}
+
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #ffffff;
+ background-color: #428bca;
+}
+
+.nav-stacked > li {
+ float: none;
+}
+
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+
+.nav-justified {
+ width: 100%;
+}
+
+.nav-justified > li {
+ float: none;
+}
+
+.nav-justified > li > a {
+ text-align: center;
+}
+
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+}
+
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-bottom: 1px solid #dddddd;
+}
+
+.nav-tabs-justified > .active > a {
+ border-bottom-color: #ffffff;
+}
+
+.tabbable:before,
+.tabbable:after {
+ display: table;
+ content: " ";
+}
+
+.tabbable:after {
+ clear: both;
+}
+
+.tabbable:before,
+.tabbable:after {
+ display: table;
+ content: " ";
+}
+
+.tabbable:after {
+ clear: both;
+}
+
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+ display: none;
+}
+
+.tab-content > .active,
+.pill-content > .active {
+ display: block;
+}
+
+.nav .caret {
+ border-top-color: #428bca;
+ border-bottom-color: #428bca;
+}
+
+.nav a:hover .caret {
+ border-top-color: #2a6496;
+ border-bottom-color: #2a6496;
+}
+
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.navbar {
+ position: relative;
+ z-index: 1000;
+ min-height: 50px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+
+.navbar:before,
+.navbar:after {
+ display: table;
+ content: " ";
+}
+
+.navbar:after {
+ clear: both;
+}
+
+.navbar:before,
+.navbar:after {
+ display: table;
+ content: " ";
+}
+
+.navbar:after {
+ clear: both;
+}
+
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 4px;
+ }
+}
+
+.navbar-header:before,
+.navbar-header:after {
+ display: table;
+ content: " ";
+}
+
+.navbar-header:after {
+ clear: both;
+}
+
+.navbar-header:before,
+.navbar-header:after {
+ display: table;
+ content: " ";
+}
+
+.navbar-header:after {
+ clear: both;
+}
+
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+
+.navbar-collapse {
+ max-height: 340px;
+ padding-right: 15px;
+ padding-left: 15px;
+ overflow-x: visible;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-overflow-scrolling: touch;
+}
+
+.navbar-collapse:before,
+.navbar-collapse:after {
+ display: table;
+ content: " ";
+}
+
+.navbar-collapse:after {
+ clear: both;
+}
+
+.navbar-collapse:before,
+.navbar-collapse:after {
+ display: table;
+ content: " ";
+}
+
+.navbar-collapse:after {
+ clear: both;
+}
+
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-collapse .navbar-nav.navbar-left:first-child {
+ margin-left: -15px;
+ }
+ .navbar-collapse .navbar-nav.navbar-right:last-child {
+ margin-right: -15px;
+ }
+ .navbar-collapse .navbar-text:last-child {
+ margin-right: 0;
+ }
+}
+
+.container > .navbar-header,
+.container > .navbar-collapse {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+
+.navbar-static-top {
+ border-width: 0 0 1px;
+}
+
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ border-width: 0 0 1px;
+}
+
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+
+.navbar-fixed-top {
+ top: 0;
+ z-index: 1030;
+}
+
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+}
+
+.navbar-brand {
+ float: left;
+ padding: 15px 15px;
+ font-size: 18px;
+ line-height: 20px;
+}
+
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand {
+ margin-left: -15px;
+ }
+}
+
+.navbar-toggle {
+ position: relative;
+ float: right;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-right: 15px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+
+.navbar-nav {
+ margin: 7.5px -15px;
+}
+
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+}
+
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ }
+ .navbar-right {
+ float: right !important;
+ }
+}
+
+.navbar-form {
+ padding: 10px 15px;
+ margin-top: 8px;
+ margin-right: -15px;
+ margin-bottom: 8px;
+ margin-left: -15px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+}
+
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ padding-left: 0;
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ float: none;
+ margin-left: 0;
+ }
+}
+
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+}
+
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-right: 0;
+ margin-left: 0;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.navbar-nav.pull-right > li > .dropdown-menu,
+.navbar-nav > li > .dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+
+.navbar-btn {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+.navbar-text {
+ float: left;
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+
+@media (min-width: 768px) {
+ .navbar-text {
+ margin-right: 15px;
+ margin-left: 15px;
+ }
+}
+
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+
+.navbar-default .navbar-brand {
+ color: #777777;
+}
+
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+
+.navbar-default .navbar-text {
+ color: #777777;
+}
+
+.navbar-default .navbar-nav > li > a {
+ color: #777777;
+}
+
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+}
+
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+}
+
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+}
+
+.navbar-default .navbar-toggle {
+ border-color: #dddddd;
+}
+
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #dddddd;
+}
+
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #cccccc;
+}
+
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e6e6e6;
+}
+
+.navbar-default .navbar-nav > .dropdown > a:hover .caret,
+.navbar-default .navbar-nav > .dropdown > a:focus .caret {
+ border-top-color: #333333;
+ border-bottom-color: #333333;
+}
+
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+}
+
+.navbar-default .navbar-nav > .open > a .caret,
+.navbar-default .navbar-nav > .open > a:hover .caret,
+.navbar-default .navbar-nav > .open > a:focus .caret {
+ border-top-color: #555555;
+ border-bottom-color: #555555;
+}
+
+.navbar-default .navbar-nav > .dropdown > a .caret {
+ border-top-color: #777777;
+ border-bottom-color: #777777;
+}
+
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+ }
+}
+
+.navbar-default .navbar-link {
+ color: #777777;
+}
+
+.navbar-default .navbar-link:hover {
+ color: #333333;
+}
+
+.navbar-inverse {
+ background-color: #222222;
+ border-color: #080808;
+}
+
+.navbar-inverse .navbar-brand {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+
+.navbar-inverse .navbar-text {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-nav > li > a {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+}
+
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+}
+
+.navbar-inverse .navbar-toggle {
+ border-color: #333333;
+}
+
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333333;
+}
+
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+}
+
+.navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+
+.navbar-inverse .navbar-nav > .dropdown > a .caret {
+ border-top-color: #999999;
+ border-bottom-color: #999999;
+}
+
+.navbar-inverse .navbar-nav > .open > a .caret,
+.navbar-inverse .navbar-nav > .open > a:hover .caret,
+.navbar-inverse .navbar-nav > .open > a:focus .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #999999;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+ }
+}
+
+.navbar-inverse .navbar-link {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
+}
+
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+}
+
+.breadcrumb > li {
+ display: inline-block;
+}
+
+.breadcrumb > li + li:before {
+ padding: 0 5px;
+ color: #cccccc;
+ content: "/\00a0";
+}
+
+.breadcrumb > .active {
+ color: #999999;
+}
+
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 4px;
+}
+
+.pagination > li {
+ display: inline;
+}
+
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ margin-left: -1px;
+ line-height: 1.428571429;
+ text-decoration: none;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+}
+
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-bottom-left-radius: 4px;
+ border-top-left-radius: 4px;
+}
+
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ background-color: #eeeeee;
+}
+
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #ffffff;
+ cursor: default;
+ background-color: #428bca;
+ border-color: #428bca;
+}
+
+.pagination > .disabled > span,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #999999;
+ cursor: not-allowed;
+ background-color: #ffffff;
+ border-color: #dddddd;
+}
+
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 10px 16px;
+ font-size: 18px;
+}
+
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 6px;
+ border-top-left-radius: 6px;
+}
+
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+}
+
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 5px 10px;
+ font-size: 12px;
+}
+
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ text-align: center;
+ list-style: none;
+}
+
+.pager:before,
+.pager:after {
+ display: table;
+ content: " ";
+}
+
+.pager:after {
+ clear: both;
+}
+
+.pager:before,
+.pager:after {
+ display: table;
+ content: " ";
+}
+
+.pager:after {
+ clear: both;
+}
+
+.pager li {
+ display: inline;
+}
+
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 15px;
+}
+
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #999999;
+ cursor: not-allowed;
+ background-color: #ffffff;
+}
+
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+
+.label[href]:hover,
+.label[href]:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.label:empty {
+ display: none;
+}
+
+.label-default {
+ background-color: #999999;
+}
+
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #808080;
+}
+
+.label-primary {
+ background-color: #428bca;
+}
+
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #3071a9;
+}
+
+.label-success {
+ background-color: #5cb85c;
+}
+
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #449d44;
+}
+
+.label-info {
+ background-color: #5bc0de;
+}
+
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #31b0d5;
+}
+
+.label-warning {
+ background-color: #f0ad4e;
+}
+
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #ec971f;
+}
+
+.label-danger {
+ background-color: #d9534f;
+}
+
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #c9302c;
+}
+
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 12px;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ background-color: #999999;
+ border-radius: 10px;
+}
+
+.badge:empty {
+ display: none;
+}
+
+a.badge:hover,
+a.badge:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+
+a.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #428bca;
+ background-color: #ffffff;
+}
+
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+
+.jumbotron {
+ padding: 30px;
+ margin-bottom: 30px;
+ font-size: 21px;
+ font-weight: 200;
+ line-height: 2.1428571435;
+ color: inherit;
+ background-color: #eeeeee;
+}
+
+.jumbotron h1 {
+ line-height: 1;
+ color: inherit;
+}
+
+.jumbotron p {
+ line-height: 1.4;
+}
+
+.container .jumbotron {
+ border-radius: 6px;
+}
+
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding-top: 48px;
+ padding-bottom: 48px;
+ }
+ .container .jumbotron {
+ padding-right: 60px;
+ padding-left: 60px;
+ }
+ .jumbotron h1 {
+ font-size: 63px;
+ }
+}
+
+.thumbnail {
+ display: inline-block;
+ display: block;
+ height: auto;
+ max-width: 100%;
+ padding: 4px;
+ line-height: 1.428571429;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 4px;
+ -webkit-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+
+.thumbnail > img {
+ display: block;
+ height: auto;
+ max-width: 100%;
+}
+
+a.thumbnail:hover,
+a.thumbnail:focus {
+ border-color: #428bca;
+}
+
+.thumbnail > img {
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.thumbnail .caption {
+ padding: 9px;
+ color: #333333;
+}
+
+.alert {
+ padding: 15px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+
+.alert .alert-link {
+ font-weight: bold;
+}
+
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
+}
+
+.alert > p + p {
+ margin-top: 5px;
+}
+
+.alert-dismissable {
+ padding-right: 35px;
+}
+
+.alert-dismissable .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+
+.alert-success {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.alert-success hr {
+ border-top-color: #c9e2b3;
+}
+
+.alert-success .alert-link {
+ color: #356635;
+}
+
+.alert-info {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
+.alert-info hr {
+ border-top-color: #a6e1ec;
+}
+
+.alert-info .alert-link {
+ color: #2d6987;
+}
+
+.alert-warning {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #fbeed5;
+}
+
+.alert-warning hr {
+ border-top-color: #f8e5be;
+}
+
+.alert-warning .alert-link {
+ color: #a47e3c;
+}
+
+.alert-danger {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.alert-danger hr {
+ border-top-color: #e6c1c7;
+}
+
+.alert-danger .alert-link {
+ color: #953b39;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-moz-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+.progress {
+ height: 20px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+
+.progress-bar {
+ float: left;
+ width: 0;
+ height: 100%;
+ font-size: 12px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #428bca;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+
+.progress-striped .progress-bar {
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 40px 40px;
+}
+
+.progress.active .progress-bar {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+
+.progress-bar-success {
+ background-color: #5cb85c;
+}
+
+.progress-striped .progress-bar-success {
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+
+.progress-striped .progress-bar-info {
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.media,
+.media-body {
+ overflow: hidden;
+ zoom: 1;
+}
+
+.media,
+.media .media {
+ margin-top: 15px;
+}
+
+.media:first-child {
+ margin-top: 0;
+}
+
+.media-object {
+ display: block;
+}
+
+.media-heading {
+ margin: 0 0 5px;
+}
+
+.media > .pull-left {
+ margin-right: 10px;
+}
+
+.media > .pull-right {
+ margin-left: 10px;
+}
+
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-group {
+ padding-left: 0;
+ margin-bottom: 20px;
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+}
+
+.list-group-item:first-child {
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+}
+
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+
+.list-group-item > .badge {
+ float: right;
+}
+
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+
+a.list-group-item {
+ color: #555555;
+}
+
+a.list-group-item .list-group-item-heading {
+ color: #333333;
+}
+
+a.list-group-item:hover,
+a.list-group-item:focus {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #428bca;
+}
+
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading {
+ color: inherit;
+}
+
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #e1edf7;
+}
+
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+
+.panel {
+ margin-bottom: 20px;
+ background-color: #ffffff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.panel-body {
+ padding: 15px;
+}
+
+.panel-body:before,
+.panel-body:after {
+ display: table;
+ content: " ";
+}
+
+.panel-body:after {
+ clear: both;
+}
+
+.panel-body:before,
+.panel-body:after {
+ display: table;
+ content: " ";
+}
+
+.panel-body:after {
+ clear: both;
+}
+
+.panel > .list-group {
+ margin-bottom: 0;
+}
+
+.panel > .list-group .list-group-item {
+ border-width: 1px 0;
+}
+
+.panel > .list-group .list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.panel > .list-group .list-group-item:last-child {
+ border-bottom: 0;
+}
+
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+
+.panel > .table {
+ margin-bottom: 0;
+}
+
+.panel > .panel-body + .table {
+ border-top: 1px solid #dddddd;
+}
+
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 16px;
+}
+
+.panel-title > a {
+ color: inherit;
+}
+
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #dddddd;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.panel-group .panel {
+ margin-bottom: 0;
+ overflow: hidden;
+ border-radius: 4px;
+}
+
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+
+.panel-group .panel-heading + .panel-collapse .panel-body {
+ border-top: 1px solid #dddddd;
+}
+
+.panel-group .panel-footer {
+ border-top: 0;
+}
+
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #dddddd;
+}
+
+.panel-default {
+ border-color: #dddddd;
+}
+
+.panel-default > .panel-heading {
+ color: #333333;
+ background-color: #f5f5f5;
+ border-color: #dddddd;
+}
+
+.panel-default > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #dddddd;
+}
+
+.panel-default > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #dddddd;
+}
+
+.panel-primary {
+ border-color: #428bca;
+}
+
+.panel-primary > .panel-heading {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #428bca;
+}
+
+.panel-primary > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #428bca;
+}
+
+.panel-primary > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #428bca;
+}
+
+.panel-success {
+ border-color: #d6e9c6;
+}
+
+.panel-success > .panel-heading {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.panel-success > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #d6e9c6;
+}
+
+.panel-success > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #d6e9c6;
+}
+
+.panel-warning {
+ border-color: #fbeed5;
+}
+
+.panel-warning > .panel-heading {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #fbeed5;
+}
+
+.panel-warning > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #fbeed5;
+}
+
+.panel-warning > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #fbeed5;
+}
+
+.panel-danger {
+ border-color: #eed3d7;
+}
+
+.panel-danger > .panel-heading {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.panel-danger > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #eed3d7;
+}
+
+.panel-danger > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #eed3d7;
+}
+
+.panel-info {
+ border-color: #bce8f1;
+}
+
+.panel-info > .panel-heading {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
+.panel-info > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #bce8f1;
+}
+
+.panel-info > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #bce8f1;
+}
+
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+
+.well-lg {
+ padding: 24px;
+ border-radius: 6px;
+}
+
+.well-sm {
+ padding: 9px;
+ border-radius: 3px;
+}
+
+.close {
+ float: right;
+ font-size: 21px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+
+.close:hover,
+.close:focus {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+
+.modal-open {
+ overflow: hidden;
+}
+
+body.modal-open,
+.modal-open .navbar-fixed-top,
+.modal-open .navbar-fixed-bottom {
+ margin-right: 15px;
+}
+
+.modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ display: none;
+ overflow: auto;
+ overflow-y: scroll;
+}
+
+.modal.fade .modal-dialog {
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+ -webkit-transition: -webkit-transform 0.3s ease-out;
+ -moz-transition: -moz-transform 0.3s ease-out;
+ -o-transition: -o-transform 0.3s ease-out;
+ transition: transform 0.3s ease-out;
+}
+
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+
+.modal-dialog {
+ z-index: 1050;
+ width: auto;
+ padding: 10px;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.modal-content {
+ position: relative;
+ background-color: #ffffff;
+ border: 1px solid #999999;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ outline: none;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ background-clip: padding-box;
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030;
+ background-color: #000000;
+}
+
+.modal-backdrop.fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+
+.modal-backdrop.in {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+
+.modal-header {
+ min-height: 16.428571429px;
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+.modal-header .close {
+ margin-top: -2px;
+}
+
+.modal-title {
+ margin: 0;
+ line-height: 1.428571429;
+}
+
+.modal-body {
+ position: relative;
+ padding: 20px;
+}
+
+.modal-footer {
+ padding: 19px 20px 20px;
+ margin-top: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ content: " ";
+}
+
+.modal-footer:after {
+ clear: both;
+}
+
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ content: " ";
+}
+
+.modal-footer:after {
+ clear: both;
+}
+
+.modal-footer .btn + .btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+
+@media screen and (min-width: 768px) {
+ .modal-dialog {
+ right: auto;
+ left: 50%;
+ width: 600px;
+ padding-top: 30px;
+ padding-bottom: 30px;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ }
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1030;
+ display: block;
+ font-size: 12px;
+ line-height: 1.4;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ visibility: visible;
+}
+
+.tooltip.in {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+
+.tooltip.top {
+ padding: 5px 0;
+ margin-top: -3px;
+}
+
+.tooltip.right {
+ padding: 0 5px;
+ margin-left: 3px;
+}
+
+.tooltip.bottom {
+ padding: 5px 0;
+ margin-top: 3px;
+}
+
+.tooltip.left {
+ padding: 0 5px;
+ margin-left: -3px;
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ border-radius: 4px;
+}
+
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-top-color: #000000;
+ border-width: 5px 5px 0;
+}
+
+.tooltip.top-left .tooltip-arrow {
+ bottom: 0;
+ left: 5px;
+ border-top-color: #000000;
+ border-width: 5px 5px 0;
+}
+
+.tooltip.top-right .tooltip-arrow {
+ right: 5px;
+ bottom: 0;
+ border-top-color: #000000;
+ border-width: 5px 5px 0;
+}
+
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-right-color: #000000;
+ border-width: 5px 5px 5px 0;
+}
+
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-left-color: #000000;
+ border-width: 5px 0 5px 5px;
+}
+
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-bottom-color: #000000;
+ border-width: 0 5px 5px;
+}
+
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ left: 5px;
+ border-bottom-color: #000000;
+ border-width: 0 5px 5px;
+}
+
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ right: 5px;
+ border-bottom-color: #000000;
+ border-width: 0 5px 5px;
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ text-align: left;
+ white-space: normal;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ background-clip: padding-box;
+}
+
+.popover.top {
+ margin-top: -10px;
+}
+
+.popover.right {
+ margin-left: 10px;
+}
+
+.popover.bottom {
+ margin-top: 10px;
+}
+
+.popover.left {
+ margin-left: -10px;
+}
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 18px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
+}
+
+.popover-content {
+ padding: 9px 14px;
+}
+
+.popover .arrow,
+.popover .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.popover .arrow {
+ border-width: 11px;
+}
+
+.popover .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+
+.popover.top .arrow {
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-color: #999999;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ border-bottom-width: 0;
+}
+
+.popover.top .arrow:after {
+ bottom: 1px;
+ margin-left: -10px;
+ border-top-color: #ffffff;
+ border-bottom-width: 0;
+ content: " ";
+}
+
+.popover.right .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-right-color: #999999;
+ border-right-color: rgba(0, 0, 0, 0.25);
+ border-left-width: 0;
+}
+
+.popover.right .arrow:after {
+ bottom: -10px;
+ left: 1px;
+ border-right-color: #ffffff;
+ border-left-width: 0;
+ content: " ";
+}
+
+.popover.bottom .arrow {
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-color: #999999;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ border-top-width: 0;
+}
+
+.popover.bottom .arrow:after {
+ top: 1px;
+ margin-left: -10px;
+ border-bottom-color: #ffffff;
+ border-top-width: 0;
+ content: " ";
+}
+
+.popover.left .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-left-color: #999999;
+ border-left-color: rgba(0, 0, 0, 0.25);
+ border-right-width: 0;
+}
+
+.popover.left .arrow:after {
+ right: 1px;
+ bottom: -10px;
+ border-left-color: #ffffff;
+ border-right-width: 0;
+ content: " ";
+}
+
+.carousel {
+ position: relative;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+
+.carousel-inner > .item {
+ position: relative;
+ display: none;
+ -webkit-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ height: auto;
+ max-width: 100%;
+ line-height: 1;
+}
+
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+
+.carousel-inner > .active {
+ left: 0;
+}
+
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+
+.carousel-inner > .next {
+ left: 100%;
+}
+
+.carousel-inner > .prev {
+ left: -100%;
+}
+
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+
+.carousel-inner > .active.left {
+ left: -100%;
+}
+
+.carousel-inner > .active.right {
+ left: 100%;
+}
+
+.carousel-control {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 15%;
+ font-size: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+
+.carousel-control.left {
+ background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
+ background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%));
+ background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+
+.carousel-control.right {
+ right: 0;
+ left: auto;
+ background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
+ background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%));
+ background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+
+.carousel-control:hover,
+.carousel-control:focus {
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ z-index: 5;
+ display: inline-block;
+}
+
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ margin-left: -10px;
+ font-family: serif;
+}
+
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ padding-left: 0;
+ margin-left: -30%;
+ text-align: center;
+ list-style: none;
+}
+
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ cursor: pointer;
+ border: 1px solid #ffffff;
+ border-radius: 10px;
+}
+
+.carousel-indicators .active {
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ background-color: #ffffff;
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 20px;
+ left: 15%;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+
+.carousel-caption .btn {
+ text-shadow: none;
+}
+
+@media screen and (min-width: 768px) {
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ margin-left: -15px;
+ font-size: 30px;
+ }
+ .carousel-caption {
+ right: 20%;
+ left: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ content: " ";
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+.pull-right {
+ float: right !important;
+}
+
+.pull-left {
+ float: left !important;
+}
+
+.hide {
+ display: none !important;
+}
+
+.show {
+ display: block !important;
+}
+
+.invisible {
+ visibility: hidden;
+}
+
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.affix {
+ position: fixed;
+}
+
+@-ms-viewport {
+ width: device-width;
+}
+
+@media screen and (max-width: 400px) {
+ @-ms-viewport {
+ width: 320px;
+ }
+}
+
+.hidden {
+ display: none !important;
+ visibility: hidden !important;
+}
+
+.visible-xs {
+ display: none !important;
+}
+
+tr.visible-xs {
+ display: none !important;
+}
+
+th.visible-xs,
+td.visible-xs {
+ display: none !important;
+}
+
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-xs.visible-sm {
+ display: block !important;
+ }
+ tr.visible-xs.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-xs.visible-sm,
+ td.visible-xs.visible-sm {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-xs.visible-md {
+ display: block !important;
+ }
+ tr.visible-xs.visible-md {
+ display: table-row !important;
+ }
+ th.visible-xs.visible-md,
+ td.visible-xs.visible-md {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .visible-xs.visible-lg {
+ display: block !important;
+ }
+ tr.visible-xs.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-xs.visible-lg,
+ td.visible-xs.visible-lg {
+ display: table-cell !important;
+ }
+}
+
+.visible-sm {
+ display: none !important;
+}
+
+tr.visible-sm {
+ display: none !important;
+}
+
+th.visible-sm,
+td.visible-sm {
+ display: none !important;
+}
+
+@media (max-width: 767px) {
+ .visible-sm.visible-xs {
+ display: block !important;
+ }
+ tr.visible-sm.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-sm.visible-xs,
+ td.visible-sm.visible-xs {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-sm.visible-md {
+ display: block !important;
+ }
+ tr.visible-sm.visible-md {
+ display: table-row !important;
+ }
+ th.visible-sm.visible-md,
+ td.visible-sm.visible-md {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .visible-sm.visible-lg {
+ display: block !important;
+ }
+ tr.visible-sm.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-sm.visible-lg,
+ td.visible-sm.visible-lg {
+ display: table-cell !important;
+ }
+}
+
+.visible-md {
+ display: none !important;
+}
+
+tr.visible-md {
+ display: none !important;
+}
+
+th.visible-md,
+td.visible-md {
+ display: none !important;
+}
+
+@media (max-width: 767px) {
+ .visible-md.visible-xs {
+ display: block !important;
+ }
+ tr.visible-md.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-md.visible-xs,
+ td.visible-md.visible-xs {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-md.visible-sm {
+ display: block !important;
+ }
+ tr.visible-md.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-md.visible-sm,
+ td.visible-md.visible-sm {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .visible-md.visible-lg {
+ display: block !important;
+ }
+ tr.visible-md.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-md.visible-lg,
+ td.visible-md.visible-lg {
+ display: table-cell !important;
+ }
+}
+
+.visible-lg {
+ display: none !important;
+}
+
+tr.visible-lg {
+ display: none !important;
+}
+
+th.visible-lg,
+td.visible-lg {
+ display: none !important;
+}
+
+@media (max-width: 767px) {
+ .visible-lg.visible-xs {
+ display: block !important;
+ }
+ tr.visible-lg.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-lg.visible-xs,
+ td.visible-lg.visible-xs {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-lg.visible-sm {
+ display: block !important;
+ }
+ tr.visible-lg.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-lg.visible-sm,
+ td.visible-lg.visible-sm {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-lg.visible-md {
+ display: block !important;
+ }
+ tr.visible-lg.visible-md {
+ display: table-row !important;
+ }
+ th.visible-lg.visible-md,
+ td.visible-lg.visible-md {
+ display: table-cell !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+
+.hidden-xs {
+ display: block !important;
+}
+
+tr.hidden-xs {
+ display: table-row !important;
+}
+
+th.hidden-xs,
+td.hidden-xs {
+ display: table-cell !important;
+}
+
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+ tr.hidden-xs {
+ display: none !important;
+ }
+ th.hidden-xs,
+ td.hidden-xs {
+ display: none !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-xs.hidden-sm {
+ display: none !important;
+ }
+ tr.hidden-xs.hidden-sm {
+ display: none !important;
+ }
+ th.hidden-xs.hidden-sm,
+ td.hidden-xs.hidden-sm {
+ display: none !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-xs.hidden-md {
+ display: none !important;
+ }
+ tr.hidden-xs.hidden-md {
+ display: none !important;
+ }
+ th.hidden-xs.hidden-md,
+ td.hidden-xs.hidden-md {
+ display: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .hidden-xs.hidden-lg {
+ display: none !important;
+ }
+ tr.hidden-xs.hidden-lg {
+ display: none !important;
+ }
+ th.hidden-xs.hidden-lg,
+ td.hidden-xs.hidden-lg {
+ display: none !important;
+ }
+}
+
+.hidden-sm {
+ display: block !important;
+}
+
+tr.hidden-sm {
+ display: table-row !important;
+}
+
+th.hidden-sm,
+td.hidden-sm {
+ display: table-cell !important;
+}
+
+@media (max-width: 767px) {
+ .hidden-sm.hidden-xs {
+ display: none !important;
+ }
+ tr.hidden-sm.hidden-xs {
+ display: none !important;
+ }
+ th.hidden-sm.hidden-xs,
+ td.hidden-sm.hidden-xs {
+ display: none !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+ tr.hidden-sm {
+ display: none !important;
+ }
+ th.hidden-sm,
+ td.hidden-sm {
+ display: none !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-sm.hidden-md {
+ display: none !important;
+ }
+ tr.hidden-sm.hidden-md {
+ display: none !important;
+ }
+ th.hidden-sm.hidden-md,
+ td.hidden-sm.hidden-md {
+ display: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .hidden-sm.hidden-lg {
+ display: none !important;
+ }
+ tr.hidden-sm.hidden-lg {
+ display: none !important;
+ }
+ th.hidden-sm.hidden-lg,
+ td.hidden-sm.hidden-lg {
+ display: none !important;
+ }
+}
+
+.hidden-md {
+ display: block !important;
+}
+
+tr.hidden-md {
+ display: table-row !important;
+}
+
+th.hidden-md,
+td.hidden-md {
+ display: table-cell !important;
+}
+
+@media (max-width: 767px) {
+ .hidden-md.hidden-xs {
+ display: none !important;
+ }
+ tr.hidden-md.hidden-xs {
+ display: none !important;
+ }
+ th.hidden-md.hidden-xs,
+ td.hidden-md.hidden-xs {
+ display: none !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-md.hidden-sm {
+ display: none !important;
+ }
+ tr.hidden-md.hidden-sm {
+ display: none !important;
+ }
+ th.hidden-md.hidden-sm,
+ td.hidden-md.hidden-sm {
+ display: none !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+ tr.hidden-md {
+ display: none !important;
+ }
+ th.hidden-md,
+ td.hidden-md {
+ display: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .hidden-md.hidden-lg {
+ display: none !important;
+ }
+ tr.hidden-md.hidden-lg {
+ display: none !important;
+ }
+ th.hidden-md.hidden-lg,
+ td.hidden-md.hidden-lg {
+ display: none !important;
+ }
+}
+
+.hidden-lg {
+ display: block !important;
+}
+
+tr.hidden-lg {
+ display: table-row !important;
+}
+
+th.hidden-lg,
+td.hidden-lg {
+ display: table-cell !important;
+}
+
+@media (max-width: 767px) {
+ .hidden-lg.hidden-xs {
+ display: none !important;
+ }
+ tr.hidden-lg.hidden-xs {
+ display: none !important;
+ }
+ th.hidden-lg.hidden-xs,
+ td.hidden-lg.hidden-xs {
+ display: none !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-lg.hidden-sm {
+ display: none !important;
+ }
+ tr.hidden-lg.hidden-sm {
+ display: none !important;
+ }
+ th.hidden-lg.hidden-sm,
+ td.hidden-lg.hidden-sm {
+ display: none !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-lg.hidden-md {
+ display: none !important;
+ }
+ tr.hidden-lg.hidden-md {
+ display: none !important;
+ }
+ th.hidden-lg.hidden-md,
+ td.hidden-lg.hidden-md {
+ display: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+ tr.hidden-lg {
+ display: none !important;
+ }
+ th.hidden-lg,
+ td.hidden-lg {
+ display: none !important;
+ }
+}
+
+.visible-print {
+ display: none !important;
+}
+
+tr.visible-print {
+ display: none !important;
+}
+
+th.visible-print,
+td.visible-print {
+ display: none !important;
+}
+
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+ .hidden-print {
+ display: none !important;
+ }
+ tr.hidden-print {
+ display: none !important;
+ }
+ th.hidden-print,
+ td.hidden-print {
+ display: none !important;
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Content/bootstrap.min.css b/qqjf-Background/WebApi_QQJF/Content/bootstrap.min.css
new file mode 100644
index 0000000..df89a50
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Content/bootstrap.min.css
@@ -0,0 +1,20 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. The notices and licenses below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+/*!
+ * Bootstrap v3.0.0
+ *
+ * Copyright 2013 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world by @mdo and @fat.
+ *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/AlertController.cs b/qqjf-Background/WebApi_QQJF/Controllers/AlertController.cs
new file mode 100644
index 0000000..58eaabc
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/AlertController.cs
@@ -0,0 +1,133 @@
+锘縰sing IWareDataAccess.Entity.Alert;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Alert;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class AlertController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private AlertWebEntity GetEntity()
+ {
+ AlertWebEntity model = new AlertWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("Alert/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Alert/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ AlertWebEntity model = new AlertWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchAlertView returnData = new ReturnSearchAlertView();
+ returnData.data = IWareDataAccess.Alert.ALERT.AlertSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Alert.ALERT.AlertSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Alert/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ AlertWebEntity model = new AlertWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Alert.ALERT.AlertSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Alert/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ AlertWebEntity model = new AlertWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Alert.ALERT.AlertSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ [HttpPost, Route("Alert/GetCode")]
+ public IHttpActionResult GetCode()
+ {
+ string msg = "";
+ AlertWebEntity model = new AlertWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ string result = IWareDataAccess.Alert.ALERT.AlertSqlFunc.GetCode();
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+ [HttpPost, Route("Alert/GetAllAlarmInfo")]
+ public IHttpActionResult GetAllAlarmInfo()
+ {
+ string msg = "";
+ AlertWebEntity model = new AlertWebEntity();
+ model = GetEntity();
+
+ var data = IWareDataAccess.Alert.ALERT.AlertSqlFunc.GetAllAlarmInfo(model);
+ //if (data.Count == 0)
+ //{
+ // IWareDataAccess.EF.View_ALERT_ALERT ob = new IWareDataAccess.EF.View_ALERT_ALERT();
+ // ob.id=1;
+ // ob.alertName="鏃犳晠闅�";
+ // ob.deviceName = "鍏ㄨ澶�";
+ // ob.alertDes = "鍏ㄨ澶�";
+ // ob.createTime = DateTime.Now;
+ // ob.finishTime=DateTime.Now;
+ // ob.totalTime=0;
+ // ob.alertCode="";
+ // data.Add(ob);
+ //}
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/CarController.cs b/qqjf-Background/WebApi_QQJF/Controllers/CarController.cs
new file mode 100644
index 0000000..7c7e4ac
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/CarController.cs
@@ -0,0 +1,93 @@
+锘縰sing IWareDataAccess.Entity.Car;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Car;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class CarController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private CarWebEntity GetEntity()
+ {
+ CarWebEntity model = new CarWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("Car/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Car/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ CarWebEntity model = new CarWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchCarView returnData = new ReturnSearchCarView();
+ returnData.data = IWareDataAccess.Car.CAR.CarSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Car.CAR.CarSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Car/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ CarWebEntity model = new CarWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Car.CAR.CarSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Car/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ CarWebEntity model = new CarWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Car.CAR.CarSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/CarTaskController.cs b/qqjf-Background/WebApi_QQJF/Controllers/CarTaskController.cs
new file mode 100644
index 0000000..ceac24a
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/CarTaskController.cs
@@ -0,0 +1,171 @@
+锘縰sing IWareDataAccess.Entity.Car;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Car;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class CarTaskController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private CarTaskWebEntity GetEntity()
+ {
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("CarTask/Search")]
+ public IHttpActionResult Search(int page, string type = null)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum, type);
+ }
+
+ [HttpPost, Route("CarTask/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum, string type = null)
+ {
+ string msg = "";
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchCarTaskView returnData = new ReturnSearchCarTaskView();
+ returnData.data = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.SearchView(model, page, onePageNum, type, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("CarTask/SearchNum")]
+ public IHttpActionResult SearchNum()
+ {
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ model = GetEntity();
+ int num = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.SearchViewNum(model);
+ return Json(num);
+ }
+
+ /// <summary>
+ /// 娣诲姞鍙夎溅浠诲姟
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("CarTask/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("CarTask/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ [HttpPost, Route("CarTask/GetCode")]
+ public IHttpActionResult GetCode()
+ {
+ string msg = "";
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ string result = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.GetCode();
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+ [HttpPost, Route("CarTask/GetCarUser")]
+ public IHttpActionResult GetCarUser()
+ {
+ string msg = "";
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.GetCarUser(out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍙夎溅棰嗗彇浠诲姟
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("CarTask/CarGetTask")]
+ public IHttpActionResult CarGetTask()
+ {
+ string msg = "";
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.CarGetTask(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+ /// <summary>
+ /// 瀹屾垚鍙夎溅棰嗗彇浠诲姟
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("CarTask/FinishCarTask")]
+ public IHttpActionResult FinishCarTask()
+ {
+ string msg = "";
+ CarTaskWebEntity model = new CarTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Car.CARTASK.CarTaskSqlFunc.CarGetTask(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/ContainerController.cs b/qqjf-Background/WebApi_QQJF/Controllers/ContainerController.cs
new file mode 100644
index 0000000..882275b
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/ContainerController.cs
@@ -0,0 +1,119 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class ContainerController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private ContainerWebEntity GetEntity()
+ {
+ ContainerWebEntity model = new ContainerWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("Container/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Container/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ ContainerWebEntity model = new ContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchContainerView returnData = new ReturnSearchContainerView();
+ returnData.data = IWareDataAccess.Base.CONTAINER.ContainerSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.CONTAINER.ContainerSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Container/GetAllContainer")]
+ public IHttpActionResult GetAllContainer()
+ {
+ string msg = "";
+ ContainerWebEntity model = new ContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ var data = IWareDataAccess.Base.CONTAINER.ContainerSqlFunc.SearchAllView(model, out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+ }
+
+ [HttpPost, Route("Container/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ ContainerWebEntity model = new ContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINER.ContainerSqlFunc.AddOrUpdate(model,out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Container/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ ContainerWebEntity model = new ContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINER.ContainerSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("Container/GetContainerType")]
+ public IHttpActionResult GetContainerType()
+ {
+ string msg = "";
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Base.CONTAINER.ContainerSqlFunc.GetContainerType(out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/ContainerVsItemController.cs b/qqjf-Background/WebApi_QQJF/Controllers/ContainerVsItemController.cs
new file mode 100644
index 0000000..d55eaad
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/ContainerVsItemController.cs
@@ -0,0 +1,347 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using Models.Input;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+using System.Web.Http.Results;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class ContainerVsItemController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private ContainerVsItemWebEntity GetEntity()
+ {
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private ContainerVsItemListWebEntity GetEntityList()
+ {
+ ContainerVsItemListWebEntity model = new ContainerVsItemListWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("ContainerVsItem/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("ContainerVsItem/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("ContainerVsItem/SearchPrint")]
+ public IHttpActionResult SearchPrint(int page, int onePageNum)
+ {
+ return SearchPrintFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchPrintFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchContainerVsItemViewPrint returnData = new ReturnSearchContainerVsItemViewPrint();
+
+ var f = GetFilter(model);
+
+ var data = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.SearchView(f, model, page, onePageNum, out msg);
+ List<View_BASE_CONTAINER_VS_ITEMPrint> cvi = new List<View_BASE_CONTAINER_VS_ITEMPrint>();
+ View_BASE_CONTAINER_VS_ITEMPrint c = new View_BASE_CONTAINER_VS_ITEMPrint();
+ foreach (var i in data)
+ {
+ if (c == null || string.IsNullOrEmpty(c.itemName))
+ {
+ c.createLine = i.createLine;
+ c.itemName = i.itemName;
+ c.itemType = i.itemType;
+ c.itemDes = i.itemDes;
+ c.itemNum = i.itemNum.ToString();
+ c.updateTime = i.updateTime;
+ }
+ else
+ {
+ c.itemName += "," + i.itemName;
+ c.itemType += "," + i.itemType;
+ c.itemNum += "," + i.itemNum;
+ c.itemDes += "," + i.itemDes;
+ }
+ }
+ cvi.Add(c);
+ returnData.data = cvi;
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.SearchViewNum(f, model, out msg);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ private static Expression<Func<View_BASE_CONTAINER_VS_ITEM, bool>> GetFilter(ContainerVsItemWebEntity webEntity)
+ {
+ var f = PredicateBuilder.GetFilterExpression<ContainerVsItemWebEntity, View_BASE_CONTAINER_VS_ITEM>(webEntity);
+ if (webEntity.isSearchNoRelevanceInOrder)
+ {//澶勭悊鏌ヨ 銆怑ditBy shaocx,2022-11-01銆�
+ var queryTime = DateTime.Now.AddDays(-7);
+ //var queryTime = DateTime.Now.AddDays(-2000);//鏆傛椂寤堕暱鏃堕棿锛屾柟渚挎祴璇曪紝妯℃嫙 銆怑ditBy shaocx,2022-11-2銆�
+ Expression<Func<View_BASE_CONTAINER_VS_ITEM, bool>> newExpress = a => a.updateTime >= queryTime && string.IsNullOrEmpty(a.inOrderCode);
+ f = f.And(newExpress);
+ }
+ return f;
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ var f = GetFilter(model);
+
+ ReturnSearchContainerVsItemView returnData = new ReturnSearchContainerVsItemView();
+ returnData.data = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.SearchView(f, model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.SearchViewNum(f, model, out msg);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("ContainerVsItem/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ try
+ {
+
+
+
+ string msg = "";
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.AddOrUpdate(model, out msg);
+
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+ catch (Exception ex)
+ {
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = 1;
+ returnData.msg = "鍑虹幇寮傚父:" + ex.Message;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+ }
+
+ /// <summary>
+ /// 鏂板缓鎴栨洿鏂扮粍鐩�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("ContainerVsItem/AddOrUpdateAll")]
+ public IHttpActionResult AddOrUpdateAll()
+ {
+ string msg = "";
+ ContainerVsItemListWebEntity model = new ContainerVsItemListWebEntity();
+ model = GetEntityList();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.AddOrUpdateAll(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+
+ [HttpPost, Route("ContainerVsItem/PrintContainerVsItem")]
+ public IHttpActionResult PrintContainerVsItem()
+ {
+ string msg = "";
+ ContainerVsItemListWebEntity model = new ContainerVsItemListWebEntity();
+ model = GetEntityList();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.PrintContainerVsItem(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+
+ [HttpPost, Route("ContainerVsItem/Update")]
+ public IHttpActionResult Update()
+ {
+ try
+ {
+ string msg = "";
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.Update(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ catch (Exception ex)
+ {
+
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = 1;
+ returnData.msg = "鍑虹幇寮傚父:" + ex.Message;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+ }
+
+ /// <summary>
+ /// 鍐插帇鐢熶骇璁″垝鍏宠仈缁勭洏鍏ュ簱a
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost, Route("ContainerVsItem/BindCviCode")]
+ public IHttpActionResult BindCviCode(UpdateCviCodeInput input)
+ {
+ string msg = "";
+
+ if (string.IsNullOrEmpty(input.cviCode))
+ {
+ return Json(ReturnResultAndMsg.Fail("鐢熶骇璁″垝鍗曞彿涓嶈兘涓虹┖!"));
+ }
+
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.BindCviCode(input, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("ContainerVsItem/DeleteAll")]
+ public IHttpActionResult DeleteAll()
+ {
+ string msg = "";
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.DeleteAll(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("ContainerVsItem/DeleteOne")]
+ public IHttpActionResult DeleteOne()
+ {
+
+
+ string msg = "";
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.DeleteOne(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("ContainerVsItem/GetCode")]
+ public IHttpActionResult GetCode()
+ {
+
+ ContainerVsItemWebEntity model = new ContainerVsItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ string result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.GetCode();
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+ [HttpPost, Route("ContainerVsItem/PdaPrint")]
+ public IHttpActionResult PdaPrint()//suffix鏄悗缂�鐨勬剰鎬濓紝鍙互鑷繁鍒ゆ柇锛屼篃鍙互鍓嶇浼犺緭
+ {
+ string msg = "";
+ ContainerVsItemListWebEntity model = new ContainerVsItemListWebEntity();
+ model = GetEntityList();
+ string path = HttpContext.Current.Request.MapPath("~/");//鑾峰彇浣犵殑鏍圭洰褰�
+ string result = IWareDataAccess.Base.CONTAINERVSITEM.ContainerVsItemSqlFunc.PdaPrintBtn(model, path, out msg);
+ return Json(result);
+
+ }
+
+ [HttpPost, Route("ContainerVsItem/UpLoadImageFiles")]
+ public IHttpActionResult UpLoadImageFiles()//suffix鏄悗缂�鐨勬剰鎬濓紝鍙互鑷繁鍒ゆ柇锛屼篃鍙互鍓嶇浼犺緭
+ {
+
+
+ var files = HttpContext.Current.Request.Files;//棣栧厛鍏堢‘瀹氳姹傞噷澶瑰甫鐨勬枃浠舵暟閲�
+ if (files.AllKeys.Any())//濡傛灉瀛樺湪鏂囦欢
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ var text = HttpContext.Current.Request.Files[0].InputStream;//鑾峰彇鍒版枃浠舵祦
+ string path = HttpContext.Current.Request.MapPath("~/");//鑾峰彇浣犵殑鏍圭洰褰�
+ HttpPostedFile pf = HttpContext.Current.Request.Files[0];
+ string datetime = Helper.GetTimeStamp();
+ string strPath = path + "Uplod\\" + datetime + ".PNG";//杩欓噷瑕佹敞鎰忕殑鏄厛瑕佸缓绔婩ile鏂囦欢澶癸紝涓嶇劧浼氭姤閿欙紝涔熷彲浠ヨ嚜宸卞啓涓�涓娴嬫枃浠跺す锛岃繖閲屽氨鍏堜笉璧樿堪
+ pf.SaveAs(strPath);
+ string url = @"Uplod\" + datetime + ".PNG";
+ // Helper.StreamToFile(text, strPath);//闇�瑕佺敤鍒颁笅涓�姝ョ殑甯姪绫诲皢鍏朵繚瀛樹负鏂囦欢
+ return Json(url);
+ }
+ }
+ return Json("鏃犳枃浠�");
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/DeptController.cs b/qqjf-Background/WebApi_QQJF/Controllers/DeptController.cs
new file mode 100644
index 0000000..32c3897
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/DeptController.cs
@@ -0,0 +1,104 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Sys;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class DeptController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private DeptWebEntity GetEntity()
+ {
+ DeptWebEntity model = new DeptWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ /// <summary>
+ /// 鎼滅储
+ /// </summary>
+ /// <param name="page"></param>
+ /// <param name="onePageNum"></param>
+ /// <returns></returns>
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ DeptWebEntity model = new DeptWebEntity();
+ model = GetEntity();
+ //杞琩ic
+ Dictionary<string, string> dic = Helper.EntityToDictionary(model);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchDeptView returnData = new ReturnSearchDeptView();
+ returnData.data = IWareDataAccess.Sys.DEPT.DeptSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Sys.DEPT.DeptSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / onePageNum + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Dept/Search")]
+ public IHttpActionResult Search(int page,int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Dept/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Dept/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ DeptWebEntity model = new DeptWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Sys.DEPT.DeptSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+
+ [HttpPost, Route("Dept/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ DeptWebEntity model = new DeptWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Sys.DEPT.DeptSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/DeviceController.cs b/qqjf-Background/WebApi_QQJF/Controllers/DeviceController.cs
new file mode 100644
index 0000000..133b9bf
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/DeviceController.cs
@@ -0,0 +1,79 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class DeviceController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private DeviceWebEntity GetEntity()
+ {
+ DeviceWebEntity model = new DeviceWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("Device/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Device/Search")]
+ public IHttpActionResult Search(int page,int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ DeviceWebEntity model = new DeviceWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchDeviceView returnData = new ReturnSearchDeviceView();
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.DEVICE.DeviceSqlFunc.SearchViewNum(model, out msg);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.data = IWareDataAccess.Base.DEVICE.DeviceSqlFunc.SearchView(model, page, onePageNum);
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Device/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ DeviceWebEntity model = new DeviceWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.DEVICE.DeviceSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/HomeController.cs b/qqjf-Background/WebApi_QQJF/Controllers/HomeController.cs
new file mode 100644
index 0000000..1570b04
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/HomeController.cs
@@ -0,0 +1,62 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Web;
+using System.Web.Mvc;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class HomeController : Controller
+ {
+ public ActionResult Index()
+ {
+ ViewBag.Title = "Home Page";
+
+ return View();
+ }
+
+ /// <summary>
+ /// 鏂囦欢涓嬭浇
+ /// </summary>
+ /// <param name="filePath "></param>
+ /// <returns></returns>
+ [HttpGet]
+ public void GetDownLoad(string name)
+ {
+
+ //StringBuilder strSql = new StringBuilder();
+ //string LastName = System.IO.Path.GetExtension(name);
+ //string customFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + LastName;
+
+ //string filePath = System.Web.HttpContext.Current.Request.PhysicalPath+"..\\..\\..\\" + name;
+ //FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
+ //HttpResponseMessage response = new HttpResponseMessage();
+ //response.Content = new StreamContent(fileStream);
+ //response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
+ //response.Content.Headers.ContentDisposition.FileName = customFileName;
+ //response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // 杩欏彞璇濊鍛婅瘔娴忚鍣ㄨ涓嬭浇鏂囦欢
+ //response.Content.Headers.ContentLength = new FileInfo(filePath).Length;
+ //return response;
+ string FilePath = System.Web.HttpContext.Current.Request.PhysicalPath + "..\\..\\..\\" + name;
+ //浠ュ瓧绗︽祦鐨勫舰寮忎笅杞芥枃浠�
+ FileStream fs = new FileStream(FilePath, FileMode.Open);
+ byte[] bytes = new byte[(int)fs.Length];
+ fs.Read(bytes, 0, bytes.Length);
+ fs.Close();
+ Response.ContentType = "application/octet-stream;charset=gb2321";
+
+ //閫氱煡娴忚鍣ㄤ笅杞芥枃浠惰�屼笉鏄墦寮�;瀵逛腑鏂囧悕绉拌繘琛岀紪鐮�
+ Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("111.apk", System.Text.Encoding.UTF8));
+ Response.BinaryWrite(bytes);
+ Response.Flush();
+ Response.End();
+ }
+
+
+
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/InOrderController.cs b/qqjf-Background/WebApi_QQJF/Controllers/InOrderController.cs
new file mode 100644
index 0000000..facd81f
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/InOrderController.cs
@@ -0,0 +1,338 @@
+锘縰sing EnumType;
+using IWareDataAccess.EF;
+using IWareDataAccess.Entity.Base;
+using IWareDataAccess.Entity.Order;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Order;
+using Models.Input;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ /// <summary>
+ /// 閫佺鍗�
+ /// </summary>
+ public class InOrderController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private InOrderWebEntity GetEntity()
+ {
+ InOrderWebEntity model = new InOrderWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("InOrder/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("InOrder/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private static Expression<Func<View_ORDER_INORDER, bool>> GetFilter(InOrderWebEntity webEntity)
+ {
+ var f = PredicateBuilder.GetFilterExpression<InOrderWebEntity, View_ORDER_INORDER>(webEntity);
+ if (webEntity.InOrderPageType != null)
+ {//璇存槑鏄鍒嗛〉闈㈡煡璇� 銆怑ditBy shaocx,2022-11-01銆�
+ Expression<Func<View_ORDER_INORDER, bool>> newExpress = null;
+ InOrderPageTypeEnum inorderPageEnum = (InOrderPageTypeEnum)Enum.Parse(typeof(InOrderPageTypeEnum), webEntity.InOrderPageType.ToString());
+ switch (inorderPageEnum)
+ {
+ case InOrderPageTypeEnum.瀹屽伐鍝佽緭鍏ラ〉闈�:
+ newExpress = a => a.OrderStatusId != (int)InOrderStatusEnum.瀹屽伐;
+ break;
+ }
+ if (newExpress != null)
+ {
+ f = f.And(newExpress);
+ }
+ }
+ return f;
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ InOrderWebEntity model = new InOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ var f = GetFilter(model);
+ ReturnSearchInOrderView returnData = new ReturnSearchInOrderView();
+ returnData.data = IWareDataAccess.Order.INORDER.InOrderSqlFunc.SearchView(f, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Order.INORDER.InOrderSqlFunc.SearchViewNum(f);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ /// <summary>
+ /// 瀵煎嚭鍐插帇璁″垝鏁版嵁
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("InOrder/ExportInOrder")]
+ public IHttpActionResult ExportInOrder(int page, int onePageNum)
+ {
+ string msg = "";
+ InOrderWebEntity model = new InOrderWebEntity();
+ model = GetEntity();
+
+ //璋冪敤鏌ヨ鏂规硶
+ var f = GetFilter(model);
+ var data = IWareDataAccess.Order.INORDER.InOrderSqlFunc.ExportInOrder(f, page, onePageNum, out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+
+ }
+
+ /// <summary>
+ /// 鏂板缓鎴栦慨鏀归�佺鍗�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("InOrder/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ InOrderWebEntity model = new InOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("InOrder/Add")]
+ public IHttpActionResult Add()
+ {
+ string msg = "";
+ InOrderWebEntity model = new InOrderWebEntity();
+ model = GetEntity();
+ model.orderStatus = "鏂板缓";
+
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("InOrder/Update")]
+ public IHttpActionResult Update()
+ {
+ string msg = "";
+ InOrderWebEntity model = new InOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ /// <summary>
+ /// 淇敼绾夸笅浜や粯鏁伴噺
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost, Route("InOrder/UpdateUnlineNum")]
+ public IHttpActionResult UpdateUnlineNum(InOrderUnlineNumInput input)
+ {
+ if (string.IsNullOrEmpty(input.InOrderCode))
+ {
+ return Json(ReturnResultAndMsg.Fail("璁″垝鍗曞彿涓嶈兘涓虹┖!"));
+ }
+ string msg = "";
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateUnlineNum(input, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ /// <summary>
+ /// 鎻愪氦瀹℃牳
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost, Route("InOrder/Send")]
+ public IHttpActionResult Send(InOrderAuditInput input)
+ {
+ string msg = "";
+ string type = "鎻愪氦瀹℃牳";
+
+ if (string.IsNullOrEmpty(input.InOrderCode))
+ {
+ return Json(ReturnResultAndMsg.Fail("璁″垝鍗曞彿涓嶈兘涓虹┖!"));
+ }
+ if (input.AuditUserId == null || input.AuditUserId == 0)
+ {
+ return Json(ReturnResultAndMsg.Fail("瀹℃牳浜轰笉鑳戒负绌�!"));
+ }
+
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateStatus(input, type, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("InOrder/Check")]
+ public IHttpActionResult Check(InOrderAuditInput input)
+ {
+ if (string.IsNullOrEmpty(input.InOrderCode))
+ {
+ return Json(ReturnResultAndMsg.Fail("璁″垝鍗曞彿涓嶈兘涓虹┖!"));
+ }
+ string msg = "";
+ string type = "瀹℃牳閫氳繃";
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateStatus(input, type, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("InOrder/Reject")]
+ public IHttpActionResult Reject(InOrderAuditInput input)
+ {
+ if (string.IsNullOrEmpty(input.InOrderCode))
+ {
+ return Json(ReturnResultAndMsg.Fail("璁″垝鍗曞彿涓嶈兘涓虹┖!"));
+ }
+ string msg = "";
+ string type = "椹冲洖";
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.UpdateStatus(input, type, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("InOrder/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ InOrderWebEntity model = new InOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("InOrder/GetCode")]
+ public IHttpActionResult GetCode()
+ {
+ string msg = "";
+ InOrderWebEntity model = new InOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ string result = IWareDataAccess.Order.INORDER.InOrderSqlFunc.GetCode();
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+ /// <summary>
+ /// 瀵煎叆鍐插帇璁″垝鏁版嵁
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("InOrder/ImportInOrder")]
+ public IHttpActionResult ImportInOrder()
+ {
+ string msg = "";
+ List<InOrderWebEntity> model = new List<InOrderWebEntity>();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string Items = request.Form["items"];
+ string userName = request.Form["userName"];
+ model = JsonConvert.DeserializeObject<List<InOrderWebEntity>>(Items);
+ //model = JsonConvert.DeserializeObject<List<InOrderExcelEntity>>(Items);
+ //string path = HttpContext.Current.Request.MapPath("~/");
+ //HttpPostedFile file = HttpContext.Current.Request.Files[0];
+ //bool bl = IWareDataAccess.Helper.ExcelHelper.UploadFiles(file, path, out msg); ;
+ //璋冪敤鏌ヨ鏂规硶
+ bool bl = IWareDataAccess.Order.INORDER.InOrderSqlFunc.ImportInOrder(model, userName, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = bl ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+
+
+ [HttpPost, Route("InOrder/ExcelTest")]
+ public IHttpActionResult ExcelTest()
+ {
+ string msg = "";
+ ;
+ InOrderExcelEntity ent = new InOrderExcelEntity();
+ string path = HttpContext.Current.Request.MapPath("~/");
+ var file = HttpContext.Current.Request.Files[0].InputStream;
+ HttpPostedFile pf = HttpContext.Current.Request.Files[0];
+ string datetime = Helper.GetTimeStamp();
+ string strPath = @"c:\ImportExcel\" + datetime + "\\";//杩欓噷瑕佹敞鎰忕殑鏄厛瑕佸缓绔婩ile鏂囦欢澶癸紝涓嶇劧浼氭姤閿欙紝涔熷彲浠ヨ嚜宸卞啓涓�涓娴嬫枃浠跺す锛岃繖閲屽氨鍏堜笉璧樿堪
+ if (!Directory.Exists(strPath))
+ {
+ Directory.CreateDirectory(strPath);
+ }
+ strPath += pf.FileName;
+ pf.SaveAs(strPath);
+ //Helper.StreamToFile(file, strPath);//闇�瑕佺敤鍒颁笅涓�姝ョ殑甯姪绫诲皢鍏朵繚瀛樹负鏂囦欢
+ bool bl = IWareDataAccess.Order.INORDER.InOrderSqlFunc.ImportExcel(strPath, ent, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = bl ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/InTypeController.cs b/qqjf-Background/WebApi_QQJF/Controllers/InTypeController.cs
new file mode 100644
index 0000000..5952386
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/InTypeController.cs
@@ -0,0 +1,62 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class InTypeController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private InTypeWebEntity GetEntity()
+ {
+ InTypeWebEntity model = new InTypeWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("InType/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("InType/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ InTypeWebEntity model = new InTypeWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchInTypeView returnData = new ReturnSearchInTypeView();
+ returnData.data = IWareDataAccess.Base.INTYPE.InTypeFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.INTYPE.InTypeFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/ItemController.cs b/qqjf-Background/WebApi_QQJF/Controllers/ItemController.cs
new file mode 100644
index 0000000..e098685
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/ItemController.cs
@@ -0,0 +1,243 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using IWareDataAccess.ReturnEntity.Sys;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class ItemController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private ItemWebEntity GetEntity()
+ {
+ ItemWebEntity model = new ItemWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("Item/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Item/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //杞琩ic
+ Dictionary<string, string> dic = Helper.EntityToDictionary(model);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchItemView returnData = new ReturnSearchItemView();
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.ITEM.ItemSqlFunc.SearchViewNum(model, out msg);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.data = IWareDataAccess.Base.ITEM.ItemSqlFunc.SearchView(model, page, onePageNum);
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Item/GetAllItem")]
+ public IHttpActionResult GetAllItem()
+ {
+
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //杞琩ic
+ Dictionary<string, string> dic = Helper.EntityToDictionary(model);
+
+ var data = IWareDataAccess.Base.ITEM.ItemSqlFunc.SearchAllView(model);
+
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+ }
+
+ [HttpPost, Route("Item/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.ITEM.ItemSqlFunc.AddOrUpdate(model,out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ [HttpPost, Route("Item/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.ITEM.ItemSqlFunc.Delete(model,out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ /// <summary>
+ /// 瀵煎叆闆朵欢鐨勫熀纭�鍗曚环鍜屾渶澶ф渶灏忓簱瀛橀噺
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Item/ImportItemInfo")]
+ public IHttpActionResult ImportItemInfo()
+ {
+ string msg = "";
+ List<ItemWebEntity> model = new List<ItemWebEntity>();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string Items = request.Form["items"];
+ string userName = request.Form["userName"];
+ model = JsonConvert.DeserializeObject<List<ItemWebEntity>>(Items);
+ //璋冪敤鏌ヨ鏂规硶
+ bool bl = IWareDataAccess.Base.ITEM.ItemSqlFunc.ImportItemInfo(model, userName, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = bl ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁鍣ㄥ叿绫诲瀷鎵惧搴旀墍闇�鍙互瑁呭叆鐨勯浂浠�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Item/GetItemByContainerType")]
+ public IHttpActionResult GetItemByContainerType()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string itemName = request.Form["itemName"];
+ string containerType = request.Form["containerType"];
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Base.ITEM.ItemSqlFunc.GetItemByContainerType(itemName,containerType, out msg);
+ //杩斿洖JSON缁撴灉
+ ReturnCommonItem returnData = new ReturnCommonItem();
+ returnData.data = result;
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+
+ return Json(returnData);
+
+ }
+
+ /// <summary>
+ /// 淇敼涓婁笅闄愬紑鍚�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Item/UpdateStorageEnable")]
+ public IHttpActionResult UpdateStorageEnable()
+ {
+ string msg = "";
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.ITEM.ItemSqlFunc.UpdateStorageEnable(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ /// <summary>
+ /// 鎼滅储涓婁笅闄愭槸鍚﹀紑鍚�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Item/SearchStorageEnable")]
+ public IHttpActionResult SearchStorageEnable()
+ {
+ string msg = "";
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.ITEM.ItemSqlFunc.SearchStorageEnable(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ /// <summary>
+ /// 鎵归噺淇敼涓婇檺
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Item/UpdateMaxStorage")]
+ public IHttpActionResult UpdateMaxStorage()
+ {
+ string msg = "";
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.ITEM.ItemSqlFunc.UpdateMaxStorage(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ /// <summary>
+ /// 鎵归噺淇敼涓嬮檺
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Item/UpdateMinStorage")]
+ public IHttpActionResult UpdateMinStorage()
+ {
+ string msg = "";
+ ItemWebEntity model = new ItemWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.ITEM.ItemSqlFunc.UpdateMinStorage(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/ItemStorageController.cs b/qqjf-Background/WebApi_QQJF/Controllers/ItemStorageController.cs
new file mode 100644
index 0000000..715ddc3
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/ItemStorageController.cs
@@ -0,0 +1,83 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class ItemStorageController : ApiController
+ {
+
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private ItemStorageWebEntity GetEntity()
+ {
+ ItemStorageWebEntity model = new ItemStorageWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("ItemStorage/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("ItemStorage/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ ItemStorageWebEntity model = new ItemStorageWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchItemStorageView returnData = new ReturnSearchItemStorageView();
+ returnData.data = IWareDataAccess.Base.ITEMSTORAGE.ItemStorageSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.ITEMSTORAGE.ItemStorageSqlFunc.SearchViewNum(model,out msg);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("ItemStorage/SearchViewIndex")]
+ public IHttpActionResult SearchViewIndex()
+ {
+ string msg = "";
+ ItemStorageWebEntity model = new ItemStorageWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnIndexMessage returnData = new ReturnIndexMessage();
+ returnData.data = IWareDataAccess.Base.ITEMSTORAGE.ItemStorageSqlFunc.SearchViewIndex(out msg);
+ returnData.code = 0;
+ returnData.num = returnData.data.Count;
+ returnData.page = 0;
+ returnData.pageNum = 0;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+
+
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/OutOrderController.cs b/qqjf-Background/WebApi_QQJF/Controllers/OutOrderController.cs
new file mode 100644
index 0000000..2665119
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/OutOrderController.cs
@@ -0,0 +1,127 @@
+锘縰sing IWareDataAccess.Entity.Order;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Order;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class OutOrderController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private OutOrderWebEntity GetEntity()
+ {
+ OutOrderWebEntity model = new OutOrderWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("OutOrder/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("OutOrder/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ OutOrderWebEntity model = new OutOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchOutOrderView returnData = new ReturnSearchOutOrderView();
+ returnData.data = IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ /// <summary>
+ /// 鏂板缓鎴栫紪杈� 璁″垝鍑哄簱锛堣繖閲岀殑鍑哄簱鏄寚鎵�鏈夌殑鍑哄簱锛屽寘鎷� 绌烘枡绠卞嚭搴撳拰鐗╂枡鍑哄簱锛�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("OutOrder/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ OutOrderWebEntity model = new OutOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("OutOrder/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ OutOrderWebEntity model = new OutOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("OutOrder/GetCode")]
+ public IHttpActionResult GetCode()
+ {
+ string msg = "";
+ OutOrderWebEntity model = new OutOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ string result = IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.GetCode();
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+ [HttpPost, Route("OutOrder/CheckOutOrder")]
+ public IHttpActionResult CheckOutOrder()
+ {
+ string msg = "";
+ OutOrderWebEntity model = new OutOrderWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ //bool result = IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.CheckOutOrder(model.id ?? 0, out msg);
+ bool result = IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.CheckOutOrder(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/PDAController.cs b/qqjf-Background/WebApi_QQJF/Controllers/PDAController.cs
new file mode 100644
index 0000000..4f2b840
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/PDAController.cs
@@ -0,0 +1,43 @@
+锘縰sing IWareDataAccess.EF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class PDAController : ApiController
+ {
+
+ [HttpPost, Route("PDA/SearchOne")]
+ public IHttpActionResult SearchOne()
+ {
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ string Url = request.Form["Url"];
+ string Version = request.Form["Version"];
+
+ PDA_VERSION pda = IWareDataAccess.PDA.Version.VersionSqlFunc.SearchOne(Url, Version);
+ //杩斿洖JSON缁撴灉
+ return Json(pda);
+ }
+
+ [HttpPost, Route("PDA/AddOne")]
+ public IHttpActionResult AddOne()
+ {
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ string Url = request.Form["Url"];
+ string Version = request.Form["Version"];
+
+ bool result = IWareDataAccess.PDA.Version.VersionSqlFunc.AddOne(Url, Version);
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/PalletController.cs b/qqjf-Background/WebApi_QQJF/Controllers/PalletController.cs
new file mode 100644
index 0000000..82c2ab1
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/PalletController.cs
@@ -0,0 +1,95 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class PalletController : ApiController
+ {
+ // GET: Pallet
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private PalletWebEntity GetEntity()
+ {
+ PalletWebEntity model = new PalletWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("Pallet/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Pallet/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ PalletWebEntity model = new PalletWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchPalletView returnData = new ReturnSearchPalletView();
+ returnData.data = IWareDataAccess.Base.PALLET.PalletSqlFunc.Search(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.PALLET.PalletSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Pallet/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ PalletWebEntity model = new PalletWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.PALLET.PalletSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Pallet/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ PalletWebEntity model = new PalletWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.PALLET.PalletSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/PermissionController.cs b/qqjf-Background/WebApi_QQJF/Controllers/PermissionController.cs
new file mode 100644
index 0000000..30e299e
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/PermissionController.cs
@@ -0,0 +1,192 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using IWareDataAccess.ReturnEntity.Sys;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class PermissionController : ApiController
+ {
+
+ /// <summary>
+ /// 缁熶竴鏉冮檺瑙掕壊鍏崇郴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private PermissionVsRoleWebEntity GetRoleVsPermissionEntity()
+ {
+
+
+ PermissionVsRoleWebEntity model = new PermissionVsRoleWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ model.roleName = !string.IsNullOrEmpty(request.Form["roleName"]) ? request.Form["roleName"] : null;
+ string permissionList = request.Form["permissionNameList"];
+ if (!string.IsNullOrEmpty(permissionList))
+ {
+ try
+ {
+ model.permissionNameList = JsonConvert.DeserializeObject<List<int>>(permissionList);
+ }
+ catch
+ {
+ //瑙f瀽閿欒
+ }
+ }
+ return model;
+ }
+
+ /// <summary>
+ /// 缁熶竴鏉冮檺瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private PermissionWebEntity GetPermissionEntity()
+ {
+ int i;
+ decimal d;
+ DateTime time;
+
+ PermissionWebEntity model = new PermissionWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string id = request.Form["id"];
+ if (!string.IsNullOrEmpty(id) && int.TryParse(id,out i))
+ {
+ model.id = int.Parse(id);
+ }
+ model.permission = !string.IsNullOrEmpty(request.Form["permission"]) ? request.Form["permission"] : null;
+ string PERMISSIONLEVEL = request.Form["permissionLevel"];
+ if (!string.IsNullOrEmpty(PERMISSIONLEVEL) && int.TryParse(PERMISSIONLEVEL, out i))
+ {
+ model.permissionLevel = int.Parse(PERMISSIONLEVEL);
+ }
+ string FATHERPERMISSIONID = request.Form["fatherPermissionId"];
+ if (!string.IsNullOrEmpty(FATHERPERMISSIONID) && int.TryParse(FATHERPERMISSIONID, out i))
+ {
+ model.fatherPermissionId = int.Parse(FATHERPERMISSIONID);
+ }
+ string ENABLE = request.Form["enable"];
+ if (!string.IsNullOrEmpty(ENABLE) && int.TryParse(ENABLE, out i))
+ {
+ model.enable = int.Parse(ENABLE);
+ }
+ else
+ {
+ model.enable = 1;
+ }
+ return model;
+ }
+
+ [HttpPost, Route("Permission/SearchPermission")]
+ public IHttpActionResult SearchPermission()
+ {
+ string msg = "";
+ PermissionWebEntity model = new PermissionWebEntity();
+ model = GetPermissionEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchPermissionView returnData = new ReturnSearchPermissionView();
+ returnData.data = IWareDataAccess.Sys.PERMISSION.PermissionSqlFunc.SearchView(model,out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Sys.PERMISSION.PermissionSqlFunc.SearchViewNum(model);
+ returnData.page = 1;
+ returnData.pageNum = 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ [HttpPost, Route("Permission/GetUserRoleAllPermission")]
+ public IHttpActionResult GetUserRoleAllPermission()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string roleName = request.Form["roleName"];
+ int type = int.Parse(request.Form["type"]);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnUserRolePermission returnData = new ReturnUserRolePermission();
+ returnData.data = IWareDataAccess.Sys.PERMISSION.PermissionSqlFunc.GetUserRoleAllPermission(roleName,type, out msg);
+ returnData.code = 0;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ [HttpPost, Route("Permission/GetUserRolePermission")]
+ public IHttpActionResult GetUserRolePermission()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string roleName = request.Form["roleName"];
+ int type = int.Parse(request.Form["type"]);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnUserRoleMena returnData = new ReturnUserRoleMena();
+ returnData.data = IWareDataAccess.Sys.PERMISSION.PermissionSqlFunc.GetUserRolePermission(roleName,type, out msg);
+ returnData.code = 0;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("Permission/SearchRoleVsPermission")]
+ public IHttpActionResult SearchRoleVsPermission()
+ {
+ string msg = "";
+ PermissionVsRoleWebEntity model = new PermissionVsRoleWebEntity();
+ model = GetRoleVsPermissionEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchRoleVsPermission returnData = new ReturnSearchRoleVsPermission();
+ returnData.data = IWareDataAccess.Sys.ROLE_VS_PERMISSION.Role_Vs_PermissionSqlFunc.SearchView(model, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Sys.ROLE_VS_PERMISSION.Role_Vs_PermissionSqlFunc.SearchViewNum(model);
+ returnData.page = 1;
+ returnData.pageNum = 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ [HttpPost, Route("Permission/AddOrUpdateRoleVsPermission")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ PermissionVsRoleWebEntity model = new PermissionVsRoleWebEntity();
+ model = GetRoleVsPermissionEntity();
+ //璋冪敤鏂规硶
+ bool result = IWareDataAccess.Sys.ROLE_VS_PERMISSION.Role_Vs_PermissionSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("Permission/GetPdaUserRolePermission")]
+ public IHttpActionResult GetPdaUserRolePermission()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string roleName = request.Form["roleName"];
+ //璋冪敤鏌ヨ鏂规硶
+ var data= IWareDataAccess.Sys.PERMISSION.PermissionSqlFunc.GetPdaUserRolePermission(roleName,out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/PlaceController.cs b/qqjf-Background/WebApi_QQJF/Controllers/PlaceController.cs
new file mode 100644
index 0000000..bc0f5ba
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/PlaceController.cs
@@ -0,0 +1,159 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class PlaceController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private PlaceWebEntity GetEntity()
+ {
+ PlaceWebEntity model = new PlaceWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("Place/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Place/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ PlaceWebEntity model = new PlaceWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchPlaceView returnData = new ReturnSearchPlaceView();
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.PLACE.PlaceSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.data = IWareDataAccess.Base.PLACE.PlaceSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Place/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ PlaceWebEntity model = new PlaceWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.PLACE.PlaceSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("Place/GetPlace")]
+ public IHttpActionResult GetPlace()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ int taskType = int.Parse(request.Form["taskType"]);
+ int isStartPlace = int.Parse(request.Form["isSourcePlace"]);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnPlace returnData = new ReturnPlace();
+ var data = IWareDataAccess.Base.PLACE.PlaceSqlFunc.GetPlace(taskType,isStartPlace, out msg);
+ returnData.data = data;
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍚勭鐘舵�佸簱浣嶇殑鏁伴噺
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Place/GetAllStatusPlaceCount")]
+ public IHttpActionResult GetAllStatusPlaceCount()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ int storageNo = int.Parse(request.Form["storageNo"]);
+
+ //璋冪敤鏌ヨ鏂规硶
+ var data = IWareDataAccess.Base.PLACE.PlaceSqlFunc.GetAllStatusPlaceCount(storageNo,out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾搴撶殑鎵�鏈夊簱浣嶄俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Place/GetAllPlaceInfo")]
+ public IHttpActionResult GetAllPlaceInfo()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ int storageNo = int.Parse(request.Form["storageNo"]);
+ int row = int.Parse(request.Form["row"]);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnPlace returnData = new ReturnPlace();
+ var data = IWareDataAccess.Base.PLACE.PlaceSqlFunc.GetAllPlaceInfo(storageNo, row, out msg);
+ returnData.data = data;
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅閲岀殑鎵樼洏鎴栬�呯墿鏂欎俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Place/GetPVCVIInfo")]
+ public IHttpActionResult GetPVCVIInfo()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string placeName = request.Form["placeName"];
+
+ //璋冪敤鏌ヨ鏂规硶
+ var data = IWareDataAccess.Base.PLACE.PlaceSqlFunc.GetPVCVIInfo(placeName, out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/PlaceVsContainerController.cs b/qqjf-Background/WebApi_QQJF/Controllers/PlaceVsContainerController.cs
new file mode 100644
index 0000000..f83e6c2
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/PlaceVsContainerController.cs
@@ -0,0 +1,148 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class PlaceVsContainerController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private PlaceVsContainerWebEntity GetEntity()
+ {
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("PlaceVsContainer/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("PlaceVsContainer/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ int totalnum=0;
+ ReturnSearchPlaceVsContainerView returnData = new ReturnSearchPlaceVsContainerView();
+ returnData.data = IWareDataAccess.Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchView(model, page, onePageNum,out totalnum, out msg);
+ returnData.code = 0;
+ returnData.num = totalnum;
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("PlaceVsContainer/AddOrUpdate")]
+ public IHttpActionResult Add()
+ {
+ string msg = "";
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.Add(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+
+
+ [HttpPost, Route("PlaceVsContainer/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("PlaceVsContainer/GetCode")]
+ public IHttpActionResult GetCode()
+ {
+ string msg = "";
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ string result = IWareDataAccess.Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.GetCode();
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+
+ [HttpPost, Route("PlaceVsContainer/SearchItemCanUseNum")]
+ public IHttpActionResult SearchItemCanUseNum()
+ {
+ string msg = "";
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ int result = IWareDataAccess.Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchItemCanUseNum(model, out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+
+ [HttpPost, Route("PlaceVsContainer/SearchItemAllNum")]
+ public IHttpActionResult SearchItemAllNum()
+ {
+ string msg = "";
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ int result = IWareDataAccess.Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchItemAllNum(model, out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+ [HttpPost, Route("PlaceVsContainer/SearchEmptyContainerPlace")]
+ public IHttpActionResult SearchEmptyContainerPlace()
+ {
+ string msg = "";
+ PlaceVsContainerWebEntity model = new PlaceVsContainerWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchEmptyContainerPlace(model, out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/ProductionLineController.cs b/qqjf-Background/WebApi_QQJF/Controllers/ProductionLineController.cs
new file mode 100644
index 0000000..dd233cb
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/ProductionLineController.cs
@@ -0,0 +1,92 @@
+锘縰sing IWareDataAccess.Entity.Base;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class ProductionLineController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private ProductionLineWebEntity GetEntity()
+ {
+ ProductionLineWebEntity model = new ProductionLineWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("ProductionLine/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("ProductionLine/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ ProductionLineWebEntity model = new ProductionLineWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchProductionLineView returnData = new ReturnSearchProductionLineView();
+ returnData.data = IWareDataAccess.Base.PRODUCTIONLINE.ProductionLineSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Base.PRODUCTIONLINE.ProductionLineSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("ProductionLine/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ ProductionLineWebEntity model = new ProductionLineWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.PRODUCTIONLINE.ProductionLineSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("ProductionLine/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ ProductionLineWebEntity model = new ProductionLineWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Base.PRODUCTIONLINE.ProductionLineSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/RgvTaskController.cs b/qqjf-Background/WebApi_QQJF/Controllers/RgvTaskController.cs
new file mode 100644
index 0000000..de10746
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/RgvTaskController.cs
@@ -0,0 +1,62 @@
+锘縰sing IWareDataAccess.Entity.Task;
+using IWareDataAccess.ReturnEntity.Task;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class RgvTaskController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private RgvTaskWebEntity GetEntity()
+ {
+ RgvTaskWebEntity model = new RgvTaskWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("RgvTask/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("RgvTask/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ RgvTaskWebEntity model = new RgvTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchRgvTaskView returnData = new ReturnSearchRgvTaskView();
+ returnData.data = IWareDataAccess.Task.TASK.RgvTaskSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Task.TASK.RgvTaskSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/RoleController.cs b/qqjf-Background/WebApi_QQJF/Controllers/RoleController.cs
new file mode 100644
index 0000000..e962bb7
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/RoleController.cs
@@ -0,0 +1,97 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Sys;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class RoleController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private RoleWebEntity GetEntity()
+ {
+ RoleWebEntity model = new RoleWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("Role/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+
+ }
+
+ [HttpPost, Route("Role/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ RoleWebEntity model = new RoleWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchRoleView returnData = new ReturnSearchRoleView();
+ returnData.data = IWareDataAccess.Sys.ROLE.RoleSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Sys.ROLE.RoleSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Role/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ RoleWebEntity model = new RoleWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Sys.ROLE.RoleSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+
+ [HttpPost, Route("Role/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ RoleWebEntity model = new RoleWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Sys.ROLE.RoleSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/SrmRecordController.cs b/qqjf-Background/WebApi_QQJF/Controllers/SrmRecordController.cs
new file mode 100644
index 0000000..7456004
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/SrmRecordController.cs
@@ -0,0 +1,110 @@
+锘縰sing IWareDataAccess.Entity.Task;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Task;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class SrmRecordController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private SrmRecordWebEntity GetEntity()
+ {
+ SrmRecordWebEntity model = new SrmRecordWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("SrmRecord/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("SrmRecord/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("SrmRecord/SearchAll")]
+ public IHttpActionResult SearchAll()
+ {
+ string msg = "";
+ SrmRecordWebEntity model = new SrmRecordWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchSrmRecordView returnData = new ReturnSearchSrmRecordView();
+ returnData.data = IWareDataAccess.Task.TASK.SrmRecordSqlFunc.SearchViewAll(model, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Task.TASK.SrmRecordSqlFunc.SearchViewNum(model);
+ returnData.page = 1;
+ returnData.pageNum = 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ SrmRecordWebEntity model = new SrmRecordWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchSrmRecordView returnData = new ReturnSearchSrmRecordView();
+ returnData.data = IWareDataAccess.Task.TASK.SrmRecordSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Task.TASK.SrmRecordSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ //[HttpPost, Route("InOrder/AddOrUpdate")]
+ //public IHttpActionResult AddOrUpdate()
+ //{
+ // string msg = "";
+ // SrmRecordWebEntity model = new SrmRecordWebEntity();
+ // model = GetEntity();
+ // //璋冪敤鏌ヨ鏂规硶
+ // bool result = IWareDataAccess.Task.TASK.SrmRecordSqlFunc.AddOrUpdate(model, out msg);
+ // ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ // returnData.code = result ? 0 : 1;
+ // returnData.msg = msg;
+ // //杩斿洖JSON缁撴灉
+ // return Json(returnData);
+ //}
+
+ [HttpPost, Route("SrmRecord/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ SrmRecordWebEntity model = new SrmRecordWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.SrmRecordSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/SrmTaskController.cs b/qqjf-Background/WebApi_QQJF/Controllers/SrmTaskController.cs
new file mode 100644
index 0000000..f706ab0
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/SrmTaskController.cs
@@ -0,0 +1,61 @@
+锘縰sing IWareDataAccess.Entity.Task;
+using IWareDataAccess.ReturnEntity.Task;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class SrmTaskController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private SrmTaskWebEntity GetEntity()
+ {
+ SrmTaskWebEntity model = new SrmTaskWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("SrmTask/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("SrmTask/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ SrmTaskWebEntity model = new SrmTaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchSrmTaskView returnData = new ReturnSearchSrmTaskView();
+ returnData.data = IWareDataAccess.Task.TASK.SrmTaskSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Task.TASK.SrmTaskSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/SummaryStatisticsController.cs b/qqjf-Background/WebApi_QQJF/Controllers/SummaryStatisticsController.cs
new file mode 100644
index 0000000..89eed5e
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/SummaryStatisticsController.cs
@@ -0,0 +1,583 @@
+锘縰sing IWareDataAccess.Entity.Summary;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Summary;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class SummaryStatisticsController : ApiController
+ {
+
+ #region 1.棣栭〉缁熻鏁版嵁
+ [HttpPost, Route("SummaryStatistics/GetHomeNumData")]
+ public IHttpActionResult GetHomeNumData()
+ {
+ string msg = "";
+
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetHomeNumData(out msg);
+ ReturnResultSummaryNum returnData = new ReturnResultSummaryNum();
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("SummaryStatistics/GetHomeNumDataByDate")]
+ public IHttpActionResult GetHomeNumDataByDate()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ DateTime stday = new DateTime();
+ DateTime edday = new DateTime();
+
+ DateTime.TryParse(request.Form["stDate"], out stday);
+ DateTime.TryParse(request.Form["edDate"], out edday);
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetHomeNumDataByDate(stday, edday, out msg);
+ ReturnResultSummaryNumVsTime returnData = new ReturnResultSummaryNumVsTime();
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("SummaryStatistics/GetHomePieData")]
+ public IHttpActionResult GetHomePieData()
+ {
+ string msg = "";
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetHomePieData(out msg);
+ ReturnResultSummaryPie returnData = new ReturnResultSummaryPie();
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("SummaryStatistics/GetHomeBarItemData")]
+ public IHttpActionResult GetHomeBarItemData()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+
+ //璋冪敤鏌ヨ鏂规硶
+ HomeBarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetHomeBarItemData(startTime, endTime, out msg);
+ ReturnResultSummary returnData = new ReturnResultSummary();
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ [HttpPost, Route("SummaryStatistics/GetHomeBarContainerData")]
+ public IHttpActionResult GetHomeBarContainerData()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+ //璋冪敤鏌ヨ鏂规硶
+ HomeBarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetHomeBarContainerData(startTime, endTime, out msg);
+ ReturnResultSummary returnData = new ReturnResultSummary();
+ returnData.code = string.IsNullOrEmpty(msg) ? 0: 1;
+ returnData.msg = msg;
+ returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+ #endregion
+
+ #region 3.搴撳瓨鍒嗙被缁熻
+ [HttpPost, Route("SummaryStatistics/GetStockClassificationData")]
+ public IHttpActionResult GetStockClassificationData()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ int type = string.IsNullOrEmpty(request.Form["type"]) ? 1 : int.Parse(request.Form["type"].ToString());
+ //璋冪敤鏌ヨ鏂规硶
+ PieEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetStockClassificationData(type, out msg);
+ //ReturnResultSummary returnData = new ReturnResultSummary();
+ //returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ //returnData.msg = msg;
+ //returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+ }
+ #endregion
+
+ #region 4.鍑哄叆搴撲换鍔″钩鍧囨椂闀�
+ [HttpPost, Route("SummaryStatistics/GetInOutAverageTime")]
+ public IHttpActionResult GetInOutAverageTime()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetInOutAverageTime(startTime, endTime, out msg);
+ //ReturnResultSummary returnData = new ReturnResultSummary();
+ //returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ //returnData.msg = msg;
+ //returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+ }
+ #endregion
+
+ #region 5.浠诲姟鑺傛媿鍒嗘瀽
+ [HttpPost, Route("SummaryStatistics/GetTaskBeatAnalysis")]
+ public IHttpActionResult GetTaskBeatAnalysis()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+
+ if (string.IsNullOrEmpty(startTime))
+ {
+
+ startTime = DateTime.Now.ToString("yyyy-MM-dd");
+ }
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetTaskBeatAnalysis(startTime,out msg);
+ //ReturnResultSummary returnData = new ReturnResultSummary();
+ //returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ //returnData.msg = msg;
+ //returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+ }
+ #endregion
+
+ #region 13.璐ф牸鍒╃敤鐜�
+ [HttpPost, Route("SummaryStatistics/GetStorageVailability")]
+ public IHttpActionResult GetStorageVailability()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetStorageVailability(startTime,endTime, out msg);
+ //ReturnResultSummary returnData = new ReturnResultSummary();
+ //returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ //returnData.msg = msg;
+ //returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+ }
+ #endregion
+
+ #region 18.鍦ㄥ埗鍝佽祫閲戝垎鏋�
+ [HttpPost, Route("SummaryStatistics/GetStorageCapitalAnalysis")]
+ public IHttpActionResult GetStorageCapitalAnalysis()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetStorageCapitalAnalysis(startTime, endTime, out msg);
+ //ReturnResultSummary returnData = new ReturnResultSummary();
+ //returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ //returnData.msg = msg;
+ //returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+ }
+ #endregion
+
+ #region 19.绔嬪簱鎬昏鍜屽埗浠舵�昏
+ [HttpPost, Route("SummaryStatistics/GetStorageOverviewData")]
+ public IHttpActionResult GetStorageOverviewData()
+ {
+ string msg = "";
+
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetStorageOverviewData(out msg);
+ ReturnResultSummaryNum returnData = new ReturnResultSummaryNum();
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ #endregion
+
+ #region 12.璁惧鍙姩鐜�
+ [HttpPost, Route("SummaryStatistics/GetDevMovable")]
+ public IHttpActionResult GetDevMovable()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ int type = string.IsNullOrEmpty(request.Form["type"]) ? 1 : int.Parse(request.Form["type"].ToString());
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetDevMovable(startTime, endTime,type, out msg);
+ return Json(result);
+ }
+ #endregion
+
+ #region 11.璁惧鍒╃敤鐜�
+ [HttpPost, Route("SummaryStatistics/GetDevAvailability")]
+ public IHttpActionResult GetDevAvailability()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ int type = string.IsNullOrEmpty(request.Form["type"]) ? 1 : int.Parse(request.Form["type"].ToString());
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetDevAvailability(startTime, endTime,type, out msg);
+ return Json(result);
+ }
+ #endregion
+
+ #region 8.鍒朵欢鍛ㄨ浆鏃堕棿
+ [HttpPost, Route("SummaryStatistics/GetPartTurnover")]
+ public IHttpActionResult GetPartTurnover()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ int styear = string.IsNullOrEmpty(request.Form["year"]) ? DateTime.Now.Year : int.Parse(request.Form["year"].ToString());
+ int edyear = string.IsNullOrEmpty(request.Form["year"]) ? DateTime.Now.Year : int.Parse(request.Form["year"].ToString());
+ int stMonth = string.IsNullOrEmpty(request.Form["stMonth"]) ? DateTime.Now.Month : int.Parse(request.Form["stMonth"].ToString());
+ int edMonth = string.IsNullOrEmpty(request.Form["edMonth"]) ? DateTime.Now.Month : int.Parse(request.Form["edMonth"].ToString());
+ int stWeek = string.IsNullOrEmpty(request.Form["stWeek"]) ? 1 : int.Parse(request.Form["stWeek"].ToString());
+ int edWeek = string.IsNullOrEmpty(request.Form["edWeek"]) ? 4 : int.Parse(request.Form["edWeek"].ToString());
+ string st = request.Form["stWeek"].ToString();
+ DateTime std = new DateTime(styear, stMonth, (stWeek - 1) * 7 + 1);//寮�濮嬪勾鏈堝懆鐨勭涓�鏃�
+ DateTime etd = new DateTime(edyear, edMonth, (edWeek - 1) * 7 + 1);//缁撴潫骞存湀鍛ㄧ殑绗竴鏃�
+ if (std > etd)//涓嶅悎瑙�
+ {
+ etd = std.AddDays(28);//鍔�4鍛�
+ }
+ styear = std.Year;
+ edyear = etd.Year;
+ stMonth = std.Month;
+ edMonth = etd.Month;
+ stWeek = getWeek(std);
+ edWeek = getWeek(etd);
+ //if (edMonth < stMonth)
+ //{
+ // if (stMonth == 12)
+ // {
+ // edMonth = stMonth -1;
+ // }
+ // else
+ // {
+ // edMonth = stMonth + 1;
+ // }
+ //}
+ //if (stMonth == edMonth)
+ //{
+ // if (edWeek <= stWeek)
+ // {
+ // if (stWeek == 4)
+ // {
+ // edWeek = stWeek - 1;
+ // }
+ // else
+ // {
+ // edWeek = stWeek + 1;
+ // }
+
+ // }
+ //}
+
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetPartTurnover(styear,edyear, stMonth, edMonth, stWeek, edWeek, out msg);
+ return Json(result);
+ }
+
+ int getWeek(DateTime dt)
+ {
+ int dayInMouth = dt.Day;
+ DateTime FirstDay = dt.AddDays(1 - dayInMouth);
+ int weekDay=(int)FirstDay.DayOfWeek==0?7:(int)FirstDay.DayOfWeek;
+ int weekEndDay = 7 - (weekDay - 1);
+ int diffDay = dayInMouth - weekEndDay;
+ int weekNumInMouth = (((diffDay % 7) == 0 && diffDay!=0)
+ ? (diffDay / 7 - 1)
+ : (diffDay / 7))
+ + 1 + (dayInMouth > weekEndDay ? 1 : 0);
+ return weekNumInMouth;
+ }
+ #endregion
+
+ #region 13.鍑哄叆搴撴瘡灏忔椂缁熻
+ [HttpPost, Route("SummaryStatistics/GetInOutCountByHour")]
+ public IHttpActionResult GetInOutCountByHour()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string startTime = string.IsNullOrEmpty(request.Form["startTime"]) ? "" : request.Form["startTime"].ToString();
+ string endTime = string.IsNullOrEmpty(request.Form["endTime"]) ? "" : request.Form["endTime"].ToString();
+ if (string.IsNullOrEmpty(startTime))
+ {
+ if (string.IsNullOrEmpty(endTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ startTime = DateTime.Parse(endTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (string.IsNullOrEmpty(endTime))
+ {
+ if (string.IsNullOrEmpty(startTime))
+ {
+ endTime = DateTime.Now.ToString("yyyy-MM-dd");
+ startTime = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ endTime = startTime = DateTime.Parse(startTime).AddDays(-7).ToString("yyyy-MM-dd");
+ }
+ }
+ if (startTime == endTime)
+ {
+ //startTime = DateTime.Parse(endTime).AddDays(-4).ToString("yyyy-MM-dd");
+ }
+
+ //璋冪敤鏌ヨ鏂规硶
+ BarEntity result = IWareDataAccess.Summary.SummaryStatisticsSqlFunc.GetInOutCountByHour(startTime, endTime, out msg);
+ //ReturnResultSummary returnData = new ReturnResultSummary();
+ //returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ //returnData.msg = msg;
+ //returnData.data = result;
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+ }
+ #endregion
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/TaskController.cs b/qqjf-Background/WebApi_QQJF/Controllers/TaskController.cs
new file mode 100644
index 0000000..1a628ec
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/TaskController.cs
@@ -0,0 +1,249 @@
+锘縰sing IWareDataAccess.Entity.Task;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Base;
+using IWareDataAccess.ReturnEntity.Task;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class TaskController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private TaskWebEntity GetEntity()
+ {
+ TaskWebEntity model = new TaskWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("Task/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("Task/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchTaskView returnData = new ReturnSearchTaskView();
+ returnData.data = IWareDataAccess.Task.TASK.TaskSqlFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Task.TASK.TaskSqlFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Task/GetAllMainTask")]
+ public IHttpActionResult GetAllMainTask()
+ {
+ string msg = "";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ var data = IWareDataAccess.Task.TASK.TaskSqlFunc.GetAllMainTask(model);
+
+ //杩斿洖JSON缁撴灉
+ return Json(data);
+ }
+
+
+ [HttpPost, Route("Task/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.TaskSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("Task/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.TaskSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("Task/UpTaskLevel")]
+ public IHttpActionResult UpTaskLevel()
+ {
+ string msg = "";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.TaskSqlFunc.UpTaskLevel(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("Task/MustTask")]
+ public IHttpActionResult MustTask()
+ {
+ string msg = "";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.TaskSqlFunc.MustTask(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ [HttpPost, Route("Task/DeleteErrorTask")]
+ public IHttpActionResult DeleteErrorTask()
+ {
+ string msg="";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ SrmServer.SrmServiceClient srmOPC = new SrmServer.SrmServiceClient();
+ WebApi_QQJF.SrmServer.ArrayOfInt srmid;
+ WebApi_QQJF.SrmServer.ArrayOfInt rgvid;
+ WebApi_QQJF.SrmServer.ArrayOfInt tranid;
+ WebApi_QQJF.SrmServer.ArrayOfString placeList;
+ bool result = srmOPC.DeleteMainTask(model.id ?? 0, out tranid, out rgvid, out srmid, out placeList);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ if (result == false)
+ {
+ msg = "鍒犻櫎澶辫触";
+ }
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ /// <summary>
+ /// Pda鍑哄簱搴撲綅涓嬫媺鏁版嵁
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Task/GetOutTaskPlace")]
+ public IHttpActionResult GetOutTaskPlace()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string itemName = request.Form["itemName"];
+ string containerName = request.Form["containerName"];
+ int isStartPlace = int.Parse(request.Form["isSourcePlace"]);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnTaskCommonView returnData = new ReturnTaskCommonView();
+ var data = IWareDataAccess.Task.TASK.TaskSqlFunc.GetOutTaskPlace(itemName, containerName, isStartPlace, out msg);
+ returnData.data = data;
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ /// <summary>
+ /// 鍑哄簱涓嬫媺闆朵欢淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Task/GetOutTaskItem")]
+ public IHttpActionResult GetOutTaskItem()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string itemName = request.Form["itemName"];
+
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnTaskCommonView returnData = new ReturnTaskCommonView();
+ var data = IWareDataAccess.Task.TASK.TaskSqlFunc.GetOutTaskItem(itemName, out msg);
+ returnData.data = data;
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ /// <summary>
+ /// 鍑哄簱涓嬫媺鎵樼洏淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Task/GetOutTaskContainer")]
+ public IHttpActionResult GetOutTaskContainer()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ string itemName = request.Form["itemName"];
+
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnTaskCommonView returnData = new ReturnTaskCommonView();
+ var data = IWareDataAccess.Task.TASK.TaskSqlFunc.GetOutTaskContainer(itemName, out msg);
+ returnData.data = data;
+ returnData.code = string.IsNullOrEmpty(msg) ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍚勪釜鍑哄叆鍙f暟閲�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("Task/GetEnterNum")]
+ public IHttpActionResult GetEnterNum()
+ {
+ string msg = "";
+ TaskWebEntity model = new TaskWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ var result = IWareDataAccess.Task.TASK.TaskSqlFunc.GetOutTaskContainer(model, out msg);
+ //杩斿洖JSON缁撴灉
+ return Json(result);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/TaskRecodeController.cs b/qqjf-Background/WebApi_QQJF/Controllers/TaskRecodeController.cs
new file mode 100644
index 0000000..bc6fe65
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/TaskRecodeController.cs
@@ -0,0 +1,118 @@
+锘縰sing IWareDataAccess.Entity.Task;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Task;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class TaskRecodeController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private TaskRecodeWebEntity GetEntity()
+ {
+ TaskRecodeWebEntity model = new TaskRecodeWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+
+ [HttpPost, Route("TaskRecode/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("TaskRecode/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ TaskRecodeWebEntity model = new TaskRecodeWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchTaskRecodeView returnData = new ReturnSearchTaskRecodeView();
+ returnData.data = IWareDataAccess.Task.TASK.TaskRecodeFunc.SearchView(model, page, onePageNum, out msg);
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Task.TASK.TaskRecodeFunc.SearchViewNum(model);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+
+ [HttpPost, Route("TaskRecode/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ TaskRecodeWebEntity model = new TaskRecodeWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.TaskRecodeFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("TaskRecode/Update")]
+ public IHttpActionResult Update()
+ {
+ string msg = "";
+ TaskRecodeWebEntity model = new TaskRecodeWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.TaskRecodeFunc.Update(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("TaskRecode/UpdateList")]
+ public IHttpActionResult UpdateList()
+ {
+ string msg = "";
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+ List<TaskRecodeWebEntity> model = new List<TaskRecodeWebEntity>();
+ //model = GetEntity();
+ string inOrder = request.Form["taskRecord"];
+ model = JsonConvert.DeserializeObject<List<TaskRecodeWebEntity>>(inOrder);
+ string inOrderCode = request.Form["inOrderCode"];
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Task.TASK.TaskRecodeFunc.UpdateList(model,inOrderCode, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/UnitTestController.cs b/qqjf-Background/WebApi_QQJF/Controllers/UnitTestController.cs
new file mode 100644
index 0000000..e663219
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/UnitTestController.cs
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ /// <summary>
+ /// 鍗曞厓娴嬭瘯
+ /// </summary>
+ public class UnitTestController : ApiController
+ {
+ // GET api/values
+ public IEnumerable<string> Get()
+ {
+ return new string[] { "value1", "value2" };
+ }
+
+ // GET api/values/5
+ [HttpGet, Route("UnitTest/Get_CreateIn")]
+ public string Get_CreateIn(string containerName)
+ {
+ return "value";
+ }
+
+ // POST api/values
+ public void Post_([FromBody]string value)
+ {
+
+ }
+
+ // PUT api/values/5
+ public void Put(int id, [FromBody]string value)
+ {
+ }
+
+ // DELETE api/values/5
+ public void Delete(int id)
+ {
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/UserController.cs b/qqjf-Background/WebApi_QQJF/Controllers/UserController.cs
new file mode 100644
index 0000000..e5e822c
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/UserController.cs
@@ -0,0 +1,123 @@
+锘縰sing IWareDataAccess.EF;
+using IWareDataAccess.Entity.Sys;
+using IWareDataAccess.Helper;
+using IWareDataAccess.ReturnEntity;
+using IWareDataAccess.ReturnEntity.Sys;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class UserController : ApiController
+ {
+ /// <summary>
+ /// 缁熶竴瀵硅薄锛岃鍙栧��
+ /// </summary>
+ /// <returns></returns>
+ private UserWebEntity GetEntity()
+ {
+ UserWebEntity model = new UserWebEntity();
+ HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//鑾峰彇浼犵粺context
+ HttpRequestBase request = context.Request;//瀹氫箟浼犵粺request瀵硅薄
+
+ WebHelper.WebHelper.GetRequest(request, model);
+
+ return model;
+ }
+
+ [HttpPost, Route("User/Login")]
+ public IHttpActionResult Login(UserWebEntity model)
+ {
+ string msg = "";
+ //UserWebEntity model = new UserWebEntity();
+ //model = GetEntity();
+
+ //璋冪敤鐧诲綍鏂规硶
+ ReturnSearchUserView returnData = new ReturnSearchUserView();
+ returnData.data.Add(IWareDataAccess.Sys.USER.UserSqlFunc.Login(model.userName, model.password, out msg));
+ if (string.IsNullOrEmpty(msg))
+ {
+ returnData.code = 0;
+ }
+ else
+ {
+ returnData.code = -1;
+ }
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+
+ [HttpPost,Route("User/Search")]
+ public IHttpActionResult Search(int page)
+ {
+ int onePageNum = 20;
+ return SearchFunc(page, onePageNum);
+ }
+
+ [HttpPost, Route("User/Search")]
+ public IHttpActionResult Search(int page, int onePageNum)
+ {
+ return SearchFunc(page, onePageNum);
+ }
+
+ private IHttpActionResult SearchFunc(int page, int onePageNum)
+ {
+ string msg = "";
+ UserWebEntity model = new UserWebEntity();
+ model = GetEntity();
+ //杞琩ic
+ Dictionary<string, string> dic = Helper.EntityToDictionary(model);
+ //璋冪敤鏌ヨ鏂规硶
+ ReturnSearchUserView returnData = new ReturnSearchUserView();
+ returnData.code = 0;
+ returnData.num = IWareDataAccess.Sys.USER.ViewUserSqlFunc.SearchViewNum(model, out msg);
+ returnData.page = page;
+ returnData.pageNum = (returnData.num - 1) / 20 + 1;
+ returnData.data = IWareDataAccess.Sys.USER.ViewUserSqlFunc.SearchView(model, page, onePageNum);
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+ }
+
+ [HttpPost, Route("User/AddOrUpdate")]
+ public IHttpActionResult AddOrUpdate()
+ {
+ string msg = "";
+ UserWebEntity model = new UserWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Sys.USER.ViewUserSqlFunc.AddOrUpdate(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+
+ [HttpPost, Route("User/Delete")]
+ public IHttpActionResult Delete()
+ {
+ string msg = "";
+ UserWebEntity model = new UserWebEntity();
+ model = GetEntity();
+ //璋冪敤鏌ヨ鏂规硶
+ bool result = IWareDataAccess.Sys.USER.ViewUserSqlFunc.Delete(model, out msg);
+ ReturnResultAndMsg returnData = new ReturnResultAndMsg();
+ returnData.code = result ? 0 : 1;
+ returnData.msg = msg;
+ //杩斿洖JSON缁撴灉
+ return Json(returnData);
+
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Controllers/ValuesController.cs b/qqjf-Background/WebApi_QQJF/Controllers/ValuesController.cs
new file mode 100644
index 0000000..82bbdd4
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Controllers/ValuesController.cs
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web.Http;
+
+namespace WebApi_QQJF.Controllers
+{
+ public class ValuesController : ApiController
+ {
+ // GET api/values
+ public IEnumerable<string> Get()
+ {
+ return new string[] { "value1", "value2" };
+ }
+
+ // GET api/values/5
+ public string Get(int id)
+ {
+ return "value";
+ }
+
+ // POST api/values
+ public void Post([FromBody]string value)
+ {
+ }
+
+ // PUT api/values/5
+ public void Put(int id, [FromBody]string value)
+ {
+ }
+
+ // DELETE api/values/5
+ public void Delete(int id)
+ {
+ }
+ }
+}
diff --git "a/qqjf-Background/WebApi_QQJF/ExcelTemple/\345\206\262\345\216\213\350\256\241\345\210\222\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/qqjf-Background/WebApi_QQJF/ExcelTemple/\345\206\262\345\216\213\350\256\241\345\210\222\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..71e36d9
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/ExcelTemple/\345\206\262\345\216\213\350\256\241\345\210\222\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/qqjf-Background/WebApi_QQJF/ExcelTemple/\351\233\266\344\273\266\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/qqjf-Background/WebApi_QQJF/ExcelTemple/\351\233\266\344\273\266\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..12d748a
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/ExcelTemple/\351\233\266\344\273\266\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git a/qqjf-Background/WebApi_QQJF/Global.asax b/qqjf-Background/WebApi_QQJF/Global.asax
new file mode 100644
index 0000000..cdf9125
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Global.asax
@@ -0,0 +1 @@
+锘�<%@ Application Codebehind="Global.asax.cs" Inherits="WebApi_QQJF.WebApiApplication" Language="C#" %>
diff --git a/qqjf-Background/WebApi_QQJF/Global.asax.cs b/qqjf-Background/WebApi_QQJF/Global.asax.cs
new file mode 100644
index 0000000..eaf991c
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Global.asax.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Http;
+using System.Web.Mvc;
+using System.Web.Optimization;
+using System.Web.Routing;
+
+namespace WebApi_QQJF
+{
+ public class WebApiApplication : System.Web.HttpApplication
+ {
+ protected void Application_Start()
+ {
+ AreaRegistration.RegisterAllAreas();
+ GlobalConfiguration.Configure(WebApiConfig.Register);
+ FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
+ RouteConfig.RegisterRoutes(RouteTable.Routes);
+ BundleConfig.RegisterBundles(BundleTable.Bundles);
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Project_Readme.html b/qqjf-Background/WebApi_QQJF/Project_Readme.html
new file mode 100644
index 0000000..a967332
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Project_Readme.html
@@ -0,0 +1,150 @@
+锘�<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta charset="utf-8" />
+ <title>浣犵殑 ASP.NET 搴旂敤绋嬪簭</title>
+ <style>
+ body {
+ background: #fff;
+ color: #505050;
+ font: 14px 'Segoe UI', tahoma, arial, helvetica, sans-serif;
+ margin: 20px;
+ padding: 0;
+ }
+
+ #header {
+ background: #efefef;
+ padding: 0;
+ }
+
+ h1 {
+ font-size: 48px;
+ font-weight: normal;
+ margin: 0;
+ padding: 0 30px;
+ line-height: 150px;
+ }
+
+ p {
+ font-size: 20px;
+ color: #fff;
+ background: #969696;
+ padding: 0 30px;
+ line-height: 50px;
+ }
+
+ #main {
+ padding: 5px 30px;
+ }
+
+ .section {
+ width: 21.7%;
+ float: left;
+ margin: 0 0 0 4%;
+ }
+
+ .section h2 {
+ font-size: 13px;
+ text-transform: uppercase;
+ margin: 0;
+ border-bottom: 1px solid silver;
+ padding-bottom: 12px;
+ margin-bottom: 8px;
+ }
+
+ .section.first {
+ margin-left: 0;
+ }
+
+ .section.first h2 {
+ font-size: 24px;
+ text-transform: none;
+ margin-bottom: 25px;
+ border: none;
+ }
+
+ .section.first li {
+ border-top: 1px solid silver;
+ padding: 8px 0;
+ }
+
+ .section.last {
+ margin-right: 0;
+ }
+
+ ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ line-height: 20px;
+ }
+
+ li {
+ padding: 4px 0;
+ }
+
+ a {
+ color: #267cb2;
+ text-decoration: none;
+ }
+
+ a:hover {
+ text-decoration: underline;
+ }
+ </style>
+</head>
+<body>
+
+ <div id="header">
+ <h1>浣犵殑 ASP.NET 搴旂敤绋嬪簭</h1>
+ <p>鎭枩! 浣犲凡鍒涘缓浜嗕竴涓」鐩�</p>
+ </div>
+
+ <div id="main">
+ <div class="section first">
+ <h2>姝ゅ簲鐢ㄧ▼搴忓寘鍚�:</h2>
+ <ul>
+ <li>鐢ㄤ簬璁板綍浣犵殑 Web API 鐨�<a href="http://go.microsoft.com/fwlink/?LinkID=320956">甯姪椤�</a></li>
+ <li>浣跨敤 <a href="http://go.microsoft.com/fwlink/?LinkID=320754">Bootstrap</a> 杩涜涓婚瀹氫綅</li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320957">韬唤楠岃瘉</a>锛屽鏋滈�夋嫨姝ら」锛屽垯灏嗘樉绀哄浣曟敞鍐屽拰鐧诲綍</li>
+ <li>浣跨敤 <a href="http://go.microsoft.com/fwlink/?LinkID=320958">NuGet</a> 绠$悊鐨� ASP.NET 鍔熻兘</li>
+ </ul>
+ </div>
+
+ <div class="section">
+ <h2>鑷畾涔夊簲鐢�</h2>
+ <ul>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320959">浣跨敤 ASP.NET Web API 鐨� HTTP 鏈嶅姟鍏ラ棬</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320960">鏇存敼绔欑偣鐨勪富棰�</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320961">浣跨敤 NuGet 娣诲姞鏇村搴�</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320962">閰嶇疆韬唤楠岃瘉</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320963">浠庢ā鍨嬫惌寤� ASP.NET Web API 鐨勫熀鏋�</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320964">淇濇姢 Web API</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320965">鍦ㄤ笉鍚岃澶囦笂璁块棶浣犵殑 Web API</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320966">涓烘祴璇曞拰璋冭瘯鍚敤璺熻釜</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320765">浣跨敤 ASP.NET SignalR 娣诲姞瀹炴椂 Web</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320766">浣跨敤 Scaffolding 娣诲姞缁勪欢</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320768">鍏变韩椤圭洰</a></li>
+ </ul>
+ </div>
+
+ <div class="section">
+ <h2>閮ㄧ讲</h2>
+ <ul>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320769">纭繚浣犵殑搴旂敤宸蹭负鐢熶骇鍋氬ソ鍑嗗</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320770">Windows Azure</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320771">鎵樼鎻愪緵鍟�</a></li>
+ </ul>
+ </div>
+
+ <div class="section last">
+ <h2>鑾峰彇甯姪</h2>
+ <ul>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320772">鑾峰彇甯姪</a></li>
+ <li><a href="http://go.microsoft.com/fwlink/?LinkID=320773">鑾峰彇鏇村妯℃澘</a></li>
+ </ul>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/qqjf-Background/WebApi_QQJF/Properties/AssemblyInfo.cs b/qqjf-Background/WebApi_QQJF/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..321dec2
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅鏄�氳繃浠ヤ笅椤硅繘琛屾帶鍒剁殑
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("WebApi_QQJF")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WebApi_QQJF")]
+[assembly: AssemblyCopyright("鐗堟潈鎵�鏈�(C) 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 灏嗕娇姝ょ▼搴忛泦涓殑绫诲瀷
+// 瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕�
+// 浠� COM 璁块棶姝ょ▼搴忛泦涓殑鏌愪釜绫诲瀷锛岃閽堝璇ョ被鍨嬪皢 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬 typelib 鐨� ID
+[assembly: Guid("db659f59-2fb9-4a83-a150-eb5ea58203b9")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鍐呴儴鐗堟湰鍙�
+// 淇鐗堟湰
+//
+// 浣犲彲浠ユ寚瀹氭墍鏈夊�硷紝涔熷彲浠ヨ淇鐗堟湰鍜屽唴閮ㄧ増鏈彿閲囩敤榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢� "*":
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/_references.js b/qqjf-Background/WebApi_QQJF/Scripts/_references.js
new file mode 100644
index 0000000..518a959
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/_references.js
Binary files differ
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/bootstrap.js b/qqjf-Background/WebApi_QQJF/Scripts/bootstrap.js
new file mode 100644
index 0000000..5aa9982
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/bootstrap.js
@@ -0,0 +1,2014 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+
+/**
+* bootstrap.js v3.0.0 by @fat and @mdo
+* Copyright 2013 Twitter Inc.
+* http://www.apache.org/licenses/LICENSE-2.0
+*/
+if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#transitions
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+ // ============================================================
+
+ function transitionEnd() {
+ var el = document.createElement('bootstrap')
+
+ var transEndEventNames = {
+ 'WebkitTransition' : 'webkitTransitionEnd'
+ , 'MozTransition' : 'transitionend'
+ , 'OTransition' : 'oTransitionEnd otransitionend'
+ , 'transition' : 'transitionend'
+ }
+
+ for (var name in transEndEventNames) {
+ if (el.style[name] !== undefined) {
+ return { end: transEndEventNames[name] }
+ }
+ }
+ }
+
+ // http://blog.alexmaccaw.com/css-transitions
+ $.fn.emulateTransitionEnd = function (duration) {
+ var called = false, $el = this
+ $(this).one($.support.transition.end, function () { called = true })
+ var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+ setTimeout(callback, duration)
+ return this
+ }
+
+ $(function () {
+ $.support.transition = transitionEnd()
+ })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#alerts
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // ALERT CLASS DEFINITION
+ // ======================
+
+ var dismiss = '[data-dismiss="alert"]'
+ var Alert = function (el) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.prototype.close = function (e) {
+ var $this = $(this)
+ var selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+ }
+
+ var $parent = $(selector)
+
+ if (e) e.preventDefault()
+
+ if (!$parent.length) {
+ $parent = $this.hasClass('alert') ? $this : $this.parent()
+ }
+
+ $parent.trigger(e = $.Event('close.bs.alert'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ $parent.trigger('closed.bs.alert').remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent
+ .one($.support.transition.end, removeElement)
+ .emulateTransitionEnd(150) :
+ removeElement()
+ }
+
+
+ // ALERT PLUGIN DEFINITION
+ // =======================
+
+ var old = $.fn.alert
+
+ $.fn.alert = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.alert')
+
+ if (!data) $this.data('bs.alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.alert.Constructor = Alert
+
+
+ // ALERT NO CONFLICT
+ // =================
+
+ $.fn.alert.noConflict = function () {
+ $.fn.alert = old
+ return this
+ }
+
+
+ // ALERT DATA-API
+ // ==============
+
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#buttons
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // BUTTON PUBLIC CLASS DEFINITION
+ // ==============================
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, Button.DEFAULTS, options)
+ }
+
+ Button.DEFAULTS = {
+ loadingText: 'loading...'
+ }
+
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ var $el = this.$element
+ var val = $el.is('input') ? 'val' : 'html'
+ var data = $el.data()
+
+ state = state + 'Text'
+
+ if (!data.resetText) $el.data('resetText', $el[val]())
+
+ $el[val](data[state] || this.options[state])
+
+ // push to event loop to allow forms to submit
+ setTimeout(function () {
+ state == 'loadingText' ?
+ $el.addClass(d).attr(d, d) :
+ $el.removeClass(d).removeAttr(d);
+ }, 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+ if ($parent.length) {
+ var $input = this.$element.find('input')
+ .prop('checked', !this.$element.hasClass('active'))
+ .trigger('change')
+ if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
+ }
+
+ this.$element.toggleClass('active')
+ }
+
+
+ // BUTTON PLUGIN DEFINITION
+ // ========================
+
+ var old = $.fn.button
+
+ $.fn.button = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.button')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ $.fn.button.Constructor = Button
+
+
+ // BUTTON NO CONFLICT
+ // ==================
+
+ $.fn.button.noConflict = function () {
+ $.fn.button = old
+ return this
+ }
+
+
+ // BUTTON DATA-API
+ // ===============
+
+ $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ $btn.button('toggle')
+ e.preventDefault()
+ })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#carousel
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // CAROUSEL CLASS DEFINITION
+ // =========================
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.$indicators = this.$element.find('.carousel-indicators')
+ this.options = options
+ this.paused =
+ this.sliding =
+ this.interval =
+ this.$active =
+ this.$items = null
+
+ this.options.pause == 'hover' && this.$element
+ .on('mouseenter', $.proxy(this.pause, this))
+ .on('mouseleave', $.proxy(this.cycle, this))
+ }
+
+ Carousel.DEFAULTS = {
+ interval: 5000
+ , pause: 'hover'
+ , wrap: true
+ }
+
+ Carousel.prototype.cycle = function (e) {
+ e || (this.paused = false)
+
+ this.interval && clearInterval(this.interval)
+
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+ return this
+ }
+
+ Carousel.prototype.getActiveIndex = function () {
+ this.$active = this.$element.find('.item.active')
+ this.$items = this.$active.parent().children()
+
+ return this.$items.index(this.$active)
+ }
+
+ Carousel.prototype.to = function (pos) {
+ var that = this
+ var activeIndex = this.getActiveIndex()
+
+ if (pos > (this.$items.length - 1) || pos < 0) return
+
+ if (this.sliding) return this.$element.one('slid', function () { that.to(pos) })
+ if (activeIndex == pos) return this.pause().cycle()
+
+ return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+ }
+
+ Carousel.prototype.pause = function (e) {
+ e || (this.paused = true)
+
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
+ this.$element.trigger($.support.transition.end)
+ this.cycle(true)
+ }
+
+ this.interval = clearInterval(this.interval)
+
+ return this
+ }
+
+ Carousel.prototype.next = function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ Carousel.prototype.prev = function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ Carousel.prototype.slide = function (type, next) {
+ var $active = this.$element.find('.item.active')
+ var $next = next || $active[type]()
+ var isCycling = this.interval
+ var direction = type == 'next' ? 'left' : 'right'
+ var fallback = type == 'next' ? 'first' : 'last'
+ var that = this
+
+ if (!$next.length) {
+ if (!this.options.wrap) return
+ $next = this.$element.find('.item')[fallback]()
+ }
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
+
+ if ($next.hasClass('active')) return
+
+ if (this.$indicators.length) {
+ this.$indicators.find('.active').removeClass('active')
+ this.$element.one('slid', function () {
+ var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+ $nextIndicator && $nextIndicator.addClass('active')
+ })
+ }
+
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ $active
+ .one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ .emulateTransitionEnd(600)
+ } else {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+
+ // CAROUSEL PLUGIN DEFINITION
+ // ==========================
+
+ var old = $.fn.carousel
+
+ $.fn.carousel = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.carousel')
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+ var action = typeof option == 'string' ? option : options.slide
+
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (action) data[action]()
+ else if (options.interval) data.pause().cycle()
+ })
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ // CAROUSEL NO CONFLICT
+ // ====================
+
+ $.fn.carousel.noConflict = function () {
+ $.fn.carousel = old
+ return this
+ }
+
+
+ // CAROUSEL DATA-API
+ // =================
+
+ $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
+ var $this = $(this), href
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ var options = $.extend({}, $target.data(), $this.data())
+ var slideIndex = $this.attr('data-slide-to')
+ if (slideIndex) options.interval = false
+
+ $target.carousel(options)
+
+ if (slideIndex = $this.attr('data-slide-to')) {
+ $target.data('bs.carousel').to(slideIndex)
+ }
+
+ e.preventDefault()
+ })
+
+ $(window).on('load', function () {
+ $('[data-ride="carousel"]').each(function () {
+ var $carousel = $(this)
+ $carousel.carousel($carousel.data())
+ })
+ })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#collapse
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // COLLAPSE PUBLIC CLASS DEFINITION
+ // ================================
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, Collapse.DEFAULTS, options)
+ this.transitioning = null
+
+ if (this.options.parent) this.$parent = $(this.options.parent)
+ if (this.options.toggle) this.toggle()
+ }
+
+ Collapse.DEFAULTS = {
+ toggle: true
+ }
+
+ Collapse.prototype.dimension = function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ Collapse.prototype.show = function () {
+ if (this.transitioning || this.$element.hasClass('in')) return
+
+ var startEvent = $.Event('show.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
+ var actives = this.$parent && this.$parent.find('> .panel > .in')
+
+ if (actives && actives.length) {
+ var hasData = actives.data('bs.collapse')
+ if (hasData && hasData.transitioning) return
+ actives.collapse('hide')
+ hasData || actives.data('bs.collapse', null)
+ }
+
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ .addClass('collapsing')
+ [dimension](0)
+
+ this.transitioning = 1
+
+ var complete = function () {
+ this.$element
+ .removeClass('collapsing')
+ .addClass('in')
+ [dimension]('auto')
+ this.transitioning = 0
+ this.$element.trigger('shown.bs.collapse')
+ }
+
+ if (!$.support.transition) return complete.call(this)
+
+ var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+ this.$element
+ .one($.support.transition.end, $.proxy(complete, this))
+ .emulateTransitionEnd(350)
+ [dimension](this.$element[0][scrollSize])
+ }
+
+ Collapse.prototype.hide = function () {
+ if (this.transitioning || !this.$element.hasClass('in')) return
+
+ var startEvent = $.Event('hide.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
+ var dimension = this.dimension()
+
+ this.$element
+ [dimension](this.$element[dimension]())
+ [0].offsetHeight
+
+ this.$element
+ .addClass('collapsing')
+ .removeClass('collapse')
+ .removeClass('in')
+
+ this.transitioning = 1
+
+ var complete = function () {
+ this.transitioning = 0
+ this.$element
+ .trigger('hidden.bs.collapse')
+ .removeClass('collapsing')
+ .addClass('collapse')
+ }
+
+ if (!$.support.transition) return complete.call(this)
+
+ this.$element
+ [dimension](0)
+ .one($.support.transition.end, $.proxy(complete, this))
+ .emulateTransitionEnd(350)
+ }
+
+ Collapse.prototype.toggle = function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+
+ // COLLAPSE PLUGIN DEFINITION
+ // ==========================
+
+ var old = $.fn.collapse
+
+ $.fn.collapse = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.collapse')
+ var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+ if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ // COLLAPSE NO CONFLICT
+ // ====================
+
+ $.fn.collapse.noConflict = function () {
+ $.fn.collapse = old
+ return this
+ }
+
+
+ // COLLAPSE DATA-API
+ // =================
+
+ $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
+ var $this = $(this), href
+ var target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ var $target = $(target)
+ var data = $target.data('bs.collapse')
+ var option = data ? 'toggle' : $this.data()
+ var parent = $this.attr('data-parent')
+ var $parent = parent && $(parent)
+
+ if (!data || !data.transitioning) {
+ if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
+ $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+ }
+
+ $target.collapse(option)
+ })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#dropdowns
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // DROPDOWN CLASS DEFINITION
+ // =========================
+
+ var backdrop = '.dropdown-backdrop'
+ var toggle = '[data-toggle=dropdown]'
+ var Dropdown = function (element) {
+ var $el = $(element).on('click.bs.dropdown', this.toggle)
+ }
+
+ Dropdown.prototype.toggle = function (e) {
+ var $this = $(this)
+
+ if ($this.is('.disabled, :disabled')) return
+
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) {
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+ // if mobile we we use a backdrop because click events don't delegate
+ $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
+ }
+
+ $parent.trigger(e = $.Event('show.bs.dropdown'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent
+ .toggleClass('open')
+ .trigger('shown.bs.dropdown')
+
+ $this.focus()
+ }
+
+ return false
+ }
+
+ Dropdown.prototype.keydown = function (e) {
+ if (!/(38|40|27)/.test(e.keyCode)) return
+
+ var $this = $(this)
+
+ e.preventDefault()
+ e.stopPropagation()
+
+ if ($this.is('.disabled, :disabled')) return
+
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
+
+ if (!isActive || (isActive && e.keyCode == 27)) {
+ if (e.which == 27) $parent.find(toggle).focus()
+ return $this.click()
+ }
+
+ var $items = $('[role=menu] li:not(.divider):visible a', $parent)
+
+ if (!$items.length) return
+
+ var index = $items.index($items.filter(':focus'))
+
+ if (e.keyCode == 38 && index > 0) index-- // up
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index=0
+
+ $items.eq(index).focus()
+ }
+
+ function clearMenus() {
+ $(backdrop).remove()
+ $(toggle).each(function (e) {
+ var $parent = getParent($(this))
+ if (!$parent.hasClass('open')) return
+ $parent.trigger(e = $.Event('hide.bs.dropdown'))
+ if (e.isDefaultPrevented()) return
+ $parent.removeClass('open').trigger('hidden.bs.dropdown')
+ })
+ }
+
+ function getParent($this) {
+ var selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ var $parent = selector && $(selector)
+
+ return $parent && $parent.length ? $parent : $this.parent()
+ }
+
+
+ // DROPDOWN PLUGIN DEFINITION
+ // ==========================
+
+ var old = $.fn.dropdown
+
+ $.fn.dropdown = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('dropdown')
+
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ // DROPDOWN NO CONFLICT
+ // ====================
+
+ $.fn.dropdown.noConflict = function () {
+ $.fn.dropdown = old
+ return this
+ }
+
+
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
+ // ===================================
+
+ $(document)
+ .on('click.bs.dropdown.data-api', clearMenus)
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#modals
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // MODAL CLASS DEFINITION
+ // ======================
+
+ var Modal = function (element, options) {
+ this.options = options
+ this.$element = $(element)
+ this.$backdrop =
+ this.isShown = null
+
+ if (this.options.remote) this.$element.load(this.options.remote)
+ }
+
+ Modal.DEFAULTS = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ Modal.prototype.toggle = function (_relatedTarget) {
+ return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
+ }
+
+ Modal.prototype.show = function (_relatedTarget) {
+ var that = this
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = true
+
+ this.escape()
+
+ this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+ this.backdrop(function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(document.body) // don't move modals dom position
+ }
+
+ that.$element.show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element
+ .addClass('in')
+ .attr('aria-hidden', false)
+
+ that.enforceFocus()
+
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+ transition ?
+ that.$element.find('.modal-dialog') // wait for modal to slide in
+ .one($.support.transition.end, function () {
+ that.$element.focus().trigger(e)
+ })
+ .emulateTransitionEnd(300) :
+ that.$element.focus().trigger(e)
+ })
+ }
+
+ Modal.prototype.hide = function (e) {
+ if (e) e.preventDefault()
+
+ e = $.Event('hide.bs.modal')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ this.escape()
+
+ $(document).off('focusin.bs.modal')
+
+ this.$element
+ .removeClass('in')
+ .attr('aria-hidden', true)
+ .off('click.dismiss.modal')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ this.$element
+ .one($.support.transition.end, $.proxy(this.hideModal, this))
+ .emulateTransitionEnd(300) :
+ this.hideModal()
+ }
+
+ Modal.prototype.enforceFocus = function () {
+ $(document)
+ .off('focusin.bs.modal') // guard against infinite focus loop
+ .on('focusin.bs.modal', $.proxy(function (e) {
+ if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+ this.$element.focus()
+ }
+ }, this))
+ }
+
+ Modal.prototype.escape = function () {
+ if (this.isShown && this.options.keyboard) {
+ this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
+ e.which == 27 && this.hide()
+ }, this))
+ } else if (!this.isShown) {
+ this.$element.off('keyup.dismiss.bs.modal')
+ }
+ }
+
+ Modal.prototype.hideModal = function () {
+ var that = this
+ this.$element.hide()
+ this.backdrop(function () {
+ that.removeBackdrop()
+ that.$element.trigger('hidden.bs.modal')
+ })
+ }
+
+ Modal.prototype.removeBackdrop = function () {
+ this.$backdrop && this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ Modal.prototype.backdrop = function (callback) {
+ var that = this
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+ .appendTo(document.body)
+
+ this.$element.on('click.dismiss.modal', $.proxy(function (e) {
+ if (e.target !== e.currentTarget) return
+ this.options.backdrop == 'static'
+ ? this.$element[0].focus.call(this.$element[0])
+ : this.hide.call(this)
+ }, this))
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ if (!callback) return
+
+ doAnimate ?
+ this.$backdrop
+ .one($.support.transition.end, callback)
+ .emulateTransitionEnd(150) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop
+ .one($.support.transition.end, callback)
+ .emulateTransitionEnd(150) :
+ callback()
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+
+ // MODAL PLUGIN DEFINITION
+ // =======================
+
+ var old = $.fn.modal
+
+ $.fn.modal = function (option, _relatedTarget) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.modal')
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option](_relatedTarget)
+ else if (options.show) data.show(_relatedTarget)
+ })
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ // MODAL NO CONFLICT
+ // =================
+
+ $.fn.modal.noConflict = function () {
+ $.fn.modal = old
+ return this
+ }
+
+
+ // MODAL DATA-API
+ // ==============
+
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+ var $this = $(this)
+ var href = $this.attr('href')
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+ var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+ e.preventDefault()
+
+ $target
+ .modal(option, this)
+ .one('hide', function () {
+ $this.is(':visible') && $this.focus()
+ })
+ })
+
+ $(document)
+ .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
+ .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // TOOLTIP PUBLIC CLASS DEFINITION
+ // ===============================
+
+ var Tooltip = function (element, options) {
+ this.type =
+ this.options =
+ this.enabled =
+ this.timeout =
+ this.hoverState =
+ this.$element = null
+
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.DEFAULTS = {
+ animation: true
+ , placement: 'top'
+ , selector: false
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+ , trigger: 'hover focus'
+ , title: ''
+ , delay: 0
+ , html: false
+ , container: false
+ }
+
+ Tooltip.prototype.init = function (type, element, options) {
+ this.enabled = true
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+
+ var triggers = this.options.trigger.split(' ')
+
+ for (var i = triggers.length; i--;) {
+ var trigger = triggers[i]
+
+ if (trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (trigger != 'manual') {
+ var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
+ var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
+
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ }
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ Tooltip.prototype.getDefaults = function () {
+ return Tooltip.DEFAULTS
+ }
+
+ Tooltip.prototype.getOptions = function (options) {
+ options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay
+ , hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ Tooltip.prototype.getDelegateOptions = function () {
+ var options = {}
+ var defaults = this.getDefaults()
+
+ this._options && $.each(this._options, function (key, value) {
+ if (defaults[key] != value) options[key] = value
+ })
+
+ return options
+ }
+
+ Tooltip.prototype.enter = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+ clearTimeout(self.timeout)
+
+ self.hoverState = 'in'
+
+ if (!self.options.delay || !self.options.delay.show) return self.show()
+
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
+
+ Tooltip.prototype.leave = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+ clearTimeout(self.timeout)
+
+ self.hoverState = 'out'
+
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ Tooltip.prototype.show = function () {
+ var e = $.Event('show.bs.'+ this.type)
+
+ if (this.hasContent() && this.enabled) {
+ this.$element.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ var $tip = this.tip()
+
+ this.setContent()
+
+ if (this.options.animation) $tip.addClass('fade')
+
+ var placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ var autoToken = /\s?auto?\s?/i
+ var autoPlace = autoToken.test(placement)
+ if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+ $tip
+ .detach()
+ .css({ top: 0, left: 0, display: 'block' })
+ .addClass(placement)
+
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+
+ var pos = this.getPosition()
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
+
+ if (autoPlace) {
+ var $parent = this.$element.parent()
+
+ var orgPlacement = placement
+ var docScroll = document.documentElement.scrollTop || document.body.scrollTop
+ var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()
+ var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
+ var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left
+
+ placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :
+ placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :
+ placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :
+ placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :
+ placement
+
+ $tip
+ .removeClass(orgPlacement)
+ .addClass(placement)
+ }
+
+ var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+ this.applyPlacement(calculatedOffset, placement)
+ this.$element.trigger('shown.bs.' + this.type)
+ }
+ }
+
+ Tooltip.prototype.applyPlacement = function(offset, placement) {
+ var replace
+ var $tip = this.tip()
+ var width = $tip[0].offsetWidth
+ var height = $tip[0].offsetHeight
+
+ // manually read margins because getBoundingClientRect includes difference
+ var marginTop = parseInt($tip.css('margin-top'), 10)
+ var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+ // we must check for NaN for ie 8/9
+ if (isNaN(marginTop)) marginTop = 0
+ if (isNaN(marginLeft)) marginLeft = 0
+
+ offset.top = offset.top + marginTop
+ offset.left = offset.left + marginLeft
+
+ $tip
+ .offset(offset)
+ .addClass('in')
+
+ // check to see if placing tip in new offset caused the tip to resize itself
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
+
+ if (placement == 'top' && actualHeight != height) {
+ replace = true
+ offset.top = offset.top + height - actualHeight
+ }
+
+ if (/bottom|top/.test(placement)) {
+ var delta = 0
+
+ if (offset.left < 0) {
+ delta = offset.left * -2
+ offset.left = 0
+
+ $tip.offset(offset)
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+ }
+
+ this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+ } else {
+ this.replaceArrow(actualHeight - height, actualHeight, 'top')
+ }
+
+ if (replace) $tip.offset(offset)
+ }
+
+ Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
+ this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
+ }
+
+ Tooltip.prototype.setContent = function () {
+ var $tip = this.tip()
+ var title = this.getTitle()
+
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ Tooltip.prototype.hide = function () {
+ var that = this
+ var $tip = this.tip()
+ var e = $.Event('hide.bs.' + this.type)
+
+ function complete() {
+ if (that.hoverState != 'in') $tip.detach()
+ }
+
+ this.$element.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $tip.removeClass('in')
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ $tip
+ .one($.support.transition.end, complete)
+ .emulateTransitionEnd(150) :
+ complete()
+
+ this.$element.trigger('hidden.bs.' + this.type)
+
+ return this
+ }
+
+ Tooltip.prototype.fixTitle = function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+ }
+ }
+
+ Tooltip.prototype.hasContent = function () {
+ return this.getTitle()
+ }
+
+ Tooltip.prototype.getPosition = function () {
+ var el = this.$element[0]
+ return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
+ width: el.offsetWidth
+ , height: el.offsetHeight
+ }, this.$element.offset())
+ }
+
+ Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+ }
+
+ Tooltip.prototype.getTitle = function () {
+ var title
+ var $e = this.$element
+ var o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ return title
+ }
+
+ Tooltip.prototype.tip = function () {
+ return this.$tip = this.$tip || $(this.options.template)
+ }
+
+ Tooltip.prototype.arrow = function () {
+ return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
+ }
+
+ Tooltip.prototype.validate = function () {
+ if (!this.$element[0].parentNode) {
+ this.hide()
+ this.$element = null
+ this.options = null
+ }
+ }
+
+ Tooltip.prototype.enable = function () {
+ this.enabled = true
+ }
+
+ Tooltip.prototype.disable = function () {
+ this.enabled = false
+ }
+
+ Tooltip.prototype.toggleEnabled = function () {
+ this.enabled = !this.enabled
+ }
+
+ Tooltip.prototype.toggle = function (e) {
+ var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
+ self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+ }
+
+ Tooltip.prototype.destroy = function () {
+ this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
+ }
+
+
+ // TOOLTIP PLUGIN DEFINITION
+ // =========================
+
+ var old = $.fn.tooltip
+
+ $.fn.tooltip = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.tooltip')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tooltip.Constructor = Tooltip
+
+
+ // TOOLTIP NO CONFLICT
+ // ===================
+
+ $.fn.tooltip.noConflict = function () {
+ $.fn.tooltip = old
+ return this
+ }
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#popovers
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // POPOVER PUBLIC CLASS DEFINITION
+ // ===============================
+
+ var Popover = function (element, options) {
+ this.init('popover', element, options)
+ }
+
+ if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+ Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
+ placement: 'right'
+ , trigger: 'click'
+ , content: ''
+ , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+ })
+
+
+ // NOTE: POPOVER EXTENDS tooltip.js
+ // ================================
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+ Popover.prototype.constructor = Popover
+
+ Popover.prototype.getDefaults = function () {
+ return Popover.DEFAULTS
+ }
+
+ Popover.prototype.setContent = function () {
+ var $tip = this.tip()
+ var title = this.getTitle()
+ var content = this.getContent()
+
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+ $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
+
+ $tip.removeClass('fade top bottom left right in')
+
+ // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+ // this manually by checking the contents.
+ if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+ }
+
+ Popover.prototype.hasContent = function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ Popover.prototype.getContent = function () {
+ var $e = this.$element
+ var o = this.options
+
+ return $e.attr('data-content')
+ || (typeof o.content == 'function' ?
+ o.content.call($e[0]) :
+ o.content)
+ }
+
+ Popover.prototype.arrow = function () {
+ return this.$arrow = this.$arrow || this.tip().find('.arrow')
+ }
+
+ Popover.prototype.tip = function () {
+ if (!this.$tip) this.$tip = $(this.options.template)
+ return this.$tip
+ }
+
+
+ // POPOVER PLUGIN DEFINITION
+ // =========================
+
+ var old = $.fn.popover
+
+ $.fn.popover = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.popover')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.popover.Constructor = Popover
+
+
+ // POPOVER NO CONFLICT
+ // ===================
+
+ $.fn.popover.noConflict = function () {
+ $.fn.popover = old
+ return this
+ }
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#scrollspy
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // SCROLLSPY CLASS DEFINITION
+ // ==========================
+
+ function ScrollSpy(element, options) {
+ var href
+ var process = $.proxy(this.process, this)
+
+ this.$element = $(element).is('body') ? $(window) : $(element)
+ this.$body = $('body')
+ this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
+ this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
+ this.selector = (this.options.target
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ || '') + ' .nav li > a'
+ this.offsets = $([])
+ this.targets = $([])
+ this.activeTarget = null
+
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.DEFAULTS = {
+ offset: 10
+ }
+
+ ScrollSpy.prototype.refresh = function () {
+ var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
+
+ this.offsets = $([])
+ this.targets = $([])
+
+ var self = this
+ var $targets = this.$body
+ .find(this.selector)
+ .map(function () {
+ var $el = $(this)
+ var href = $el.data('target') || $el.attr('href')
+ var $href = /^#\w/.test(href) && $(href)
+
+ return ($href
+ && $href.length
+ && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
+ })
+ .sort(function (a, b) { return a[0] - b[0] })
+ .each(function () {
+ self.offsets.push(this[0])
+ self.targets.push(this[1])
+ })
+ }
+
+ ScrollSpy.prototype.process = function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+ var maxScroll = scrollHeight - this.$scrollElement.height()
+ var offsets = this.offsets
+ var targets = this.targets
+ var activeTarget = this.activeTarget
+ var i
+
+ if (scrollTop >= maxScroll) {
+ return activeTarget != (i = targets.last()[0]) && this.activate(i)
+ }
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+ && this.activate( targets[i] )
+ }
+ }
+
+ ScrollSpy.prototype.activate = function (target) {
+ this.activeTarget = target
+
+ $(this.selector)
+ .parents('.active')
+ .removeClass('active')
+
+ var selector = this.selector
+ + '[data-target="' + target + '"],'
+ + this.selector + '[href="' + target + '"]'
+
+ var active = $(selector)
+ .parents('li')
+ .addClass('active')
+
+ if (active.parent('.dropdown-menu').length) {
+ active = active
+ .closest('li.dropdown')
+ .addClass('active')
+ }
+
+ active.trigger('activate')
+ }
+
+
+ // SCROLLSPY PLUGIN DEFINITION
+ // ===========================
+
+ var old = $.fn.scrollspy
+
+ $.fn.scrollspy = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.scrollspy')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+
+ // SCROLLSPY NO CONFLICT
+ // =====================
+
+ $.fn.scrollspy.noConflict = function () {
+ $.fn.scrollspy = old
+ return this
+ }
+
+
+ // SCROLLSPY DATA-API
+ // ==================
+
+ $(window).on('load', function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ $spy.scrollspy($spy.data())
+ })
+ })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#tabs
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // TAB CLASS DEFINITION
+ // ====================
+
+ var Tab = function (element) {
+ this.element = $(element)
+ }
+
+ Tab.prototype.show = function () {
+ var $this = this.element
+ var $ul = $this.closest('ul:not(.dropdown-menu)')
+ var selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ($this.parent('li').hasClass('active')) return
+
+ var previous = $ul.find('.active:last a')[0]
+ var e = $.Event('show.bs.tab', {
+ relatedTarget: previous
+ })
+
+ $this.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ var $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown.bs.tab'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ Tab.prototype.activate = function (element, container, callback) {
+ var $active = container.find('> .active')
+ var transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if (element.parent('.dropdown-menu')) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active
+ .one($.support.transition.end, next)
+ .emulateTransitionEnd(150) :
+ next()
+
+ $active.removeClass('in')
+ }
+
+
+ // TAB PLUGIN DEFINITION
+ // =====================
+
+ var old = $.fn.tab
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.tab')
+
+ if (!data) $this.data('bs.tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ // TAB NO CONFLICT
+ // ===============
+
+ $.fn.tab.noConflict = function () {
+ $.fn.tab = old
+ return this
+ }
+
+
+ // TAB DATA-API
+ // ============
+
+ $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#affix
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // AFFIX CLASS DEFINITION
+ // ======================
+
+ var Affix = function (element, options) {
+ this.options = $.extend({}, Affix.DEFAULTS, options)
+ this.$window = $(window)
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
+
+ this.$element = $(element)
+ this.affixed =
+ this.unpin = null
+
+ this.checkPosition()
+ }
+
+ Affix.RESET = 'affix affix-top affix-bottom'
+
+ Affix.DEFAULTS = {
+ offset: 0
+ }
+
+ Affix.prototype.checkPositionWithEventLoop = function () {
+ setTimeout($.proxy(this.checkPosition, this), 1)
+ }
+
+ Affix.prototype.checkPosition = function () {
+ if (!this.$element.is(':visible')) return
+
+ var scrollHeight = $(document).height()
+ var scrollTop = this.$window.scrollTop()
+ var position = this.$element.offset()
+ var offset = this.options.offset
+ var offsetTop = offset.top
+ var offsetBottom = offset.bottom
+
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
+
+ var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
+ offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
+ offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
+
+ if (this.affixed === affix) return
+ if (this.unpin) this.$element.css('top', '')
+
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
+
+ this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
+
+ if (affix == 'bottom') {
+ this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
+ }
+ }
+
+
+ // AFFIX PLUGIN DEFINITION
+ // =======================
+
+ var old = $.fn.affix
+
+ $.fn.affix = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.affix')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.affix.Constructor = Affix
+
+
+ // AFFIX NO CONFLICT
+ // =================
+
+ $.fn.affix.noConflict = function () {
+ $.fn.affix = old
+ return this
+ }
+
+
+ // AFFIX DATA-API
+ // ==============
+
+ $(window).on('load', function () {
+ $('[data-spy="affix"]').each(function () {
+ var $spy = $(this)
+ var data = $spy.data()
+
+ data.offset = data.offset || {}
+
+ if (data.offsetBottom) data.offset.bottom = data.offsetBottom
+ if (data.offsetTop) data.offset.top = data.offsetTop
+
+ $spy.affix(data)
+ })
+ })
+
+}(window.jQuery);
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/bootstrap.min.js b/qqjf-Background/WebApi_QQJF/Scripts/bootstrap.min.js
new file mode 100644
index 0000000..9c96832
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/bootstrap.min.js
@@ -0,0 +1,21 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+
+/**
+* bootstrap.js v3.0.0 by @fat and @mdo
+* Copyright 2013 Twitter Inc.
+* http://www.apache.org/licenses/LICENSE-2.0
+*/
+if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.intellisense.js b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.intellisense.js
new file mode 100644
index 0000000..f1d8325
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.intellisense.js
@@ -0,0 +1,2671 @@
+锘�/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+intellisense.annotate(jQuery, {
+ 'ajax': function() {
+ /// <signature>
+ /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary>
+ /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
+ /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings.</param>
+ /// <returns type="jqXHR" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary>
+ /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup().</param>
+ /// <returns type="jqXHR" />
+ /// </signature>
+ },
+ 'ajaxPrefilter': function() {
+ /// <signature>
+ /// <summary>Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax().</summary>
+ /// <param name="dataTypes" type="String">An optional string containing one or more space-separated dataTypes</param>
+ /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to set default values for future Ajax requests.</param>
+ /// </signature>
+ },
+ 'ajaxSetup': function() {
+ /// <signature>
+ /// <summary>Set default values for future Ajax requests.</summary>
+ /// <param name="options" type="PlainObject">A set of key/value pairs that configure the default Ajax request. All options are optional.</param>
+ /// </signature>
+ },
+ 'ajaxTransport': function() {
+ /// <signature>
+ /// <summary>Creates an object that handles the actual transmission of Ajax data.</summary>
+ /// <param name="dataType" type="String">A string identifying the data type to use</param>
+ /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to return the new transport object to use with the data type provided in the first argument.</param>
+ /// </signature>
+ },
+ 'boxModel': function() {
+ /// <summary>Deprecated in jQuery 1.3 (see jQuery.support). States if the current page, in the user's browser, is being rendered using the W3C CSS Box Model.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'browser': function() {
+ /// <summary>Contains flags for the useragent, read from navigator.userAgent. We recommend against using this property; please try to use feature detection instead (see jQuery.support). jQuery.browser may be moved to a plugin in a future release of jQuery.</summary>
+ /// <returns type="PlainObject" />
+ },
+ 'browser.version': function() {
+ /// <summary>The version number of the rendering engine for the user's browser.</summary>
+ /// <returns type="String" />
+ },
+ 'Callbacks': function() {
+ /// <signature>
+ /// <summary>A multi-purpose callbacks list object that provides a powerful way to manage callback lists.</summary>
+ /// <param name="flags" type="String">An optional list of space-separated flags that change how the callback list behaves.</param>
+ /// <returns type="Callbacks" />
+ /// </signature>
+ },
+ 'contains': function() {
+ /// <signature>
+ /// <summary>Check to see if a DOM element is a descendant of another DOM element.</summary>
+ /// <param name="container" type="Element">The DOM element that may contain the other element.</param>
+ /// <param name="contained" type="Element">The DOM element that may be contained by (a descendant of) the other element.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'cssHooks': function() {
+ /// <summary>Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties.</summary>
+ /// <returns type="Object" />
+ },
+ 'data': function() {
+ /// <signature>
+ /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary>
+ /// <param name="element" type="Element">The DOM element to query for the data.</param>
+ /// <param name="key" type="String">Name of the data stored.</param>
+ /// <returns type="Object" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary>
+ /// <param name="element" type="Element">The DOM element to query for the data.</param>
+ /// <returns type="Object" />
+ /// </signature>
+ },
+ 'Deferred': function() {
+ /// <signature>
+ /// <summary>A constructor function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function.</summary>
+ /// <param name="beforeStart" type="Function">A function that is called just before the constructor returns.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'dequeue': function() {
+ /// <signature>
+ /// <summary>Execute the next function on the queue for the matched element.</summary>
+ /// <param name="element" type="Element">A DOM element from which to remove and execute a queued function.</param>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// </signature>
+ },
+ 'each': function() {
+ /// <signature>
+ /// <summary>A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties.</summary>
+ /// <param name="collection" type="Object">The object or array to iterate over.</param>
+ /// <param name="callback(indexInArray, valueOfElement)" type="Function">The function that will be executed on every object.</param>
+ /// <returns type="Object" />
+ /// </signature>
+ },
+ 'error': function() {
+ /// <signature>
+ /// <summary>Takes a string and throws an exception containing it.</summary>
+ /// <param name="message" type="String">The message to send out.</param>
+ /// </signature>
+ },
+ 'extend': function() {
+ /// <signature>
+ /// <summary>Merge the contents of two or more objects together into the first object.</summary>
+ /// <param name="target" type="Object">An object that will receive the new properties if additional objects are passed in or that will extend the jQuery namespace if it is the sole argument.</param>
+ /// <param name="object1" type="Object">An object containing additional properties to merge in.</param>
+ /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param>
+ /// <returns type="Object" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Merge the contents of two or more objects together into the first object.</summary>
+ /// <param name="deep" type="Boolean">If true, the merge becomes recursive (aka. deep copy).</param>
+ /// <param name="target" type="Object">The object to extend. It will receive the new properties.</param>
+ /// <param name="object1" type="Object">An object containing additional properties to merge in.</param>
+ /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param>
+ /// <returns type="Object" />
+ /// </signature>
+ },
+ 'get': function() {
+ /// <signature>
+ /// <summary>Load data from the server using a HTTP GET request.</summary>
+ /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
+ /// <param name="data" type="String">A plain object or string that is sent to the server with the request.</param>
+ /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
+ /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html).</param>
+ /// <returns type="jqXHR" />
+ /// </signature>
+ },
+ 'getJSON': function() {
+ /// <signature>
+ /// <summary>Load JSON-encoded data from the server using a GET HTTP request.</summary>
+ /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
+ /// <param name="data" type="PlainObject">A plain object or string that is sent to the server with the request.</param>
+ /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
+ /// <returns type="jqXHR" />
+ /// </signature>
+ },
+ 'getScript': function() {
+ /// <signature>
+ /// <summary>Load a JavaScript file from the server using a GET HTTP request, then execute it.</summary>
+ /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
+ /// <param name="success(script, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
+ /// <returns type="jqXHR" />
+ /// </signature>
+ },
+ 'globalEval': function() {
+ /// <signature>
+ /// <summary>Execute some JavaScript code globally.</summary>
+ /// <param name="code" type="String">The JavaScript code to execute.</param>
+ /// </signature>
+ },
+ 'grep': function() {
+ /// <signature>
+ /// <summary>Finds the elements of an array which satisfy a filter function. The original array is not affected.</summary>
+ /// <param name="array" type="Array">The array to search through.</param>
+ /// <param name="function(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object.</param>
+ /// <param name="invert" type="Boolean">If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false.</param>
+ /// <returns type="Array" />
+ /// </signature>
+ },
+ 'hasData': function() {
+ /// <signature>
+ /// <summary>Determine whether an element has any jQuery data associated with it.</summary>
+ /// <param name="element" type="Element">A DOM element to be checked for data.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'holdReady': function() {
+ /// <signature>
+ /// <summary>Holds or releases the execution of jQuery's ready event.</summary>
+ /// <param name="hold" type="Boolean">Indicates whether the ready hold is being requested or released</param>
+ /// </signature>
+ },
+ 'inArray': function() {
+ /// <signature>
+ /// <summary>Search for a specified value within an array and return its index (or -1 if not found).</summary>
+ /// <param name="value" type="Anything">The value to search for.</param>
+ /// <param name="array" type="Array">An array through which to search.</param>
+ /// <param name="fromIndex" type="Number">The index of the array at which to begin the search. The default is 0, which will search the whole array.</param>
+ /// <returns type="Number" />
+ /// </signature>
+ },
+ 'isArray': function() {
+ /// <signature>
+ /// <summary>Determine whether the argument is an array.</summary>
+ /// <param name="obj" type="Object">Object to test whether or not it is an array.</param>
+ /// <returns type="boolean" />
+ /// </signature>
+ },
+ 'isEmptyObject': function() {
+ /// <signature>
+ /// <summary>Check to see if an object is empty (contains no enumerable properties).</summary>
+ /// <param name="object" type="Object">The object that will be checked to see if it's empty.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'isFunction': function() {
+ /// <signature>
+ /// <summary>Determine if the argument passed is a Javascript function object.</summary>
+ /// <param name="obj" type="PlainObject">Object to test whether or not it is a function.</param>
+ /// <returns type="boolean" />
+ /// </signature>
+ },
+ 'isNumeric': function() {
+ /// <signature>
+ /// <summary>Determines whether its argument is a number.</summary>
+ /// <param name="value" type="PlainObject">The value to be tested.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'isPlainObject': function() {
+ /// <signature>
+ /// <summary>Check to see if an object is a plain object (created using "{}" or "new Object").</summary>
+ /// <param name="object" type="PlainObject">The object that will be checked to see if it's a plain object.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'isWindow': function() {
+ /// <signature>
+ /// <summary>Determine whether the argument is a window.</summary>
+ /// <param name="obj" type="PlainObject">Object to test whether or not it is a window.</param>
+ /// <returns type="boolean" />
+ /// </signature>
+ },
+ 'isXMLDoc': function() {
+ /// <signature>
+ /// <summary>Check to see if a DOM node is within an XML document (or is an XML document).</summary>
+ /// <param name="node" type="Element">The DOM node that will be checked to see if it's in an XML document.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'makeArray': function() {
+ /// <signature>
+ /// <summary>Convert an array-like object into a true JavaScript array.</summary>
+ /// <param name="obj" type="PlainObject">Any object to turn into a native Array.</param>
+ /// <returns type="Array" />
+ /// </signature>
+ },
+ 'map': function() {
+ /// <signature>
+ /// <summary>Translate all items in an array or object to new array of items.</summary>
+ /// <param name="array" type="Array">The Array to translate.</param>
+ /// <param name="callback(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object.</param>
+ /// <returns type="Array" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Translate all items in an array or object to new array of items.</summary>
+ /// <param name="arrayOrObject" type="Object">The Array or Object to translate.</param>
+ /// <param name="callback( value, indexOrKey )" type="Function">The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object.</param>
+ /// <returns type="Array" />
+ /// </signature>
+ },
+ 'merge': function() {
+ /// <signature>
+ /// <summary>Merge the contents of two arrays together into the first array.</summary>
+ /// <param name="first" type="Array">The first array to merge, the elements of second added.</param>
+ /// <param name="second" type="Array">The second array to merge into the first, unaltered.</param>
+ /// <returns type="Array" />
+ /// </signature>
+ },
+ 'noConflict': function() {
+ /// <signature>
+ /// <summary>Relinquish jQuery's control of the $ variable.</summary>
+ /// <param name="removeAll" type="Boolean">A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself).</param>
+ /// <returns type="Object" />
+ /// </signature>
+ },
+ 'noop': function() {
+ /// <summary>An empty function.</summary>
+ },
+ 'now': function() {
+ /// <summary>Return a number representing the current time.</summary>
+ /// <returns type="Number" />
+ },
+ 'param': function() {
+ /// <signature>
+ /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary>
+ /// <param name="obj" type="Object">An array or object to serialize.</param>
+ /// <returns type="String" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary>
+ /// <param name="obj" type="Object">An array or object to serialize.</param>
+ /// <param name="traditional" type="Boolean">A Boolean indicating whether to perform a traditional "shallow" serialization.</param>
+ /// <returns type="String" />
+ /// </signature>
+ },
+ 'parseHTML': function() {
+ /// <signature>
+ /// <summary>Parses a string into an array of DOM nodes.</summary>
+ /// <param name="data" type="String">HTML string to be parsed</param>
+ /// <param name="context" type="Element">DOM element to serve as the context in which the HTML fragment will be created</param>
+ /// <param name="keepScripts" type="Boolean">A Boolean indicating whether to include scripts passed in the HTML string</param>
+ /// <returns type="Array" />
+ /// </signature>
+ },
+ 'parseJSON': function() {
+ /// <signature>
+ /// <summary>Takes a well-formed JSON string and returns the resulting JavaScript object.</summary>
+ /// <param name="json" type="String">The JSON string to parse.</param>
+ /// <returns type="Object" />
+ /// </signature>
+ },
+ 'parseXML': function() {
+ /// <signature>
+ /// <summary>Parses a string into an XML document.</summary>
+ /// <param name="data" type="String">a well-formed XML string to be parsed</param>
+ /// <returns type="XMLDocument" />
+ /// </signature>
+ },
+ 'post': function() {
+ /// <signature>
+ /// <summary>Load data from the server using a HTTP POST request.</summary>
+ /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
+ /// <param name="data" type="String">A plain object or string that is sent to the server with the request.</param>
+ /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
+ /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).</param>
+ /// <returns type="jqXHR" />
+ /// </signature>
+ },
+ 'proxy': function() {
+ /// <signature>
+ /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
+ /// <param name="function" type="Function">The function whose context will be changed.</param>
+ /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param>
+ /// <returns type="Function" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
+ /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param>
+ /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param>
+ /// <returns type="Function" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
+ /// <param name="function" type="Function">The function whose context will be changed.</param>
+ /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param>
+ /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function referenced in the function argument.</param>
+ /// <returns type="Function" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
+ /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param>
+ /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param>
+ /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function named in the name argument.</param>
+ /// <returns type="Function" />
+ /// </signature>
+ },
+ 'queue': function() {
+ /// <signature>
+ /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary>
+ /// <param name="element" type="Element">A DOM element where the array of queued functions is attached.</param>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary>
+ /// <param name="element" type="Element">A DOM element on which to add a queued function.</param>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// <param name="callback()" type="Function">The new function to add to the queue.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'removeData': function() {
+ /// <signature>
+ /// <summary>Remove a previously-stored piece of data.</summary>
+ /// <param name="element" type="Element">A DOM element from which to remove data.</param>
+ /// <param name="name" type="String">A string naming the piece of data to remove.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'sub': function() {
+ /// <summary>Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object.</summary>
+ /// <returns type="jQuery" />
+ },
+ 'support': function() {
+ /// <summary>A collection of properties that represent the presence of different browser features or bugs. Primarily intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance.</summary>
+ /// <returns type="Object" />
+ },
+ 'trim': function() {
+ /// <signature>
+ /// <summary>Remove the whitespace from the beginning and end of a string.</summary>
+ /// <param name="str" type="String">The string to trim.</param>
+ /// <returns type="String" />
+ /// </signature>
+ },
+ 'type': function() {
+ /// <signature>
+ /// <summary>Determine the internal JavaScript [[Class]] of an object.</summary>
+ /// <param name="obj" type="PlainObject">Object to get the internal JavaScript [[Class]] of.</param>
+ /// <returns type="String" />
+ /// </signature>
+ },
+ 'unique': function() {
+ /// <signature>
+ /// <summary>Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers.</summary>
+ /// <param name="array" type="Array">The Array of DOM elements.</param>
+ /// <returns type="Array" />
+ /// </signature>
+ },
+ 'when': function() {
+ /// <signature>
+ /// <summary>Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events.</summary>
+ /// <param name="deferreds" type="Deferred">One or more Deferred objects, or plain JavaScript objects.</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ },
+});
+
+var _1228819969 = jQuery.Callbacks;
+jQuery.Callbacks = function(flags) {
+var _object = _1228819969(flags);
+intellisense.annotate(_object, {
+ 'add': function() {
+ /// <signature>
+ /// <summary>Add a callback or a collection of callbacks to a callback list.</summary>
+ /// <param name="callbacks" type="Array">A function, or array of functions, that are to be added to the callback list.</param>
+ /// <returns type="Callbacks" />
+ /// </signature>
+ },
+ 'disable': function() {
+ /// <summary>Disable a callback list from doing anything more.</summary>
+ /// <returns type="Callbacks" />
+ },
+ 'disabled': function() {
+ /// <summary>Determine if the callbacks list has been disabled.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'empty': function() {
+ /// <summary>Remove all of the callbacks from a list.</summary>
+ /// <returns type="Callbacks" />
+ },
+ 'fire': function() {
+ /// <signature>
+ /// <summary>Call all of the callbacks with the given arguments</summary>
+ /// <param name="arguments" type="Anything">The argument or list of arguments to pass back to the callback list.</param>
+ /// <returns type="Callbacks" />
+ /// </signature>
+ },
+ 'fired': function() {
+ /// <summary>Determine if the callbacks have already been called at least once.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'fireWith': function() {
+ /// <signature>
+ /// <summary>Call all callbacks in a list with the given context and arguments.</summary>
+ /// <param name="context" type="">A reference to the context in which the callbacks in the list should be fired.</param>
+ /// <param name="args" type="">An argument, or array of arguments, to pass to the callbacks in the list.</param>
+ /// <returns type="Callbacks" />
+ /// </signature>
+ },
+ 'has': function() {
+ /// <signature>
+ /// <summary>Determine whether a supplied callback is in a list</summary>
+ /// <param name="callback" type="Function">The callback to search for.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'lock': function() {
+ /// <summary>Lock a callback list in its current state.</summary>
+ /// <returns type="Callbacks" />
+ },
+ 'locked': function() {
+ /// <summary>Determine if the callbacks list has been locked.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'remove': function() {
+ /// <signature>
+ /// <summary>Remove a callback or a collection of callbacks from a callback list.</summary>
+ /// <param name="callbacks" type="Array">A function, or array of functions, that are to be removed from the callback list.</param>
+ /// <returns type="Callbacks" />
+ /// </signature>
+ },
+});
+
+return _object;
+};
+intellisense.redirectDefinition(jQuery.Callbacks, _1228819969);
+
+var _731531622 = jQuery.Deferred;
+jQuery.Deferred = function(func) {
+var _object = _731531622(func);
+intellisense.annotate(_object, {
+ 'always': function() {
+ /// <signature>
+ /// <summary>Add handlers to be called when the Deferred object is either resolved or rejected.</summary>
+ /// <param name="alwaysCallbacks" type="Function">A function, or array of functions, that is called when the Deferred is resolved or rejected.</param>
+ /// <param name="alwaysCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'done': function() {
+ /// <signature>
+ /// <summary>Add handlers to be called when the Deferred object is resolved.</summary>
+ /// <param name="doneCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is resolved.</param>
+ /// <param name="doneCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'fail': function() {
+ /// <signature>
+ /// <summary>Add handlers to be called when the Deferred object is rejected.</summary>
+ /// <param name="failCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is rejected.</param>
+ /// <param name="failCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is rejected.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'isRejected': function() {
+ /// <summary>Determine whether a Deferred object has been rejected.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'isResolved': function() {
+ /// <summary>Determine whether a Deferred object has been resolved.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'notify': function() {
+ /// <signature>
+ /// <summary>Call the progressCallbacks on a Deferred object with the given args.</summary>
+ /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'notifyWith': function() {
+ /// <signature>
+ /// <summary>Call the progressCallbacks on a Deferred object with the given context and args.</summary>
+ /// <param name="context" type="Object">Context passed to the progressCallbacks as the this object.</param>
+ /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'pipe': function() {
+ /// <signature>
+ /// <summary>Utility method to filter and/or chain Deferreds.</summary>
+ /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param>
+ /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Utility method to filter and/or chain Deferreds.</summary>
+ /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param>
+ /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
+ /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ },
+ 'progress': function() {
+ /// <signature>
+ /// <summary>Add handlers to be called when the Deferred object generates progress notifications.</summary>
+ /// <param name="progressCallbacks" type="Function">A function, or array of functions, that is called when the Deferred generates progress notifications.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'promise': function() {
+ /// <signature>
+ /// <summary>Return a Deferred's Promise object.</summary>
+ /// <param name="target" type="Object">Object onto which the promise methods have to be attached</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ },
+ 'reject': function() {
+ /// <signature>
+ /// <summary>Reject a Deferred object and call any failCallbacks with the given args.</summary>
+ /// <param name="args" type="Object">Optional arguments that are passed to the failCallbacks.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'rejectWith': function() {
+ /// <signature>
+ /// <summary>Reject a Deferred object and call any failCallbacks with the given context and args.</summary>
+ /// <param name="context" type="Object">Context passed to the failCallbacks as the this object.</param>
+ /// <param name="args" type="Array">An optional array of arguments that are passed to the failCallbacks.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'resolve': function() {
+ /// <signature>
+ /// <summary>Resolve a Deferred object and call any doneCallbacks with the given args.</summary>
+ /// <param name="args" type="Object">Optional arguments that are passed to the doneCallbacks.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'resolveWith': function() {
+ /// <signature>
+ /// <summary>Resolve a Deferred object and call any doneCallbacks with the given context and args.</summary>
+ /// <param name="context" type="Object">Context passed to the doneCallbacks as the this object.</param>
+ /// <param name="args" type="Array">An optional array of arguments that are passed to the doneCallbacks.</param>
+ /// <returns type="Deferred" />
+ /// </signature>
+ },
+ 'state': function() {
+ /// <summary>Determine the current state of a Deferred object.</summary>
+ /// <returns type="String" />
+ },
+ 'then': function() {
+ /// <signature>
+ /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
+ /// <param name="doneFilter" type="Function">A function that is called when the Deferred is resolved.</param>
+ /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
+ /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
+ /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param>
+ /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
+ /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param>
+ /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param>
+ /// <param name="progressCallbacks" type="Function">A function, or array of functions, called when the Deferred notifies progress.</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ },
+});
+
+return _object;
+};
+intellisense.redirectDefinition(jQuery.Callbacks, _731531622);
+
+intellisense.annotate(jQuery.Event.prototype, {
+ 'currentTarget': function() {
+ /// <summary>The current DOM element within the event bubbling phase.</summary>
+ /// <returns type="Element" />
+ },
+ 'data': function() {
+ /// <summary>An optional object of data passed to an event method when the current executing handler is bound.</summary>
+ /// <returns type="Object" />
+ },
+ 'delegateTarget': function() {
+ /// <summary>The element where the currently-called jQuery event handler was attached.</summary>
+ /// <returns type="Element" />
+ },
+ 'isDefaultPrevented': function() {
+ /// <summary>Returns whether event.preventDefault() was ever called on this event object.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'isImmediatePropagationStopped': function() {
+ /// <summary>Returns whether event.stopImmediatePropagation() was ever called on this event object.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'isPropagationStopped': function() {
+ /// <summary>Returns whether event.stopPropagation() was ever called on this event object.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'metaKey': function() {
+ /// <summary>Indicates whether the META key was pressed when the event fired.</summary>
+ /// <returns type="Boolean" />
+ },
+ 'namespace': function() {
+ /// <summary>The namespace specified when the event was triggered.</summary>
+ /// <returns type="String" />
+ },
+ 'pageX': function() {
+ /// <summary>The mouse position relative to the left edge of the document.</summary>
+ /// <returns type="Number" />
+ },
+ 'pageY': function() {
+ /// <summary>The mouse position relative to the top edge of the document.</summary>
+ /// <returns type="Number" />
+ },
+ 'preventDefault': function() {
+ /// <summary>If this method is called, the default action of the event will not be triggered.</summary>
+ },
+ 'relatedTarget': function() {
+ /// <summary>The other DOM element involved in the event, if any.</summary>
+ /// <returns type="Element" />
+ },
+ 'result': function() {
+ /// <summary>The last value returned by an event handler that was triggered by this event, unless the value was undefined.</summary>
+ /// <returns type="Object" />
+ },
+ 'stopImmediatePropagation': function() {
+ /// <summary>Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree.</summary>
+ },
+ 'stopPropagation': function() {
+ /// <summary>Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event.</summary>
+ },
+ 'target': function() {
+ /// <summary>The DOM element that initiated the event.</summary>
+ /// <returns type="Element" />
+ },
+ 'timeStamp': function() {
+ /// <summary>The difference in milliseconds between the time the browser created the event and January 1, 1970.</summary>
+ /// <returns type="Number" />
+ },
+ 'type': function() {
+ /// <summary>Describes the nature of the event.</summary>
+ /// <returns type="String" />
+ },
+ 'which': function() {
+ /// <summary>For key or mouse events, this property indicates the specific key or button that was pressed.</summary>
+ /// <returns type="Number" />
+ },
+});
+
+intellisense.annotate(jQuery.fn, {
+ 'add': function() {
+ /// <signature>
+ /// <summary>Add elements to the set of matched elements.</summary>
+ /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add elements to the set of matched elements.</summary>
+ /// <param name="elements" type="Array">One or more elements to add to the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add elements to the set of matched elements.</summary>
+ /// <param name="html" type="String">An HTML fragment to add to the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add elements to the set of matched elements.</summary>
+ /// <param name="jQuery object" type="jQuery object ">An existing jQuery object to add to the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add elements to the set of matched elements.</summary>
+ /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param>
+ /// <param name="context" type="Element">The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'addBack': function() {
+ /// <signature>
+ /// <summary>Add the previous set of elements on the stack to the current set, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'addClass': function() {
+ /// <signature>
+ /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary>
+ /// <param name="className" type="String">One or more space-separated classes to be added to the class attribute of each matched element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary>
+ /// <param name="function(index, currentClass)" type="Function">A function returning one or more space-separated class names to be added to the existing class name(s). Receives the index position of the element in the set and the existing class name(s) as arguments. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'after': function() {
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary>
+ /// <param name="content" type="jQuery">HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements.</param>
+ /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary>
+ /// <param name="function(index)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert after each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'ajaxComplete': function() {
+ /// <signature>
+ /// <summary>Register a handler to be called when Ajax requests complete. This is an AjaxEvent.</summary>
+ /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'ajaxError': function() {
+ /// <signature>
+ /// <summary>Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event.</summary>
+ /// <param name="handler(event, jqXHR, ajaxSettings, thrownError)" type="Function">The function to be invoked.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'ajaxSend': function() {
+ /// <signature>
+ /// <summary>Attach a function to be executed before an Ajax request is sent. This is an Ajax Event.</summary>
+ /// <param name="handler(event, jqXHR, ajaxOptions)" type="Function">The function to be invoked.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'ajaxStart': function() {
+ /// <signature>
+ /// <summary>Register a handler to be called when the first Ajax request begins. This is an Ajax Event.</summary>
+ /// <param name="handler()" type="Function">The function to be invoked.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'ajaxStop': function() {
+ /// <signature>
+ /// <summary>Register a handler to be called when all Ajax requests have completed. This is an Ajax Event.</summary>
+ /// <param name="handler()" type="Function">The function to be invoked.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'ajaxSuccess': function() {
+ /// <signature>
+ /// <summary>Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event.</summary>
+ /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'all': function() {
+ /// <summary>Selects all elements.</summary>
+ },
+ 'andSelf': function() {
+ /// <summary>Add the previous set of elements on the stack to the current set.</summary>
+ /// <returns type="jQuery" />
+ },
+ 'animate': function() {
+ /// <signature>
+ /// <summary>Perform a custom animation of a set of CSS properties.</summary>
+ /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Perform a custom animation of a set of CSS properties.</summary>
+ /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'animated': function() {
+ /// <summary>Select all elements that are in the progress of an animation at the time the selector is run.</summary>
+ },
+ 'append': function() {
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary>
+ /// <param name="content" type="jQuery">DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements.</param>
+ /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary>
+ /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the end of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'appendTo': function() {
+ /// <signature>
+ /// <summary>Insert every element in the set of matched elements to the end of the target.</summary>
+ /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'attr': function() {
+ /// <signature>
+ /// <summary>Set one or more attributes for the set of matched elements.</summary>
+ /// <param name="attributeName" type="String">The name of the attribute to set.</param>
+ /// <param name="value" type="Number">A value to set for the attribute.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set one or more attributes for the set of matched elements.</summary>
+ /// <param name="attributes" type="PlainObject">An object of attribute-value pairs to set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set one or more attributes for the set of matched elements.</summary>
+ /// <param name="attributeName" type="String">The name of the attribute to set.</param>
+ /// <param name="function(index, attr)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old attribute value as arguments.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'attributeContains': function() {
+ /// <signature>
+ /// <summary>Selects elements that have the specified attribute with a value containing the a given substring.</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
+ /// </signature>
+ },
+ 'attributeContainsPrefix': function() {
+ /// <signature>
+ /// <summary>Selects elements that have the specified attribute with a value either equal to a given string or starting with that string followed by a hyphen (-).</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
+ /// </signature>
+ },
+ 'attributeContainsWord': function() {
+ /// <signature>
+ /// <summary>Selects elements that have the specified attribute with a value containing a given word, delimited by spaces.</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
+ /// </signature>
+ },
+ 'attributeEndsWith': function() {
+ /// <signature>
+ /// <summary>Selects elements that have the specified attribute with a value ending exactly with a given string. The comparison is case sensitive.</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
+ /// </signature>
+ },
+ 'attributeEquals': function() {
+ /// <signature>
+ /// <summary>Selects elements that have the specified attribute with a value exactly equal to a certain value.</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
+ /// </signature>
+ },
+ 'attributeHas': function() {
+ /// <signature>
+ /// <summary>Selects elements that have the specified attribute, with any value.</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// </signature>
+ },
+ 'attributeMultiple': function() {
+ /// <signature>
+ /// <summary>Matches elements that match all of the specified attribute filters.</summary>
+ /// <param name="attributeFilter1" type="String">An attribute filter.</param>
+ /// <param name="attributeFilter2" type="String">Another attribute filter, reducing the selection even more</param>
+ /// <param name="attributeFilterN" type="String">As many more attribute filters as necessary</param>
+ /// </signature>
+ },
+ 'attributeNotEqual': function() {
+ /// <signature>
+ /// <summary>Select elements that either don't have the specified attribute, or do have the specified attribute but not with a certain value.</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
+ /// </signature>
+ },
+ 'attributeStartsWith': function() {
+ /// <signature>
+ /// <summary>Selects elements that have the specified attribute with a value beginning exactly with a given string.</summary>
+ /// <param name="attribute" type="String">An attribute name.</param>
+ /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
+ /// </signature>
+ },
+ 'before': function() {
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary>
+ /// <param name="content" type="jQuery">HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements.</param>
+ /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary>
+ /// <param name="function" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert before each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'bind': function() {
+ /// <signature>
+ /// <summary>Attach a handler to an event for the elements.</summary>
+ /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach a handler to an event for the elements.</summary>
+ /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="preventBubble" type="Boolean">Setting the third argument to false will attach a function that prevents the default action from occurring and stops the event from bubbling. The default is true.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach a handler to an event for the elements.</summary>
+ /// <param name="events" type="Object">An object containing one or more DOM event types and functions to execute for them.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'blur': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'button': function() {
+ /// <summary>Selects all button elements and elements of type button.</summary>
+ },
+ 'change': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'checkbox': function() {
+ /// <summary>Selects all elements of type checkbox.</summary>
+ },
+ 'checked': function() {
+ /// <summary>Matches all elements that are checked.</summary>
+ },
+ 'child': function() {
+ /// <signature>
+ /// <summary>Selects all direct child elements specified by "child" of elements specified by "parent".</summary>
+ /// <param name="parent" type="String">Any valid selector.</param>
+ /// <param name="child" type="String">A selector to filter the child elements.</param>
+ /// </signature>
+ },
+ 'children': function() {
+ /// <signature>
+ /// <summary>Get the children of each element in the set of matched elements, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'class': function() {
+ /// <signature>
+ /// <summary>Selects all elements with the given class.</summary>
+ /// <param name="class" type="String">A class to search for. An element can have multiple classes; only one of them must match.</param>
+ /// </signature>
+ },
+ 'clearQueue': function() {
+ /// <signature>
+ /// <summary>Remove from the queue all items that have not yet been run.</summary>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'click': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'clone': function() {
+ /// <signature>
+ /// <summary>Create a deep copy of the set of matched elements.</summary>
+ /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Create a deep copy of the set of matched elements.</summary>
+ /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back to false in 1.5.1 and up.</param>
+ /// <param name="deepWithDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false).</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'closest': function() {
+ /// <signature>
+ /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <param name="context" type="Element">A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
+ /// <param name="jQuery object" type="jQuery">A jQuery object to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
+ /// <param name="element" type="Element">An element to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'contains': function() {
+ /// <signature>
+ /// <summary>Select all elements that contain the specified text.</summary>
+ /// <param name="text" type="String">A string of text to look for. It's case sensitive.</param>
+ /// </signature>
+ },
+ 'contents': function() {
+ /// <summary>Get the children of each element in the set of matched elements, including text and comment nodes.</summary>
+ /// <returns type="jQuery" />
+ },
+ 'context': function() {
+ /// <summary>The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document.</summary>
+ /// <returns type="Element" />
+ },
+ 'css': function() {
+ /// <signature>
+ /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
+ /// <param name="propertyName" type="String">A CSS property name.</param>
+ /// <param name="value" type="Number">A value to set for the property.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
+ /// <param name="propertyName" type="String">A CSS property name.</param>
+ /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
+ /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'data': function() {
+ /// <signature>
+ /// <summary>Store arbitrary data associated with the matched elements.</summary>
+ /// <param name="key" type="String">A string naming the piece of data to set.</param>
+ /// <param name="value" type="Object">The new data value; it can be any Javascript type including Array or Object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Store arbitrary data associated with the matched elements.</summary>
+ /// <param name="obj" type="Object">An object of key-value pairs of data to update.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'dblclick': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'delay': function() {
+ /// <signature>
+ /// <summary>Set a timer to delay execution of subsequent items in the queue.</summary>
+ /// <param name="duration" type="Number">An integer indicating the number of milliseconds to delay execution of the next item in the queue.</param>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'delegate': function() {
+ /// <signature>
+ /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
+ /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
+ /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
+ /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
+ /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
+ /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
+ /// <param name="events" type="PlainObject">A plain object of one or more event types and functions to execute for them.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'dequeue': function() {
+ /// <signature>
+ /// <summary>Execute the next function on the queue for the matched elements.</summary>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'descendant': function() {
+ /// <signature>
+ /// <summary>Selects all elements that are descendants of a given ancestor.</summary>
+ /// <param name="ancestor" type="String">Any valid selector.</param>
+ /// <param name="descendant" type="String">A selector to filter the descendant elements.</param>
+ /// </signature>
+ },
+ 'detach': function() {
+ /// <signature>
+ /// <summary>Remove the set of matched elements from the DOM.</summary>
+ /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'die': function() {
+ /// <signature>
+ /// <summary>Remove event handlers previously attached using .live() from the elements.</summary>
+ /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or keydown.</param>
+ /// <param name="handler" type="String">The function that is no longer to be executed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove event handlers previously attached using .live() from the elements.</summary>
+ /// <param name="events" type="PlainObject">A plain object of one or more event types, such as click or keydown and their corresponding functions that are no longer to be executed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'disabled': function() {
+ /// <summary>Selects all elements that are disabled.</summary>
+ },
+ 'each': function() {
+ /// <signature>
+ /// <summary>Iterate over a jQuery object, executing a function for each matched element.</summary>
+ /// <param name="function(index, Element)" type="Function">A function to execute for each matched element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'element': function() {
+ /// <signature>
+ /// <summary>Selects all elements with the given tag name.</summary>
+ /// <param name="element" type="String">An element to search for. Refers to the tagName of DOM nodes.</param>
+ /// </signature>
+ },
+ 'empty': function() {
+ /// <summary>Select all elements that have no children (including text nodes).</summary>
+ },
+ 'enabled': function() {
+ /// <summary>Selects all elements that are enabled.</summary>
+ },
+ 'end': function() {
+ /// <summary>End the most recent filtering operation in the current chain and return the set of matched elements to its previous state.</summary>
+ /// <returns type="jQuery" />
+ },
+ 'eq': function() {
+ /// <signature>
+ /// <summary>Select the element at index n within the matched set.</summary>
+ /// <param name="index" type="Number">Zero-based index of the element to match.</param>
+ /// </signature>
+ /// <signature>
+ /// <summary>Select the element at index n within the matched set.</summary>
+ /// <param name="-index" type="Number">Zero-based index of the element to match, counting backwards from the last element.</param>
+ /// </signature>
+ },
+ 'error': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "error" JavaScript event.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "error" JavaScript event.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'even': function() {
+ /// <summary>Selects even elements, zero-indexed. See also odd.</summary>
+ },
+ 'fadeIn': function() {
+ /// <signature>
+ /// <summary>Display the matched elements by fading them to opaque.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display the matched elements by fading them to opaque.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display the matched elements by fading them to opaque.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'fadeOut': function() {
+ /// <signature>
+ /// <summary>Hide the matched elements by fading them to transparent.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Hide the matched elements by fading them to transparent.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Hide the matched elements by fading them to transparent.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'fadeTo': function() {
+ /// <signature>
+ /// <summary>Adjust the opacity of the matched elements.</summary>
+ /// <param name="duration" type="Number">A string or number determining how long the animation will run.</param>
+ /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Adjust the opacity of the matched elements.</summary>
+ /// <param name="duration" type="Number">A string or number determining how long the animation will run.</param>
+ /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'fadeToggle': function() {
+ /// <signature>
+ /// <summary>Display or hide the matched elements by animating their opacity.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display or hide the matched elements by animating their opacity.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'file': function() {
+ /// <summary>Selects all elements of type file.</summary>
+ },
+ 'filter': function() {
+ /// <signature>
+ /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
+ /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
+ /// <param name="element" type="Element">An element to match the current set of elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
+ /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'find': function() {
+ /// <signature>
+ /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
+ /// <param name="jQuery object" type="Object">A jQuery object to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
+ /// <param name="element" type="Element">An element to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'finish': function() {
+ /// <signature>
+ /// <summary>Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements.</summary>
+ /// <param name="queue" type="String">The name of the queue in which to stop animations.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'first': function() {
+ /// <summary>Selects the first matched element.</summary>
+ },
+ 'first-child': function() {
+ /// <summary>Selects all elements that are the first child of their parent.</summary>
+ },
+ 'first-of-type': function() {
+ /// <summary>Selects all elements that are the first among siblings of the same element name.</summary>
+ },
+ 'focus': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'focusin': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "focusin" event.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "focusin" event.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'focusout': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary>
+ /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'get': function() {
+ /// <signature>
+ /// <summary>Retrieve the DOM elements matched by the jQuery object.</summary>
+ /// <param name="index" type="Number">A zero-based integer indicating which element to retrieve.</param>
+ /// <returns type="Element, Array" />
+ /// </signature>
+ },
+ 'gt': function() {
+ /// <signature>
+ /// <summary>Select all elements at an index greater than index within the matched set.</summary>
+ /// <param name="index" type="Number">Zero-based index.</param>
+ /// </signature>
+ },
+ 'has': function() {
+ /// <signature>
+ /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary>
+ /// <param name="contained" type="Element">A DOM element to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'hasClass': function() {
+ /// <signature>
+ /// <summary>Determine whether any of the matched elements are assigned the given class.</summary>
+ /// <param name="className" type="String">The class name to search for.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'header': function() {
+ /// <summary>Selects all elements that are headers, like h1, h2, h3 and so on.</summary>
+ },
+ 'height': function() {
+ /// <signature>
+ /// <summary>Set the CSS height of every matched element.</summary>
+ /// <param name="value" type="Number">An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string).</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set the CSS height of every matched element.</summary>
+ /// <param name="function(index, height)" type="Function">A function returning the height to set. Receives the index position of the element in the set and the old height as arguments. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'hidden': function() {
+ /// <summary>Selects all elements that are hidden.</summary>
+ },
+ 'hide': function() {
+ /// <signature>
+ /// <summary>Hide the matched elements.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Hide the matched elements.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Hide the matched elements.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'hover': function() {
+ /// <signature>
+ /// <summary>Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements.</summary>
+ /// <param name="handlerIn(eventObject)" type="Function">A function to execute when the mouse pointer enters the element.</param>
+ /// <param name="handlerOut(eventObject)" type="Function">A function to execute when the mouse pointer leaves the element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'html': function() {
+ /// <signature>
+ /// <summary>Set the HTML contents of each element in the set of matched elements.</summary>
+ /// <param name="htmlString" type="String">A string of HTML to set as the content of each matched element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set the HTML contents of each element in the set of matched elements.</summary>
+ /// <param name="function(index, oldhtml)" type="Function">A function returning the HTML content to set. Receives the index position of the element in the set and the old HTML value as arguments. jQuery empties the element before calling the function; use the oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'id': function() {
+ /// <signature>
+ /// <summary>Selects a single element with the given id attribute.</summary>
+ /// <param name="id" type="String">An ID to search for, specified via the id attribute of an element.</param>
+ /// </signature>
+ },
+ 'image': function() {
+ /// <summary>Selects all elements of type image.</summary>
+ },
+ 'index': function() {
+ /// <signature>
+ /// <summary>Search for a given element from among the matched elements.</summary>
+ /// <param name="selector" type="String">A selector representing a jQuery collection in which to look for an element.</param>
+ /// <returns type="Number" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Search for a given element from among the matched elements.</summary>
+ /// <param name="element" type="jQuery">The DOM element or first element within the jQuery object to look for.</param>
+ /// <returns type="Number" />
+ /// </signature>
+ },
+ 'init': function() {
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression</param>
+ /// <param name="context" type="jQuery">A DOM Element, Document, or jQuery to use as context</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'innerHeight': function() {
+ /// <summary>Get the current computed height for the first element in the set of matched elements, including padding but not border.</summary>
+ /// <returns type="Integer" />
+ },
+ 'innerWidth': function() {
+ /// <summary>Get the current computed width for the first element in the set of matched elements, including padding but not border.</summary>
+ /// <returns type="Integer" />
+ },
+ 'input': function() {
+ /// <summary>Selects all input, textarea, select and button elements.</summary>
+ },
+ 'insertAfter': function() {
+ /// <signature>
+ /// <summary>Insert every element in the set of matched elements after the target.</summary>
+ /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'insertBefore': function() {
+ /// <signature>
+ /// <summary>Insert every element in the set of matched elements before the target.</summary>
+ /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'is': function() {
+ /// <signature>
+ /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
+ /// <param name="function(index)" type="Function">A function used as a test for the set of elements. It accepts one argument, index, which is the element's index in the jQuery collection.Within the function, this refers to the current DOM element.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
+ /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
+ /// <param name="element" type="Element">An element to match the current set of elements against.</param>
+ /// <returns type="Boolean" />
+ /// </signature>
+ },
+ 'jquery': function() {
+ /// <summary>A string containing the jQuery version number.</summary>
+ /// <returns type="String" />
+ },
+ 'keydown': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'keypress': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'keyup': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'lang': function() {
+ /// <signature>
+ /// <summary>Selects all elements of the specified language.</summary>
+ /// <param name="language" type="String">A language code.</param>
+ /// </signature>
+ },
+ 'last': function() {
+ /// <summary>Selects the last matched element.</summary>
+ },
+ 'last-child': function() {
+ /// <summary>Selects all elements that are the last child of their parent.</summary>
+ },
+ 'last-of-type': function() {
+ /// <summary>Selects all elements that are the last among siblings of the same element name.</summary>
+ },
+ 'length': function() {
+ /// <summary>The number of elements in the jQuery object.</summary>
+ /// <returns type="Number" />
+ },
+ 'live': function() {
+ /// <signature>
+ /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
+ /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
+ /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param>
+ /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
+ /// <param name="events" type="PlainObject">A plain object of one or more JavaScript event types and functions to execute for them.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'load': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "load" JavaScript event.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "load" JavaScript event.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'lt': function() {
+ /// <signature>
+ /// <summary>Select all elements at an index less than index within the matched set.</summary>
+ /// <param name="index" type="Number">Zero-based index.</param>
+ /// </signature>
+ },
+ 'map': function() {
+ /// <signature>
+ /// <summary>Pass each element in the current matched set through a function, producing a new jQuery object containing the return values.</summary>
+ /// <param name="callback(index, domElement)" type="Function">A function object that will be invoked for each element in the current set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'mousedown': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'mouseenter': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'mouseleave': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'mousemove': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'mouseout': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'mouseover': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'mouseup': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'multiple': function() {
+ /// <signature>
+ /// <summary>Selects the combined results of all the specified selectors.</summary>
+ /// <param name="selector1" type="String">Any valid selector.</param>
+ /// <param name="selector2" type="String">Another valid selector.</param>
+ /// <param name="selectorN" type="String">As many more valid selectors as you like.</param>
+ /// </signature>
+ },
+ 'next': function() {
+ /// <signature>
+ /// <summary>Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'next adjacent': function() {
+ /// <signature>
+ /// <summary>Selects all next elements matching "next" that are immediately preceded by a sibling "prev".</summary>
+ /// <param name="prev" type="String">Any valid selector.</param>
+ /// <param name="next" type="String">A selector to match the element that is next to the first selector.</param>
+ /// </signature>
+ },
+ 'next siblings': function() {
+ /// <signature>
+ /// <summary>Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector.</summary>
+ /// <param name="prev" type="String">Any valid selector.</param>
+ /// <param name="siblings" type="String">A selector to filter elements that are the following siblings of the first selector.</param>
+ /// </signature>
+ },
+ 'nextAll': function() {
+ /// <signature>
+ /// <summary>Get all following siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'nextUntil': function() {
+ /// <signature>
+ /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching following sibling elements.</param>
+ /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary>
+ /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching following sibling elements.</param>
+ /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'not': function() {
+ /// <signature>
+ /// <summary>Remove elements from the set of matched elements.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove elements from the set of matched elements.</summary>
+ /// <param name="elements" type="Array">One or more DOM elements to remove from the matched set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove elements from the set of matched elements.</summary>
+ /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove elements from the set of matched elements.</summary>
+ /// <param name="jQuery object" type="PlainObject">An existing jQuery object to match the current set of elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'nth-child': function() {
+ /// <signature>
+ /// <summary>Selects all elements that are the nth-child of their parent.</summary>
+ /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-child(even), :nth-child(4n) )</param>
+ /// </signature>
+ },
+ 'nth-last-child': function() {
+ /// <signature>
+ /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary>
+ /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) )</param>
+ /// </signature>
+ },
+ 'nth-last-of-type': function() {
+ /// <signature>
+ /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary>
+ /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-of-type(even), :nth-last-of-type(4n) )</param>
+ /// </signature>
+ },
+ 'nth-of-type': function() {
+ /// <signature>
+ /// <summary>Selects all elements that are the nth child of their parent in relation to siblings with the same element name.</summary>
+ /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-of-type(even), :nth-of-type(4n) )</param>
+ /// </signature>
+ },
+ 'odd': function() {
+ /// <summary>Selects odd elements, zero-indexed. See also even.</summary>
+ },
+ 'off': function() {
+ /// <signature>
+ /// <summary>Remove an event handler.</summary>
+ /// <param name="events" type="String">One or more space-separated event types and optional namespaces, or just namespaces, such as "click", "keydown.myPlugin", or ".myPlugin".</param>
+ /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param>
+ /// <param name="handler(eventObject)" type="Function">A handler function previously attached for the event(s), or the special value false.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove an event handler.</summary>
+ /// <param name="events" type="PlainObject">An object where the string keys represent one or more space-separated event types and optional namespaces, and the values represent handler functions previously attached for the event(s).</param>
+ /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'offset': function() {
+ /// <signature>
+ /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary>
+ /// <param name="coordinates" type="PlainObject">An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary>
+ /// <param name="function(index, coords)" type="Function">A function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'offsetParent': function() {
+ /// <summary>Get the closest ancestor element that is positioned.</summary>
+ /// <returns type="jQuery" />
+ },
+ 'on': function() {
+ /// <signature>
+ /// <summary>Attach an event handler function for one or more events to the selected elements.</summary>
+ /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param>
+ /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param>
+ /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach an event handler function for one or more events to the selected elements.</summary>
+ /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param>
+ /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param>
+ /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'one': function() {
+ /// <signature>
+ /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
+ /// <param name="events" type="String">A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names.</param>
+ /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
+ /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param>
+ /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param>
+ /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
+ /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param>
+ /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param>
+ /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'only-child': function() {
+ /// <summary>Selects all elements that are the only child of their parent.</summary>
+ },
+ 'only-of-type': function() {
+ /// <summary>Selects all elements that have no siblings with the same element name.</summary>
+ },
+ 'outerHeight': function() {
+ /// <signature>
+ /// <summary>Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements.</summary>
+ /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
+ /// <returns type="Integer" />
+ /// </signature>
+ },
+ 'outerWidth': function() {
+ /// <signature>
+ /// <summary>Get the current computed width for the first element in the set of matched elements, including padding and border.</summary>
+ /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
+ /// <returns type="Integer" />
+ /// </signature>
+ },
+ 'parent': function() {
+ /// <signature>
+ /// <summary>Get the parent of each element in the current set of matched elements, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'parents': function() {
+ /// <signature>
+ /// <summary>Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'parentsUntil': function() {
+ /// <signature>
+ /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching ancestor elements.</param>
+ /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
+ /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching ancestor elements.</param>
+ /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'password': function() {
+ /// <summary>Selects all elements of type password.</summary>
+ },
+ 'position': function() {
+ /// <summary>Get the current coordinates of the first element in the set of matched elements, relative to the offset parent.</summary>
+ /// <returns type="Object" />
+ },
+ 'prepend': function() {
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary>
+ /// <param name="content" type="jQuery">DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements.</param>
+ /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary>
+ /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the beginning of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'prependTo': function() {
+ /// <signature>
+ /// <summary>Insert every element in the set of matched elements to the beginning of the target.</summary>
+ /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'prev': function() {
+ /// <signature>
+ /// <summary>Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'prevAll': function() {
+ /// <signature>
+ /// <summary>Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'prevUntil': function() {
+ /// <signature>
+ /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching preceding sibling elements.</param>
+ /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
+ /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching preceding sibling elements.</param>
+ /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'promise': function() {
+ /// <signature>
+ /// <summary>Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished.</summary>
+ /// <param name="type" type="String">The type of queue that needs to be observed.</param>
+ /// <param name="target" type="PlainObject">Object onto which the promise methods have to be attached</param>
+ /// <returns type="Promise" />
+ /// </signature>
+ },
+ 'prop': function() {
+ /// <signature>
+ /// <summary>Set one or more properties for the set of matched elements.</summary>
+ /// <param name="propertyName" type="String">The name of the property to set.</param>
+ /// <param name="value" type="Boolean">A value to set for the property.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set one or more properties for the set of matched elements.</summary>
+ /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set one or more properties for the set of matched elements.</summary>
+ /// <param name="propertyName" type="String">The name of the property to set.</param>
+ /// <param name="function(index, oldPropertyValue)" type="Function">A function returning the value to set. Receives the index position of the element in the set and the old property value as arguments. Within the function, the keyword this refers to the current element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'pushStack': function() {
+ /// <signature>
+ /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary>
+ /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary>
+ /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param>
+ /// <param name="name" type="String">The name of a jQuery method that generated the array of elements.</param>
+ /// <param name="arguments" type="Array">The arguments that were passed in to the jQuery method (for serialization).</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'queue': function() {
+ /// <signature>
+ /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary>
+ /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
+ /// <param name="callback( next )" type="Function">The new function to add to the queue, with a function to call that will dequeue the next item.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'radio': function() {
+ /// <summary>Selects all elements of type radio.</summary>
+ },
+ 'ready': function() {
+ /// <signature>
+ /// <summary>Specify a function to execute when the DOM is fully loaded.</summary>
+ /// <param name="handler" type="Function">A function to execute after the DOM is ready.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'remove': function() {
+ /// <signature>
+ /// <summary>Remove the set of matched elements from the DOM.</summary>
+ /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'removeAttr': function() {
+ /// <signature>
+ /// <summary>Remove an attribute from each element in the set of matched elements.</summary>
+ /// <param name="attributeName" type="String">An attribute to remove; as of version 1.7, it can be a space-separated list of attributes.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'removeClass': function() {
+ /// <signature>
+ /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary>
+ /// <param name="className" type="String">One or more space-separated classes to be removed from the class attribute of each matched element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary>
+ /// <param name="function(index, class)" type="Function">A function returning one or more space-separated class names to be removed. Receives the index position of the element in the set and the old class value as arguments.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'removeData': function() {
+ /// <signature>
+ /// <summary>Remove a previously-stored piece of data.</summary>
+ /// <param name="name" type="String">A string naming the piece of data to delete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove a previously-stored piece of data.</summary>
+ /// <param name="list" type="String">An array or space-separated string naming the pieces of data to delete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'removeProp': function() {
+ /// <signature>
+ /// <summary>Remove a property for the set of matched elements.</summary>
+ /// <param name="propertyName" type="String">The name of the property to remove.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'replaceAll': function() {
+ /// <signature>
+ /// <summary>Replace each target element with the set of matched elements.</summary>
+ /// <param name="target" type="String">A selector expression indicating which element(s) to replace.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'replaceWith': function() {
+ /// <signature>
+ /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary>
+ /// <param name="newContent" type="jQuery">The content to insert. May be an HTML string, DOM element, or jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary>
+ /// <param name="function" type="Function">A function that returns content with which to replace the set of matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'reset': function() {
+ /// <summary>Selects all elements of type reset.</summary>
+ },
+ 'resize': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'root': function() {
+ /// <signature>
+ /// <summary>Selects the element that is the root of the document.</summary>
+ /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) )</param>
+ /// </signature>
+ },
+ 'scroll': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'scrollLeft': function() {
+ /// <signature>
+ /// <summary>Set the current horizontal position of the scroll bar for each of the set of matched elements.</summary>
+ /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'scrollTop': function() {
+ /// <signature>
+ /// <summary>Set the current vertical position of the scroll bar for each of the set of matched elements.</summary>
+ /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'select': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'selected': function() {
+ /// <summary>Selects all elements that are selected.</summary>
+ },
+ 'selector': function() {
+ /// <summary>A selector representing selector originally passed to jQuery().</summary>
+ /// <returns type="String" />
+ },
+ 'serialize': function() {
+ /// <summary>Encode a set of form elements as a string for submission.</summary>
+ /// <returns type="String" />
+ },
+ 'serializeArray': function() {
+ /// <summary>Encode a set of form elements as an array of names and values.</summary>
+ /// <returns type="Array" />
+ },
+ 'show': function() {
+ /// <signature>
+ /// <summary>Display the matched elements.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display the matched elements.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display the matched elements.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'siblings': function() {
+ /// <signature>
+ /// <summary>Get the siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'size': function() {
+ /// <summary>Return the number of elements in the jQuery object.</summary>
+ /// <returns type="Number" />
+ },
+ 'slice': function() {
+ /// <signature>
+ /// <summary>Reduce the set of matched elements to a subset specified by a range of indices.</summary>
+ /// <param name="start" type="Number">An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set.</param>
+ /// <param name="end" type="Number">An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'slideDown': function() {
+ /// <signature>
+ /// <summary>Display the matched elements with a sliding motion.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display the matched elements with a sliding motion.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display the matched elements with a sliding motion.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'slideToggle': function() {
+ /// <signature>
+ /// <summary>Display or hide the matched elements with a sliding motion.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display or hide the matched elements with a sliding motion.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display or hide the matched elements with a sliding motion.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'slideUp': function() {
+ /// <signature>
+ /// <summary>Hide the matched elements with a sliding motion.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Hide the matched elements with a sliding motion.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Hide the matched elements with a sliding motion.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'stop': function() {
+ /// <signature>
+ /// <summary>Stop the currently-running animation on the matched elements.</summary>
+ /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param>
+ /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Stop the currently-running animation on the matched elements.</summary>
+ /// <param name="queue" type="String">The name of the queue in which to stop animations.</param>
+ /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param>
+ /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'submit': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary>
+ /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'target': function() {
+ /// <summary>Selects the target element indicated by the fragment identifier of the document's URI.</summary>
+ },
+ 'text': function() {
+ /// <signature>
+ /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary>
+ /// <param name="textString" type="String">A string of text to set as the content of each matched element.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary>
+ /// <param name="function(index, text)" type="Function">A function returning the text content to set. Receives the index position of the element in the set and the old text value as arguments.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'toArray': function() {
+ /// <summary>Retrieve all the DOM elements contained in the jQuery set, as an array.</summary>
+ /// <returns type="Array" />
+ },
+ 'toggle': function() {
+ /// <signature>
+ /// <summary>Display or hide the matched elements.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display or hide the matched elements.</summary>
+ /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display or hide the matched elements.</summary>
+ /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
+ /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
+ /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Display or hide the matched elements.</summary>
+ /// <param name="showOrHide" type="Boolean">A Boolean indicating whether to show or hide the elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'toggleClass': function() {
+ /// <signature>
+ /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
+ /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
+ /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param>
+ /// <param name="switch" type="Boolean">A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
+ /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
+ /// <param name="function(index, class, switch)" type="Function">A function that returns class names to be toggled in the class attribute of each element in the matched set. Receives the index position of the element in the set, the old class value, and the switch as arguments.</param>
+ /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'trigger': function() {
+ /// <signature>
+ /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary>
+ /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
+ /// <param name="extraParameters" type="PlainObject">Additional parameters to pass along to the event handler.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary>
+ /// <param name="event" type="Event">A jQuery.Event object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'triggerHandler': function() {
+ /// <signature>
+ /// <summary>Execute all handlers attached to an element for an event.</summary>
+ /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
+ /// <param name="extraParameters" type="Array">An array of additional parameters to pass along to the event handler.</param>
+ /// <returns type="Object" />
+ /// </signature>
+ },
+ 'unbind': function() {
+ /// <signature>
+ /// <summary>Remove a previously-attached event handler from the elements.</summary>
+ /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
+ /// <param name="handler(eventObject)" type="Function">The function that is to be no longer executed.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove a previously-attached event handler from the elements.</summary>
+ /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
+ /// <param name="false" type="Boolean">Unbinds the corresponding 'return false' function that was bound using .bind( eventType, false ).</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove a previously-attached event handler from the elements.</summary>
+ /// <param name="event" type="Object">A JavaScript event object as passed to an event handler.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'undelegate': function() {
+ /// <signature>
+ /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
+ /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
+ /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
+ /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
+ /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
+ /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
+ /// <param name="events" type="PlainObject">An object of one or more event types and previously bound functions to unbind from them.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
+ /// <param name="namespace" type="String">A string containing a namespace to unbind all events from.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'unload': function() {
+ /// <signature>
+ /// <summary>Bind an event handler to the "unload" JavaScript event.</summary>
+ /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Bind an event handler to the "unload" JavaScript event.</summary>
+ /// <param name="eventData" type="Object">A plain object of data that will be passed to the event handler.</param>
+ /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'unwrap': function() {
+ /// <summary>Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place.</summary>
+ /// <returns type="jQuery" />
+ },
+ 'val': function() {
+ /// <signature>
+ /// <summary>Set the value of each element in the set of matched elements.</summary>
+ /// <param name="value" type="Array">A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set the value of each element in the set of matched elements.</summary>
+ /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'visible': function() {
+ /// <summary>Selects all elements that are visible.</summary>
+ },
+ 'width': function() {
+ /// <signature>
+ /// <summary>Set the CSS width of each element in the set of matched elements.</summary>
+ /// <param name="value" type="Number">An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string).</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Set the CSS width of each element in the set of matched elements.</summary>
+ /// <param name="function(index, width)" type="Function">A function returning the width to set. Receives the index position of the element in the set and the old width as arguments. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'wrap': function() {
+ /// <signature>
+ /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary>
+ /// <param name="wrappingElement" type="jQuery">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary>
+ /// <param name="function(index)" type="Function">A callback function returning the HTML content or jQuery object to wrap around the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'wrapAll': function() {
+ /// <signature>
+ /// <summary>Wrap an HTML structure around all elements in the set of matched elements.</summary>
+ /// <param name="wrappingElement" type="jQuery">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+ 'wrapInner': function() {
+ /// <signature>
+ /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary>
+ /// <param name="wrappingElement" type="String">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary>
+ /// <param name="function(index)" type="Function">A callback function which generates a structure to wrap around the content of the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+});
+
+intellisense.annotate(window, {
+ '$': function() {
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="selector" type="String">A string containing a selector expression</param>
+ /// <param name="context" type="jQuery">A DOM Element, Document, or jQuery to use as context</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ /// <signature>
+ /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
+ /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param>
+ /// <returns type="jQuery" />
+ /// </signature>
+ },
+});
+
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.js b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.js
new file mode 100644
index 0000000..d3e121b
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.js
@@ -0,0 +1,9803 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+/*!
+ * jQuery JavaScript Library v1.10.2
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:48Z
+ */
+(function( window, undefined ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
+var
+ // The deferred used on DOM ready
+ readyList,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // Support: IE<10
+ // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
+ core_strundefined = typeof undefined,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ location = window.location,
+ document = window.document,
+ docElem = document.documentElement,
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // [[Class]] -> type pairs
+ class2type = {},
+
+ // List of deleted data cache ids, so we can reuse them
+ core_deletedIds = [],
+
+ core_version = "1.10.2",
+
+ // Save a reference to some core methods
+ core_concat = core_deletedIds.concat,
+ core_push = core_deletedIds.push,
+ core_slice = core_deletedIds.slice,
+ core_indexOf = core_deletedIds.indexOf,
+ core_toString = class2type.toString,
+ core_hasOwn = class2type.hasOwnProperty,
+ core_trim = core_version.trim,
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Used for matching numbers
+ core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+ // Used for splitting on whitespace
+ core_rnotwhite = /\S+/g,
+
+ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ },
+
+ // The ready event handler
+ completed = function( event ) {
+
+ // readyState === "complete" is good enough for us to call the dom ready in oldIE
+ if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+ detach();
+ jQuery.ready();
+ }
+ },
+ // Clean-up method for dom ready events
+ detach = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+
+ } else {
+ document.detachEvent( "onreadystatechange", completed );
+ window.detachEvent( "onload", completed );
+ }
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: core_version,
+
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // scripts is true for back-compat
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return core_slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+ },
+
+ slice: function() {
+ return this.pushStack( core_slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: core_push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var src, copyIsArray, copy, name, options, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger("ready").off("ready");
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ isWindow: function( obj ) {
+ /* jshint eqeqeq: false */
+ return obj != null && obj == obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return String( obj );
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ core_toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ isPlainObject: function( obj ) {
+ var key;
+
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !core_hasOwn.call(obj, "constructor") &&
+ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Support: IE<9
+ // Handle iteration over inherited properties before own properties.
+ if ( jQuery.support.ownLast ) {
+ for ( key in obj ) {
+ return core_hasOwn.call( obj, key );
+ }
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+ for ( key in obj ) {}
+
+ return key === undefined || core_hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ // data: string of html
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
+ // keepScripts (optional): If true, will include scripts passed in the html string
+ parseHTML: function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+ if ( scripts ) {
+ jQuery( scripts ).remove();
+ }
+ return jQuery.merge( [], parsed.childNodes );
+ },
+
+ parseJSON: function( data ) {
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ if ( data === null ) {
+ return data;
+ }
+
+ if ( typeof data === "string" ) {
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ if ( data ) {
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return ( new Function( "return " + data ) )();
+ }
+ }
+ }
+
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && jQuery.trim( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+ function( text ) {
+ return text == null ?
+ "" :
+ core_trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ core_push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ var len;
+
+ if ( arr ) {
+ if ( core_indexOf ) {
+ return core_indexOf.call( arr, elem, i );
+ }
+
+ len = arr.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in arr && arr[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var l = second.length,
+ i = first.length,
+ j = 0;
+
+ if ( typeof l === "number" ) {
+ for ( ; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var retVal,
+ ret = [],
+ i = 0,
+ length = elems.length;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return core_concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var args, proxy, tmp;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = core_slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Multifunctional method to get and set values of a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ length = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < length; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
+ },
+
+ now: function() {
+ return ( new Date() ).getTime();
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations.
+ // Note: this method belongs to the css module but it's needed here for the support module.
+ // If support gets modularized, this method should be moved back to the css module.
+ swap: function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+ }
+});
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
+
+ // Standards-based browsers support DOMContentLoaded
+ } else if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
+
+ // If IE event model is used
+ } else {
+ // Ensure firing before onload, maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", completed );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", completed );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var top = false;
+
+ try {
+ top = window.frameElement == null && document.documentElement;
+ } catch(e) {}
+
+ if ( top && top.doScroll ) {
+ (function doScrollCheck() {
+ if ( !jQuery.isReady ) {
+
+ try {
+ // Use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ top.doScroll("left");
+ } catch(e) {
+ return setTimeout( doScrollCheck, 50 );
+ }
+
+ // detach all dom ready events
+ detach();
+
+ // and execute any waiting functions
+ jQuery.ready();
+ }
+ })();
+ }
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+ var length = obj.length,
+ type = jQuery.type( obj );
+
+ if ( jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || type !== "function" &&
+ ( length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj );
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+/*!
+ * Sizzle CSS Selector Engine v1.10.2
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03
+ */
+(function( window, undefined ) {
+
+var i,
+ support,
+ cachedruns,
+ Expr,
+ getText,
+ isXML,
+ compile,
+ outermostContext,
+ sortInput,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + -(new Date()),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ hasDuplicate = false,
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ strundefined = typeof undefined,
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf if we can't use a native one
+ indexOf = arr.indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+ "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+ // Prefer arguments quoted,
+ // then not containing pseudos/brackets,
+ // then attribute selectors/non-parenthetical expressions,
+ // then anything else
+ // These preferences are here to reduce the number of selectors
+ // needing tokenize in the PSEUDO preFilter
+ pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rsibling = new RegExp( whitespace + "*[+~]" ),
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ // BMP codepoint
+ high < 0 ?
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( documentIsHTML && !seed ) {
+
+ // Shortcuts
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && context.parentNode || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key += " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.defaultView;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+
+ // Support tests
+ documentIsHTML = !isXML( doc );
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent.attachEvent && parent !== parent.top ) {
+ parent.attachEvent( "onbeforeunload", function() {
+ setDocument();
+ });
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Check if getElementsByClassName can be trusted
+ support.getElementsByClassName = assert(function( div ) {
+ div.innerHTML = "<div class='a'></div><div class='a i'></div>";
+
+ // Support: Safari<4
+ // Catch class over-caching
+ div.firstChild.className = "i";
+ // Support: Opera<10
+ // Catch gEBCN failure to find non-leading classes
+ return div.getElementsByClassName("i").length === 2;
+ });
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = "<select><option selected=''></option></select>";
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+
+ // Support: Opera 10-12/IE8
+ // ^= $= *= and empty values
+ // Should not select anything
+ // Support: Windows 8 Native Apps
+ // The type attribute is restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "t", "" );
+
+ if ( div.querySelectorAll("[t^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = docElem.compareDocumentPosition ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+ if ( compare ) {
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ }
+
+ // Not directly comparable, sort on existence of method
+ return a.compareDocumentPosition ? -1 : 1;
+ } :
+ function( a, b ) {
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Parentless nodes are either documents or disconnected
+ } else if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, document, null, [elem] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val === undefined ?
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null :
+ val;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ for ( ; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (see #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[5] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] && match[4] !== undefined ) {
+ match[2] = match[4];
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+ // not comment, processing instructions, or others
+ // Thanks to Diego Perini for the nodeName shortcut
+ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+function tokenize( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( tokens = [] );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+}
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var data, cache, outerCache,
+ dirkey = dirruns + " " + doneName;
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+ if ( (data = cache[1]) === true || data === cachedruns ) {
+ return data === true;
+ }
+ } else {
+ cache = outerCache[ dir ] = [ dirkey ];
+ cache[1] = matcher( elem, context, xml ) || cachedruns;
+ if ( cache[1] === true ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ // A counter to specify which element is currently being matched
+ var matcherCachedRuns = 0,
+ bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, expandContext ) {
+ var elem, j, matcher,
+ setMatched = [],
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ outermost = expandContext != null,
+ contextBackup = outermostContext,
+ // We must always have either seed elements or context
+ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ cachedruns = matcherCachedRuns;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ cachedruns = ++matcherCachedRuns;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !group ) {
+ group = tokenize( selector );
+ }
+ i = group.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( group[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ }
+ return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function select( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ match = tokenize( selector );
+
+ if ( !seed ) {
+ // Try to minimize operations if there is only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+ }
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && context.parentNode || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function
+ // Provide `match` to avoid retokenization if we modified the selector above
+ compile( selector, match )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector )
+ );
+ return results;
+}
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "<input/>";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ elem[ name ] === true ? name.toLowerCase() : null;
+ }
+ });
+}
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var action = tuple[ 0 ],
+ fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = core_slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+ if( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // if we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+jQuery.support = (function( support ) {
+
+ var all, a, input, select, fragment, opt, eventName, isSupported, i,
+ div = document.createElement("div");
+
+ // Setup
+ div.setAttribute( "className", "t" );
+ div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
+
+ // Finish early in limited (non-browser) environments
+ all = div.getElementsByTagName("*") || [];
+ a = div.getElementsByTagName("a")[ 0 ];
+ if ( !a || !a.style || !all.length ) {
+ return support;
+ }
+
+ // First batch of tests
+ select = document.createElement("select");
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName("input")[ 0 ];
+
+ a.style.cssText = "top:1px;float:left;opacity:.5";
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ support.getSetAttribute = div.className !== "t";
+
+ // IE strips leading whitespace when .innerHTML is used
+ support.leadingWhitespace = div.firstChild.nodeType === 3;
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ support.tbody = !div.getElementsByTagName("tbody").length;
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ support.htmlSerialize = !!div.getElementsByTagName("link").length;
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ support.style = /top/.test( a.getAttribute("style") );
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ support.hrefNormalized = a.getAttribute("href") === "/a";
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ support.opacity = /^0.5/.test( a.style.opacity );
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ support.cssFloat = !!a.style.cssFloat;
+
+ // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+ support.checkOn = !!input.value;
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ support.optSelected = opt.selected;
+
+ // Tests for enctype support on a form (#6743)
+ support.enctype = !!document.createElement("form").enctype;
+
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>";
+
+ // Will be defined later
+ support.inlineBlockNeedsLayout = false;
+ support.shrinkWrapBlocks = false;
+ support.pixelPosition = false;
+ support.deleteExpando = true;
+ support.noCloneEvent = true;
+ support.reliableMarginRight = true;
+ support.boxSizingReliable = true;
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Support: IE<9
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ // Check if we can trust getAttribute("value")
+ input = document.createElement("input");
+ input.setAttribute( "value", "" );
+ support.input = input.getAttribute( "value" ) === "";
+
+ // Check if an input maintains its value after becoming a radio
+ input.value = "t";
+ input.setAttribute( "type", "radio" );
+ support.radioValue = input.value === "t";
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "checked", "t" );
+ input.setAttribute( "name", "t" );
+
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( input );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<9
+ // Opera does not clone events (and typeof div.attachEvent === undefined).
+ // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+ if ( div.attachEvent ) {
+ div.attachEvent( "onclick", function() {
+ support.noCloneEvent = false;
+ });
+
+ div.cloneNode( true ).click();
+ }
+
+ // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+ // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
+ for ( i in { submit: true, change: true, focusin: true }) {
+ div.setAttribute( eventName = "on" + i, "t" );
+
+ support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+ }
+
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ // Support: IE<9
+ // Iteration over object's inherited properties before its own.
+ for ( i in jQuery( support ) ) {
+ break;
+ }
+ support.ownLast = i !== "0";
+
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, marginDiv, tds,
+ divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+ body = document.getElementsByTagName("body")[0];
+
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
+ }
+
+ container = document.createElement("div");
+ container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+ body.appendChild( container ).appendChild( div );
+
+ // Support: IE8
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName("td");
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Support: IE8
+ // Check if empty table cells still have offsetWidth/Height
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Check box-sizing and margin behavior.
+ div.innerHTML = "";
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+
+ // Workaround failing boxSizing test due to offsetWidth returning wrong value
+ // with some non-1 values of body zoom, ticket #13543
+ jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+ support.boxSizing = div.offsetWidth === 4;
+ });
+
+ // Use window.getComputedStyle because jsdom on node.js will break without it.
+ if ( window.getComputedStyle ) {
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ marginDiv = div.appendChild( document.createElement("div") );
+ marginDiv.style.cssText = div.style.cssText = divReset;
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+
+ support.reliableMarginRight =
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+ }
+
+ if ( typeof div.style.zoom !== core_strundefined ) {
+ // Support: IE<8
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ div.innerHTML = "";
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+ // Support: IE6
+ // Check if elements with layout shrink-wrap their children
+ div.style.display = "block";
+ div.innerHTML = "<div></div>";
+ div.firstChild.style.width = "5px";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+ if ( support.inlineBlockNeedsLayout ) {
+ // Prevent IE 6 from affecting layout for positioned elements #11048
+ // Prevent IE from shrinking the body in IE 7 mode #12869
+ // Support: IE<8
+ body.style.zoom = 1;
+ }
+ }
+
+ body.removeChild( container );
+
+ // Null elements to avoid leaks in IE
+ container = div = tds = marginDiv = null;
+ });
+
+ // Null elements to avoid leaks in IE
+ all = select = fragment = opt = a = input = null;
+
+ return support;
+})({});
+
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var ret, thisCache,
+ internalKey = jQuery.expando,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
+ } else {
+ id = internalKey;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ // Avoid exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( typeof name === "string" ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+}
+
+function internalRemoveData( elem, name, pvt ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i,
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
+
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split(" ");
+ }
+ }
+ } else {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = name.concat( jQuery.map( name, jQuery.camelCase ) );
+ }
+
+ i = name.length;
+ while ( i-- ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
+ return;
+ }
+ }
+
+ // Destroy the cache
+ if ( isNode ) {
+ jQuery.cleanData( [ elem ], true );
+
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+ /* jshint eqeqeq: false */
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+ /* jshint eqeqeq: true */
+ delete cache[ id ];
+
+ // When all else fails, null
+ } else {
+ cache[ id ] = null;
+ }
+}
+
+jQuery.extend({
+ cache: {},
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "applet": true,
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return internalData( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ return internalRemoveData( elem, name );
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return internalData( elem, name, data, true );
+ },
+
+ _removeData: function( elem, name ) {
+ return internalRemoveData( elem, name, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ // Do not set data on non-element because it will not be cleared (#8335).
+ if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+ return false;
+ }
+
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ // nodes accept data unless otherwise specified; rejection can be conditional
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var attrs, name,
+ data = null,
+ i = 0,
+ elem = this[0];
+
+ // Special expections of .data basically thwart jQuery.access,
+ // so implement the relevant behavior ourselves
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = jQuery.data( elem );
+
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attrs = elem.attributes;
+ for ( ; i < attrs.length; i++ ) {
+ name = attrs[i].name;
+
+ if ( name.indexOf("data-") === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ jQuery._data( elem, "parsedAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ return arguments.length > 1 ?
+
+ // Sets one value
+ this.each(function() {
+ jQuery.data( this, key, value );
+ }) :
+
+ // Gets one value
+ // Try to fetch any internally stored data first
+ elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ var name;
+ for ( name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray(data) ) {
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ jQuery._removeData( elem, type + "queue" );
+ jQuery._removeData( elem, key );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while( i-- ) {
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var nodeHook, boolHook,
+ rclass = /[\t\r\n\f]/g,
+ rreturn = /\r/g,
+ rfocusable = /^(?:input|select|textarea|button|object)$/i,
+ rclickable = /^(?:a|area)$/i,
+ ruseDefault = /^(?:checked|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute,
+ getSetInput = jQuery.support.input;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
+ }
+
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+ elem.className = jQuery.trim( cur );
+
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = arguments.length === 0 || typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
+ }
+ if ( proceed ) {
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+ elem.className = value ? jQuery.trim( cur ) : "";
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( core_rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( type === core_strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // If the element has a class name or if we're passed "false",
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var ret, hooks, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // Use proper attribute retrieval(#6932, #12072)
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === core_strundefined ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( core_rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ elem[ propName ] = false;
+ // Support: IE<9
+ // Also clear defaultChecked/defaultSelected (if appropriate)
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] =
+ elem[ propName ] = false;
+ }
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ } else {
+ jQuery.attr( elem, name, "" );
+ }
+
+ elem.removeAttribute( getSetAttribute ? name : propName );
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to default in case type is set after value during creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
+
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ return tabindex ?
+ parseInt( tabindex, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ -1;
+ }
+ }
+ }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ // IE<8 needs the *property* name
+ elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
+
+ // Use defaultChecked and defaultSelected for oldIE
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
+ }
+
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
+
+ jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+ function( elem, name, isXML ) {
+ var fn = jQuery.expr.attrHandle[ name ],
+ ret = isXML ?
+ undefined :
+ /* jshint eqeqeq: false */
+ (jQuery.expr.attrHandle[ name ] = undefined) !=
+ getter( elem, name, isXML ) ?
+
+ name.toLowerCase() :
+ null;
+ jQuery.expr.attrHandle[ name ] = fn;
+ return ret;
+ } :
+ function( elem, name, isXML ) {
+ return isXML ?
+ undefined :
+ elem[ jQuery.camelCase( "default-" + name ) ] ?
+ name.toLowerCase() :
+ null;
+ };
+});
+
+// fix oldIE attroperties
+if ( !getSetInput || !getSetAttribute ) {
+ jQuery.attrHooks.value = {
+ set: function( elem, value, name ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ // Does not return so that setAttribute is also used
+ elem.defaultValue = value;
+ } else {
+ // Use nodeHook if defined (#1954); otherwise setAttribute is fine
+ return nodeHook && nodeHook.set( elem, value, name );
+ }
+ }
+ };
+}
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = {
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ elem.setAttributeNode(
+ (ret = elem.ownerDocument.createAttribute( name ))
+ );
+ }
+
+ ret.value = value += "";
+
+ // Break association with cloned elements by also using setAttribute (#9646)
+ return name === "value" || value === elem.getAttribute( name ) ?
+ value :
+ undefined;
+ }
+ };
+ jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
+ // Some attributes are constructed with empty-string values when not defined
+ function( elem, name, isXML ) {
+ var ret;
+ return isXML ?
+ undefined :
+ (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
+ ret.value :
+ null;
+ };
+ jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret = elem.getAttributeNode( name );
+ return ret && ret.specified ?
+ ret.value :
+ undefined;
+ },
+ set: nodeHook.set
+ };
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ set: function( elem, value, name ) {
+ nodeHook.set( elem, value === "" ? false : value, name );
+ }
+ };
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ };
+ });
+}
+
+
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+ // href/src property should get the full normalized URL (#10299/#12915)
+ jQuery.each([ "href", "src" ], function( i, name ) {
+ jQuery.propHooks[ name ] = {
+ get: function( elem ) {
+ return elem.getAttribute( name, 4 );
+ }
+ };
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Note: IE uppercases css property names, but if we were to .toLowerCase()
+ // .cssText, that would destroy case senstitivity in URL's, like in "background"
+ return elem.style.cssText || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = value + "" );
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ };
+}
+
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ };
+ if ( !jQuery.support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ // Support: Webkit
+ // "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+ var tmp, events, t, handleObjIn,
+ special, eventHandle, handleObj,
+ handlers, type, namespaces, origType,
+ elemData = jQuery._data( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+ var j, handleObj, tmp,
+ origCount, t, events,
+ special, handlers, type,
+ namespaces, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery._removeData( elem, "events" );
+ }
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ var handle, ontype, cur,
+ bubbleType, special, tmp, i,
+ eventPath = [ elem || document ],
+ type = core_hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ try {
+ elem[ type ]();
+ } catch ( e ) {
+ // IE<9 dies on focus/blur to hidden element (#1486,#12518)
+ // only reproducible on winXP IE8 native, not IE9 in IE8 mode
+ }
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, ret, handleObj, matched, j,
+ handlerQueue = [],
+ args = core_slice.call( arguments ),
+ handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var sel, handleObj, matches, i,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ // Black-hole SVG <use> instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+ /* jshint eqeqeq: false */
+ for ( ; cur != this; cur = cur.parentNode || this ) {
+ /* jshint eqeqeq: true */
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
+
+ return handlerQueue;
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: IE<9
+ // Fix target property (#1925)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Support: Chrome 23+, Safari?
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Support: IE<9
+ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+ event.metaKey = !!event.metaKey;
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var body, eventDoc, doc,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ try {
+ this.focus();
+ return false;
+ } catch ( e ) {
+ // Support: IE<9
+ // If we error on focus to hidden element (#1486, #12518),
+ // let .trigger() run the handlers
+ }
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Even when returnValue equals to undefined Firefox will still show alert
+ if ( event.result !== undefined ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ var name = "on" + type;
+
+ if ( elem.detachEvent ) {
+
+ // #8545, #7054, preventing memory leaks for custom events in IE6-8
+ // detachEvent needed property on element, by name of that event, to properly expose it to GC
+ if ( typeof elem[ name ] === core_strundefined ) {
+ elem[ name ] = null;
+ }
+
+ elem.detachEvent( name, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+ if ( !e ) {
+ return;
+ }
+
+ // If preventDefault exists, run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // Support: IE
+ // Otherwise set the returnValue property of the original event to false
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+ if ( !e ) {
+ return;
+ }
+ // If stopPropagation exists, run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+
+ // Support: IE
+ // Set the cancelBubble property of the original event to true
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ event._submit_bubble = true;
+ });
+ jQuery._data( form, "submitBubbles", true );
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ }
+ // Allow triggered, simulated change events (#11500)
+ jQuery.event.simulate( "change", this, event, true );
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ jQuery._data( elem, "changeBubbles", true );
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return !rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var type, origFn;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+});
+var isSimple = /^.[^:#\[\.,]*$/,
+ rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ rneedsContext = jQuery.expr.match.needsContext,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ ret = [],
+ self = this,
+ len = self.length;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+
+ has: function( target ) {
+ var i,
+ targets = jQuery( target, this ),
+ len = targets.length;
+
+ return this.filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ ret = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ cur = ret.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( jQuery.unique(all) );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ do {
+ cur = cur[ dir ];
+ } while ( cur && cur.nodeType !== 1 );
+
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ ret = jQuery.unique( ret );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
+ });
+}
+function createSafeFragment( document ) {
+ var list = nodeNames.split( "|" ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( list.length ) {
+ safeFrag.createElement(
+ list.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style|link)/i,
+ manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /^$|\/(?:java|ecma)script/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ area: [ 1, "<map>", "</map>" ],
+ param: [ 1, "<object>", "</object>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+ // unless wrapped in a div with non-breaking characters in front of it.
+ _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]
+ },
+ safeFragment = createSafeFragment( document ),
+ fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return jQuery.access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ });
+ },
+
+ after: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ });
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ var elem,
+ elems = selector ? jQuery.filter( selector, this ) : this,
+ i = 0;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem ) );
+ }
+
+ if ( elem.parentNode ) {
+ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+ setGlobalEval( getAll( elem, "script" ) );
+ }
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+
+ // If this is a select, ensure that it displays empty (#12336)
+ // Support: IE<9
+ if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
+ elem.options.length = 0;
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return jQuery.access( this, function( value ) {
+ var elem = this[0] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined ) {
+ return elem.nodeType === 1 ?
+ elem.innerHTML.replace( rinlinejQuery, "" ) :
+ undefined;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
+ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+ try {
+ for (; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ elem = this[i] || {};
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var
+ // Snapshot the DOM in case .domManip sweeps something relevant into its fragment
+ args = jQuery.map( this, function( elem ) {
+ return [ elem.nextSibling, elem.parentNode ];
+ }),
+ i = 0;
+
+ // Make the changes, replacing each context element with the new content
+ this.domManip( arguments, function( elem ) {
+ var next = args[ i++ ],
+ parent = args[ i++ ];
+
+ if ( parent ) {
+ // Don't use the snapshot next if it has moved (#13810)
+ if ( next && next.parentNode !== parent ) {
+ next = this.nextSibling;
+ }
+ jQuery( this ).remove();
+ parent.insertBefore( elem, next );
+ }
+ // Allow new content to include elements from the context set
+ }, true );
+
+ // Force removal if there was no new content (e.g., from empty arguments)
+ return i ? this : this.remove();
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, callback, allowIntersection ) {
+
+ // Flatten any nested arrays
+ args = core_concat.apply( [], args );
+
+ var first, node, hasScripts,
+ scripts, doc, fragment,
+ i = 0,
+ l = this.length,
+ set = this,
+ iNoClone = l - 1,
+ value = args[0],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
+ return this.each(function( index ) {
+ var self = set.eq( index );
+ if ( isFunction ) {
+ args[0] = value.call( this, index, self.html() );
+ }
+ self.domManip( args, callback, allowIntersection );
+ });
+ }
+
+ if ( l ) {
+ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( this[i], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+ // Hope ajax is available...
+ jQuery._evalUrl( node.src );
+ } else {
+ jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+
+ // Fix #11809: Avoid leaking memory
+ fragment = first = null;
+ }
+ }
+
+ return this;
+ }
+});
+
+// Support: IE<8
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+ if ( match ) {
+ elem.type = match[1];
+ } else {
+ elem.removeAttribute("type");
+ }
+ return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var elem,
+ i = 0;
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
+ }
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function fixCloneNodeIssues( src, dest ) {
+ var nodeName, e, data;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 copies events bound via attachEvent when using cloneNode.
+ if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
+ data = jQuery._data( dest );
+
+ for ( e in data.events ) {
+ jQuery.removeEvent( dest, e, data.handle );
+ }
+
+ // Event data gets referenced instead of copied if the expando gets copied too
+ dest.removeAttribute( jQuery.expando );
+ }
+
+ // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
+ if ( nodeName === "script" && dest.text !== src.text ) {
+ disableScript( dest ).text = src.text;
+ restoreScript( dest );
+
+ // IE6-10 improperly clones children of object elements using classid.
+ // IE10 throws NoModificationAllowedError if parent is null, #12132.
+ } else if ( nodeName === "object" ) {
+ if ( dest.parentNode ) {
+ dest.outerHTML = src.outerHTML;
+ }
+
+ // This path appears unavoidable for IE9. When cloning an object
+ // element in IE9, the outerHTML strategy above is not sufficient.
+ // If the src has innerHTML and the destination does not,
+ // copy the src.innerHTML into the dest.innerHTML. #10324
+ if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
+ dest.innerHTML = src.innerHTML;
+ }
+
+ } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+
+ dest.defaultChecked = dest.checked = src.checked;
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.defaultSelected = dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ i = 0,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone(true);
+ jQuery( insert[i] )[ original ]( elems );
+
+ // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+ core_push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+function getAll( context, tag ) {
+ var elems, elem,
+ i = 0,
+ found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+ typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
+ undefined;
+
+ if ( !found ) {
+ for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
+ if ( !tag || jQuery.nodeName( elem, tag ) ) {
+ found.push( elem );
+ } else {
+ jQuery.merge( found, getAll( elem, tag ) );
+ }
+ }
+ }
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], found ) :
+ found;
+}
+
+// Used in buildFragment, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( manipulation_rcheckableType.test( elem.type ) ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var destElements, node, clone, i, srcElements,
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+ clone = elem.cloneNode( true );
+
+ // IE<=8 does not properly clone detached, unknown element nodes
+ } else {
+ fragmentDiv.innerHTML = elem.outerHTML;
+ fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+ }
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ // Fix all IE cloning issues
+ for ( i = 0; (node = srcElements[i]) != null; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ fixCloneNodeIssues( node, destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0; (node = srcElements[i]) != null; i++ ) {
+ cloneCopyEvent( node, destElements[i] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ destElements = srcElements = node = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ buildFragment: function( elems, context, scripts, selection ) {
+ var j, elem, contains,
+ tmp, tag, tbody, wrap,
+ l = elems.length,
+
+ // Ensure a safe fragment
+ safe = createSafeFragment( context ),
+
+ nodes = [],
+ i = 0;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || safe.appendChild( context.createElement("div") );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+
+ tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
+
+ // Descend through wrappers to the right content
+ j = wrap[0];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Manually add leading whitespace removed by IE
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ elem = tag === "table" && !rtbody.test( elem ) ?
+ tmp.firstChild :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !rtbody.test( elem ) ?
+ tmp :
+ 0;
+
+ j = elem && elem.childNodes.length;
+ while ( j-- ) {
+ if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
+ elem.removeChild( tbody );
+ }
+ }
+ }
+
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Fix #12392 for WebKit and IE > 9
+ tmp.textContent = "";
+
+ // Fix #12392 for oldIE
+ while ( tmp.firstChild ) {
+ tmp.removeChild( tmp.firstChild );
+ }
+
+ // Remember the top-level container for proper cleanup
+ tmp = safe.lastChild;
+ }
+ }
+ }
+
+ // Fix #11356: Clear elements from fragment
+ if ( tmp ) {
+ safe.removeChild( tmp );
+ }
+
+ // Reset defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ if ( !jQuery.support.appendChecked ) {
+ jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
+ }
+
+ i = 0;
+ while ( (elem = nodes[ i++ ]) ) {
+
+ // #4087 - If origin and destination elements are the same, and this is
+ // that element, do not do anything
+ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( safe.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( (elem = tmp[ j++ ]) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ tmp = null;
+
+ return safe;
+ },
+
+ cleanData: function( elems, /* internal */ acceptData ) {
+ var elem, type, id, data,
+ i = 0,
+ internalKey = jQuery.expando,
+ cache = jQuery.cache,
+ deleteExpando = jQuery.support.deleteExpando,
+ special = jQuery.event.special;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( acceptData || jQuery.acceptData( elem ) ) {
+
+ id = elem[ internalKey ];
+ data = id && cache[ id ];
+
+ if ( data ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Remove cache only if it was not already removed by jQuery.event.remove
+ if ( cache[ id ] ) {
+
+ delete cache[ id ];
+
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( deleteExpando ) {
+ delete elem[ internalKey ];
+
+ } else if ( typeof elem.removeAttribute !== core_strundefined ) {
+ elem.removeAttribute( internalKey );
+
+ } else {
+ elem[ internalKey ] = null;
+ }
+
+ core_deletedIds.push( id );
+ }
+ }
+ }
+ }
+ },
+
+ _evalUrl: function( url ) {
+ return jQuery.ajax({
+ url: url,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+ }
+});
+jQuery.fn.extend({
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function(i) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ }
+});
+var iframe, getStyles, curCSS,
+ ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity\s*=\s*([^)]*)/,
+ rposition = /^(top|right|bottom|left)$/,
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rmargin = /^margin/,
+ rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+ rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+ rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
+ elemdisplay = { BODY: "block" },
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: 0,
+ fontWeight: 400
+ },
+
+ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // check for vendor prefixed names
+ var capName = name.charAt(0).toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function isHidden( elem, el ) {
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = jQuery._data( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+ }
+ } else {
+
+ if ( !values[ index ] ) {
+ hidden = isHidden( elem );
+
+ if ( display && display !== "none" || !hidden ) {
+ jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+ }
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return jQuery.access( this, function( elem, name, value ) {
+ var len, styles,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each(function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "columnCount": true,
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
+ // but it would mean to define eight (for every problematic property) identical functions
+ if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var num, val, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ //convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+});
+
+// NOTE: we've included the "window" in window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+ getStyles = function( elem ) {
+ return window.getComputedStyle( elem, null );
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var width, minWidth, maxWidth,
+ computed = _computed || getStyles( elem ),
+
+ // getPropertyValue is only needed for .css('filter') in IE9, see #12537
+ ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
+ style = elem.style;
+
+ if ( computed ) {
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+ // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret;
+ };
+} else if ( document.documentElement.currentStyle ) {
+ getStyles = function( elem ) {
+ return elem.currentStyle;
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var left, rs, rsLeft,
+ computed = _computed || getStyles( elem ),
+ ret = computed ? computed[ name ] : undefined,
+ style = elem.style;
+
+ // Avoid setting ret to empty string here
+ // so we don't default to auto
+ if ( ret == null && style && style[ name ] ) {
+ ret = style[ name ];
+ }
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ // but not position css attributes, as those are proportional to the parent element instead
+ // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+ if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+ // Remember the original values
+ left = style.left;
+ rs = elem.runtimeStyle;
+ rsLeft = rs && rs.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ rs.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : ret;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ rs.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // at this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+ // at this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // at this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // we need the check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+ // Use the already-created iframe if possible
+ iframe = ( iframe ||
+ jQuery("<iframe frameborder='0' width='0' height='0'/>")
+ .css( "cssText", "display:block !important" )
+ ).appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
+ doc.write("<!doctype html><html><body>");
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+
+// Called ONLY from within css_defaultDisplay
+function actualDisplay( name, doc ) {
+ var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+ display = jQuery.css( elem[0], "display" );
+ elem.remove();
+ return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ // certain elements can have dimension info if we invisibly show them
+ // however, it must have a current display style that would benefit from this
+ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+ jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ }) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var styles = extra && getStyles( elem );
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ ) : 0
+ );
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ // if value === "", then remove inline opacity #12685
+ if ( ( value >= 1 || value === "" ) &&
+ jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+ style.removeAttribute ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there is no filter style applied in a css rule or unset inline opacity, we are done
+ if ( value === "" || currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+ };
+ }
+
+ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+ // getComputedStyle returns percent when specified for top/left/bottom/right
+ // rather than make the css module depend on the offset module, we just check for it here
+ if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+ jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+ // if curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ };
+ });
+ }
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+ (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ })
+ .filter(function(){
+ var type = this.type;
+ // Use .is(":disabled") so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !manipulation_rcheckableType.test( type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+});
+
+jQuery.fn.extend({
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ }
+});
+var
+ // Document location
+ ajaxLocParts,
+ ajaxLocation,
+ ajax_nonce = jQuery.now(),
+
+ ajax_rquery = /\?/,
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ while ( (dataType = dataTypes[i++]) ) {
+ // Prepend if requested
+ if ( dataType[0] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+ // Otherwise append
+ } else {
+ (structure[ dataType ] = structure[ dataType ] || []).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ });
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var deep, key,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, response, type,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+ jQuery.fn[ type ] = function( fn ){
+ return this.on( type, fn );
+ };
+});
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Cross-domain detection vars
+ parts,
+ // Loop variable
+ i,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers as string
+ responseHeadersString,
+ // timeout handle
+ timeoutTimer,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ transport,
+ // Response headers
+ responseHeaders,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+ var firstDataType, ct, finalDataType, type,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || jQuery("head")[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement("script");
+
+ script.async = true;
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( script.parentNode ) {
+ script.parentNode.removeChild( script );
+ }
+
+ // Dereference the script
+ script = null;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+
+ // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( undefined, true );
+ }
+ }
+ };
+ }
+});
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+var xhrCallbacks, xhrSupported,
+ xhrId = 0,
+ // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject && function() {
+ // Abort all pending requests
+ var key;
+ for ( key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( undefined, true );
+ }
+ };
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var handle, i,
+ xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( err ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+ var status, responseHeaders, statusText, responses;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occurred
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ responses = {};
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ if ( typeof xhr.responseText === "string" ) {
+ responses.text = xhr.responseText;
+ }
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ if ( !s.async ) {
+ // if we're in sync mode we fire the callback
+ callback();
+ } else if ( xhr.readyState === 4 ) {
+ // (IE6 & IE7) if it's in cache and has been
+ // retrieved directly we need to fire the callback
+ setTimeout( callback );
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback( undefined, true );
+ }
+ }
+ };
+ }
+ });
+}
+var fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ }]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // we're done with this property
+ return tween;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // if we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // resolve when we played the last frame
+ // otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'index' from above because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = jQuery._data( elem, "fxshow" );
+
+ // handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // doing this makes sure that the complete handler will be called
+ // before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( elem, "display" ) === "inline" &&
+ jQuery.css( elem, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+ style.display = "inline-block";
+
+ } else {
+ style.zoom = 1;
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ if ( !jQuery.support.shrinkWrapBlocks ) {
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+ }
+
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+ continue;
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = jQuery._data( elem, "fxshow", {} );
+ }
+
+ // store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+ jQuery._removeData( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+ }
+}
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails
+ // so, simple values such as "10px" are parsed to Float.
+ // complex values such as "rotate(1rad)" are returned as is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // use step hook for back compat - use cssHook if its there - use .style if its
+ // available and use plain properties where available
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || jQuery._data( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = jQuery._data( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // enable finishing flag on private data
+ data.finish = true;
+
+ // empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ attrs = { height: type },
+ i = 0;
+
+ // if we include width, step value is 1 to do all cssExpand values,
+ // if we don't include width, step value is 2 to skip over Left and Right
+ includeWidth = includeWidth? 1 : 0;
+ for( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p*Math.PI ) / 2;
+ }
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ if ( timer() && jQuery.timers.push( timer ) ) {
+ jQuery.fx.start();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ box = { top: 0, left: 0 },
+ elem = this[ 0 ],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // If we don't have gBCR, just use 0,0 rather than error
+ // BlackBerry 5, iOS 3 (original iPhone)
+ if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
+ left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+ };
+};
+
+jQuery.offset = {
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ parentOffset = { top: 0, left: 0 },
+ elem = this[ 0 ];
+
+ // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // we assume that getBoundingClientRect is available when computed position is fixed
+ offset = elem.getBoundingClientRect();
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || docElem;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
+
+ jQuery.fn[ method ] = function( val ) {
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ win.document.documentElement[ method ] :
+ elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+ // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// })();
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+ // Expose jQuery as module.exports in loaders that implement the Node
+ // module pattern (including browserify). Do not create the global, since
+ // the user will be storing it themselves locally, and globals are frowned
+ // upon in the Node module world.
+ module.exports = jQuery;
+} else {
+ // Otherwise expose jQuery to the global object as usual
+ window.jQuery = window.$ = jQuery;
+
+ // Register as a named AMD module, since jQuery can be concatenated with other
+ // files that may use define, but not via a proper concatenation script that
+ // understands anonymous AMD modules. A named AMD is safest and most robust
+ // way to register. Lowercase jquery is used because AMD module names are
+ // derived from file names, and jQuery is normally delivered in a lowercase
+ // file name. Do this after creating the global so that if an AMD module wants
+ // to call noConflict to hide this version of jQuery, it will work.
+ if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function () { return jQuery; } );
+ }
+}
+
+})( window );
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.js b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.js
new file mode 100644
index 0000000..51aa758
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.js
@@ -0,0 +1,23 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * JQUERY CORE 1.10.2; Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; http://jquery.org/license
+ * Includes Sizzle.js; Copyright 2013 jQuery Foundation, Inc. and other contributors; http://opensource.org/licenses/MIT
+ *
+ * NUGET: END LICENSE TEXT */
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.map b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.map
new file mode 100644
index 0000000..4dc4920
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/jquery-1.10.2.min.map
@@ -0,0 +1 @@
+{"version":3,"file":"jquery-1.10.2.min.js","sources":["jquery-1.10.2.js"],"names":["window","undefined","readyList","rootjQuery","core_strundefined","location","document","docElem","documentElement","_jQuery","jQuery","_$","$","class2type","core_deletedIds","core_version","core_concat","concat","core_push","push","core_slice","slice","core_indexOf","indexOf","core_toString","toString","core_hasOwn","hasOwnProperty","core_trim","trim","selector","context","fn","init","core_pnum","source","core_rnotwhite","rtrim","rquickExpr","rsingleTag","rvalidchars","rvalidbraces","rvalidescape","rvalidtokens","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","completed","event","addEventListener","type","readyState","detach","ready","removeEventListener","detachEvent","prototype","jquery","constructor","match","elem","this","charAt","length","exec","find","merge","parseHTML","nodeType","ownerDocument","test","isPlainObject","isFunction","attr","getElementById","parentNode","id","makeArray","toArray","call","get","num","pushStack","elems","ret","prevObject","each","callback","args","promise","done","apply","arguments","first","eq","last","i","len","j","map","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isArray","expando","Math","random","replace","noConflict","isReady","readyWait","holdReady","hold","wait","body","setTimeout","resolveWith","trigger","off","obj","Array","isWindow","isNumeric","isNaN","parseFloat","isFinite","String","key","e","support","ownLast","isEmptyObject","error","msg","Error","data","keepScripts","parsed","scripts","createElement","buildFragment","remove","childNodes","parseJSON","JSON","parse","Function","parseXML","xml","tmp","DOMParser","parseFromString","ActiveXObject","async","loadXML","getElementsByTagName","noop","globalEval","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","arr","results","Object","inArray","max","second","l","grep","inv","retVal","arg","guid","proxy","access","chainable","emptyGet","raw","bulk","now","Date","getTime","swap","old","style","Deferred","attachEvent","top","frameElement","doScroll","doScrollCheck","split","cachedruns","Expr","getText","isXML","compile","outermostContext","sortInput","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","hasDuplicate","sortOrder","a","b","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rsibling","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rnative","rinputs","rheader","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","els","Sizzle","seed","m","groups","nid","newContext","newSelector","getElementsByClassName","qsa","tokenize","getAttribute","setAttribute","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","cacheLength","shift","markFunction","assert","div","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","doc","parent","defaultView","className","appendChild","createComment","innerHTML","firstChild","getById","getElementsByName","filter","attrId","getAttributeNode","tag","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","dirkey","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","matcherCachedRuns","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","group","contexts","token","div1","defaultValue","unique","isXMLDoc","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","list","stack","once","fire","stopOnFalse","self","disable","add","index","lock","locked","fireWith","func","tuples","state","always","deferred","fail","then","fns","newDefer","tuple","action","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","progressContexts","resolveContexts","fragment","opt","eventName","isSupported","cssText","getSetAttribute","leadingWhitespace","tbody","htmlSerialize","hrefNormalized","opacity","cssFloat","checkOn","optSelected","enctype","html5Clone","cloneNode","outerHTML","inlineBlockNeedsLayout","shrinkWrapBlocks","pixelPosition","deleteExpando","noCloneEvent","reliableMarginRight","boxSizingReliable","noCloneChecked","optDisabled","radioValue","createDocumentFragment","appendChecked","checkClone","click","change","focusin","backgroundClip","clearCloneStyle","container","marginDiv","tds","divReset","offsetHeight","display","reliableHiddenOffsets","zoom","boxSizing","offsetWidth","getComputedStyle","width","marginRight","rbrace","rmultiDash","internalData","pvt","acceptData","thisCache","internalKey","isNode","toJSON","internalRemoveData","isEmptyDataObject","cleanData","noData","applet","embed","hasData","removeData","_data","_removeData","dataAttr","queue","dequeue","startLength","hooks","_queueHooks","next","stop","setter","delay","time","fx","speeds","timeout","clearTimeout","clearQueue","count","defer","nodeHook","boolHook","rclass","rreturn","rfocusable","rclickable","ruseDefault","getSetInput","removeAttr","prop","removeProp","propFix","addClass","classes","clazz","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","valHooks","set","option","one","optionSet","nType","attrHooks","propName","attrNames","for","class","notxml","propHooks","tabindex","parseInt","getter","setAttributeNode","createAttribute","coords","contenteditable","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","global","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","getPreventDefault","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","origFn","triggerHandler","isSimple","rparentsprev","rneedsContext","guaranteedUnique","children","contents","prev","targets","winnow","is","closest","pos","prevAll","addBack","sibling","parents","parentsUntil","until","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","n","r","qualifier","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","manipulation_rcheckableType","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","append","createTextNode","domManip","manipulationTarget","prepend","insertBefore","before","after","keepData","getAll","setGlobalEval","dataAndEvents","deepDataAndEvents","html","replaceWith","allowIntersection","hasScripts","iNoClone","disableScript","restoreScript","_evalUrl","content","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultChecked","defaultSelected","appendTo","prependTo","insertAfter","replaceAll","insert","found","fixDefaultChecked","destElements","srcElements","inPage","selection","wrap","safe","nodes","url","ajax","dataType","throws","wrapAll","wrapInner","unwrap","iframe","getStyles","curCSS","ralpha","ropacity","rposition","rdisplayswap","rmargin","rnumsplit","rnumnonpx","rrelNum","elemdisplay","BODY","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssExpand","cssPrefixes","vendorPropName","capName","origName","isHidden","el","css","showHide","show","hidden","css_defaultDisplay","styles","hide","toggle","cssHooks","computed","cssNumber","columnCount","fillOpacity","lineHeight","order","orphans","widows","zIndex","cssProps","float","extra","_computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","getWidthOrHeight","valueIsBorderBox","actualDisplay","write","close","$1","visible","margin","padding","border","prefix","suffix","expand","expanded","parts","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","serialize","serializeArray","traditional","s","encodeURIComponent","ajaxSettings","buildParams","v","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","ajaxLocParts","ajaxLocation","ajax_nonce","ajax_rquery","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","_load","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","params","response","responseText","complete","status","active","lastModified","etag","isLocal","processData","contentType","accepts","*","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","code","abort","statusText","finalText","success","method","crossDomain","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ajaxHandleResponses","ajaxConvert","rejectWith","getJSON","getScript","firstDataType","ct","finalDataType","conv2","current","conv","dataFilter","script","text script","head","scriptCharset","charset","onload","onreadystatechange","isAbort","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","xhrCallbacks","xhrSupported","xhrId","xhrOnUnloadAbort","createStandardXHR","XMLHttpRequest","createActiveXHR","xhr","cors","username","open","xhrFields","firefoxAccessException","unload","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","tween","createTween","unit","scale","maxIterations","createFxNow","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","duration","percent","tweens","run","opts","specialEasing","originalProperties","Tween","easing","gotoEnd","propFilter","timer","anim","tweener","prefilter","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","eased","step","cssFn","speed","animate","genFx","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","includeWidth","height","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","linear","p","swing","cos","PI","interval","setInterval","clearInterval","slow","fast","animated","offset","setOffset","win","box","getBoundingClientRect","getWindow","pageYOffset","pageXOffset","curElem","curOffset","curCSSTop","curCSSLeft","calculatePosition","curPosition","curTop","curLeft","using","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","module","exports","define","amd"],"mappings":"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"}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/modernizr-2.6.2.js b/qqjf-Background/WebApi_QQJF/Scripts/modernizr-2.6.2.js
new file mode 100644
index 0000000..cbfe1f3
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/modernizr-2.6.2.js
@@ -0,0 +1,1416 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton; http://www.modernizr.com/license/
+ *
+ * Includes matchMedia polyfill; Copyright (c) 2010 Filament Group, Inc; http://opensource.org/licenses/MIT
+ *
+ * Includes material adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js; Copyright 2009-2012 by contributors; http://opensource.org/licenses/MIT
+ *
+ * Includes material from css-support; Copyright (c) 2005-2012 Diego Perini; https://github.com/dperini/css-support/blob/master/LICENSE
+ *
+ * NUGET: END LICENSE TEXT */
+
+/*!
+ * Modernizr v2.6.2
+ * www.modernizr.com
+ *
+ * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
+ * Available under the BSD and MIT licenses: www.modernizr.com/license/
+ */
+
+/*
+ * Modernizr tests which native CSS3 and HTML5 features are available in
+ * the current UA and makes the results available to you in two ways:
+ * as properties on a global Modernizr object, and as classes on the
+ * <html> element. This information allows you to progressively enhance
+ * your pages with a granular level of control over the experience.
+ *
+ * Modernizr has an optional (not included) conditional resource loader
+ * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
+ * To get a build that includes Modernizr.load(), as well as choosing
+ * which tests to include, go to www.modernizr.com/download/
+ *
+ * Authors Faruk Ates, Paul Irish, Alex Sexton
+ * Contributors Ryan Seddon, Ben Alman
+ */
+
+window.Modernizr = (function( window, document, undefined ) {
+
+ var version = '2.6.2',
+
+ Modernizr = {},
+
+ /*>>cssclasses*/
+ // option for enabling the HTML classes to be added
+ enableClasses = true,
+ /*>>cssclasses*/
+
+ docElement = document.documentElement,
+
+ /**
+ * Create our "modernizr" element that we do most feature tests on.
+ */
+ mod = 'modernizr',
+ modElem = document.createElement(mod),
+ mStyle = modElem.style,
+
+ /**
+ * Create the input element for various Web Forms feature tests.
+ */
+ inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
+
+ /*>>smile*/
+ smile = ':)',
+ /*>>smile*/
+
+ toString = {}.toString,
+
+ // TODO :: make the prefixes more granular
+ /*>>prefixes*/
+ // List of property values to set for css tests. See ticket #21
+ prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
+ /*>>prefixes*/
+
+ /*>>domprefixes*/
+ // Following spec is to expose vendor-specific style properties as:
+ // elem.style.WebkitBorderRadius
+ // and the following would be incorrect:
+ // elem.style.webkitBorderRadius
+
+ // Webkit ghosts their properties in lowercase but Opera & Moz do not.
+ // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
+ // erik.eae.net/archives/2008/03/10/21.48.10/
+
+ // More here: github.com/Modernizr/Modernizr/issues/issue/21
+ omPrefixes = 'Webkit Moz O ms',
+
+ cssomPrefixes = omPrefixes.split(' '),
+
+ domPrefixes = omPrefixes.toLowerCase().split(' '),
+ /*>>domprefixes*/
+
+ /*>>ns*/
+ ns = {'svg': 'http://www.w3.org/2000/svg'},
+ /*>>ns*/
+
+ tests = {},
+ inputs = {},
+ attrs = {},
+
+ classes = [],
+
+ slice = classes.slice,
+
+ featureName, // used in testing loop
+
+
+ /*>>teststyles*/
+ // Inject element with style element and some CSS rules
+ injectElementWithStyles = function( rule, callback, nodes, testnames ) {
+
+ var style, ret, node, docOverflow,
+ div = document.createElement('div'),
+ // After page load injecting a fake body doesn't work so check if body exists
+ body = document.body,
+ // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
+ fakeBody = body || document.createElement('body');
+
+ if ( parseInt(nodes, 10) ) {
+ // In order not to give false positives we create a node for each test
+ // This also allows the method to scale for unspecified uses
+ while ( nodes-- ) {
+ node = document.createElement('div');
+ node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
+ div.appendChild(node);
+ }
+ }
+
+ // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
+ // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
+ // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
+ // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
+ // Documents served as xml will throw if using ­ so use xml friendly encoded version. See issue #277
+ style = ['­','<style id="s', mod, '">', rule, '</style>'].join('');
+ div.id = mod;
+ // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
+ // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
+ (body ? div : fakeBody).innerHTML += style;
+ fakeBody.appendChild(div);
+ if ( !body ) {
+ //avoid crashing IE8, if background image is used
+ fakeBody.style.background = '';
+ //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
+ fakeBody.style.overflow = 'hidden';
+ docOverflow = docElement.style.overflow;
+ docElement.style.overflow = 'hidden';
+ docElement.appendChild(fakeBody);
+ }
+
+ ret = callback(div, rule);
+ // If this is done after page load we don't want to remove the body so check if body exists
+ if ( !body ) {
+ fakeBody.parentNode.removeChild(fakeBody);
+ docElement.style.overflow = docOverflow;
+ } else {
+ div.parentNode.removeChild(div);
+ }
+
+ return !!ret;
+
+ },
+ /*>>teststyles*/
+
+ /*>>mq*/
+ // adapted from matchMedia polyfill
+ // by Scott Jehl and Paul Irish
+ // gist.github.com/786768
+ testMediaQuery = function( mq ) {
+
+ var matchMedia = window.matchMedia || window.msMatchMedia;
+ if ( matchMedia ) {
+ return matchMedia(mq).matches;
+ }
+
+ var bool;
+
+ injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
+ bool = (window.getComputedStyle ?
+ getComputedStyle(node, null) :
+ node.currentStyle)['position'] == 'absolute';
+ });
+
+ return bool;
+
+ },
+ /*>>mq*/
+
+
+ /*>>hasevent*/
+ //
+ // isEventSupported determines if a given element supports the given event
+ // kangax.github.com/iseventsupported/
+ //
+ // The following results are known incorrects:
+ // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
+ // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
+ // ...
+ isEventSupported = (function() {
+
+ var TAGNAMES = {
+ 'select': 'input', 'change': 'input',
+ 'submit': 'form', 'reset': 'form',
+ 'error': 'img', 'load': 'img', 'abort': 'img'
+ };
+
+ function isEventSupported( eventName, element ) {
+
+ element = element || document.createElement(TAGNAMES[eventName] || 'div');
+ eventName = 'on' + eventName;
+
+ // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
+ var isSupported = eventName in element;
+
+ if ( !isSupported ) {
+ // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
+ if ( !element.setAttribute ) {
+ element = document.createElement('div');
+ }
+ if ( element.setAttribute && element.removeAttribute ) {
+ element.setAttribute(eventName, '');
+ isSupported = is(element[eventName], 'function');
+
+ // If property was created, "remove it" (by setting value to `undefined`)
+ if ( !is(element[eventName], 'undefined') ) {
+ element[eventName] = undefined;
+ }
+ element.removeAttribute(eventName);
+ }
+ }
+
+ element = null;
+ return isSupported;
+ }
+ return isEventSupported;
+ })(),
+ /*>>hasevent*/
+
+ // TODO :: Add flag for hasownprop ? didn't last time
+
+ // hasOwnProperty shim by kangax needed for Safari 2.0 support
+ _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
+
+ if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
+ hasOwnProp = function (object, property) {
+ return _hasOwnProperty.call(object, property);
+ };
+ }
+ else {
+ hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
+ return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
+ };
+ }
+
+ // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
+ // es5.github.com/#x15.3.4.5
+
+ if (!Function.prototype.bind) {
+ Function.prototype.bind = function bind(that) {
+
+ var target = this;
+
+ if (typeof target != "function") {
+ throw new TypeError();
+ }
+
+ var args = slice.call(arguments, 1),
+ bound = function () {
+
+ if (this instanceof bound) {
+
+ var F = function(){};
+ F.prototype = target.prototype;
+ var self = new F();
+
+ var result = target.apply(
+ self,
+ args.concat(slice.call(arguments))
+ );
+ if (Object(result) === result) {
+ return result;
+ }
+ return self;
+
+ } else {
+
+ return target.apply(
+ that,
+ args.concat(slice.call(arguments))
+ );
+
+ }
+
+ };
+
+ return bound;
+ };
+ }
+
+ /**
+ * setCss applies given styles to the Modernizr DOM node.
+ */
+ function setCss( str ) {
+ mStyle.cssText = str;
+ }
+
+ /**
+ * setCssAll extrapolates all vendor-specific css strings.
+ */
+ function setCssAll( str1, str2 ) {
+ return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
+ }
+
+ /**
+ * is returns a boolean for if typeof obj is exactly type.
+ */
+ function is( obj, type ) {
+ return typeof obj === type;
+ }
+
+ /**
+ * contains returns a boolean for if substr is found within str.
+ */
+ function contains( str, substr ) {
+ return !!~('' + str).indexOf(substr);
+ }
+
+ /*>>testprop*/
+
+ // testProps is a generic CSS / DOM property test.
+
+ // In testing support for a given CSS property, it's legit to test:
+ // `elem.style[styleName] !== undefined`
+ // If the property is supported it will return an empty string,
+ // if unsupported it will return undefined.
+
+ // We'll take advantage of this quick test and skip setting a style
+ // on our modernizr element, but instead just testing undefined vs
+ // empty string.
+
+ // Because the testing of the CSS property names (with "-", as
+ // opposed to the camelCase DOM properties) is non-portable and
+ // non-standard but works in WebKit and IE (but not Gecko or Opera),
+ // we explicitly reject properties with dashes so that authors
+ // developing in WebKit or IE first don't end up with
+ // browser-specific content by accident.
+
+ function testProps( props, prefixed ) {
+ for ( var i in props ) {
+ var prop = props[i];
+ if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
+ return prefixed == 'pfx' ? prop : true;
+ }
+ }
+ return false;
+ }
+ /*>>testprop*/
+
+ // TODO :: add testDOMProps
+ /**
+ * testDOMProps is a generic DOM property test; if a browser supports
+ * a certain property, it won't return undefined for it.
+ */
+ function testDOMProps( props, obj, elem ) {
+ for ( var i in props ) {
+ var item = obj[props[i]];
+ if ( item !== undefined) {
+
+ // return the property name as a string
+ if (elem === false) return props[i];
+
+ // let's bind a function
+ if (is(item, 'function')){
+ // default to autobind unless override
+ return item.bind(elem || obj);
+ }
+
+ // return the unbound function or obj or value
+ return item;
+ }
+ }
+ return false;
+ }
+
+ /*>>testallprops*/
+ /**
+ * testPropsAll tests a list of DOM properties we want to check against.
+ * We specify literally ALL possible (known and/or likely) properties on
+ * the element including the non-vendor prefixed one, for forward-
+ * compatibility.
+ */
+ function testPropsAll( prop, prefixed, elem ) {
+
+ var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
+ props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
+
+ // did they call .prefixed('boxSizing') or are we just testing a prop?
+ if(is(prefixed, "string") || is(prefixed, "undefined")) {
+ return testProps(props, prefixed);
+
+ // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
+ } else {
+ props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
+ return testDOMProps(props, prefixed, elem);
+ }
+ }
+ /*>>testallprops*/
+
+
+ /**
+ * Tests
+ * -----
+ */
+
+ // The *new* flexbox
+ // dev.w3.org/csswg/css3-flexbox
+
+ tests['flexbox'] = function() {
+ return testPropsAll('flexWrap');
+ };
+
+ // The *old* flexbox
+ // www.w3.org/TR/2009/WD-css3-flexbox-20090723/
+
+ tests['flexboxlegacy'] = function() {
+ return testPropsAll('boxDirection');
+ };
+
+ // On the S60 and BB Storm, getContext exists, but always returns undefined
+ // so we actually have to call getContext() to verify
+ // github.com/Modernizr/Modernizr/issues/issue/97/
+
+ tests['canvas'] = function() {
+ var elem = document.createElement('canvas');
+ return !!(elem.getContext && elem.getContext('2d'));
+ };
+
+ tests['canvastext'] = function() {
+ return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
+ };
+
+ // webk.it/70117 is tracking a legit WebGL feature detect proposal
+
+ // We do a soft detect which may false positive in order to avoid
+ // an expensive context creation: bugzil.la/732441
+
+ tests['webgl'] = function() {
+ return !!window.WebGLRenderingContext;
+ };
+
+ /*
+ * The Modernizr.touch test only indicates if the browser supports
+ * touch events, which does not necessarily reflect a touchscreen
+ * device, as evidenced by tablets running Windows 7 or, alas,
+ * the Palm Pre / WebOS (touch) phones.
+ *
+ * Additionally, Chrome (desktop) used to lie about its support on this,
+ * but that has since been rectified: crbug.com/36415
+ *
+ * We also test for Firefox 4 Multitouch Support.
+ *
+ * For more info, see: modernizr.github.com/Modernizr/touch.html
+ */
+
+ tests['touch'] = function() {
+ var bool;
+
+ if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
+ bool = true;
+ } else {
+ injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
+ bool = node.offsetTop === 9;
+ });
+ }
+
+ return bool;
+ };
+
+
+ // geolocation is often considered a trivial feature detect...
+ // Turns out, it's quite tricky to get right:
+ //
+ // Using !!navigator.geolocation does two things we don't want. It:
+ // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
+ // 2. Disables page caching in WebKit: webk.it/43956
+ //
+ // Meanwhile, in Firefox < 8, an about:config setting could expose
+ // a false positive that would throw an exception: bugzil.la/688158
+
+ tests['geolocation'] = function() {
+ return 'geolocation' in navigator;
+ };
+
+
+ tests['postmessage'] = function() {
+ return !!window.postMessage;
+ };
+
+
+ // Chrome incognito mode used to throw an exception when using openDatabase
+ // It doesn't anymore.
+ tests['websqldatabase'] = function() {
+ return !!window.openDatabase;
+ };
+
+ // Vendors had inconsistent prefixing with the experimental Indexed DB:
+ // - Webkit's implementation is accessible through webkitIndexedDB
+ // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
+ // For speed, we don't test the legacy (and beta-only) indexedDB
+ tests['indexedDB'] = function() {
+ return !!testPropsAll("indexedDB", window);
+ };
+
+ // documentMode logic from YUI to filter out IE8 Compat Mode
+ // which false positives.
+ tests['hashchange'] = function() {
+ return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
+ };
+
+ // Per 1.6:
+ // This used to be Modernizr.historymanagement but the longer
+ // name has been deprecated in favor of a shorter and property-matching one.
+ // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+ // and in the first release thereafter disappear entirely.
+ tests['history'] = function() {
+ return !!(window.history && history.pushState);
+ };
+
+ tests['draganddrop'] = function() {
+ var div = document.createElement('div');
+ return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
+ };
+
+ // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
+ // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
+ // FF10 still uses prefixes, so check for it until then.
+ // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
+ tests['websockets'] = function() {
+ return 'WebSocket' in window || 'MozWebSocket' in window;
+ };
+
+
+ // css-tricks.com/rgba-browser-support/
+ tests['rgba'] = function() {
+ // Set an rgba() color and check the returned value
+
+ setCss('background-color:rgba(150,255,150,.5)');
+
+ return contains(mStyle.backgroundColor, 'rgba');
+ };
+
+ tests['hsla'] = function() {
+ // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
+ // except IE9 who retains it as hsla
+
+ setCss('background-color:hsla(120,40%,100%,.5)');
+
+ return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
+ };
+
+ tests['multiplebgs'] = function() {
+ // Setting multiple images AND a color on the background shorthand property
+ // and then querying the style.background property value for the number of
+ // occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
+
+ setCss('background:url(https://),url(https://),red url(https://)');
+
+ // If the UA supports multiple backgrounds, there should be three occurrences
+ // of the string "url(" in the return value for elemStyle.background
+
+ return (/(url\s*\(.*?){3}/).test(mStyle.background);
+ };
+
+
+
+ // this will false positive in Opera Mini
+ // github.com/Modernizr/Modernizr/issues/396
+
+ tests['backgroundsize'] = function() {
+ return testPropsAll('backgroundSize');
+ };
+
+ tests['borderimage'] = function() {
+ return testPropsAll('borderImage');
+ };
+
+
+ // Super comprehensive table about all the unique implementations of
+ // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
+
+ tests['borderradius'] = function() {
+ return testPropsAll('borderRadius');
+ };
+
+ // WebOS unfortunately false positives on this test.
+ tests['boxshadow'] = function() {
+ return testPropsAll('boxShadow');
+ };
+
+ // FF3.0 will false positive on this test
+ tests['textshadow'] = function() {
+ return document.createElement('div').style.textShadow === '';
+ };
+
+
+ tests['opacity'] = function() {
+ // Browsers that actually have CSS Opacity implemented have done so
+ // according to spec, which means their return values are within the
+ // range of [0.0,1.0] - including the leading zero.
+
+ setCssAll('opacity:.55');
+
+ // The non-literal . in this regex is intentional:
+ // German Chrome returns this value as 0,55
+ // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
+ return (/^0.55$/).test(mStyle.opacity);
+ };
+
+
+ // Note, Android < 4 will pass this test, but can only animate
+ // a single property at a time
+ // daneden.me/2011/12/putting-up-with-androids-bullshit/
+ tests['cssanimations'] = function() {
+ return testPropsAll('animationName');
+ };
+
+
+ tests['csscolumns'] = function() {
+ return testPropsAll('columnCount');
+ };
+
+
+ tests['cssgradients'] = function() {
+ /**
+ * For CSS Gradients syntax, please see:
+ * webkit.org/blog/175/introducing-css-gradients/
+ * developer.mozilla.org/en/CSS/-moz-linear-gradient
+ * developer.mozilla.org/en/CSS/-moz-radial-gradient
+ * dev.w3.org/csswg/css3-images/#gradients-
+ */
+
+ var str1 = 'background-image:',
+ str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
+ str3 = 'linear-gradient(left top,#9f9, white);';
+
+ setCss(
+ // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
+ (str1 + '-webkit- '.split(' ').join(str2 + str1) +
+ // standard syntax // trailing 'background-image:'
+ prefixes.join(str3 + str1)).slice(0, -str1.length)
+ );
+
+ return contains(mStyle.backgroundImage, 'gradient');
+ };
+
+
+ tests['cssreflections'] = function() {
+ return testPropsAll('boxReflect');
+ };
+
+
+ tests['csstransforms'] = function() {
+ return !!testPropsAll('transform');
+ };
+
+
+ tests['csstransforms3d'] = function() {
+
+ var ret = !!testPropsAll('perspective');
+
+ // Webkit's 3D transforms are passed off to the browser's own graphics renderer.
+ // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
+ // some conditions. As a result, Webkit typically recognizes the syntax but
+ // will sometimes throw a false positive, thus we must do a more thorough check:
+ if ( ret && 'webkitPerspective' in docElement.style ) {
+
+ // Webkit allows this media query to succeed only if the feature is enabled.
+ // `@media (transform-3d),(-webkit-transform-3d){ ... }`
+ injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
+ ret = node.offsetLeft === 9 && node.offsetHeight === 3;
+ });
+ }
+ return ret;
+ };
+
+
+ tests['csstransitions'] = function() {
+ return testPropsAll('transition');
+ };
+
+
+ /*>>fontface*/
+ // @font-face detection routine by Diego Perini
+ // javascript.nwbox.com/CSSSupport/
+
+ // false positives:
+ // WebOS github.com/Modernizr/Modernizr/issues/342
+ // WP7 github.com/Modernizr/Modernizr/issues/538
+ tests['fontface'] = function() {
+ var bool;
+
+ injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
+ var style = document.getElementById('smodernizr'),
+ sheet = style.sheet || style.styleSheet,
+ cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
+
+ bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
+ });
+
+ return bool;
+ };
+ /*>>fontface*/
+
+ // CSS generated content detection
+ tests['generatedcontent'] = function() {
+ var bool;
+
+ injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
+ bool = node.offsetHeight >= 3;
+ });
+
+ return bool;
+ };
+
+
+
+ // These tests evaluate support of the video/audio elements, as well as
+ // testing what types of content they support.
+ //
+ // We're using the Boolean constructor here, so that we can extend the value
+ // e.g. Modernizr.video // true
+ // Modernizr.video.ogg // 'probably'
+ //
+ // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
+ // thx to NielsLeenheer and zcorpan
+
+ // Note: in some older browsers, "no" was a return value instead of empty string.
+ // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
+ // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
+
+ tests['video'] = function() {
+ var elem = document.createElement('video'),
+ bool = false;
+
+ // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
+ try {
+ if ( bool = !!elem.canPlayType ) {
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
+
+ // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
+ bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
+
+ bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
+ }
+
+ } catch(e) { }
+
+ return bool;
+ };
+
+ tests['audio'] = function() {
+ var elem = document.createElement('audio'),
+ bool = false;
+
+ try {
+ if ( bool = !!elem.canPlayType ) {
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
+ bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
+
+ // Mimetypes accepted:
+ // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
+ // bit.ly/iphoneoscodecs
+ bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
+ bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
+ elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
+ }
+ } catch(e) { }
+
+ return bool;
+ };
+
+
+ // In FF4, if disabled, window.localStorage should === null.
+
+ // Normally, we could not test that directly and need to do a
+ // `('localStorage' in window) && ` test first because otherwise Firefox will
+ // throw bugzil.la/365772 if cookies are disabled
+
+ // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
+ // will throw the exception:
+ // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
+ // Peculiarly, getItem and removeItem calls do not throw.
+
+ // Because we are forced to try/catch this, we'll go aggressive.
+
+ // Just FWIW: IE8 Compat mode supports these features completely:
+ // www.quirksmode.org/dom/html5.html
+ // But IE8 doesn't support either with local files
+
+ tests['localstorage'] = function() {
+ try {
+ localStorage.setItem(mod, mod);
+ localStorage.removeItem(mod);
+ return true;
+ } catch(e) {
+ return false;
+ }
+ };
+
+ tests['sessionstorage'] = function() {
+ try {
+ sessionStorage.setItem(mod, mod);
+ sessionStorage.removeItem(mod);
+ return true;
+ } catch(e) {
+ return false;
+ }
+ };
+
+
+ tests['webworkers'] = function() {
+ return !!window.Worker;
+ };
+
+
+ tests['applicationcache'] = function() {
+ return !!window.applicationCache;
+ };
+
+
+ // Thanks to Erik Dahlstrom
+ tests['svg'] = function() {
+ return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
+ };
+
+ // specifically for SVG inline in HTML, not within XHTML
+ // test page: paulirish.com/demo/inline-svg
+ tests['inlinesvg'] = function() {
+ var div = document.createElement('div');
+ div.innerHTML = '<svg/>';
+ return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+ };
+
+ // SVG SMIL animation
+ tests['smil'] = function() {
+ return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
+ };
+
+ // This test is only for clip paths in SVG proper, not clip paths on HTML content
+ // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
+
+ // However read the comments to dig into applying SVG clippaths to HTML content here:
+ // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
+ tests['svgclippaths'] = function() {
+ return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
+ };
+
+ /*>>webforms*/
+ // input features and input types go directly onto the ret object, bypassing the tests loop.
+ // Hold this guy to execute in a moment.
+ function webforms() {
+ /*>>input*/
+ // Run through HTML5's new input attributes to see if the UA understands any.
+ // We're using f which is the <input> element created early on
+ // Mike Taylr has created a comprehensive resource for testing these attributes
+ // when applied to all input types:
+ // miketaylr.com/code/input-type-attr.html
+ // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
+
+ // Only input placeholder is tested while textarea's placeholder is not.
+ // Currently Safari 4 and Opera 11 have support only for the input placeholder
+ // Both tests are available in feature-detects/forms-placeholder.js
+ Modernizr['input'] = (function( props ) {
+ for ( var i = 0, len = props.length; i < len; i++ ) {
+ attrs[ props[i] ] = !!(props[i] in inputElem);
+ }
+ if (attrs.list){
+ // safari false positive's on datalist: webk.it/74252
+ // see also github.com/Modernizr/Modernizr/issues/146
+ attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
+ }
+ return attrs;
+ })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
+ /*>>input*/
+
+ /*>>inputtypes*/
+ // Run through HTML5's new input types to see if the UA understands any.
+ // This is put behind the tests runloop because it doesn't return a
+ // true/false like all the other tests; instead, it returns an object
+ // containing each input type with its corresponding true/false value
+
+ // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
+ Modernizr['inputtypes'] = (function(props) {
+
+ for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
+
+ inputElem.setAttribute('type', inputElemType = props[i]);
+ bool = inputElem.type !== 'text';
+
+ // We first check to see if the type we give it sticks..
+ // If the type does, we feed it a textual value, which shouldn't be valid.
+ // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+ if ( bool ) {
+
+ inputElem.value = smile;
+ inputElem.style.cssText = 'position:absolute;visibility:hidden;';
+
+ if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
+
+ docElement.appendChild(inputElem);
+ defaultView = document.defaultView;
+
+ // Safari 2-4 allows the smiley as a value, despite making a slider
+ bool = defaultView.getComputedStyle &&
+ defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
+ // Mobile android web browser has false positive, so must
+ // check the height to see if the widget is actually there.
+ (inputElem.offsetHeight !== 0);
+
+ docElement.removeChild(inputElem);
+
+ } else if ( /^(search|tel)$/.test(inputElemType) ){
+ // Spec doesn't define any special parsing or detectable UI
+ // behaviors so we pass these through as true
+
+ // Interestingly, opera fails the earlier test, so it doesn't
+ // even make it here.
+
+ } else if ( /^(url|email)$/.test(inputElemType) ) {
+ // Real url and email support comes with prebaked validation.
+ bool = inputElem.checkValidity && inputElem.checkValidity() === false;
+
+ } else {
+ // If the upgraded input compontent rejects the :) text, we got a winner
+ bool = inputElem.value != smile;
+ }
+ }
+
+ inputs[ props[i] ] = !!bool;
+ }
+ return inputs;
+ })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
+ /*>>inputtypes*/
+ }
+ /*>>webforms*/
+
+
+ // End of test definitions
+ // -----------------------
+
+
+
+ // Run through all tests and detect their support in the current UA.
+ // todo: hypothetically we could be doing an array of tests and use a basic loop here.
+ for ( var feature in tests ) {
+ if ( hasOwnProp(tests, feature) ) {
+ // run the test, throw the return value into the Modernizr,
+ // then based on that boolean, define an appropriate className
+ // and push it into an array of classes we'll join later.
+ featureName = feature.toLowerCase();
+ Modernizr[featureName] = tests[feature]();
+
+ classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
+ }
+ }
+
+ /*>>webforms*/
+ // input tests need to run.
+ Modernizr.input || webforms();
+ /*>>webforms*/
+
+
+ /**
+ * addTest allows the user to define their own feature tests
+ * the result will be added onto the Modernizr object,
+ * as well as an appropriate className set on the html element
+ *
+ * @param feature - String naming the feature
+ * @param test - Function returning true if feature is supported, false if not
+ */
+ Modernizr.addTest = function ( feature, test ) {
+ if ( typeof feature == 'object' ) {
+ for ( var key in feature ) {
+ if ( hasOwnProp( feature, key ) ) {
+ Modernizr.addTest( key, feature[ key ] );
+ }
+ }
+ } else {
+
+ feature = feature.toLowerCase();
+
+ if ( Modernizr[feature] !== undefined ) {
+ // we're going to quit if you're trying to overwrite an existing test
+ // if we were to allow it, we'd do this:
+ // var re = new RegExp("\\b(no-)?" + feature + "\\b");
+ // docElement.className = docElement.className.replace( re, '' );
+ // but, no rly, stuff 'em.
+ return Modernizr;
+ }
+
+ test = typeof test == 'function' ? test() : test;
+
+ if (typeof enableClasses !== "undefined" && enableClasses) {
+ docElement.className += ' ' + (test ? '' : 'no-') + feature;
+ }
+ Modernizr[feature] = test;
+
+ }
+
+ return Modernizr; // allow chaining.
+ };
+
+
+ // Reset modElem.cssText to nothing to reduce memory footprint.
+ setCss('');
+ modElem = inputElem = null;
+
+ /*>>shiv*/
+ /*! HTML5 Shiv v3.6.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
+ ;(function(window, document) {
+ /*jshint evil:true */
+ /** Preset options */
+ var options = window.html5 || {};
+
+ /** Used to skip problem elements */
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+ /** Not all elements can be cloned in IE **/
+ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+ /** Detect whether the browser supports default html5 styles */
+ var supportsHtml5Styles;
+
+ /** Name of the expando, to work with multiple documents or to re-shiv one document */
+ var expando = '_html5shiv';
+
+ /** The id for the the documents expando */
+ var expanID = 0;
+
+ /** Cached data for each document */
+ var expandoData = {};
+
+ /** Detect whether the browser supports unknown elements */
+ var supportsUnknownElements;
+
+ (function() {
+ try {
+ var a = document.createElement('a');
+ a.innerHTML = '<xyz></xyz>';
+ //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+ supportsHtml5Styles = ('hidden' in a);
+
+ supportsUnknownElements = a.childNodes.length == 1 || (function() {
+ // assign a false positive if unable to shiv
+ (document.createElement)('a');
+ var frag = document.createDocumentFragment();
+ return (
+ typeof frag.cloneNode == 'undefined' ||
+ typeof frag.createDocumentFragment == 'undefined' ||
+ typeof frag.createElement == 'undefined'
+ );
+ }());
+ } catch(e) {
+ supportsHtml5Styles = true;
+ supportsUnknownElements = true;
+ }
+
+ }());
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * Creates a style sheet with the given CSS text and adds it to the document.
+ * @private
+ * @param {Document} ownerDocument The document.
+ * @param {String} cssText The CSS text.
+ * @returns {StyleSheet} The style element.
+ */
+ function addStyleSheet(ownerDocument, cssText) {
+ var p = ownerDocument.createElement('p'),
+ parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+ p.innerHTML = 'x<style>' + cssText + '</style>';
+ return parent.insertBefore(p.lastChild, parent.firstChild);
+ }
+
+ /**
+ * Returns the value of `html5.elements` as an array.
+ * @private
+ * @returns {Array} An array of shived element node names.
+ */
+ function getElements() {
+ var elements = html5.elements;
+ return typeof elements == 'string' ? elements.split(' ') : elements;
+ }
+
+ /**
+ * Returns the data associated to the given document
+ * @private
+ * @param {Document} ownerDocument The document.
+ * @returns {Object} An object of data.
+ */
+ function getExpandoData(ownerDocument) {
+ var data = expandoData[ownerDocument[expando]];
+ if (!data) {
+ data = {};
+ expanID++;
+ ownerDocument[expando] = expanID;
+ expandoData[expanID] = data;
+ }
+ return data;
+ }
+
+ /**
+ * returns a shived element for the given nodeName and document
+ * @memberOf html5
+ * @param {String} nodeName name of the element
+ * @param {Document} ownerDocument The context document.
+ * @returns {Object} The shived element.
+ */
+ function createElement(nodeName, ownerDocument, data){
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ if(supportsUnknownElements){
+ return ownerDocument.createElement(nodeName);
+ }
+ if (!data) {
+ data = getExpandoData(ownerDocument);
+ }
+ var node;
+
+ if (data.cache[nodeName]) {
+ node = data.cache[nodeName].cloneNode();
+ } else if (saveClones.test(nodeName)) {
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+ } else {
+ node = data.createElem(nodeName);
+ }
+
+ // Avoid adding some elements to fragments in IE < 9 because
+ // * Attributes like `name` or `type` cannot be set/changed once an element
+ // is inserted into a document/fragment
+ // * Link elements with `src` attributes that are inaccessible, as with
+ // a 403 response, will cause the tab/window to crash
+ // * Script elements appended to fragments will execute when their `src`
+ // or `text` property is set
+ return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node;
+ }
+
+ /**
+ * returns a shived DocumentFragment for the given document
+ * @memberOf html5
+ * @param {Document} ownerDocument The context document.
+ * @returns {Object} The shived DocumentFragment.
+ */
+ function createDocumentFragment(ownerDocument, data){
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ if(supportsUnknownElements){
+ return ownerDocument.createDocumentFragment();
+ }
+ data = data || getExpandoData(ownerDocument);
+ var clone = data.frag.cloneNode(),
+ i = 0,
+ elems = getElements(),
+ l = elems.length;
+ for(;i<l;i++){
+ clone.createElement(elems[i]);
+ }
+ return clone;
+ }
+
+ /**
+ * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+ * @private
+ * @param {Document|DocumentFragment} ownerDocument The document.
+ * @param {Object} data of the document.
+ */
+ function shivMethods(ownerDocument, data) {
+ if (!data.cache) {
+ data.cache = {};
+ data.createElem = ownerDocument.createElement;
+ data.createFrag = ownerDocument.createDocumentFragment;
+ data.frag = data.createFrag();
+ }
+
+
+ ownerDocument.createElement = function(nodeName) {
+ //abort shiv
+ if (!html5.shivMethods) {
+ return data.createElem(nodeName);
+ }
+ return createElement(nodeName, ownerDocument, data);
+ };
+
+ ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+ 'var n=f.cloneNode(),c=n.createElement;' +
+ 'h.shivMethods&&(' +
+ // unroll the `createElement` calls
+ getElements().join().replace(/\w+/g, function(nodeName) {
+ data.createElem(nodeName);
+ data.frag.createElement(nodeName);
+ return 'c("' + nodeName + '")';
+ }) +
+ ');return n}'
+ )(html5, data.frag);
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * Shivs the given document.
+ * @memberOf html5
+ * @param {Document} ownerDocument The document to shiv.
+ * @returns {Document} The shived document.
+ */
+ function shivDocument(ownerDocument) {
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ var data = getExpandoData(ownerDocument);
+
+ if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+ data.hasCSS = !!addStyleSheet(ownerDocument,
+ // corrects block display not defined in IE6/7/8/9
+ 'article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}' +
+ // adds styling not present in IE6/7/8/9
+ 'mark{background:#FF0;color:#000}'
+ );
+ }
+ if (!supportsUnknownElements) {
+ shivMethods(ownerDocument, data);
+ }
+ return ownerDocument;
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * The `html5` object is exposed so that more elements can be shived and
+ * existing shiving can be detected on iframes.
+ * @type Object
+ * @example
+ *
+ * // options can be changed before the script is included
+ * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+ */
+ var html5 = {
+
+ /**
+ * An array or space separated string of node names of the elements to shiv.
+ * @memberOf html5
+ * @type Array|String
+ */
+ 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video',
+
+ /**
+ * A flag to indicate that the HTML5 style sheet should be inserted.
+ * @memberOf html5
+ * @type Boolean
+ */
+ 'shivCSS': (options.shivCSS !== false),
+
+ /**
+ * Is equal to true if a browser supports creating unknown/HTML5 elements
+ * @memberOf html5
+ * @type boolean
+ */
+ 'supportsUnknownElements': supportsUnknownElements,
+
+ /**
+ * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+ * methods should be overwritten.
+ * @memberOf html5
+ * @type Boolean
+ */
+ 'shivMethods': (options.shivMethods !== false),
+
+ /**
+ * A string to describe the type of `html5` object ("default" or "default print").
+ * @memberOf html5
+ * @type String
+ */
+ 'type': 'default',
+
+ // shivs the document according to the specified `html5` object options
+ 'shivDocument': shivDocument,
+
+ //creates a shived element
+ createElement: createElement,
+
+ //creates a shived documentFragment
+ createDocumentFragment: createDocumentFragment
+ };
+
+ /*--------------------------------------------------------------------------*/
+
+ // expose html5
+ window.html5 = html5;
+
+ // shiv the document
+ shivDocument(document);
+
+ }(this, document));
+ /*>>shiv*/
+
+ // Assign private properties to the return object with prefix
+ Modernizr._version = version;
+
+ // expose these for the plugin API. Look in the source for how to join() them against your input
+ /*>>prefixes*/
+ Modernizr._prefixes = prefixes;
+ /*>>prefixes*/
+ /*>>domprefixes*/
+ Modernizr._domPrefixes = domPrefixes;
+ Modernizr._cssomPrefixes = cssomPrefixes;
+ /*>>domprefixes*/
+
+ /*>>mq*/
+ // Modernizr.mq tests a given media query, live against the current state of the window
+ // A few important notes:
+ // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
+ // * A max-width or orientation query will be evaluated against the current state, which may change later.
+ // * You must specify values. Eg. If you are testing support for the min-width media query use:
+ // Modernizr.mq('(min-width:0)')
+ // usage:
+ // Modernizr.mq('only screen and (max-width:768)')
+ Modernizr.mq = testMediaQuery;
+ /*>>mq*/
+
+ /*>>hasevent*/
+ // Modernizr.hasEvent() detects support for a given event, with an optional element to test on
+ // Modernizr.hasEvent('gesturestart', elem)
+ Modernizr.hasEvent = isEventSupported;
+ /*>>hasevent*/
+
+ /*>>testprop*/
+ // Modernizr.testProp() investigates whether a given style property is recognized
+ // Note that the property names must be provided in the camelCase variant.
+ // Modernizr.testProp('pointerEvents')
+ Modernizr.testProp = function(prop){
+ return testProps([prop]);
+ };
+ /*>>testprop*/
+
+ /*>>testallprops*/
+ // Modernizr.testAllProps() investigates whether a given style property,
+ // or any of its vendor-prefixed variants, is recognized
+ // Note that the property names must be provided in the camelCase variant.
+ // Modernizr.testAllProps('boxSizing')
+ Modernizr.testAllProps = testPropsAll;
+ /*>>testallprops*/
+
+
+ /*>>teststyles*/
+ // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
+ // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
+ Modernizr.testStyles = injectElementWithStyles;
+ /*>>teststyles*/
+
+
+ /*>>prefixed*/
+ // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
+ // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
+
+ // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
+ // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
+ //
+ // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
+
+ // If you're trying to ascertain which transition end event to bind to, you might do something like...
+ //
+ // var transEndEventNames = {
+ // 'WebkitTransition' : 'webkitTransitionEnd',
+ // 'MozTransition' : 'transitionend',
+ // 'OTransition' : 'oTransitionEnd',
+ // 'msTransition' : 'MSTransitionEnd',
+ // 'transition' : 'transitionend'
+ // },
+ // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
+
+ Modernizr.prefixed = function(prop, obj, elem){
+ if(!obj) {
+ return testPropsAll(prop, 'pfx');
+ } else {
+ // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
+ return testPropsAll(prop, obj, elem);
+ }
+ };
+ /*>>prefixed*/
+
+
+ /*>>cssclasses*/
+ // Remove "no-js" class from <html> element, if it exists:
+ docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
+
+ // Add the new classes to the <html> element.
+ (enableClasses ? ' js ' + classes.join(' ') : '');
+ /*>>cssclasses*/
+
+ return Modernizr;
+
+})(this, this.document);
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/respond.js b/qqjf-Background/WebApi_QQJF/Scripts/respond.js
new file mode 100644
index 0000000..378d773
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/respond.js
@@ -0,0 +1,340 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
+/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
+window.matchMedia = window.matchMedia || (function(doc, undefined){
+
+ var bool,
+ docElem = doc.documentElement,
+ refNode = docElem.firstElementChild || docElem.firstChild,
+ // fakeBody required for <FF4 when executed in <head>
+ fakeBody = doc.createElement('body'),
+ div = doc.createElement('div');
+
+ div.id = 'mq-test-1';
+ div.style.cssText = "position:absolute;top:-100em";
+ fakeBody.style.background = "none";
+ fakeBody.appendChild(div);
+
+ return function(q){
+
+ div.innerHTML = '­<style media="'+q+'"> #mq-test-1 { width: 42px; }</style>';
+
+ docElem.insertBefore(fakeBody, refNode);
+ bool = div.offsetWidth == 42;
+ docElem.removeChild(fakeBody);
+
+ return { matches: bool, media: q };
+ };
+
+})(document);
+
+
+
+
+/*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
+(function( win ){
+ //exposed namespace
+ win.respond = {};
+
+ //define update even in native-mq-supporting browsers, to avoid errors
+ respond.update = function(){};
+
+ //expose media query support flag for external use
+ respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches;
+
+ //if media queries are supported, exit here
+ if( respond.mediaQueriesSupported ){ return; }
+
+ //define vars
+ var doc = win.document,
+ docElem = doc.documentElement,
+ mediastyles = [],
+ rules = [],
+ appendedEls = [],
+ parsedSheets = {},
+ resizeThrottle = 30,
+ head = doc.getElementsByTagName( "head" )[0] || docElem,
+ base = doc.getElementsByTagName( "base" )[0],
+ links = head.getElementsByTagName( "link" ),
+ requestQueue = [],
+
+ //loop stylesheets, send text content to translate
+ ripCSS = function(){
+ var sheets = links,
+ sl = sheets.length,
+ i = 0,
+ //vars for loop:
+ sheet, href, media, isCSS;
+
+ for( ; i < sl; i++ ){
+ sheet = sheets[ i ],
+ href = sheet.href,
+ media = sheet.media,
+ isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
+
+ //only links plz and prevent re-parsing
+ if( !!href && isCSS && !parsedSheets[ href ] ){
+ // selectivizr exposes css through the rawCssText expando
+ if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
+ translate( sheet.styleSheet.rawCssText, href, media );
+ parsedSheets[ href ] = true;
+ } else {
+ if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base)
+ || href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){
+ requestQueue.push( {
+ href: href,
+ media: media
+ } );
+ }
+ }
+ }
+ }
+ makeRequests();
+ },
+
+ //recurse through request queue, get css text
+ makeRequests = function(){
+ if( requestQueue.length ){
+ var thisRequest = requestQueue.shift();
+
+ ajax( thisRequest.href, function( styles ){
+ translate( styles, thisRequest.href, thisRequest.media );
+ parsedSheets[ thisRequest.href ] = true;
+ makeRequests();
+ } );
+ }
+ },
+
+ //find media blocks in css text, convert to style blocks
+ translate = function( styles, href, media ){
+ var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ),
+ ql = qs && qs.length || 0,
+ //try to get CSS path
+ href = href.substring( 0, href.lastIndexOf( "/" )),
+ repUrls = function( css ){
+ return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" );
+ },
+ useMedia = !ql && media,
+ //vars used in loop
+ i = 0,
+ j, fullq, thisq, eachq, eql;
+
+ //if path exists, tack on trailing slash
+ if( href.length ){ href += "/"; }
+
+ //if no internal queries exist, but media attr does, use that
+ //note: this currently lacks support for situations where a media attr is specified on a link AND
+ //its associated stylesheet has internal CSS media queries.
+ //In those cases, the media attribute will currently be ignored.
+ if( useMedia ){
+ ql = 1;
+ }
+
+
+ for( ; i < ql; i++ ){
+ j = 0;
+
+ //media attr
+ if( useMedia ){
+ fullq = media;
+ rules.push( repUrls( styles ) );
+ }
+ //parse for styles
+ else{
+ fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1;
+ rules.push( RegExp.$2 && repUrls( RegExp.$2 ) );
+ }
+
+ eachq = fullq.split( "," );
+ eql = eachq.length;
+
+ for( ; j < eql; j++ ){
+ thisq = eachq[ j ];
+ mediastyles.push( {
+ media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all",
+ rules : rules.length - 1,
+ hasquery: thisq.indexOf("(") > -1,
+ minw : thisq.match( /\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ),
+ maxw : thisq.match( /\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" )
+ } );
+ }
+ }
+
+ applyMedia();
+ },
+
+ lastCall,
+
+ resizeDefer,
+
+ // returns the value of 1em in pixels
+ getEmValue = function() {
+ var ret,
+ div = doc.createElement('div'),
+ body = doc.body,
+ fakeUsed = false;
+
+ div.style.cssText = "position:absolute;font-size:1em;width:1em";
+
+ if( !body ){
+ body = fakeUsed = doc.createElement( "body" );
+ body.style.background = "none";
+ }
+
+ body.appendChild( div );
+
+ docElem.insertBefore( body, docElem.firstChild );
+
+ ret = div.offsetWidth;
+
+ if( fakeUsed ){
+ docElem.removeChild( body );
+ }
+ else {
+ body.removeChild( div );
+ }
+
+ //also update eminpx before returning
+ ret = eminpx = parseFloat(ret);
+
+ return ret;
+ },
+
+ //cached container for 1em value, populated the first time it's needed
+ eminpx,
+
+ //enable/disable styles
+ applyMedia = function( fromResize ){
+ var name = "clientWidth",
+ docElemProp = docElem[ name ],
+ currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp,
+ styleBlocks = {},
+ lastLink = links[ links.length-1 ],
+ now = (new Date()).getTime();
+
+ //throttle resize calls
+ if( fromResize && lastCall && now - lastCall < resizeThrottle ){
+ clearTimeout( resizeDefer );
+ resizeDefer = setTimeout( applyMedia, resizeThrottle );
+ return;
+ }
+ else {
+ lastCall = now;
+ }
+
+ for( var i in mediastyles ){
+ var thisstyle = mediastyles[ i ],
+ min = thisstyle.minw,
+ max = thisstyle.maxw,
+ minnull = min === null,
+ maxnull = max === null,
+ em = "em";
+
+ if( !!min ){
+ min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
+ }
+ if( !!max ){
+ max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
+ }
+
+ // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true
+ if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){
+ if( !styleBlocks[ thisstyle.media ] ){
+ styleBlocks[ thisstyle.media ] = [];
+ }
+ styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] );
+ }
+ }
+
+ //remove any existing respond style element(s)
+ for( var i in appendedEls ){
+ if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){
+ head.removeChild( appendedEls[ i ] );
+ }
+ }
+
+ //inject active styles, grouped by media type
+ for( var i in styleBlocks ){
+ var ss = doc.createElement( "style" ),
+ css = styleBlocks[ i ].join( "\n" );
+
+ ss.type = "text/css";
+ ss.media = i;
+
+ //originally, ss was appended to a documentFragment and sheets were appended in bulk.
+ //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one!
+ head.insertBefore( ss, lastLink.nextSibling );
+
+ if ( ss.styleSheet ){
+ ss.styleSheet.cssText = css;
+ }
+ else {
+ ss.appendChild( doc.createTextNode( css ) );
+ }
+
+ //push to appendedEls to track for later removal
+ appendedEls.push( ss );
+ }
+ },
+ //tweaked Ajax functions from Quirksmode
+ ajax = function( url, callback ) {
+ var req = xmlHttp();
+ if (!req){
+ return;
+ }
+ req.open( "GET", url, true );
+ req.onreadystatechange = function () {
+ if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){
+ return;
+ }
+ callback( req.responseText );
+ }
+ if ( req.readyState == 4 ){
+ return;
+ }
+ req.send( null );
+ },
+ //define ajax obj
+ xmlHttp = (function() {
+ var xmlhttpmethod = false;
+ try {
+ xmlhttpmethod = new XMLHttpRequest();
+ }
+ catch( e ){
+ xmlhttpmethod = new ActiveXObject( "Microsoft.XMLHTTP" );
+ }
+ return function(){
+ return xmlhttpmethod;
+ };
+ })();
+
+ //translate CSS
+ ripCSS();
+
+ //expose update for re-running respond later on
+ respond.update = ripCSS;
+
+ //adjust on resize
+ function callMedia(){
+ applyMedia( true );
+ }
+ if( win.addEventListener ){
+ win.addEventListener( "resize", callMedia, false );
+ }
+ else if( win.attachEvent ){
+ win.attachEvent( "onresize", callMedia );
+ }
+})(this);
diff --git a/qqjf-Background/WebApi_QQJF/Scripts/respond.min.js b/qqjf-Background/WebApi_QQJF/Scripts/respond.min.js
new file mode 100644
index 0000000..a848137
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Scripts/respond.min.js
@@ -0,0 +1,20 @@
+/* NUGET: BEGIN LICENSE TEXT
+ *
+ * Microsoft grants you the right to use these script files for the sole
+ * purpose of either: (i) interacting through your browser with the Microsoft
+ * website or online service, subject to the applicable licensing or use
+ * terms; or (ii) using the files as included with a Microsoft product subject
+ * to that product's license terms. Microsoft reserves all other rights to the
+ * files not expressly granted by Microsoft, whether by implication, estoppel
+ * or otherwise. Insofar as a script file is dual licensed under GPL,
+ * Microsoft neither took the code under GPL nor distributes it thereunder but
+ * under the terms set out in this paragraph. All notices and licenses
+ * below are for informational purposes only.
+ *
+ * NUGET: END LICENSE TEXT */
+/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
+/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
+window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='­<style media="'+h+'"> #mq-test-1 { width: 42px; }</style>';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document);
+
+/*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
+(function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B<y;B++){A=D[B],z=A.href,C=A.media,x=A.rel&&A.rel.toLowerCase()==="stylesheet";if(!!z&&x&&!o[z]){if(A.styleSheet&&A.styleSheet.rawCssText){m(A.styleSheet.rawCssText,z,C);o[z]=true}else{if((!/^([a-zA-Z:]*\/\/)/.test(z)&&!g)||z.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:z,media:C})}}}}u()},u=function(){if(d.length){var x=d.shift();n(x.href,function(y){m(y,x.href,x.media);o[x.href]=true;u()})}},m=function(I,x,z){var G=I.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),J=G&&G.length||0,x=x.substring(0,x.lastIndexOf("/")),y=function(K){return K.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+x+"$2$3")},A=!J&&z,D=0,C,E,F,B,H;if(x.length){x+="/"}if(A){J=1}for(;D<J;D++){C=0;if(A){E=z;k.push(y(I))}else{E=G[D].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&y(RegExp.$2))}B=E.split(",");H=B.length;for(;C<H;C++){F=B[C];i.push({media:F.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:k.length-1,hasquery:F.indexOf("(")>-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode==="CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l<h){clearTimeout(r);r=setTimeout(j,h);return}else{l=z}for(var E in i){var K=i[E],C=K.minw,J=K.maxw,A=C===null,L=J===null,y="em";if(!!C){C=parseFloat(C)*(C.indexOf(y)>-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this);
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.cs b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.cs
new file mode 100644
index 0000000..bd89400
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.cs
@@ -0,0 +1,302 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WebApi_QQJF.SrmServer {
+ using System.Runtime.Serialization;
+ using System;
+
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+ [System.Runtime.Serialization.CollectionDataContractAttribute(Name="ArrayOfInt", Namespace="http://tempuri.org/", ItemName="int")]
+ [System.SerializableAttribute()]
+ public class ArrayOfInt : System.Collections.Generic.List<int> {
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+ [System.Runtime.Serialization.CollectionDataContractAttribute(Name="ArrayOfString", Namespace="http://tempuri.org/", ItemName="string")]
+ [System.SerializableAttribute()]
+ public class ArrayOfString : System.Collections.Generic.List<string> {
+ }
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.ServiceContractAttribute(ConfigurationName="SrmServer.ISrmService")]
+ public interface ISrmService {
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrmInfo", ReplyAction="http://tempuri.org/ISrmService/GetSrmInfoResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ string GetSrmInfo(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/GetSrmInfo", ReplyAction="http://tempuri.org/ISrmService/GetSrmInfoResponse")]
+ System.Threading.Tasks.Task<string> GetSrmInfoAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDelete", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmDelete(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmDelete", ReplyAction="http://tempuri.org/ISrmService/SendSrmDeleteResponse")]
+ System.Threading.Tasks.Task<int> SendSrmDeleteAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirmResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmTaskFinishConfirm(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirmResponse")]
+ System.Threading.Tasks.Task<int> SendSrmTaskFinishConfirmAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmEStop", ReplyAction="http://tempuri.org/ISrmService/SendSrmEStopResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmEStop(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmEStop", ReplyAction="http://tempuri.org/ISrmService/SendSrmEStopResponse")]
+ System.Threading.Tasks.Task<int> SendSrmEStopAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmMove", ReplyAction="http://tempuri.org/ISrmService/SendSrmMoveResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmMove(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmMove", ReplyAction="http://tempuri.org/ISrmService/SendSrmMoveResponse")]
+ System.Threading.Tasks.Task<int> SendSrmMoveAsync(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTask", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int SendSrmTask(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SendSrmTask", ReplyAction="http://tempuri.org/ISrmService/SendSrmTaskResponse")]
+ System.Threading.Tasks.Task<int> SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SrmRlsAlert", ReplyAction="http://tempuri.org/ISrmService/SrmRlsAlertResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ void SrmRlsAlert(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/SrmRlsAlert", ReplyAction="http://tempuri.org/ISrmService/SrmRlsAlertResponse")]
+ System.Threading.Tasks.Task SrmRlsAlertAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsTaskFinish", ReplyAction="http://tempuri.org/ISrmService/IsTaskFinishResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int IsTaskFinish(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsTaskFinish", ReplyAction="http://tempuri.org/ISrmService/IsTaskFinishResponse")]
+ System.Threading.Tasks.Task<int> IsTaskFinishAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsReady", ReplyAction="http://tempuri.org/ISrmService/IsReadyResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ bool IsReady(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsReady", ReplyAction="http://tempuri.org/ISrmService/IsReadyResponse")]
+ System.Threading.Tasks.Task<bool> IsReadyAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/FinishTask", ReplyAction="http://tempuri.org/ISrmService/FinishTaskResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ int FinishTask(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/FinishTask", ReplyAction="http://tempuri.org/ISrmService/FinishTaskResponse")]
+ System.Threading.Tasks.Task<int> FinishTaskAsync(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/DeleteMainTask", ReplyAction="http://tempuri.org/ISrmService/DeleteMainTaskResponse")]
+ WebApi_QQJF.SrmServer.DeleteMainTaskResponse DeleteMainTask(WebApi_QQJF.SrmServer.DeleteMainTaskRequest request);
+
+ // CODEGEN: 姝e湪鐢熸垚娑堟伅鍗忓畾锛屽簲涓鸿鎿嶄綔鍏锋湁澶氫釜杩斿洖鍊笺��
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/DeleteMainTask", ReplyAction="http://tempuri.org/ISrmService/DeleteMainTaskResponse")]
+ System.Threading.Tasks.Task<WebApi_QQJF.SrmServer.DeleteMainTaskResponse> DeleteMainTaskAsync(WebApi_QQJF.SrmServer.DeleteMainTaskRequest request);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsNotAlarm", ReplyAction="http://tempuri.org/ISrmService/IsNotAlarmResponse")]
+ [System.ServiceModel.DataContractFormatAttribute(Style=System.ServiceModel.OperationFormatStyle.Rpc)]
+ bool IsNotAlarm(int srmId);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ISrmService/IsNotAlarm", ReplyAction="http://tempuri.org/ISrmService/IsNotAlarmResponse")]
+ System.Threading.Tasks.Task<bool> IsNotAlarmAsync(int srmId);
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="DeleteMainTask", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
+ public partial class DeleteMainTaskRequest {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
+ public int id;
+
+ public DeleteMainTaskRequest() {
+ }
+
+ public DeleteMainTaskRequest(int id) {
+ this.id = id;
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="DeleteMainTaskResponse", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
+ public partial class DeleteMainTaskResponse {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
+ public bool DeleteMainTaskResult;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=1)]
+ public WebApi_QQJF.SrmServer.ArrayOfInt tranDoingId;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=2)]
+ public WebApi_QQJF.SrmServer.ArrayOfInt rgvDoingId;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=3)]
+ public WebApi_QQJF.SrmServer.ArrayOfInt srmDoingId;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=4)]
+ public WebApi_QQJF.SrmServer.ArrayOfString placeList;
+
+ public DeleteMainTaskResponse() {
+ }
+
+ public DeleteMainTaskResponse(bool DeleteMainTaskResult, WebApi_QQJF.SrmServer.ArrayOfInt tranDoingId, WebApi_QQJF.SrmServer.ArrayOfInt rgvDoingId, WebApi_QQJF.SrmServer.ArrayOfInt srmDoingId, WebApi_QQJF.SrmServer.ArrayOfString placeList) {
+ this.DeleteMainTaskResult = DeleteMainTaskResult;
+ this.tranDoingId = tranDoingId;
+ this.rgvDoingId = rgvDoingId;
+ this.srmDoingId = srmDoingId;
+ this.placeList = placeList;
+ }
+ }
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public interface ISrmServiceChannel : WebApi_QQJF.SrmServer.ISrmService, System.ServiceModel.IClientChannel {
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public partial class SrmServiceClient : System.ServiceModel.ClientBase<WebApi_QQJF.SrmServer.ISrmService>, WebApi_QQJF.SrmServer.ISrmService {
+
+ public SrmServiceClient() {
+ }
+
+ public SrmServiceClient(string endpointConfigurationName) :
+ base(endpointConfigurationName) {
+ }
+
+ public SrmServiceClient(string endpointConfigurationName, string remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public SrmServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public SrmServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(binding, remoteAddress) {
+ }
+
+ public string GetSrmInfo(int srmId) {
+ return base.Channel.GetSrmInfo(srmId);
+ }
+
+ public System.Threading.Tasks.Task<string> GetSrmInfoAsync(int srmId) {
+ return base.Channel.GetSrmInfoAsync(srmId);
+ }
+
+ public int SendSrmDelete(int srmId) {
+ return base.Channel.SendSrmDelete(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmDeleteAsync(int srmId) {
+ return base.Channel.SendSrmDeleteAsync(srmId);
+ }
+
+ public int SendSrmTaskFinishConfirm(int srmId) {
+ return base.Channel.SendSrmTaskFinishConfirm(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmTaskFinishConfirmAsync(int srmId) {
+ return base.Channel.SendSrmTaskFinishConfirmAsync(srmId);
+ }
+
+ public int SendSrmEStop(int srmId) {
+ return base.Channel.SendSrmEStop(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmEStopAsync(int srmId) {
+ return base.Channel.SendSrmEStopAsync(srmId);
+ }
+
+ public int SendSrmMove(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather) {
+ return base.Channel.SendSrmMove(srmId, taskId, toPlace, command, palletType, taskFather);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmMoveAsync(int srmId, int taskId, string toPlace, int command, int palletType, int taskFather) {
+ return base.Channel.SendSrmMoveAsync(srmId, taskId, toPlace, command, palletType, taskFather);
+ }
+
+ public int SendSrmTask(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather) {
+ return base.Channel.SendSrmTask(srmId, taskId, sourcePlace, toPlace, pallet, taskFather);
+ }
+
+ public System.Threading.Tasks.Task<int> SendSrmTaskAsync(int srmId, int taskId, string sourcePlace, string toPlace, int pallet, int taskFather) {
+ return base.Channel.SendSrmTaskAsync(srmId, taskId, sourcePlace, toPlace, pallet, taskFather);
+ }
+
+ public void SrmRlsAlert(int srmId) {
+ base.Channel.SrmRlsAlert(srmId);
+ }
+
+ public System.Threading.Tasks.Task SrmRlsAlertAsync(int srmId) {
+ return base.Channel.SrmRlsAlertAsync(srmId);
+ }
+
+ public int IsTaskFinish(int srmId) {
+ return base.Channel.IsTaskFinish(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> IsTaskFinishAsync(int srmId) {
+ return base.Channel.IsTaskFinishAsync(srmId);
+ }
+
+ public bool IsReady(int srmId) {
+ return base.Channel.IsReady(srmId);
+ }
+
+ public System.Threading.Tasks.Task<bool> IsReadyAsync(int srmId) {
+ return base.Channel.IsReadyAsync(srmId);
+ }
+
+ public int FinishTask(int srmId) {
+ return base.Channel.FinishTask(srmId);
+ }
+
+ public System.Threading.Tasks.Task<int> FinishTaskAsync(int srmId) {
+ return base.Channel.FinishTaskAsync(srmId);
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ WebApi_QQJF.SrmServer.DeleteMainTaskResponse WebApi_QQJF.SrmServer.ISrmService.DeleteMainTask(WebApi_QQJF.SrmServer.DeleteMainTaskRequest request) {
+ return base.Channel.DeleteMainTask(request);
+ }
+
+ public bool DeleteMainTask(int id, out WebApi_QQJF.SrmServer.ArrayOfInt tranDoingId, out WebApi_QQJF.SrmServer.ArrayOfInt rgvDoingId, out WebApi_QQJF.SrmServer.ArrayOfInt srmDoingId, out WebApi_QQJF.SrmServer.ArrayOfString placeList) {
+ WebApi_QQJF.SrmServer.DeleteMainTaskRequest inValue = new WebApi_QQJF.SrmServer.DeleteMainTaskRequest();
+ inValue.id = id;
+ WebApi_QQJF.SrmServer.DeleteMainTaskResponse retVal = ((WebApi_QQJF.SrmServer.ISrmService)(this)).DeleteMainTask(inValue);
+ tranDoingId = retVal.tranDoingId;
+ rgvDoingId = retVal.rgvDoingId;
+ srmDoingId = retVal.srmDoingId;
+ placeList = retVal.placeList;
+ return retVal.DeleteMainTaskResult;
+ }
+
+ public System.Threading.Tasks.Task<WebApi_QQJF.SrmServer.DeleteMainTaskResponse> DeleteMainTaskAsync(WebApi_QQJF.SrmServer.DeleteMainTaskRequest request) {
+ return base.Channel.DeleteMainTaskAsync(request);
+ }
+
+ public bool IsNotAlarm(int srmId) {
+ return base.Channel.IsNotAlarm(srmId);
+ }
+
+ public System.Threading.Tasks.Task<bool> IsNotAlarmAsync(int srmId) {
+ return base.Channel.IsNotAlarmAsync(srmId);
+ }
+ }
+}
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.svcmap b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.svcmap
new file mode 100644
index 0000000..57ad55c
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/Reference.svcmap
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="017720c2-17d6-4d6a-9651-198eda0866b5" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
+ <ClientOptions>
+ <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
+ <GenerateTaskBasedAsynchronousMethod>true</GenerateTaskBasedAsynchronousMethod>
+ <EnableDataBinding>true</EnableDataBinding>
+ <ExcludedTypes />
+ <ImportXmlTypes>false</ImportXmlTypes>
+ <GenerateInternalTypes>false</GenerateInternalTypes>
+ <GenerateMessageContracts>false</GenerateMessageContracts>
+ <NamespaceMappings />
+ <CollectionMappings />
+ <GenerateSerializableTypes>true</GenerateSerializableTypes>
+ <Serializer>Auto</Serializer>
+ <UseSerializerForFaults>true</UseSerializerForFaults>
+ <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
+ <ReferencedAssemblies />
+ <ReferencedDataContractTypes />
+ <ServiceContractMappings />
+ </ClientOptions>
+ <MetadataSources>
+ <MetadataSource Address="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" Protocol="http" SourceId="1" />
+ </MetadataSources>
+ <Metadata>
+ <MetadataFile FileName="item.disco" MetadataType="Disco" ID="698d8907-c634-4bc5-9b1c-e7c7c910b421" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?disco" />
+ <MetadataFile FileName="SrmService.wsdl" MetadataType="Wsdl" ID="988c1bf0-6d8c-4f5e-97b6-97e62214655e" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?wsdl" />
+ <MetadataFile FileName="item.xsd" MetadataType="Schema" ID="43b6b4fa-7ece-4ce1-b8a9-b3aed7421b85" SourceId="1" SourceUrl="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?xsd=xsd0" />
+ </Metadata>
+ <Extensions>
+ <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
+ <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
+ </Extensions>
+</ReferenceGroup>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/SrmService.wsdl b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/SrmService.wsdl
new file mode 100644
index 0000000..e97c312
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/SrmService.wsdl
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SrmService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://tempuri.org/Imports">
+ <xsd:import namespace="http://www.w3.org/2001/XMLSchema" />
+ <xsd:import schemaLocation="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?xsd=xsd0" namespace="http://tempuri.org/" />
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="ISrmService_GetSrmInfo_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_GetSrmInfo_OutputMessage">
+ <wsdl:part name="GetSrmInfoResult" type="xsd:string" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDelete_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmDelete_OutputMessage">
+ <wsdl:part name="SendSrmDeleteResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTaskFinishConfirm_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTaskFinishConfirm_OutputMessage">
+ <wsdl:part name="SendSrmTaskFinishConfirmResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmEStop_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmEStop_OutputMessage">
+ <wsdl:part name="SendSrmEStopResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmMove_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="toPlace" type="xsd:string" />
+ <wsdl:part name="command" type="xsd:int" />
+ <wsdl:part name="palletType" type="xsd:int" />
+ <wsdl:part name="taskFather" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmMove_OutputMessage">
+ <wsdl:part name="SendSrmMoveResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTask_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ <wsdl:part name="taskId" type="xsd:int" />
+ <wsdl:part name="sourcePlace" type="xsd:string" />
+ <wsdl:part name="toPlace" type="xsd:string" />
+ <wsdl:part name="pallet" type="xsd:int" />
+ <wsdl:part name="taskFather" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SendSrmTask_OutputMessage">
+ <wsdl:part name="SendSrmTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SrmRlsAlert_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_SrmRlsAlert_OutputMessage" />
+ <wsdl:message name="ISrmService_IsTaskFinish_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsTaskFinish_OutputMessage">
+ <wsdl:part name="IsTaskFinishResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsReady_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsReady_OutputMessage">
+ <wsdl:part name="IsReadyResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_FinishTask_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_FinishTask_OutputMessage">
+ <wsdl:part name="FinishTaskResult" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTask_InputMessage">
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_DeleteMainTask_OutputMessage">
+ <wsdl:part name="DeleteMainTaskResult" type="xsd:boolean" />
+ <wsdl:part name="tranDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="rgvDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="srmDoingId" type="tns:ArrayOfInt" />
+ <wsdl:part name="placeList" type="tns:ArrayOfString" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsNotAlarm_InputMessage">
+ <wsdl:part name="srmId" type="xsd:int" />
+ </wsdl:message>
+ <wsdl:message name="ISrmService_IsNotAlarm_OutputMessage">
+ <wsdl:part name="IsNotAlarmResult" type="xsd:boolean" />
+ </wsdl:message>
+ <wsdl:portType name="ISrmService">
+ <wsdl:operation name="GetSrmInfo" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfo" message="tns:ISrmService_GetSrmInfo_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/GetSrmInfoResponse" message="tns:ISrmService_GetSrmInfo_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDelete" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmDelete" message="tns:ISrmService_SendSrmDelete_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmDeleteResponse" message="tns:ISrmService_SendSrmDelete_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTaskFinishConfirm" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm" message="tns:ISrmService_SendSrmTaskFinishConfirm_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirmResponse" message="tns:ISrmService_SendSrmTaskFinishConfirm_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmEStop" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStop" message="tns:ISrmService_SendSrmEStop_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmEStopResponse" message="tns:ISrmService_SendSrmEStop_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmMove" parameterOrder="srmId taskId toPlace command palletType taskFather">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmMove" message="tns:ISrmService_SendSrmMove_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmMoveResponse" message="tns:ISrmService_SendSrmMove_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTask" parameterOrder="srmId taskId sourcePlace toPlace pallet taskFather">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SendSrmTask" message="tns:ISrmService_SendSrmTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SendSrmTaskResponse" message="tns:ISrmService_SendSrmTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="SrmRlsAlert" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlert" message="tns:ISrmService_SrmRlsAlert_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/SrmRlsAlertResponse" message="tns:ISrmService_SrmRlsAlert_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinish" message="tns:ISrmService_IsTaskFinish_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsTaskFinishResponse" message="tns:ISrmService_IsTaskFinish_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsReady" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsReady" message="tns:ISrmService_IsReady_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsReadyResponse" message="tns:ISrmService_IsReady_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/FinishTask" message="tns:ISrmService_FinishTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/FinishTaskResponse" message="tns:ISrmService_FinishTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTask" parameterOrder="id tranDoingId rgvDoingId srmDoingId placeList">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTask" message="tns:ISrmService_DeleteMainTask_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/DeleteMainTaskResponse" message="tns:ISrmService_DeleteMainTask_OutputMessage" />
+ </wsdl:operation>
+ <wsdl:operation name="IsNotAlarm" parameterOrder="srmId">
+ <wsdl:input wsaw:Action="http://tempuri.org/ISrmService/IsNotAlarm" message="tns:ISrmService_IsNotAlarm_InputMessage" />
+ <wsdl:output wsaw:Action="http://tempuri.org/ISrmService/IsNotAlarmResponse" message="tns:ISrmService_IsNotAlarm_OutputMessage" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="BasicHttpBinding_ISrmService" type="tns:ISrmService">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
+ <wsdl:operation name="GetSrmInfo">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/GetSrmInfo" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmDelete">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmDelete" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTaskFinishConfirm">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTaskFinishConfirm" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmEStop">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmEStop" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmMove">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmMove" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendSrmTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SendSrmTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SrmRlsAlert">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/SrmRlsAlert" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsTaskFinish">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsTaskFinish" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsReady">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsReady" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="FinishTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/FinishTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="DeleteMainTask">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/DeleteMainTask" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="IsNotAlarm">
+ <soap:operation soapAction="http://tempuri.org/ISrmService/IsNotAlarm" style="rpc" />
+ <wsdl:input>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" namespace="http://tempuri.org/" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SrmService">
+ <wsdl:port name="BasicHttpBinding_ISrmService" binding="tns:BasicHttpBinding_ISrmService">
+ <soap:address location="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfInt.datasource b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfInt.datasource
new file mode 100644
index 0000000..2d036b6
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfInt.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ArrayOfInt" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>WebApi_QQJF.SrmServer.ArrayOfInt, Service References.SrmServer.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfString.datasource b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfString.datasource
new file mode 100644
index 0000000..a6d4260
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.ArrayOfString.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ArrayOfString" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>WebApi_QQJF.SrmServer.ArrayOfString, Service References.SrmServer.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.DeleteMainTaskResponse.datasource b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.DeleteMainTaskResponse.datasource
new file mode 100644
index 0000000..f121cfd
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/WebApi_QQJF.SrmServer.DeleteMainTaskResponse.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="DeleteMainTaskResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>WebApi_QQJF.SrmServer.DeleteMainTaskResponse, Service References.SrmServer.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration.svcinfo b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration.svcinfo
new file mode 100644
index 0000000..6e27158
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration.svcinfo
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
+ <behaviors />
+ <bindings>
+ <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:<?xml version="1.0" encoding="utf-16"?><Data name="BasicHttpBinding_ISrmService" />" bindingType="basicHttpBinding" name="BasicHttpBinding_ISrmService" />
+ </bindings>
+ <endpoints>
+ <endpoint normalizedDigest="<?xml version="1.0" encoding="utf-16"?><Data address="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService" contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />" digest="<?xml version="1.0" encoding="utf-16"?><Data address="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService" contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />" contractName="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />
+ </endpoints>
+</configurationSnapshot>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration91.svcinfo b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration91.svcinfo
new file mode 100644
index 0000000..96be40a
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/configuration91.svcinfo
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="d8ypMk//eBvCfBDvIgsSI6SfPlY=">
+ <bindingConfigurations>
+ <bindingConfiguration bindingType="basicHttpBinding" name="BasicHttpBinding_ISrmService">
+ <properties>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
+ </property>
+ <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>StrongWildcard</serializedValue>
+ </property>
+ <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>65536</serializedValue>
+ </property>
+ <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.Text.UTF8Encoding</serializedValue>
+ </property>
+ <property path="/transferMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Buffered</serializedValue>
+ </property>
+ <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Text</serializedValue>
+ </property>
+ <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
+ </property>
+ <property path="/security/mode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
+ </property>
+ <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Never</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>TransportSelected</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>(闆嗗悎)</serializedValue>
+ </property>
+ <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
+ </property>
+ <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>UserName</serializedValue>
+ </property>
+ <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Default</serializedValue>
+ </property>
+ </properties>
+ </bindingConfiguration>
+ </bindingConfigurations>
+ <endpoints>
+ <endpoint name="BasicHttpBinding_ISrmService" contract="SrmServer.ISrmService" bindingType="basicHttpBinding" address="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" bindingConfiguration="BasicHttpBinding_ISrmService">
+ <properties>
+ <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/</serializedValue>
+ </property>
+ <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>basicHttpBinding</serializedValue>
+ </property>
+ <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
+ </property>
+ <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>SrmServer.ISrmService</serializedValue>
+ </property>
+ <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+ </property>
+ <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue><Header /></serializedValue>
+ </property>
+ <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+ </property>
+ <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+ </property>
+ <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+ </property>
+ <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>My</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>LocalMachine</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>False</serializedValue>
+ </property>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>BasicHttpBinding_ISrmService</serializedValue>
+ </property>
+ <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ </properties>
+ </endpoint>
+ </endpoints>
+</SavedWcfConfigurationInformation>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.disco b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.disco
new file mode 100644
index 0000000..8d4be3c
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.disco
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
+ <contractRef ref="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/?wsdl" docRef="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
+</discovery>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.xsd b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.xsd
new file mode 100644
index 0000000..e1f866d
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Service References/SrmServer/item.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="ArrayOfInt">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ArrayOfString">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/Uplod/1704784885695.PNG b/qqjf-Background/WebApi_QQJF/Uplod/1704784885695.PNG
new file mode 100644
index 0000000..751bcf7
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Uplod/1704784885695.PNG
Binary files differ
diff --git a/qqjf-Background/WebApi_QQJF/Views/Home/Index.cshtml b/qqjf-Background/WebApi_QQJF/Views/Home/Index.cshtml
new file mode 100644
index 0000000..4290fd3
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Views/Home/Index.cshtml
@@ -0,0 +1,24 @@
+锘�<div class="jumbotron">
+ <h1>ASP.NET</h1>
+ <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS, and JavaScript.</p>
+ <p><a href="http://asp.net" class="btn btn-primary btn-large">Learn more »</a></p>
+</div>
+<div class="row">
+ <div class="col-md-4">
+ <h2>Getting started</h2>
+ <p>ASP.NET Web API is a framework that makes it easy to build HTTP services that reach
+ a broad range of clients, including browsers and mobile devices. ASP.NET Web API
+ is an ideal platform for building RESTful applications on the .NET Framework.</p>
+ <p><a class="btn btn-default" href="http://go.microsoft.com/fwlink/?LinkId=301870">Learn more »</a></p>
+ </div>
+ <div class="col-md-4">
+ <h2>Get more libraries</h2>
+ <p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p>
+ <p><a class="btn btn-default" href="http://go.microsoft.com/fwlink/?LinkId=301871">Learn more »</a></p>
+ </div>
+ <div class="col-md-4">
+ <h2>Web Hosting</h2>
+ <p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p>
+ <p><a class="btn btn-default" href="http://go.microsoft.com/fwlink/?LinkId=301872">Learn more »</a></p>
+ </div>
+</div>
diff --git a/qqjf-Background/WebApi_QQJF/Views/Shared/Error.cshtml b/qqjf-Background/WebApi_QQJF/Views/Shared/Error.cshtml
new file mode 100644
index 0000000..aa519e7
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Views/Shared/Error.cshtml
@@ -0,0 +1,18 @@
+锘緻{
+ Layout = null;
+}
+
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="viewport" content="width=device-width" />
+ <title>閿欒</title>
+</head>
+<body>
+ <hgroup>
+ <h1>閿欒銆�</h1>
+ <h2>澶勭悊浣犵殑璇锋眰鏃跺嚭閿欍��</h2>
+ </hgroup>
+</body>
+</html>
diff --git a/qqjf-Background/WebApi_QQJF/Views/Shared/_Layout.cshtml b/qqjf-Background/WebApi_QQJF/Views/Shared/_Layout.cshtml
new file mode 100644
index 0000000..35e5b19
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Views/Shared/_Layout.cshtml
@@ -0,0 +1,43 @@
+锘�<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width" />
+ <title>@ViewBag.Title</title>
+ @Styles.Render("~/Content/css")
+ @Scripts.Render("~/bundles/modernizr")
+</head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<body>
+ <div class="navbar navbar-inverse navbar-fixed-top">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ @Html.ActionLink("搴旂敤绋嬪簭鍚嶇О", "Index", "Home", null, new { @class = "navbar-brand" })
+ </div>
+ <div class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+ <li>@Html.ActionLink("涓婚〉", "Index", "Home", new { area = "" }, null)</li>
+ <li>@Html.ActionLink("API", "Index", "Help", new { area = "" }, null)</li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="container body-content">
+ @RenderBody()
+ <hr />
+ <footer>
+ <p>© @DateTime.Now.Year - 鎴戠殑 ASP.NET 搴旂敤绋嬪簭</p>
+ </footer>
+ </div>
+
+ @Scripts.Render("~/bundles/jquery")
+ @Scripts.Render("~/bundles/bootstrap")
+ @RenderSection("scripts", required: false)
+</body>
+</html>
diff --git a/qqjf-Background/WebApi_QQJF/Views/Web.config b/qqjf-Background/WebApi_QQJF/Views/Web.config
new file mode 100644
index 0000000..b3b0d4b
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Views/Web.config
@@ -0,0 +1,35 @@
+锘�<?xml version="1.0"?>
+
+<configuration>
+ <configSections>
+ <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+ <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
+ <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
+ </sectionGroup>
+ </configSections>
+
+ <system.web.webPages.razor>
+ <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ <pages pageBaseType="System.Web.Mvc.WebViewPage">
+ <namespaces>
+ <add namespace="System.Web.Mvc" />
+ <add namespace="System.Web.Mvc.Ajax" />
+ <add namespace="System.Web.Mvc.Html" />
+ <add namespace="System.Web.Optimization"/>
+ <add namespace="System.Web.Routing" />
+ <add namespace="WebApi_QQJF" />
+ </namespaces>
+ </pages>
+ </system.web.webPages.razor>
+
+ <appSettings>
+ <add key="webpages:Enabled" value="false" />
+ </appSettings>
+
+ <system.webServer>
+ <handlers>
+ <remove name="BlockViewHandler"/>
+ <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
+ </handlers>
+ </system.webServer>
+</configuration>
diff --git a/qqjf-Background/WebApi_QQJF/Views/_ViewStart.cshtml b/qqjf-Background/WebApi_QQJF/Views/_ViewStart.cshtml
new file mode 100644
index 0000000..2de6241
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Views/_ViewStart.cshtml
@@ -0,0 +1,3 @@
+锘緻{
+ Layout = "~/Views/Shared/_Layout.cshtml";
+}
diff --git "a/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.Debug.config" "b/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.Debug.config"
new file mode 100644
index 0000000..c1761f2
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.Debug.config"
@@ -0,0 +1,30 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 鏈夊叧浣跨敤 Web.config 杞崲鐨勮缁嗕俊鎭紝璇疯闂� http://go.microsoft.com/fwlink/?LinkId=301874 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛� "SetAttributes" 杞崲灏� "connectionString"
+ 鐨勫�兼洿鏀逛负浠呭湪 "Match" 瀹氫綅鍣ㄦ壘鍒板叿鏈夊�� "MyDB" 鐨�
+ 灞炴�� "name" 鏃朵娇鐢� "ReleaseSQLServer"銆�
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛�"Replace" 杞崲灏嗘浛鎹� Web.config 鏂囦欢鐨�
+ 鏁翠釜 <customErrors> 鑺傘��
+ 璇锋敞鎰忥紝鐢变簬鍦� <system.web> 鑺傜偣涓嬪彧鏈変竴涓�
+ customErrors 鑺傦紝鍥犳鏃犻渶浣跨敤 "xdt:Locator" 灞炴�с��
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
diff --git "a/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.Release.config" "b/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.Release.config"
new file mode 100644
index 0000000..2c51077
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.Release.config"
@@ -0,0 +1,31 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 鏈夊叧浣跨敤 Web.config 杞崲鐨勮缁嗕俊鎭紝璇疯闂� http://go.microsoft.com/fwlink/?LinkId=301874 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛� "SetAttributes" 杞崲灏� "connectionString"
+ 鐨勫�兼洿鏀逛负浠呭湪 "Match" 瀹氫綅鍣ㄦ壘鍒板叿鏈夊�� "MyDB" 鐨�
+ 灞炴�� "name" 鏃朵娇鐢� "ReleaseSQLServer"銆�
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <compilation xdt:Transform="RemoveAttributes(debug)" />
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛�"Replace" 杞崲灏嗘浛鎹� Web.config 鏂囦欢鐨�
+ 鏁翠釜 <customErrors> 鑺傘��
+ 璇锋敞鎰忥紝鐢变簬鍦� <system.web> 鑺傜偣涓嬪彧鏈変竴涓�
+ customErrors 鑺傦紝鍥犳鏃犻渶浣跨敤 "xdt:Locator" 灞炴�с��
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
diff --git "a/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.config" "b/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.config"
new file mode 100644
index 0000000..afdfb3c
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/Web - \346\234\254\346\234\272\347\216\257\345\242\203.config"
@@ -0,0 +1,89 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 鏈夊叧濡備綍閰嶇疆 ASP.NET 搴旂敤绋嬪簭鐨勮缁嗕俊鎭紝璇疯闂�
+ http://go.microsoft.com/fwlink/?LinkId=301879
+ -->
+<configuration>
+ <appSettings>
+ <add key="webpages:Version" value="3.0.0.0" />
+ <add key="webpages:Enabled" value="false" />
+ <add key="ClientValidationEnabled" value="true" />
+ <add key="UnobtrusiveJavaScriptEnabled" value="true" />
+ </appSettings>
+ <system.web>
+ <compilation debug="true" targetFramework="4.5" />
+ <httpRuntime targetFramework="4.5" />
+ <customErrors mode="Off" />
+ </system.web>
+ <system.webServer>
+ <httpProtocol>
+ <customHeaders>
+ <!--娉ㄦ剰锛屾垜鍦╓ebApiConfig涓凡缁忛厤缃簡Cors璺ㄥ煙锛岃繖閲岀殑閰嶇疆灏变笉鑳介厤缃簡锛屽惁鍒欎細瀵艰嚧涓嶈兘璺ㄥ煙 銆怑ditby shaocx,2023-05-21銆�-->
+ <!--濡傛灉璁剧疆 Access-Control-Allow-Origin:*锛屽垯鍏佽鎵�鏈夊煙鍚嶇殑鑴氭湰璁块棶璇ヨ祫婧�-->
+ <!--<add name="Access-Control-Allow-Origin" value="*" />-->
+ <!--鍝嶅簲澶磋缃紙Content-Type锛氬彧闄愪簬涓変釜鍊糰pplication/x-www-form-urlencoded銆乵ultipart/form-data銆乼ext/plain锛�-->
+ <!--<add name="Access-Control-Allow-Headers" value="auth,ContentType,Content-Type,content-type,Authorization" />-->
+ <!--鍝嶅簲绫诲瀷 (鍊间负閫楀彿鍒嗛殧鐨勪竴涓瓧绗︿覆锛岃〃鏄庢湇鍔″櫒鏀寔鐨勬墍鏈夎法鍩熻姹傜殑鏂规硶)-->
+ <!--<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />-->
+ </customHeaders>
+ </httpProtocol>
+ <directoryBrowse enabled="true" />
+ <handlers>
+ <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
+ <remove name="OPTIONSVerbHandler" />
+ <remove name="TRACEVerbHandler" />
+ <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+ </handlers></system.webServer>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+ <connectionStrings>
+ <!--<add name="Model1" connectionString="data source=10.103.11.236;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
+ <!--<add name="Model1" connectionString="data source=172.27.96.27;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=MJC!2022@wms;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ </connectionStrings>
+ <system.serviceModel>
+ <bindings>
+ <basicHttpBinding>
+ <binding name="BasicHttpBinding_ISrmService" />
+ </basicHttpBinding>
+ </bindings>
+ <client>
+ <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService" contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />
+ </client>
+ </system.serviceModel>
+</configuration>
diff --git "a/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.Debug.config" "b/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.Debug.config"
new file mode 100644
index 0000000..c1761f2
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.Debug.config"
@@ -0,0 +1,30 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 鏈夊叧浣跨敤 Web.config 杞崲鐨勮缁嗕俊鎭紝璇疯闂� http://go.microsoft.com/fwlink/?LinkId=301874 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛� "SetAttributes" 杞崲灏� "connectionString"
+ 鐨勫�兼洿鏀逛负浠呭湪 "Match" 瀹氫綅鍣ㄦ壘鍒板叿鏈夊�� "MyDB" 鐨�
+ 灞炴�� "name" 鏃朵娇鐢� "ReleaseSQLServer"銆�
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛�"Replace" 杞崲灏嗘浛鎹� Web.config 鏂囦欢鐨�
+ 鏁翠釜 <customErrors> 鑺傘��
+ 璇锋敞鎰忥紝鐢变簬鍦� <system.web> 鑺傜偣涓嬪彧鏈変竴涓�
+ customErrors 鑺傦紝鍥犳鏃犻渶浣跨敤 "xdt:Locator" 灞炴�с��
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
diff --git "a/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.Release.config" "b/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.Release.config"
new file mode 100644
index 0000000..2c51077
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.Release.config"
@@ -0,0 +1,31 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 鏈夊叧浣跨敤 Web.config 杞崲鐨勮缁嗕俊鎭紝璇疯闂� http://go.microsoft.com/fwlink/?LinkId=301874 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛� "SetAttributes" 杞崲灏� "connectionString"
+ 鐨勫�兼洿鏀逛负浠呭湪 "Match" 瀹氫綅鍣ㄦ壘鍒板叿鏈夊�� "MyDB" 鐨�
+ 灞炴�� "name" 鏃朵娇鐢� "ReleaseSQLServer"銆�
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <compilation xdt:Transform="RemoveAttributes(debug)" />
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛�"Replace" 杞崲灏嗘浛鎹� Web.config 鏂囦欢鐨�
+ 鏁翠釜 <customErrors> 鑺傘��
+ 璇锋敞鎰忥紝鐢变簬鍦� <system.web> 鑺傜偣涓嬪彧鏈変竴涓�
+ customErrors 鑺傦紝鍥犳鏃犻渶浣跨敤 "xdt:Locator" 灞炴�с��
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
diff --git "a/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.config" "b/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.config"
new file mode 100644
index 0000000..13e6297
--- /dev/null
+++ "b/qqjf-Background/WebApi_QQJF/Web -\347\224\237\344\272\247\345\234\260\345\235\200.config"
@@ -0,0 +1,89 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 鏈夊叧濡備綍閰嶇疆 ASP.NET 搴旂敤绋嬪簭鐨勮缁嗕俊鎭紝璇疯闂�
+ http://go.microsoft.com/fwlink/?LinkId=301879
+ -->
+<configuration>
+ <appSettings>
+ <add key="webpages:Version" value="3.0.0.0" />
+ <add key="webpages:Enabled" value="false" />
+ <add key="ClientValidationEnabled" value="true" />
+ <add key="UnobtrusiveJavaScriptEnabled" value="true" />
+ </appSettings>
+ <system.web>
+ <compilation debug="true" targetFramework="4.5" />
+ <httpRuntime targetFramework="4.5" />
+ <customErrors mode="Off" />
+ </system.web>
+ <system.webServer>
+ <httpProtocol>
+ <customHeaders>
+ <!--娉ㄦ剰锛屾垜鍦╓ebApiConfig涓凡缁忛厤缃簡Cors璺ㄥ煙锛岃繖閲岀殑閰嶇疆灏变笉鑳介厤缃簡锛屽惁鍒欎細瀵艰嚧涓嶈兘璺ㄥ煙 銆怑ditby shaocx,2023-05-21銆�-->
+ <!--濡傛灉璁剧疆 Access-Control-Allow-Origin:*锛屽垯鍏佽鎵�鏈夊煙鍚嶇殑鑴氭湰璁块棶璇ヨ祫婧�-->
+ <!--<add name="Access-Control-Allow-Origin" value="*" />-->
+ <!--鍝嶅簲澶磋缃紙Content-Type锛氬彧闄愪簬涓変釜鍊糰pplication/x-www-form-urlencoded銆乵ultipart/form-data銆乼ext/plain锛�-->
+ <!--<add name="Access-Control-Allow-Headers" value="auth,ContentType,Content-Type,content-type,Authorization" />-->
+ <!--鍝嶅簲绫诲瀷 (鍊间负閫楀彿鍒嗛殧鐨勪竴涓瓧绗︿覆锛岃〃鏄庢湇鍔″櫒鏀寔鐨勬墍鏈夎法鍩熻姹傜殑鏂规硶)-->
+ <!--<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />-->
+ </customHeaders>
+ </httpProtocol>
+ <directoryBrowse enabled="true" />
+ <handlers>
+ <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
+ <remove name="OPTIONSVerbHandler" />
+ <remove name="TRACEVerbHandler" />
+ <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+ </handlers></system.webServer>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+ <connectionStrings>
+ <add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
+ </connectionStrings>
+ <system.serviceModel>
+ <bindings>
+ <basicHttpBinding>
+ <binding name="BasicHttpBinding_ISrmService" />
+ </basicHttpBinding>
+ </bindings>
+ <client>
+ <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/"
+ binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
+ contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />
+ </client>
+ </system.serviceModel>
+</configuration>
+
diff --git a/qqjf-Background/WebApi_QQJF/Web.Debug.config b/qqjf-Background/WebApi_QQJF/Web.Debug.config
new file mode 100644
index 0000000..c1761f2
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Web.Debug.config
@@ -0,0 +1,30 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 鏈夊叧浣跨敤 Web.config 杞崲鐨勮缁嗕俊鎭紝璇疯闂� http://go.microsoft.com/fwlink/?LinkId=301874 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛� "SetAttributes" 杞崲灏� "connectionString"
+ 鐨勫�兼洿鏀逛负浠呭湪 "Match" 瀹氫綅鍣ㄦ壘鍒板叿鏈夊�� "MyDB" 鐨�
+ 灞炴�� "name" 鏃朵娇鐢� "ReleaseSQLServer"銆�
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛�"Replace" 杞崲灏嗘浛鎹� Web.config 鏂囦欢鐨�
+ 鏁翠釜 <customErrors> 鑺傘��
+ 璇锋敞鎰忥紝鐢变簬鍦� <system.web> 鑺傜偣涓嬪彧鏈変竴涓�
+ customErrors 鑺傦紝鍥犳鏃犻渶浣跨敤 "xdt:Locator" 灞炴�с��
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
diff --git a/qqjf-Background/WebApi_QQJF/Web.Release.config b/qqjf-Background/WebApi_QQJF/Web.Release.config
new file mode 100644
index 0000000..2c51077
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Web.Release.config
@@ -0,0 +1,31 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 鏈夊叧浣跨敤 Web.config 杞崲鐨勮缁嗕俊鎭紝璇疯闂� http://go.microsoft.com/fwlink/?LinkId=301874 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛� "SetAttributes" 杞崲灏� "connectionString"
+ 鐨勫�兼洿鏀逛负浠呭湪 "Match" 瀹氫綅鍣ㄦ壘鍒板叿鏈夊�� "MyDB" 鐨�
+ 灞炴�� "name" 鏃朵娇鐢� "ReleaseSQLServer"銆�
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <compilation xdt:Transform="RemoveAttributes(debug)" />
+ <!--
+ 鍦ㄤ互涓嬬ず渚嬩腑锛�"Replace" 杞崲灏嗘浛鎹� Web.config 鏂囦欢鐨�
+ 鏁翠釜 <customErrors> 鑺傘��
+ 璇锋敞鎰忥紝鐢变簬鍦� <system.web> 鑺傜偣涓嬪彧鏈変竴涓�
+ customErrors 鑺傦紝鍥犳鏃犻渶浣跨敤 "xdt:Locator" 灞炴�с��
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
diff --git a/qqjf-Background/WebApi_QQJF/Web.config b/qqjf-Background/WebApi_QQJF/Web.config
new file mode 100644
index 0000000..ac4673d
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/Web.config
@@ -0,0 +1,90 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 鏈夊叧濡備綍閰嶇疆 ASP.NET 搴旂敤绋嬪簭鐨勮缁嗕俊鎭紝璇疯闂�
+ http://go.microsoft.com/fwlink/?LinkId=301879
+ -->
+<configuration>
+ <appSettings>
+ <add key="webpages:Version" value="3.0.0.0" />
+ <add key="webpages:Enabled" value="false" />
+ <add key="ClientValidationEnabled" value="true" />
+ <add key="UnobtrusiveJavaScriptEnabled" value="true" />
+ </appSettings>
+ <system.web>
+ <compilation debug="true" targetFramework="4.5" />
+ <httpRuntime targetFramework="4.5" />
+ <customErrors mode="Off" />
+ </system.web>
+ <system.webServer>
+ <httpProtocol>
+ <customHeaders>
+ <!--娉ㄦ剰锛屾垜鍦╓ebApiConfig涓凡缁忛厤缃簡Cors璺ㄥ煙锛岃繖閲岀殑閰嶇疆灏变笉鑳介厤缃簡锛屽惁鍒欎細瀵艰嚧涓嶈兘璺ㄥ煙 銆怑ditby shaocx,2023-05-21銆�-->
+ <!--濡傛灉璁剧疆 Access-Control-Allow-Origin:*锛屽垯鍏佽鎵�鏈夊煙鍚嶇殑鑴氭湰璁块棶璇ヨ祫婧�-->
+ <!--<add name="Access-Control-Allow-Origin" value="*" />-->
+ <!--鍝嶅簲澶磋缃紙Content-Type锛氬彧闄愪簬涓変釜鍊糰pplication/x-www-form-urlencoded銆乵ultipart/form-data銆乼ext/plain锛�-->
+ <!--<add name="Access-Control-Allow-Headers" value="auth,ContentType,Content-Type,content-type,Authorization" />-->
+ <!--鍝嶅簲绫诲瀷 (鍊间负閫楀彿鍒嗛殧鐨勪竴涓瓧绗︿覆锛岃〃鏄庢湇鍔″櫒鏀寔鐨勬墍鏈夎法鍩熻姹傜殑鏂规硶)-->
+ <!--<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />-->
+ </customHeaders>
+ </httpProtocol>
+ <directoryBrowse enabled="true" />
+ <handlers>
+ <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
+ <remove name="OPTIONSVerbHandler" />
+ <remove name="TRACEVerbHandler" />
+ <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+ </handlers>
+ </system.webServer>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+ <connectionStrings>
+ <add name="Model1" connectionString="data source=.\SqlExpress;initial catalog=202312061430;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
+ </connectionStrings>
+ <system.serviceModel>
+ <bindings>
+ <basicHttpBinding>
+ <binding name="BasicHttpBinding_ISrmService" />
+ </basicHttpBinding>
+ </bindings>
+ <client>
+ <endpoint address="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/"
+ binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISrmService"
+ contract="SrmServer.ISrmService" name="BasicHttpBinding_ISrmService" />
+ </client>
+ </system.serviceModel>
+</configuration>
+
diff --git a/qqjf-Background/WebApi_QQJF/WebApi_QQJF.csproj b/qqjf-Background/WebApi_QQJF/WebApi_QQJF.csproj
new file mode 100644
index 0000000..d6c8c8a
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/WebApi_QQJF.csproj
@@ -0,0 +1,352 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>
+ </ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{CA07D27D-EE4C-4974-896F-0A798F8383A6}</ProjectGuid>
+ <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>WebApi_QQJF</RootNamespace>
+ <AssemblyName>WebApi_QQJF</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <MvcBuildViews>false</MvcBuildViews>
+ <UseIISExpress>true</UseIISExpress>
+ <IISExpressSSLPort />
+ <IISExpressAnonymousAuthentication />
+ <IISExpressWindowsAuthentication />
+ <IISExpressUseClassicPipelineMode />
+ <Use64BitIISExpress />
+ <UseGlobalApplicationHostFile />
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <UseVSHostingProcess>true</UseVSHostingProcess>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework">
+ <HintPath>..\DLL\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.Extended">
+ <HintPath>..\DLL\EntityFramework.Extended.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer">
+ <HintPath>..\DLL\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="Interop.BarTender, Version=10.1.4.1, Culture=neutral, PublicKeyToken=109ff779a1b4cbc7, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <EmbedInteropTypes>True</EmbedInteropTypes>
+ <HintPath>..\packages\BarTender\BarTender\Interop.BarTender.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Data.Entity" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Net.Http.Formatting, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.9\lib\net45\System.Net.Http.Formatting.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.ServiceModel" />
+ <Reference Include="System.Web.Cors, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.Cors.5.2.9\lib\net45\System.Web.Cors.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Entity" />
+ <Reference Include="System.Web.ApplicationServices" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Web.Http, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.9\lib\net45\System.Web.Http.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Http.Cors, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebApi.Cors.5.2.9\lib\net45\System.Web.Http.Cors.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Web.Abstractions" />
+ <Reference Include="System.Web.Routing" />
+ <Reference Include="System.Xml" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <Private>True</Private>
+ <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http">
+ </Reference>
+ <Reference Include="System.Net.Http.WebRequest">
+ </Reference>
+ <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <Private>True</Private>
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.Helpers.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Http.WebHost, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.0.0\lib\net45\System.Web.Http.WebHost.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <Private>True</Private>
+ <HintPath>..\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Optimization">
+ <HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.1\lib\net40\System.Web.Optimization.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <Private>True</Private>
+ <HintPath>..\packages\Microsoft.AspNet.Razor.3.0.0\lib\net45\System.Web.Razor.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <Private>True</Private>
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <Private>True</Private>
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <Private>True</Private>
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
+ </Reference>
+ <Reference Include="WebGrease">
+ <Private>True</Private>
+ <HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath>
+ </Reference>
+ <Reference Include="Antlr3.Runtime">
+ <Private>True</Private>
+ <HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
+ </Reference>
+ <Reference Include="Z.EntityFramework.Extensions, Version=3.14.7.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\DLL\Z.EntityFramework.Extensions.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="App_Data\" />
+ <Folder Include="Models\" />
+ <Folder Include="Uplod\" />
+ <Folder Include="Views\Pallet\" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="App_Start\BundleConfig.cs" />
+ <Compile Include="App_Start\FilterConfig.cs" />
+ <Compile Include="App_Start\RouteConfig.cs" />
+ <Compile Include="App_Start\WebApiConfig.cs" />
+ <Compile Include="Areas\HelpPage\ApiDescriptionExtensions.cs" />
+ <Compile Include="Areas\HelpPage\App_Start\HelpPageConfig.cs" />
+ <Compile Include="Areas\HelpPage\Controllers\HelpController.cs" />
+ <Compile Include="Areas\HelpPage\HelpPageAreaRegistration.cs" />
+ <Compile Include="Areas\HelpPage\HelpPageConfigurationExtensions.cs" />
+ <Compile Include="Areas\HelpPage\Models\HelpPageApiModel.cs" />
+ <Compile Include="Areas\HelpPage\SampleGeneration\HelpPageSampleGenerator.cs" />
+ <Compile Include="Areas\HelpPage\SampleGeneration\HelpPageSampleKey.cs" />
+ <Compile Include="Areas\HelpPage\SampleGeneration\ImageSample.cs" />
+ <Compile Include="Areas\HelpPage\SampleGeneration\InvalidSample.cs" />
+ <Compile Include="Areas\HelpPage\SampleGeneration\ObjectGenerator.cs" />
+ <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" />
+ <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
+ <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
+ <Compile Include="Controllers\AlertController.cs" />
+ <Compile Include="Controllers\CarController.cs" />
+ <Compile Include="Controllers\CarTaskController.cs" />
+ <Compile Include="Controllers\ContainerController.cs" />
+ <Compile Include="Controllers\ContainerVsItemController.cs" />
+ <Compile Include="Controllers\DeptController.cs" />
+ <Compile Include="Controllers\DeviceController.cs" />
+ <Compile Include="Controllers\HomeController.cs" />
+ <Compile Include="Controllers\InOrderController.cs" />
+ <Compile Include="Controllers\InTypeController.cs" />
+ <Compile Include="Controllers\ItemController.cs" />
+ <Compile Include="Controllers\ItemStorageController.cs" />
+ <Compile Include="Controllers\OutOrderController.cs" />
+ <Compile Include="Controllers\PalletController.cs" />
+ <Compile Include="Controllers\PDAController.cs" />
+ <Compile Include="Controllers\PermissionController.cs" />
+ <Compile Include="Controllers\PlaceController.cs" />
+ <Compile Include="Controllers\PlaceVsContainerController.cs" />
+ <Compile Include="Controllers\ProductionLineController.cs" />
+ <Compile Include="Controllers\RgvTaskController.cs" />
+ <Compile Include="Controllers\RoleController.cs" />
+ <Compile Include="Controllers\SrmRecordController.cs" />
+ <Compile Include="Controllers\SrmTaskController.cs" />
+ <Compile Include="Controllers\SummaryStatisticsController.cs" />
+ <Compile Include="Controllers\TaskController.cs" />
+ <Compile Include="Controllers\TaskRecodeController.cs" />
+ <Compile Include="Controllers\UserController.cs" />
+ <Compile Include="Controllers\UnitTestController.cs" />
+ <Compile Include="Controllers\ValuesController.cs" />
+ <Compile Include="Global.asax.cs">
+ <DependentUpon>Global.asax</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Service References\SrmServer\Reference.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </Compile>
+ <Compile Include="WebHelper\WebHelper.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Areas\HelpPage\HelpPage.css" />
+ <Content Include="Content\bootstrap.css" />
+ <Content Include="Content\bootstrap.min.css" />
+ <Content Include="favicon.ico" />
+ <Content Include="fonts\glyphicons-halflings-regular.svg" />
+ <Content Include="Global.asax" />
+ <Content Include="Scripts\bootstrap.js" />
+ <Content Include="Scripts\bootstrap.min.js" />
+ <Content Include="Areas\HelpPage\Views\Web.config" />
+ <Content Include="Areas\HelpPage\Views\Shared\_Layout.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\Index.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\TextSample.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\Samples.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\Parameters.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\InvalidSample.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ImageSample.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\HelpPageApiModel.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroup.cshtml" />
+ <Content Include="Areas\HelpPage\Views\Help\Api.cshtml" />
+ <None Include="Scripts\jquery-1.10.2.intellisense.js" />
+ <Content Include="Scripts\jquery-1.10.2.js" />
+ <Content Include="Scripts\jquery-1.10.2.min.js" />
+ <Content Include="Scripts\modernizr-2.6.2.js" />
+ <Content Include="Scripts\respond.js" />
+ <Content Include="Scripts\respond.min.js" />
+ <None Include="Service References\SrmServer\item.disco" />
+ <None Include="Service References\SrmServer\configuration91.svcinfo" />
+ <None Include="Service References\SrmServer\configuration.svcinfo" />
+ <None Include="Service References\SrmServer\Reference.svcmap">
+ <Generator>WCF Proxy Generator</Generator>
+ <LastGenOutput>Reference.cs</LastGenOutput>
+ </None>
+ <Content Include="Web.config">
+ <SubType>Designer</SubType>
+ </Content>
+ <Content Include="Web.Debug.config">
+ <DependentUpon>Web.config</DependentUpon>
+ </Content>
+ <Content Include="Web.Release.config">
+ <DependentUpon>Web.config</DependentUpon>
+ </Content>
+ <Content Include="Areas\HelpPage\Views\_ViewStart.cshtml" />
+ <Content Include="Content\Site.css" />
+ <Content Include="Scripts\_references.js" />
+ <Content Include="Views\Web.config" />
+ <Content Include="Views\_ViewStart.cshtml" />
+ <Content Include="Views\Home\Index.cshtml" />
+ <Content Include="Views\Shared\Error.cshtml" />
+ <Content Include="Views\Shared\_Layout.cshtml" />
+ <Content Include="Scripts\jquery-1.10.2.min.map" />
+ <None Include="Service References\SrmServer\item.xsd">
+ <SubType>Designer</SubType>
+ </None>
+ <None Include="Service References\SrmServer\SrmService.wsdl" />
+ <Content Include="Service References\SrmServer\WebApi_QQJF.SrmServer.ArrayOfInt.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </Content>
+ <Content Include="Service References\SrmServer\WebApi_QQJF.SrmServer.ArrayOfString.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </Content>
+ <Content Include="Service References\SrmServer\WebApi_QQJF.SrmServer.DeleteMainTaskResponse.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </Content>
+ <Content Include="Web -鐢熶骇鍦板潃.config">
+ <SubType>Designer</SubType>
+ </Content>
+ <Content Include="Web -鐢熶骇鍦板潃.Debug.config">
+ <DependentUpon>Web -鐢熶骇鍦板潃.config</DependentUpon>
+ </Content>
+ <Content Include="Web -鐢熶骇鍦板潃.Release.config">
+ <DependentUpon>Web -鐢熶骇鍦板潃.config</DependentUpon>
+ </Content>
+ <Content Include="Web - 鏈満鐜.config">
+ <SubType>Designer</SubType>
+ </Content>
+ <Content Include="Web - 鏈満鐜.Debug.config">
+ <DependentUpon>Web - 鏈満鐜.config</DependentUpon>
+ </Content>
+ <Content Include="Web - 鏈満鐜.Release.config">
+ <DependentUpon>Web - 鏈満鐜.config</DependentUpon>
+ </Content>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\EnumType\EnumType.csproj">
+ <Project>{50c2ccc5-0055-49c2-b2f6-b9ce452bc726}</Project>
+ <Name>EnumType</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\IWareDataAccess\IWareDataAccess.csproj">
+ <Project>{56f658b5-5384-414e-8fae-a78c8ee256e8}</Project>
+ <Name>IWareDataAccess</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Models\Models.csproj">
+ <Project>{27d81fdc-066b-4a2f-abb7-f3d38b4b1b9e}</Project>
+ <Name>Models</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="fonts\glyphicons-halflings-regular.woff" />
+ <Content Include="fonts\glyphicons-halflings-regular.ttf" />
+ <Content Include="fonts\glyphicons-halflings-regular.eot" />
+ <Content Include="packages.config" />
+ <None Include="Project_Readme.html" />
+ </ItemGroup>
+ <ItemGroup>
+ <WCFMetadata Include="Service References\" />
+ </ItemGroup>
+ <ItemGroup>
+ <WCFMetadataStorage Include="Service References\SrmServer\" />
+ </ItemGroup>
+ <PropertyGroup>
+ <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
+ <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+ </PropertyGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
+ <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
+ <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
+ </Target>
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
+ <WebProjectProperties>
+ <UseIIS>True</UseIIS>
+ <AutoAssignPort>True</AutoAssignPort>
+ <DevelopmentServerPort>12319</DevelopmentServerPort>
+ <DevelopmentServerVPath>/</DevelopmentServerVPath>
+ <IISUrl>http://localhost:8085/</IISUrl>
+ <NTLMAuthentication>False</NTLMAuthentication>
+ <UseCustomServer>False</UseCustomServer>
+ <CustomServerUrl>
+ </CustomServerUrl>
+ <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
+ </WebProjectProperties>
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target> -->
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/WebHelper/WebHelper.cs b/qqjf-Background/WebApi_QQJF/WebHelper/WebHelper.cs
new file mode 100644
index 0000000..f13e224
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/WebHelper/WebHelper.cs
@@ -0,0 +1,80 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace WebApi_QQJF.WebHelper
+{
+ public static class WebHelper
+ {
+ /// <summary>
+ /// 鑾峰彇request灞炴�у��
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <param name="fieldName"></param>
+ public static void GetRequest(HttpRequestBase request, object model)
+ {
+ int i;
+ decimal d;
+ DateTime time;
+
+ try
+ {
+ Type type = model.GetType();
+ foreach (var p in type.GetProperties())
+ {
+ string propertyValue = request.Form[p.Name];
+
+ //閫氱敤澶у啓model
+ if (string.IsNullOrEmpty(propertyValue))
+ {
+ propertyValue = request.Form[p.Name.ToUpper()];
+ }
+
+ if (p.PropertyType == typeof(decimal?))
+ {
+ if (!string.IsNullOrEmpty(propertyValue) && decimal.TryParse(propertyValue, out d))
+ {
+ p.SetValue(model, d);
+ }
+ }
+ else if (p.PropertyType == typeof(int?))
+ {
+ if (!string.IsNullOrEmpty(propertyValue) && int.TryParse(propertyValue, out i))
+ {
+ p.SetValue(model, i);
+ }
+ }
+ else if (p.PropertyType == typeof(DateTime?))
+ {
+ if (!string.IsNullOrEmpty(propertyValue) && DateTime.TryParse(propertyValue, out time))
+ {
+ p.SetValue(model, time);
+ }
+ }
+ else if (p.PropertyType == typeof(string))
+ {
+ if (!string.IsNullOrEmpty(propertyValue))
+ {
+ p.SetValue(model, propertyValue);
+ }
+ }
+ else if (p.PropertyType == typeof(bool) || p.PropertyType == typeof(bool?))
+ {//鏀寔bool绫诲瀷 銆怑ditBy shaocx,2022-11-1銆�
+ if (!string.IsNullOrEmpty(propertyValue))
+ {
+ p.SetValue(model, Convert.ToBoolean(propertyValue));
+ }
+ }
+ }
+
+
+ }
+ catch (Exception e)
+ {
+ return;
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/favicon.ico b/qqjf-Background/WebApi_QQJF/favicon.ico
new file mode 100644
index 0000000..a3a7999
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/favicon.ico
Binary files differ
diff --git a/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.eot b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..87eaa43
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.svg b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..5fee068
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,228 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode=" " />
+<glyph unicode="*" d="M1100 500h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200z" />
+<glyph unicode="+" d="M1100 400h-400v-400h-300v400h-400v300h400v400h300v-400h400v-300z" />
+<glyph unicode=" " />
+<glyph unicode=" " horiz-adv-x="652" />
+<glyph unicode=" " horiz-adv-x="1304" />
+<glyph unicode=" " horiz-adv-x="652" />
+<glyph unicode=" " horiz-adv-x="1304" />
+<glyph unicode=" " horiz-adv-x="434" />
+<glyph unicode=" " horiz-adv-x="326" />
+<glyph unicode=" " horiz-adv-x="217" />
+<glyph unicode=" " horiz-adv-x="217" />
+<glyph unicode=" " horiz-adv-x="163" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="72" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="326" />
+<glyph unicode="€" d="M800 500h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257 q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406z" />
+<glyph unicode="−" d="M1100 700h-900v-300h900v300z" />
+<glyph unicode="☁" d="M178 300h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57z" />
+<glyph unicode="✉" d="M1200 1100h-1200l600 -603zM300 600l-300 -300v600zM1200 900v-600l-300 300zM800 500l400 -400h-1200l400 400l200 -200z" />
+<glyph unicode="✏" d="M1101 889l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13l-94 -97zM401 189l614 614l-214 214l-614 -614zM-13 -13l333 112l-223 223z" />
+<glyph unicode="" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="" d="M700 100h300v-100h-800v100h300v550l-500 550h1200l-500 -550v-550z" />
+<glyph unicode="" d="M1000 934v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7q-79 -25 -122.5 -82t-25.5 -112t86 -75.5t147 5.5 q65 21 109 69t44 90v606z" />
+<glyph unicode="" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
+<glyph unicode="" d="M649 949q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5t-94 124.5t-33.5 117.5q0 64 28 123t73 100.5t104.5 64t119 20.5 t120 -38.5t104.5 -104.5z" />
+<glyph unicode="" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM168 71l2 1z" />
+<glyph unicode="" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM747 331l-74 229l193 140h-235l-77 211l-78 -211h-239l196 -142l-73 -226l192 140zM168 71l2 1z" />
+<glyph unicode="" d="M1200 143v-143h-1200v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100z" />
+<glyph unicode="" d="M1200 1100v-1100h-1200v1100h1200zM200 1000h-100v-100h100v100zM900 1000h-600v-400h600v400zM1100 1000h-100v-100h100v100zM200 800h-100v-100h100v100zM1100 800h-100v-100h100v100zM200 600h-100v-100h100v100zM1100 600h-100v-100h100v100zM900 500h-600v-400h600 v400zM200 400h-100v-100h100v100zM1100 400h-100v-100h100v100zM200 200h-100v-100h100v100zM1100 200h-100v-100h100v100z" />
+<glyph unicode="" d="M500 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400 q21 0 35.5 -14.5t14.5 -35.5zM500 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 250v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5 t14.5 -35.5z" />
+<glyph unicode="" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700 q21 0 35.5 -14.5t14.5 -35.5zM300 450v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-200q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM1200 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M448 34l818 820l-212 212l-607 -607l-206 207l-212 -212z" />
+<glyph unicode="" d="M882 106l-282 282l-282 -282l-212 212l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282z" />
+<glyph unicode="" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM507 363q137 0 233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5t-234 -97t-97 -233 t97 -233t234 -97zM600 800h100v-200h-100v-100h-200v100h-100v200h100v100h200v-100z" />
+<glyph unicode="" d="M913 432l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -141 -78 -262zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 801v-200h400v200h-400z" />
+<glyph unicode="" d="M700 750v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5zM800 975v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123 t-123 184t-45.5 224.5q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155z" />
+<glyph unicode="" d="M1200 1h-200v1200h200v-1200zM900 1h-200v800h200v-800zM600 1h-200v500h200v-500zM300 301h-200v-300h200v300z" />
+<glyph unicode="" d="M488 183l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5 q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39zM600 815q89 0 152 -63 t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152q0 88 63 151t152 63z" />
+<glyph unicode="" d="M900 1100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100zM800 1100v100h-300v-100h300zM200 900h900v-800q0 -41 -29.5 -71 t-70.5 -30h-700q-41 0 -70.5 30t-29.5 71v800zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
+<glyph unicode="" d="M1301 601h-200v-600h-300v400h-300v-400h-300v600h-200l656 644z" />
+<glyph unicode="" d="M600 700h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18v1150q0 11 7 18t18 7h475v-500zM1000 800h-300v300z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 600h200 v-100h-300v400h100v-300z" />
+<glyph unicode="" d="M721 400h-242l-40 -400h-539l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538zM712 500l-27 300h-170l-27 -300h224z" />
+<glyph unicode="" d="M1100 400v-400h-1100v400h490l-290 300h200v500h300v-500h200l-290 -300h490zM988 300h-175v-100h175v100z" />
+<glyph unicode="" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 1012q-170 0 -291 -121t-121 -291t121 -291t291 -121t291 121 t121 291t-121 291t-291 121zM700 600h150l-250 -300l-250 300h150v300h200v-300z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM850 600h-150 v-300h-200v300h-150l250 300z" />
+<glyph unicode="" d="M0 500l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18v475zM903 1000h-606l-97 -500h200l50 -200h300l50 200h200z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM797 598 l-297 -201v401z" />
+<glyph unicode="" d="M1177 600h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123t-123 -184t-45.5 -224.5t45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123 t123 184t45.5 224.5z" />
+<glyph unicode="" d="M700 800l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400zM500 400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122l-145 -145v400h400z" />
+<glyph unicode="" d="M100 1200v-1200h1100v1200h-1100zM1100 100h-900v900h900v-900zM400 800h-100v100h100v-100zM1000 800h-500v100h500v-100zM400 600h-100v100h100v-100zM1000 600h-500v100h500v-100zM400 400h-100v100h100v-100zM1000 400h-500v100h500v-100zM400 200h-100v100h100v-100 zM1000 300h-500v-100h500v100z" />
+<glyph unicode="" d="M200 0h-100v1100h100v-1100zM1100 600v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5z" />
+<glyph unicode="" d="M1200 275v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5t-49.5 -227v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50 q11 0 18 7t7 18zM400 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14zM1000 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14z" />
+<glyph unicode="" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM971 600l141 -141l-71 -71l-141 141l-141 -141l-71 71l141 141l-141 141l71 71l141 -141l141 141l71 -71z" />
+<glyph unicode="" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
+<glyph unicode="" d="M974 186l6 8q142 178 142 405q0 230 -144 408l-6 8l-83 -64l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8zM300 801l300 200v-800l-300 200h-300v400h300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257z" />
+<glyph unicode="" d="M100 700h400v100h100v100h-100v300h-500v-600h100v100zM1200 700v500h-600v-200h100v-300h200v-300h300v200h-200v100h200zM100 1100h300v-300h-300v300zM800 800v300h300v-300h-300zM200 900h100v100h-100v-100zM900 1000h100v-100h-100v100zM300 600h-100v-100h-200 v-500h500v500h-200v100zM900 200v-100h-200v100h-100v100h100v200h-200v100h300v-300h200v-100h-100zM400 400v-300h-300v300h300zM300 200h-100v100h100v-100zM1100 300h100v-100h-100v100zM600 100h100v-100h-100v100zM1200 100v-100h-300v100h300z" />
+<glyph unicode="" d="M100 1200h-100v-1000h100v1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 1200v-1000h-200v1000h200zM400 100v-100h-300v100h300zM500 91h100v-91h-100v91zM700 91h100v-91h-100v91zM1100 91v-91h-200v91h200z " />
+<glyph unicode="" d="M1200 500l-500 -500l-699 700v475q0 10 7.5 17.5t17.5 7.5h474zM320 882q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71t29 -71q30 -30 71.5 -30t71.5 30z" />
+<glyph unicode="" d="M1201 500l-500 -500l-699 700v475q0 11 7 18t18 7h474zM1501 500l-500 -500l-50 50l450 450l-700 700h100zM320 882q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71t30 -71q29 -30 71 -30t71 30z" />
+<glyph unicode="" d="M1200 1200v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900v1025l175 175h925z" />
+<glyph unicode="" d="M947 829l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18l-94 -346l40 -124h592zM1200 800v-700h-200v200h-800v-200h-200v700h200l100 -200h600l100 200h200zM881 176l38 -152q2 -10 -3.5 -17t-15.5 -7h-600q-10 0 -15.5 7t-3.5 17l38 152q2 10 11.5 17t19.5 7 h500q10 0 19.5 -7t11.5 -17z" />
+<glyph unicode="" d="M1200 0v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417zM416 521l178 457l46 -140l116 -317 h-340z" />
+<glyph unicode="" d="M100 1199h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111t-162 -38.5h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21 t-29 14t-49 14.5v70zM400 1079v-379h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400z" />
+<glyph unicode="" d="M877 1200l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425z" />
+<glyph unicode="" d="M1150 1200h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49v300h150h700zM100 1000v-800h75l-125 -167l-125 167h75v800h-75l125 167 l125 -167h-75z" />
+<glyph unicode="" d="M950 1201h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50v300h150h700zM200 101h800v75l167 -125l-167 -125v75h-800v-75l-167 125l167 125 v-75z" />
+<glyph unicode="" d="M700 950v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35zM1100 650v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1000 q21 0 35.5 15t14.5 35zM900 350v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
+<glyph unicode="" d="M1000 950v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 650v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1100 q21 0 35.5 15t14.5 35zM1000 350v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
+<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="" d="M400 1100h-100v-1100h100v1100zM700 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM1100 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM100 425v75h-201v100h201v75l166 -125zM900 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM1200 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
+<glyph unicode="" d="M201 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM801 1100h100v-1100h-100v1100zM601 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM1101 425v75h200v100h-200v75l-167 -125zM401 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM701 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
+<glyph unicode="" d="M900 925v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="" d="M1200 1056v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31zM1100 1000h-1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500zM476 750q0 -56 -39 -95t-95 -39t-95 39t-39 95t39 95t95 39t95 -39 t39 -95z" />
+<glyph unicode="" d="M600 1213q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262q0 124 60.5 231.5t165 172t226.5 64.5zM599 514q107 0 182.5 75.5t75.5 182.5t-75.5 182 t-182.5 75t-182 -75.5t-75 -181.5q0 -107 75.5 -182.5t181.5 -75.5z" />
+<glyph unicode="" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 173v854q-176 0 -301.5 -125t-125.5 -302t125.5 -302t301.5 -125z " />
+<glyph unicode="" d="M554 1295q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5zM455 296q-7 6 -18 17 t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156q14 -82 59.5 -136t136.5 -80z" />
+<glyph unicode="" d="M1108 902l113 113l-21 85l-92 28l-113 -113zM1100 625v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125zM436 341l161 50l412 412l-114 113l-405 -405z" />
+<glyph unicode="" d="M1100 453v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5z M813 431l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209z" />
+<glyph unicode="" d="M1100 569v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69z M625 348l566 567l-136 137l-430 -431l-147 147l-136 -136z" />
+<glyph unicode="" d="M900 303v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198l-300 300l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296z" />
+<glyph unicode="" d="M900 0l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100z" />
+<glyph unicode="" d="M1200 0l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100z" />
+<glyph unicode="" d="M1200 0l-500 488v-488l-564 550l564 550v-487l500 487v-1100z" />
+<glyph unicode="" d="M1100 550l-900 550v-1100z" />
+<glyph unicode="" d="M500 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM900 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200 q21 0 35.5 14.5t14.5 35.5z" />
+<glyph unicode="" d="M1100 150v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35z" />
+<glyph unicode="" d="M500 0v488l-500 -488v1100l500 -487v487l564 -550z" />
+<glyph unicode="" d="M1050 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488l-500 -488v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M650 1064l-550 -564h1100zM1200 350v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M777 7l240 240l-353 353l353 353l-240 240l-592 -594z" />
+<glyph unicode="" d="M513 -46l-241 240l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1z" />
+<glyph unicode="" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-200h-200v-200h200v-200h200v200h200v200h-200v200h-200z" />
+<glyph unicode="" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM300 700v-200h600v200h-600z" />
+<glyph unicode="" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM247 741l141 -141l-142 -141l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141 l-141 142z" />
+<glyph unicode="" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM546 623l-102 102l-174 -174l276 -277l411 411l-175 174z" />
+<glyph unicode="" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 500h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3 q-105 0 -172 -56t-67 -183h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5zM500 400v-100h200v100h-200z" />
+<glyph unicode="" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-100h200v100h-200zM400 700v-100h100v-200h-100v-100h400v100h-100v300h-300z" />
+<glyph unicode="" d="M1200 700v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203zM700 500v-206q149 48 201 206h-201v200h200 q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210q24 -73 79.5 -127.5t130.5 -78.5v206h200z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM844 735 l-135 -135l135 -135l-109 -109l-135 135l-135 -135l-109 109l135 135l-135 135l109 109l135 -135l135 135z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM896 654 l-346 -345l-228 228l141 141l87 -87l204 205z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM248 385l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5q0 -115 62 -215zM955 809l-564 -564q97 -59 209 -59q171 0 292.5 121.5 t121.5 292.5q0 112 -59 209z" />
+<glyph unicode="" d="M1200 400h-600v-301l-600 448l600 453v-300h600v-300z" />
+<glyph unicode="" d="M600 400h-600v300h600v300l600 -453l-600 -448v301z" />
+<glyph unicode="" d="M1098 600h-298v-600h-300v600h-296l450 600z" />
+<glyph unicode="" d="M998 600l-449 -600l-445 600h296v600h300v-600h298z" />
+<glyph unicode="" d="M600 199v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453z" />
+<glyph unicode="" d="M1200 1200h-400l129 -129l-294 -294l142 -142l294 294l129 -129v400zM565 423l-294 -294l129 -129h-400v400l129 -129l294 294z" />
+<glyph unicode="" d="M871 730l129 -130h-400v400l129 -129l295 295l142 -141zM200 600h400v-400l-129 130l-295 -295l-142 141l295 295z" />
+<glyph unicode="" d="M600 1177q118 0 224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5t45.5 224.5t123 184t184 123t224.5 45.5zM686 549l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5 l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5zM700 400h-200v-100h200v100z" />
+<glyph unicode="" d="M1200 900h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100h100v-200h400v300h200v-300h400v200h100v100z M731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269zM481 900h-281q-3 0 14 48t35 96l18 47zM100 0h400v400h-400v-400zM700 400h400v-400h-400v400z" />
+<glyph unicode="" d="M0 121l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55l-201 -202 v143zM692 611q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5t86.5 76.5q55 66 367 234z" />
+<glyph unicode="" d="M1261 600l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5 t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30zM600 240q64 0 123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212 q0 85 46 158q-102 -87 -226 -258q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5zM484 762l-107 -106q49 -124 154 -191l105 105q-37 24 -75 72t-57 84z" />
+<glyph unicode="" d="M906 1200l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148zM1261 600l-26 -40q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5 t-124 -100t-146.5 -79l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52zM513 264l37 141q-107 18 -178.5 101.5t-71.5 193.5q0 85 46 158q-102 -87 -226 -258q210 -282 393 -336z M484 762l-107 -106q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68z" />
+<glyph unicode="" d="M-47 0h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66t50.5 -34zM700 200v100h-200v-100h-345l445 723l445 -723h-345zM700 700h-200v-100l100 -300l100 300v100z" />
+<glyph unicode="" d="M800 711l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41q0 20 11 44.5t26 38.5 l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339z" />
+<glyph unicode="" d="M941 800l-600 -600h-341v200h259l600 600h241v198l300 -295l-300 -300v197h-159zM381 678l141 142l-181 180h-341v-200h259zM1100 598l300 -295l-300 -300v197h-241l-181 181l141 142l122 -123h159v198z" />
+<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="" d="M400 900h-300v300h300v-300zM1100 900h-300v300h300v-300zM1100 800v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5t-58 109.5t-31.5 116t-15 104t-3 83v200h300v-250q0 -113 6 -145 q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300z" />
+<glyph unicode="" d="M902 184l226 227l-578 579l-580 -579l227 -227l352 353z" />
+<glyph unicode="" d="M650 218l578 579l-226 227l-353 -353l-352 353l-227 -227z" />
+<glyph unicode="" d="M1198 400v600h-796l215 -200h381v-400h-198l299 -283l299 283h-200zM-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196z" />
+<glyph unicode="" d="M1050 1200h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35 q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43l-100 475q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5z" />
+<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="" d="M201 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000zM1501 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
+<glyph unicode="" d="M900 303v197h-600v-197l-300 297l300 298v-198h600v198l300 -298z" />
+<glyph unicode="" d="M31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM100 300h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM900 200h-100v-100h100v100z M1100 200h-100v-100h100v100z" />
+<glyph unicode="" d="M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35zM325 800l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351v250v5 q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200zM-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5z" />
+<glyph unicode="" d="M445 1180l-45 -233l-224 78l78 -225l-233 -44l179 -156l-179 -155l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180z" />
+<glyph unicode="" d="M700 1200h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5zM700 925l-50 -225h450 v-125l-250 -375h-214l-136 100h-100v375l150 212l100 213h50v-175zM0 800v-600h200v600h-200z" />
+<glyph unicode="" d="M700 0h-50q-27 0 -51 20t-38 48l-96 198l-145 196q-20 26 -20 63v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5zM200 400h-200v600h200 v-600zM700 275l-50 225h450v125l-250 375h-214l-136 -100h-100v-375l150 -212l100 -213h50v175z" />
+<glyph unicode="" d="M364 873l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM408 792v-503 l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83zM208 200h-200v600h200v-600z" />
+<glyph unicode="" d="M475 1104l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111t54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6zM370 946 l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100h222q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237zM1199 201h-200v600h200v-600z" />
+<glyph unicode="" d="M1100 473v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90zM911 400h-503l-236 339 l83 86l183 -146q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294zM1000 200v-200h-600v200h600z" />
+<glyph unicode="" d="M305 1104v200h600v-200h-600zM605 310l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15l-230 -362q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106z M905 804v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146l-83 86l237 339h503z" />
+<glyph unicode="" d="M603 1195q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM598 701h-298v-201h300l-2 -194l402 294l-402 298v-197z" />
+<glyph unicode="" d="M597 1195q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5zM200 600l400 -294v194h302v201h-300v197z" />
+<glyph unicode="" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM300 600h200v-300h200v300h200l-300 400z" />
+<glyph unicode="" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM500 900v-300h-200l300 -400l300 400h-200v300h-200z" />
+<glyph unicode="" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM627 1101q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6 q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55 t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q102 -2 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7 q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5 t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23q-19 -3 -37 0zM613 994q0 -18 8 -42.5t16.5 -44t9.5 -23.5q-9 2 -31 5t-36 5t-32 8t-30 14q3 12 16 30t16 25q10 -10 18.5 -10 t14 6t14.5 14.5t16 12.5z" />
+<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="" d="M1100 1200v-100h-1000v100h1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
+<glyph unicode="" d="M329 729l142 142l-200 200l129 129h-400v-400l129 129zM1200 1200v-400l-129 129l-200 -200l-142 142l200 200l-129 129h400zM271 129l129 -129h-400v400l129 -129l200 200l142 -142zM1071 271l129 129v-400h-400l129 129l-200 200l142 142z" />
+<glyph unicode="" d="M596 1192q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1010q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM455 905 q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5t16 38.5t39 16.5zM708 821l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5 q0 32 20.5 56.5t51.5 29.5zM855 709q23 0 38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39q0 22 16 38t39 16zM345 709q23 0 39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39t15.5 38.5t38.5 15.5z" />
+<glyph unicode="" d="M649 54l-16 22q-90 125 -293 323q-71 70 -104.5 105.5t-77 89.5t-61 99t-17.5 91q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-203 -198 -293 -323zM844 524l12 12 q64 62 97.5 97t64.5 79t31 72q0 71 -48 119t-105 48q-74 0 -132 -82l-118 -171l-114 174q-51 79 -123 79q-60 0 -109.5 -49t-49.5 -118q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203z" />
+<glyph unicode="" d="M476 406l19 -17l105 105l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159q0 -93 66 -159zM123 193l141 -141q66 -66 159 -66q95 0 159 66 l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159q0 -94 66 -160z" />
+<glyph unicode="" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM900 1000h-600v-700h600v700zM600 46q43 0 73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5t-73.5 -30.5t-30.5 -73.5 t30.5 -73.5t73.5 -30.5z" />
+<glyph unicode="" d="M700 1029v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5 t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5zM600 755v274q-61 -8 -97.5 -37.5t-36.5 -102.5q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3zM700 548 v-311q170 18 170 151q0 64 -44 99.5t-126 60.5z" />
+<glyph unicode="" d="M866 300l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5 t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94 q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30z" />
+<glyph unicode="" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1200l298 -300h-198v-900h-200v900h-198z" />
+<glyph unicode="" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-500h-100v100h-100v-100h-100v500h300zM901 1100h-100v-200h100v200zM700 500h300v-200h-99v-100h-100v100h99v100h-200v100zM800 100h200v-100h-300v200h100v-100z" />
+<glyph unicode="" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-200h-99v-100h-100v100h99v100h-200v100h300zM800 800h200v-100h-300v200h100v-100zM700 500h300v-500h-100v100h-100v-100h-100v500zM801 200h100v200h-100v-200z" />
+<glyph unicode="" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1100h-100v100h200v-500h-100v400zM1100 500v-500h-100v100h-200v400h300zM1001 400h-100v-200h100v200z" />
+<glyph unicode="" d="M300 0l298 300h-198v900h-200v-900h-198zM1100 1200v-500h-100v100h-200v400h300zM1001 1100h-100v-200h100v200zM900 400h-100v100h200v-500h-100v400z" />
+<glyph unicode="" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="" d="M300 0l298 300h-198v900h-200v-900h-198zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="" d="M400 1100h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="" d="M700 0h-300q-163 0 -281.5 117.5t-118.5 282.5v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5zM400 800v-500l333 250z" />
+<glyph unicode="" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM800 700h-500l250 -333z" />
+<glyph unicode="" d="M1100 700v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM550 733l-250 -333h500z" />
+<glyph unicode="" d="M500 1100h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200zM700 550l-400 -350v200h-300v300h300v200z" />
+<glyph unicode="" d="M403 2l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32z" />
+<glyph unicode="" d="M800 200h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185zM900 200v200h-300v300h300v200l400 -350z" />
+<glyph unicode="" d="M1200 700l-149 149l-342 -353l-213 213l353 342l-149 149h500v-500zM1022 571l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5v-300 q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 794 q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="" d="M700 800v400h-300v-400h-300l445 -500l450 500h-295zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="" d="M400 700v-300h300v300h295l-445 500l-450 -500h300zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="" d="M405 400l596 596l-154 155l-442 -442l-150 151l-155 -155zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="" d="M409 1103l-97 97l-212 -212l97 -98zM650 861l-149 149l-212 -212l149 -149l-238 -248h700v699zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="" d="M539 950l-149 -149l212 -212l149 148l248 -237v700h-699zM297 709l-97 -97l212 -212l98 97zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="" d="M1200 1199v-1079l-475 272l-310 -393v416h-392zM1166 1148l-672 -712v-226z" />
+<glyph unicode="" d="M1100 1000v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1200h-100v-200h100v200z" />
+<glyph unicode="" d="M578 500h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120zM700 1200h-100v-200h100v200zM1300 538l-475 -476l-244 244l123 123l120 -120l353 352z" />
+<glyph unicode="" d="M529 500h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170zM700 1200h-100v-200h100v200zM1167 6l-170 170l-170 -170l-127 127l170 170l-170 170l127 127l170 -170l170 170l127 -128 l-170 -169l170 -170z" />
+<glyph unicode="" d="M700 500h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200zM700 1000h-100v200h100v-200zM1000 600h-200v-300h-200l300 -300l300 300h-200v300z" />
+<glyph unicode="" d="M602 500h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200zM700 1000h-100v200h100v-200zM1000 300h200l-300 300l-300 -300h200v-300h200v300z" />
+<glyph unicode="" d="M1200 900v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1200zM0 800v-550q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200zM100 500h400v-200h-400v200z" />
+<glyph unicode="" d="M500 1000h400v198l300 -298l-300 -298v198h-400v200zM100 800v200h100v-200h-100zM400 800h-100v200h100v-200zM700 300h-400v-198l-300 298l300 298v-198h400v-200zM800 500h100v-200h-100v200zM1000 500v-200h100v200h-100z" />
+<glyph unicode="" d="M1200 50v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM550 1200l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447l-100 203v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300z" />
+<glyph unicode="" d="M1100 106v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394 q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5z" />
+<glyph unicode="" d="M675 1000l-100 100h-375l-100 -100h400l200 -200v-98l295 98h105v200h-425zM500 300v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5zM100 800h300v-200h-300v200zM700 565l400 133 v-163l-400 -133v163zM100 500h300v-200h-300v200zM805 300l295 98v-298h-425l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="" d="M179 1169l-162 -162q-1 -11 -0.5 -32.5t16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118 q17 17 20 41.5t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14z" />
+<glyph unicode="" d="M1200 712v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40t-53.5 -36.5t-31 -27.5l-9 -10v-200q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38 t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5zM800 650l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5 t30 -27.5t12 -24l1 -10v-50z" />
+<glyph unicode="" d="M175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250zM1200 100v-100h-1100v100h1100z" />
+<glyph unicode="" d="M600 1100h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300v1000q0 41 29.5 70.5t70.5 29.5zM1000 800h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300v700q0 41 29.5 70.5t70.5 29.5zM400 0v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400h300z" />
+<glyph unicode="" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
+<glyph unicode="" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM400 600h-100v200h-100v-500h100v200h100v-200h100v500h-100v-200zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
+<glyph unicode="" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-500h300v100h-200v300h200v100h-300zM600 800v-500h300v100h-200v300h200v100h-300z" />
+<glyph unicode="" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM500 700l-300 -150l300 -150v300zM600 400l300 150l-300 150v-300z" />
+<glyph unicode="" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM900 800v-500h-700v500h700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM800 700h-130 q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300z" />
+<glyph unicode="" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 300h100v500h-200v-100h100v-400z M601 300h100v100h-100v-100z" />
+<glyph unicode="" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM300 700v100h-100v-500h300v400h-200zM800 300h100v500h-200v-100h100v-400zM401 400h-100v200h100v-200z M601 300h100v100h-100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM1000 900h-900v-700h900v700zM400 700h-200v100h300v-300h-99v-100h-100v100h99v200zM800 700h-100v100h200v-500h-100v400zM201 400h100v-100 h-100v100zM701 300h-100v100h100v-100z" />
+<glyph unicode="" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700h-300 v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="" d="M596 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700v-100 h-100v100h-200v-100h200v-100h-200v-100h-100v400h300zM800 400h-100v100h100v-100z" />
+<glyph unicode="" d="M800 300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h222v300h400v-300zM700 200h200l-300 -300 l-300 300h200v300h200v-300z" />
+<glyph unicode="" d="M600 714l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h8zM700 -100h-200v300h-200l300 300 l300 -300h-200v-300z" />
+<glyph unicode="" d="M700 200h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-155l-75 -45h350l-75 45v155z" />
+<glyph unicode="" d="M700 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5 q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350z" />
+<glyph unicode="💼" d="M800 1000h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100zM500 1000h200v100h-200v-100zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="📅" d="M1100 900v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1100zM0 800v-750q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100zM100 600h100v-100h-100v100zM300 600h100v-100h-100v100z M500 600h100v-100h-100v100zM700 600h100v-100h-100v100zM900 600h100v-100h-100v100zM100 400h100v-100h-100v100zM300 400h100v-100h-100v100zM500 400h100v-100h-100v100zM700 400h100v-100h-100v100zM900 400h100v-100h-100v100zM100 200h100v-100h-100v100zM300 200 h100v-100h-100v100zM500 200h100v-100h-100v100zM700 200h100v-100h-100v100zM900 200h100v-100h-100v100z" />
+<glyph unicode="📌" d="M902 1185l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207l-380 -303l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15z" />
+<glyph unicode="📎" d="M518 119l69 -60l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163t35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84 t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348 q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256z" />
+<glyph unicode="📷" d="M1200 200v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5z M1000 700h-100v100h100v-100zM844 500q0 -100 -72 -172t-172 -72t-172 72t-72 172t72 172t172 72t172 -72t72 -172zM706 500q0 44 -31 75t-75 31t-75 -31t-31 -75t31 -75t75 -31t75 31t31 75z" />
+<glyph unicode="🔒" d="M900 800h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
+<glyph unicode="🔔" d="M1062 400h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94 q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327zM600 104q-54 0 -103 6q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6z" />
+<glyph unicode="🔖" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
+<glyph unicode="🔥" d="M400 755q2 -12 8 -41.5t8 -43t6 -39.5t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85t5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5 q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129 q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5z" />
+<glyph unicode="🔧" d="M948 778l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138z" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.ttf b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..be784dc
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.woff b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..2cc3e48
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/qqjf-Background/WebApi_QQJF/packages.config b/qqjf-Background/WebApi_QQJF/packages.config
new file mode 100644
index 0000000..c43c2a4
--- /dev/null
+++ b/qqjf-Background/WebApi_QQJF/packages.config
@@ -0,0 +1,29 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
+ <package id="bootstrap" version="3.0.0" targetFramework="net45" />
+ <package id="jQuery" version="1.10.2" targetFramework="net45" />
+ <package id="Microsoft.AspNet.Cors" version="5.2.9" targetFramework="net45" />
+ <package id="Microsoft.AspNet.Mvc" version="5.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.Mvc.zh-Hans" version="5.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.Razor" version="3.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.Razor.zh-Hans" version="3.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.Web.Optimization" version="1.1.1" targetFramework="net45" />
+ <package id="Microsoft.AspNet.Web.Optimization.zh-Hans" version="1.1.1" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi" version="5.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.Client" version="5.2.9" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.Client.zh-Hans" version="5.2.9" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.Core" version="5.2.9" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.Core.zh-Hans" version="5.2.9" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.Cors" version="5.2.9" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.WebHost" version="5.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebApi.WebHost.zh-Hans" version="5.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebPages" version="3.0.0" targetFramework="net45" />
+ <package id="Microsoft.AspNet.WebPages.zh-Hans" version="3.0.0" targetFramework="net45" />
+ <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
+ <package id="Modernizr" version="2.6.2" targetFramework="net45" />
+ <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
+ <package id="Respond" version="1.2.0" targetFramework="net45" />
+ <package id="WebGrease" version="1.5.2" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/qqjf-Background/iWareCommon/Properties/AssemblyInfo.cs b/qqjf-Background/iWareCommon/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..8c520d4
--- /dev/null
+++ b/qqjf-Background/iWareCommon/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("iWareCommon")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("iWareCommon")]
+[assembly: AssemblyCopyright("Copyright 漏 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("3583fcf0-92c7-406c-ad78-9fb7c11293cf")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
+//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/qqjf-Background/iWareCommon/Properties/Resources.Designer.cs b/qqjf-Background/iWareCommon/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..533031a
--- /dev/null
+++ b/qqjf-Background/iWareCommon/Properties/Resources.Designer.cs
@@ -0,0 +1,72 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace iWareCommon.Properties {
+ using System;
+
+
+ /// <summary>
+ /// 涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勭紦瀛樼殑 ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("iWareCommon.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// 閲嶅啓褰撳墠绾跨▼鐨� CurrentUICulture 灞炴�э紝瀵�
+ /// 浣跨敤姝ゅ己绫诲瀷璧勬簮绫荤殑鎵�鏈夎祫婧愭煡鎵炬墽琛岄噸鍐欍��
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘绫讳技 C:\LOG_COMMON 鐨勬湰鍦板寲瀛楃涓层��
+ /// </summary>
+ internal static string LogDir {
+ get {
+ return ResourceManager.GetString("LogDir", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/qqjf-Background/iWareCommon/Properties/Resources.resx b/qqjf-Background/iWareCommon/Properties/Resources.resx
new file mode 100644
index 0000000..b455e6c
--- /dev/null
+++ b/qqjf-Background/iWareCommon/Properties/Resources.resx
@@ -0,0 +1,123 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <data name="LogDir" xml:space="preserve">
+ <value>C:\LOG_COMMON</value>
+ </data>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/iWareCommon/Utils/Log4Net/C_LogWriter.cs b/qqjf-Background/iWareCommon/Utils/Log4Net/C_LogWriter.cs
new file mode 100644
index 0000000..6dcacce
--- /dev/null
+++ b/qqjf-Background/iWareCommon/Utils/Log4Net/C_LogWriter.cs
@@ -0,0 +1,110 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+//閰嶇疆config鏂囦欢鍚�
+[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net_iWare.config", Watch = true)]
+namespace iWareCommon.Utils
+{
+ /// <summary>
+ /// 鏃ュ織绛夌骇
+ /// </summary>
+ enum LogLevel
+ {
+ Error,
+ Debug,
+ Warning,
+ Info
+ }
+
+ /// <summary>
+ /// 鏃ュ織璁板綍鏈嶅姟
+ /// </summary>
+
+ class C_LogWriter
+ {
+
+ /// <summary>
+ /// 鏃ュ織鎺ュ彛
+ /// </summary>
+ private log4net.ILog m_Log;
+
+ /// <summary>
+ /// 鍒濆鍖杔og4net瀵硅薄
+ /// </summary>
+ /// <param name="_LogType">鏃ュ織绫诲瀷</param>
+ /// <param name="suffix">鍚庣紑</param>
+ public void Init(LogType _LogType, string suffix)
+ {
+ string s = _LogType.ToString() + suffix;
+ m_Log = log4net.LogManager.GetLogger(s);
+ }
+ /// <summary>
+ /// 杈撳嚭閿欒绾у埆鏃ュ織
+ /// </summary>
+ /// <param name="message">杈撳嚭鐨勬秷鎭�</param>
+ public void Error(string message, Exception ex)
+ {
+ //璁板綍鏃ュ織
+ WriteLog(LogLevel.Error, message, ex);
+ }
+
+ /// <summary>
+ /// 杈撳嚭璀﹀憡绾у埆鏃ュ織
+ /// </summary>
+ /// <param name="message">杈撳嚭鐨勬秷鎭�</param>
+ public void Warning(string message)
+ {
+ //璁板綍鏃ュ織
+ WriteLog(LogLevel.Warning, message);
+ }
+
+ /// <summary>
+ /// 杈撳嚭淇℃伅绾у埆鏃ュ織
+ /// </summary>
+ /// <param name="message">杈撳嚭鐨勬秷鎭�</param>
+ public void Info(string message)
+ {
+ //璁板綍鏃ュ織
+ WriteLog(LogLevel.Info, message);
+ }
+
+ /// <summary>
+ /// 杈撳嚭璋冭瘯绾у埆鏃ュ織
+ /// </summary>
+ /// <param name="message">杈撳嚭鐨勬秷鎭�</param>
+ public void Debug(string message)
+ {
+ //璁板綍鏃ュ織
+ WriteLog(LogLevel.Debug, message);
+ }
+
+ /// <summary>
+ /// 璁板綍绯荤粺鏃ュ織
+ /// </summary>
+ /// <param name="logLevel">鏃ュ織绾у埆</param>
+ /// <param name="message">杈撳嚭鐨勬秷鎭�</param>
+ private void WriteLog(LogLevel logLevel, string message, Exception ex = null)
+ {
+ switch (logLevel)
+ {
+ case LogLevel.Debug:
+ m_Log.Debug(message);
+ break;
+ case LogLevel.Error:
+ m_Log.Error(message, ex);
+ break;
+ case LogLevel.Info:
+ m_Log.Info(message);
+ break;
+ case LogLevel.Warning:
+ m_Log.Warn(message);
+ break;
+ }
+
+ }
+
+ }
+}
diff --git a/qqjf-Background/iWareCommon/Utils/Log4Net/Log4netHelper.cs b/qqjf-Background/iWareCommon/Utils/Log4Net/Log4netHelper.cs
new file mode 100644
index 0000000..68cdaf9
--- /dev/null
+++ b/qqjf-Background/iWareCommon/Utils/Log4Net/Log4netHelper.cs
@@ -0,0 +1,36 @@
+锘縰sing System;
+
+namespace iWareCommon.Utils
+{
+ /// <summary>
+ /// Log4Net鏃ュ織甯姪
+ /// </summary>
+ public class Log4NetHelper
+ {
+
+ /// <summary>
+ /// 杈撳嚭寮傚父鏃ュ織鍒癓og4Net
+ /// </summary>
+ /// <param name="_LogType">鏃ュ織绫诲瀷</param>
+ /// <param name="msg">娑堟伅鍐呭</param>
+ /// <param name="ex">寮傚父瀵硅薄</param>
+ public static void WriteErrorLog(LogType _LogType, string msg, Exception ex = null)
+ {
+ C_LogWriter log = new C_LogWriter();
+ log.Init(_LogType, "_Error");
+ log.Error(msg, ex);
+ }
+ /// <summary>
+ /// 杈撳嚭info鏃ュ織鍒癓og4Net
+ /// </summary>
+ /// <param name="_LogType">鏃ュ織绫诲瀷</param>
+ /// <param name="msg">娑堟伅鍐呭</param>
+ public static void WriteInfoLog(LogType _LogType, string msg)
+ {
+ C_LogWriter log = new C_LogWriter();
+ log.Init(_LogType, "_Info");
+ log.Info(msg);
+ }
+
+ }
+}
diff --git a/qqjf-Background/iWareCommon/Utils/Log4Net/LogType.cs b/qqjf-Background/iWareCommon/Utils/Log4Net/LogType.cs
new file mode 100644
index 0000000..0010053
--- /dev/null
+++ b/qqjf-Background/iWareCommon/Utils/Log4Net/LogType.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace iWareCommon.Utils
+{
+ /// <summary>
+ /// 鏃ュ織绫诲瀷
+ /// </summary>
+ public enum LogType
+ {
+ /// <summary>
+ /// 鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯� 鏃ュ織
+ /// </summary>
+ RemoveBASE_CONTAINER_VS_ITEM = 1,
+ }
+}
diff --git a/qqjf-Background/iWareCommon/iWareCommon.csproj b/qqjf-Background/iWareCommon/iWareCommon.csproj
new file mode 100644
index 0000000..c7b1d53
--- /dev/null
+++ b/qqjf-Background/iWareCommon/iWareCommon.csproj
@@ -0,0 +1,88 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{3583FCF0-92C7-406C-AD78-9FB7C11293CF}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>iWareCommon</RootNamespace>
+ <AssemblyName>iWareCommon</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <Deterministic>true</Deterministic>
+ <TargetFrameworkProfile />
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Castle.Core">
+ <HintPath>DLL\Castle.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>bin\Debug\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>bin\Debug\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\DLL\log4net.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Net.Http.WebRequest" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <Compile Include="Utils\Log4Net\C_LogWriter.cs" />
+ <Compile Include="Utils\Log4Net\Log4NetHelper.cs" />
+ <Compile Include="Utils\Log4Net\LogType.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="log4net_iWare.config">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ <SubType>Designer</SubType>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git a/qqjf-Background/iWareCommon/log4net_iWare.config b/qqjf-Background/iWareCommon/log4net_iWare.config
new file mode 100644
index 0000000..eaee9e9
--- /dev/null
+++ b/qqjf-Background/iWareCommon/log4net_iWare.config
@@ -0,0 +1,47 @@
+锘�<configuration>
+ <configSections>
+ <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
+ </configSections>
+ <appSettings>
+ </appSettings>
+ <log4net>
+ <!--鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯汇�愪俊鎭�戞棩蹇�-->
+ <appender name="RemoveBASE_CONTAINER_VS_ITEM_Info" type="log4net.Appender.RollingFileAppender">
+ <file value="d:\\Log\\qinqijSDALog\\iWareCC\\RemoveBASE_CONTAINER_VS_ITEM_Info\\" />
+ <appendToFile value="true" />
+ <rollingStyle value="Date" />
+ <staticLogFileName value="false" />
+ <datePattern value="yyyy-MM-dd.LOG" />
+ <layout type="log4net.Layout.PatternLayout">
+ <!--杈撳嚭鏍煎紡-->
+ <param name="ConversionPattern" value="%n娑堟伅鏃堕棿锛�%d [%t] %n娑堟伅绾у埆锛�%-5p %n娑� 鎭� 绫伙細%c [%x] %n%m %n "/>
+ </layout>
+ <filter type="log4net.Filter.LoggerMatchFilter">
+ <loggerToMatch value="RemoveBASE_CONTAINER_VS_ITEM_Info" />
+ </filter>
+ <filter type="log4net.Filter.DenyAllFilter" />
+ </appender>
+ <!--鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯汇�愰敊璇�戞棩蹇�-->
+ <appender name="RemoveBASE_CONTAINER_VS_ITEM_Error" type="log4net.Appender.RollingFileAppender">
+ <file value="d:\\Log\\qinqijSDALog\\iWareCC\\RemoveBASE_CONTAINER_VS_ITEM_Error\\" />
+ <appendToFile value="true" />
+ <rollingStyle value="Date" />
+ <staticLogFileName value="false" />
+ <datePattern value="yyyy-MM-dd.LOG" />
+ <layout type="log4net.Layout.PatternLayout">
+ <!--杈撳嚭鏍煎紡-->
+ <param name="ConversionPattern" value="%n寮傚父鏃堕棿锛�%d [%t] %n寮傚父绾у埆锛�%-5p %n寮� 甯� 绫伙細%c [%x] %n%m %n "/>
+ </layout>
+ <filter type="log4net.Filter.LoggerMatchFilter">
+ <loggerToMatch value="RemoveBASE_CONTAINER_VS_ITEM_Error" />
+ </filter>
+ <filter type="log4net.Filter.DenyAllFilter" />
+ </appender>
+ <root>
+ <level value="ALL"/>
+ <!--鍒犻櫎鎵樼洏鍜岀墿鏂欑粦瀹氬叧绯绘棩蹇�-->
+ <appender-ref ref="RemoveBASE_CONTAINER_VS_ITEM_Info"/>
+ <appender-ref ref="RemoveBASE_CONTAINER_VS_ITEM_Error"/>
+ </root>
+ </log4net>
+</configuration>
\ No newline at end of file
diff --git a/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.Designer.cs b/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.Designer.cs
new file mode 100644
index 0000000..629223f
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.Designer.cs
@@ -0,0 +1,320 @@
+锘縩amespace iWareSda_QQJF._2DShow
+{
+ partial class _2Dshow
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(_2Dshow));
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.pBRgv1 = new System.Windows.Forms.PictureBox();
+ this.pBRgv4 = new System.Windows.Forms.PictureBox();
+ this.pBRgv3 = new System.Windows.Forms.PictureBox();
+ this.pBRgv2 = new System.Windows.Forms.PictureBox();
+ this.pBSrm1 = new System.Windows.Forms.PictureBox();
+ this.pBSrm2 = new System.Windows.Forms.PictureBox();
+ this.pBSrm3 = new System.Windows.Forms.PictureBox();
+ this.pBSrm4 = new System.Windows.Forms.PictureBox();
+ this.pBSrm5 = new System.Windows.Forms.PictureBox();
+ this.pBSrm6 = new System.Windows.Forms.PictureBox();
+ this.pBSrm7 = new System.Windows.Forms.PictureBox();
+ this.pBSrm8 = new System.Windows.Forms.PictureBox();
+ this.pBSrm9 = new System.Windows.Forms.PictureBox();
+ this.picLayer = new System.Windows.Forms.PictureBox();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv4)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv3)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv2)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm2)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm3)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm4)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm5)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm6)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm7)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm8)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm9)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picLayer)).BeginInit();
+ this.SuspendLayout();
+ //
+ // panel1
+ //
+ this.panel1.AutoSize = true;
+ this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.panel1.Controls.Add(this.pBRgv1);
+ this.panel1.Controls.Add(this.pBRgv4);
+ this.panel1.Controls.Add(this.pBRgv3);
+ this.panel1.Controls.Add(this.pBRgv2);
+ this.panel1.Controls.Add(this.pBSrm1);
+ this.panel1.Controls.Add(this.pBSrm2);
+ this.panel1.Controls.Add(this.pBSrm3);
+ this.panel1.Controls.Add(this.pBSrm4);
+ this.panel1.Controls.Add(this.pBSrm5);
+ this.panel1.Controls.Add(this.pBSrm6);
+ this.panel1.Controls.Add(this.pBSrm7);
+ this.panel1.Controls.Add(this.pBSrm8);
+ this.panel1.Controls.Add(this.pBSrm9);
+ this.panel1.Controls.Add(this.picLayer);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel1.Location = new System.Drawing.Point(0, 0);
+ this.panel1.Margin = new System.Windows.Forms.Padding(2);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(1030, 677);
+ this.panel1.TabIndex = 1;
+ this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
+ //
+ // pBRgv1
+ //
+ this.pBRgv1.BackColor = System.Drawing.Color.Transparent;
+ this.pBRgv1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBRgv1.Image = ((System.Drawing.Image)(resources.GetObject("pBRgv1.Image")));
+ this.pBRgv1.Location = new System.Drawing.Point(149, 106);
+ this.pBRgv1.Margin = new System.Windows.Forms.Padding(2);
+ this.pBRgv1.Name = "pBRgv1";
+ this.pBRgv1.Size = new System.Drawing.Size(45, 19);
+ this.pBRgv1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBRgv1.TabIndex = 9;
+ this.pBRgv1.TabStop = false;
+ //
+ // pBRgv4
+ //
+ this.pBRgv4.BackColor = System.Drawing.Color.Transparent;
+ this.pBRgv4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBRgv4.Image = ((System.Drawing.Image)(resources.GetObject("pBRgv4.Image")));
+ this.pBRgv4.Location = new System.Drawing.Point(908, 74);
+ this.pBRgv4.Margin = new System.Windows.Forms.Padding(2);
+ this.pBRgv4.Name = "pBRgv4";
+ this.pBRgv4.Size = new System.Drawing.Size(45, 19);
+ this.pBRgv4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBRgv4.TabIndex = 12;
+ this.pBRgv4.TabStop = false;
+ //
+ // pBRgv3
+ //
+ this.pBRgv3.BackColor = System.Drawing.Color.Transparent;
+ this.pBRgv3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBRgv3.Image = ((System.Drawing.Image)(resources.GetObject("pBRgv3.Image")));
+ this.pBRgv3.Location = new System.Drawing.Point(908, 178);
+ this.pBRgv3.Margin = new System.Windows.Forms.Padding(2);
+ this.pBRgv3.Name = "pBRgv3";
+ this.pBRgv3.Size = new System.Drawing.Size(45, 19);
+ this.pBRgv3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBRgv3.TabIndex = 11;
+ this.pBRgv3.TabStop = false;
+ //
+ // pBRgv2
+ //
+ this.pBRgv2.BackColor = System.Drawing.Color.Transparent;
+ this.pBRgv2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBRgv2.Image = ((System.Drawing.Image)(resources.GetObject("pBRgv2.Image")));
+ this.pBRgv2.Location = new System.Drawing.Point(149, 595);
+ this.pBRgv2.Margin = new System.Windows.Forms.Padding(2);
+ this.pBRgv2.Name = "pBRgv2";
+ this.pBRgv2.Size = new System.Drawing.Size(45, 19);
+ this.pBRgv2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBRgv2.TabIndex = 10;
+ this.pBRgv2.TabStop = false;
+ //
+ // pBSrm1
+ //
+ this.pBSrm1.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm1.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm1.Image")));
+ this.pBSrm1.Location = new System.Drawing.Point(806, 571);
+ this.pBSrm1.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm1.Name = "pBSrm1";
+ this.pBSrm1.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm1.TabIndex = 8;
+ this.pBSrm1.TabStop = false;
+ //
+ // pBSrm2
+ //
+ this.pBSrm2.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm2.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm2.Image")));
+ this.pBSrm2.Location = new System.Drawing.Point(806, 517);
+ this.pBSrm2.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm2.Name = "pBSrm2";
+ this.pBSrm2.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm2.TabIndex = 7;
+ this.pBSrm2.TabStop = false;
+ //
+ // pBSrm3
+ //
+ this.pBSrm3.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm3.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm3.Image")));
+ this.pBSrm3.Location = new System.Drawing.Point(800, 448);
+ this.pBSrm3.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm3.Name = "pBSrm3";
+ this.pBSrm3.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm3.TabIndex = 6;
+ this.pBSrm3.TabStop = false;
+ //
+ // pBSrm4
+ //
+ this.pBSrm4.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm4.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm4.Image")));
+ this.pBSrm4.Location = new System.Drawing.Point(806, 370);
+ this.pBSrm4.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm4.Name = "pBSrm4";
+ this.pBSrm4.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm4.TabIndex = 5;
+ this.pBSrm4.TabStop = false;
+ //
+ // pBSrm5
+ //
+ this.pBSrm5.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm5.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm5.Image")));
+ this.pBSrm5.Location = new System.Drawing.Point(792, 315);
+ this.pBSrm5.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm5.Name = "pBSrm5";
+ this.pBSrm5.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm5.TabIndex = 4;
+ this.pBSrm5.TabStop = false;
+ //
+ // pBSrm6
+ //
+ this.pBSrm6.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm6.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm6.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm6.Image")));
+ this.pBSrm6.Location = new System.Drawing.Point(806, 265);
+ this.pBSrm6.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm6.Name = "pBSrm6";
+ this.pBSrm6.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm6.TabIndex = 3;
+ this.pBSrm6.TabStop = false;
+ //
+ // pBSrm7
+ //
+ this.pBSrm7.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm7.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm7.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm7.Image")));
+ this.pBSrm7.Location = new System.Drawing.Point(836, 201);
+ this.pBSrm7.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm7.Name = "pBSrm7";
+ this.pBSrm7.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm7.TabIndex = 2;
+ this.pBSrm7.TabStop = false;
+ //
+ // pBSrm8
+ //
+ this.pBSrm8.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm8.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm8.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm8.Image")));
+ this.pBSrm8.Location = new System.Drawing.Point(836, 145);
+ this.pBSrm8.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm8.Name = "pBSrm8";
+ this.pBSrm8.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm8.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm8.TabIndex = 1;
+ this.pBSrm8.TabStop = false;
+ //
+ // pBSrm9
+ //
+ this.pBSrm9.BackColor = System.Drawing.Color.Transparent;
+ this.pBSrm9.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pBSrm9.Image = ((System.Drawing.Image)(resources.GetObject("pBSrm9.Image")));
+ this.pBSrm9.Location = new System.Drawing.Point(203, 86);
+ this.pBSrm9.Margin = new System.Windows.Forms.Padding(2);
+ this.pBSrm9.Name = "pBSrm9";
+ this.pBSrm9.Size = new System.Drawing.Size(75, 19);
+ this.pBSrm9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pBSrm9.TabIndex = 0;
+ this.pBSrm9.TabStop = false;
+ //
+ // picLayer
+ //
+ this.picLayer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.picLayer.Image = ((System.Drawing.Image)(resources.GetObject("picLayer.Image")));
+ this.picLayer.Location = new System.Drawing.Point(0, 0);
+ this.picLayer.Name = "picLayer";
+ this.picLayer.Size = new System.Drawing.Size(1028, 675);
+ this.picLayer.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.picLayer.TabIndex = 13;
+ this.picLayer.TabStop = false;
+ //
+ // _2Dshow
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1030, 677);
+ this.Controls.Add(this.panel1);
+ this.DoubleBuffered = true;
+ this.Name = "_2Dshow";
+ this.Text = "_2Dshow";
+ this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this._2Dshow_FormClosed);
+ this.SizeChanged += new System.EventHandler(this._2Dshow_SizeChanged);
+ this.panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv4)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv3)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBRgv2)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm2)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm3)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm4)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm5)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm6)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm7)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm8)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pBSrm9)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picLayer)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.PictureBox pBRgv4;
+ private System.Windows.Forms.PictureBox pBRgv3;
+ private System.Windows.Forms.PictureBox pBRgv2;
+ private System.Windows.Forms.PictureBox pBRgv1;
+ private System.Windows.Forms.PictureBox pBSrm1;
+ private System.Windows.Forms.PictureBox pBSrm3;
+ private System.Windows.Forms.PictureBox pBSrm4;
+ private System.Windows.Forms.PictureBox pBSrm5;
+ private System.Windows.Forms.PictureBox pBSrm6;
+ private System.Windows.Forms.PictureBox pBSrm7;
+ private System.Windows.Forms.PictureBox pBSrm8;
+ private System.Windows.Forms.PictureBox pBSrm9;
+ private System.Windows.Forms.PictureBox pBSrm2;
+ private System.Windows.Forms.PictureBox picLayer;
+ }
+}
\ No newline at end of file
diff --git a/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.cs b/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.cs
new file mode 100644
index 0000000..b7bbb13
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.cs
@@ -0,0 +1,442 @@
+锘縰sing iWareSda_QQJF.RgvModel;
+using iWareSda_QQJF.SRM.SrmModel;
+using iWareSda_QQJF.SrmTranModel;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace iWareSda_QQJF._2DShow
+{
+ public partial class _2Dshow : Form
+ {
+ double ProportionX = 1;//绐楀彛鏀瑰彉姣斾緥
+ double ProportionY = 1;//绐楀彛鏀瑰彉姣斾緥
+ double SrmChange = 0.01188;//srm鍧愭爣鍙樻崲姣斾緥
+ double RgvChange = 0.00752;//tran鍧愭爣鍙樻崲姣斾緥
+ bool sizeChange = false;//绐楀彛鍙樻崲澶у皬
+
+ List<long> srmLocalList = new List<long>();
+ List<long> rgvLocalList = new List<long>();
+
+ //榛樿鏁版嵁
+ int SrmdefaultY1 = 0;
+ int SrmdefaultY2 = 0;
+ int SrmdefaultY3 = 0;
+ int SrmdefaultY4 = 0;
+ int SrmdefaultY5 = 0;
+ int SrmdefaultY6 = 0;
+ int SrmdefaultY7 = 0;
+ int SrmdefaultY8 = 0;
+ int SrmdefaultY9 = 0;
+
+ int RgvdefaultX1 = 0;
+ int RgvdefaultX2 = 0;
+ int RgvdefaultX3 = 0;
+ int RgvdefaultX4 = 0;
+
+ int SrmDefaultSizeX = 0;
+ int SrmDefaultSizeY = 0;
+ int RgvDefaultSizeX = 0;
+ int RgvDefaultSizeY = 0;
+
+ PictureBox pSrm1 = new PictureBox();
+ PictureBox pSrm2 = new PictureBox();
+ PictureBox pSrm3 = new PictureBox();
+ PictureBox pSrm4 = new PictureBox();
+ PictureBox pSrm5 = new PictureBox();
+ PictureBox pSrm6 = new PictureBox();
+ PictureBox pSrm7 = new PictureBox();
+ PictureBox pSrm8 = new PictureBox();
+ PictureBox pSrm9 = new PictureBox();
+
+ PictureBox pRgv1 = new PictureBox();
+ PictureBox pRgv2 = new PictureBox();
+ PictureBox pRgv3 = new PictureBox();
+ PictureBox pRgv4 = new PictureBox();
+
+ List<PictureBox> pBSrmList = new List<PictureBox>();
+ List<PictureBox> pBRgvList = new List<PictureBox>();
+ List<PictureBox> pBSrmItemList = new List<PictureBox>();
+ List<PictureBox> pBRgvItemList = new List<PictureBox>();
+
+ Thread threadRe1;
+ Thread threadRe2;
+ Thread threadRe3;
+ Thread threadRe4;
+ Thread threadRe5;
+ Thread threadRe6;
+ Thread threadRe7;
+ Thread threadRe8;
+ Thread threadRe9;
+
+ Thread threadReRgv1;
+ Thread threadReRgv2;
+ Thread threadReRgv3;
+ Thread threadReRgv4;
+
+ Thread threadChangeSize;
+
+ public _2Dshow()
+ {
+ InitializeComponent();
+
+ //this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
+ // ControlStyles.ResizeRedraw |
+ // ControlStyles.AllPaintingInWmPaint, true);
+ //SetStyle(ControlStyles.UserPaint, true);
+ //SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 绂佹鎿﹂櫎鑳屾櫙.
+ //SetStyle(ControlStyles.DoubleBuffer, true); // 鍙岀紦鍐�
+ //鍒濆鍖栭槦鍒�
+ pBSrmList.Add(pBSrm1);
+ pBSrmList.Add(pBSrm2);
+ pBSrmList.Add(pBSrm3);
+ pBSrmList.Add(pBSrm4);
+ pBSrmList.Add(pBSrm5);
+ pBSrmList.Add(pBSrm6);
+ pBSrmList.Add(pBSrm7);
+ pBSrmList.Add(pBSrm8);
+ pBSrmList.Add(pBSrm9);
+
+ pBRgvList.Add(pBRgv1);
+ pBRgvList.Add(pBRgv2);
+ pBRgvList.Add(pBRgv3);
+ pBRgvList.Add(pBRgv4);
+
+ srmLocalList.Add(69258);
+ srmLocalList.Add(69258);
+ srmLocalList.Add(68805);
+ srmLocalList.Add(71355);
+ srmLocalList.Add(71388);
+ srmLocalList.Add(71388);
+ srmLocalList.Add(71579);
+ srmLocalList.Add(71591);
+ srmLocalList.Add(71694);
+
+ rgvLocalList.Add(84523);
+ rgvLocalList.Add(88123);
+ rgvLocalList.Add(82123);
+ rgvLocalList.Add(86323);
+ //鍒濆鍖栬揣鐗�
+ SetSrmItem(pSrm1);
+ SetSrmItem(pSrm2);
+ SetSrmItem(pSrm3);
+ SetSrmItem(pSrm4);
+ SetSrmItem(pSrm5);
+ SetSrmItem(pSrm6);
+ SetSrmItem(pSrm7);
+ SetSrmItem(pSrm8);
+ SetSrmItem(pSrm9);
+
+ SetRgvItem(pRgv1);
+ SetRgvItem(pRgv2);
+ SetRgvItem(pRgv3);
+ SetRgvItem(pRgv4);
+
+ pBSrmItemList.Add(pSrm1);
+ pBSrmItemList.Add(pSrm2);
+ pBSrmItemList.Add(pSrm3);
+ pBSrmItemList.Add(pSrm4);
+ pBSrmItemList.Add(pSrm5);
+ pBSrmItemList.Add(pSrm6);
+ pBSrmItemList.Add(pSrm7);
+ pBSrmItemList.Add(pSrm8);
+ pBSrmItemList.Add(pSrm9);
+
+ pBRgvItemList.Add(pRgv1);
+ pBRgvItemList.Add(pRgv2);
+ pBRgvItemList.Add(pRgv3);
+ pBRgvItemList.Add(pRgv4);
+
+ //璁$畻姣斾緥
+ ProportionX = (double)panel1.Size.Width / 1030.0 ;
+ ProportionY = (double)panel1.Size.Height / 677.0;
+ //璁板綍榛樿鍊�
+ SrmdefaultY1 = pBSrm1.Location.Y;
+ SrmdefaultY2 = pBSrm2.Location.Y;
+ SrmdefaultY3 = pBSrm3.Location.Y;
+ SrmdefaultY4 = pBSrm4.Location.Y;
+ SrmdefaultY5 = pBSrm5.Location.Y;
+ SrmdefaultY6 = pBSrm6.Location.Y;
+ SrmdefaultY7 = pBSrm7.Location.Y;
+ SrmdefaultY8 = pBSrm8.Location.Y;
+ SrmdefaultY9 = pBSrm9.Location.Y;
+
+ RgvdefaultX1 = pBRgv1.Location.X;
+ RgvdefaultX2 = pBRgv2.Location.X;
+ RgvdefaultX3 = pBRgv3.Location.X;
+ RgvdefaultX4 = pBRgv4.Location.X;
+
+ SrmDefaultSizeX = pBSrm1.Size.Width;
+ SrmDefaultSizeY = pBSrm1.Size.Height;
+ RgvDefaultSizeX = pBRgv1.Size.Width;
+ RgvDefaultSizeY = pBRgv1.Size.Height;
+ //鐖跺畾涔�
+ pBSrm1.Parent = picLayer;
+ pBSrm2.Parent = picLayer;
+ pBSrm3.Parent = picLayer;
+ pBSrm4.Parent = picLayer;
+ pBSrm5.Parent = picLayer;
+ pBSrm6.Parent = picLayer;
+ pBSrm7.Parent = picLayer;
+ pBSrm8.Parent = picLayer;
+ pBSrm9.Parent = picLayer;
+
+ pBRgv1.Parent = picLayer;
+ pBRgv2.Parent = picLayer;
+ pBRgv3.Parent = picLayer;
+ pBRgv4.Parent = picLayer;
+
+ pSrm1.Parent = pBSrm1;
+ pSrm2.Parent = pBSrm2;
+ pSrm3.Parent = pBSrm3;
+ pSrm4.Parent = pBSrm4;
+ pSrm5.Parent = pBSrm5;
+ pSrm6.Parent = pBSrm6;
+ pSrm7.Parent = pBSrm7;
+ pSrm8.Parent = pBSrm8;
+ pSrm9.Parent = pBSrm9;
+
+ pRgv1.Parent = pBRgv1;
+ pRgv2.Parent = pBRgv2;
+ pRgv3.Parent = pBRgv3;
+ pRgv4.Parent = pBRgv4;
+
+
+ threadRe1 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe2 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe3 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe4 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe5 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe6 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe7 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe8 = new Thread(new ParameterizedThreadStart(RenewSrm));
+ threadRe9 = new Thread(new ParameterizedThreadStart(RenewSrm));
+
+ threadRe1.Start(0);
+ threadRe2.Start(1);
+ threadRe3.Start(2);
+ threadRe4.Start(3);
+ threadRe5.Start(4);
+ threadRe6.Start(5);
+ threadRe7.Start(6);
+ threadRe8.Start(7);
+ threadRe9.Start(8);
+
+ threadReRgv1 = new Thread(new ParameterizedThreadStart(RenewRgv));
+ threadReRgv2 = new Thread(new ParameterizedThreadStart(RenewRgv));
+ threadReRgv3 = new Thread(new ParameterizedThreadStart(RenewRgv));
+ threadReRgv4 = new Thread(new ParameterizedThreadStart(RenewRgv));
+
+ threadReRgv1.Start(0);
+ threadReRgv2.Start(1);
+ threadReRgv3.Start(2);
+ threadReRgv4.Start(3);
+
+ threadChangeSize = new Thread(ChangeFormSize);
+ threadChangeSize.Start();
+ }
+
+ private void SetRgvItem(PictureBox pic)
+ {
+ pic.BackColor = Color.Blue;
+ pic.Size = new System.Drawing.Size((int)(14 * ProportionX), (int)(16 * ProportionY));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pic, "Left", (int)(15 * ProportionX));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pic, "Top", (int)(1 * ProportionY));
+ }
+
+ private void SetSrmItem(PictureBox pic)
+ {
+ pic.BackColor = Color.Blue;
+ pic.Size = new System.Drawing.Size((int)(14 * ProportionX), (int)(16 * ProportionY));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pic, "Left", (int)(27 * ProportionX));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pic, "Top", (int)(1 * ProportionY));
+ }
+
+ /// <summary>
+ /// 鍒锋柊Srm
+ /// </summary>
+ public void RenewSrm(object device)
+ {
+ while (true)
+ {
+ Thread.Sleep(300);
+ ChangeSrm(Convert.ToInt32(device));
+ }
+ }
+
+ /// <summary>
+ /// 鍒锋柊Rgv
+ /// </summary>
+ public void RenewRgv(object device)
+ {
+ while (true)
+ {
+ Thread.Sleep(300);
+ ChangeRgv(Convert.ToInt32(device));
+ }
+ }
+
+ /// <summary>
+ /// 閬垮厤闂儊
+ /// </summary>
+ protected override CreateParams CreateParams
+ {
+ get
+ {
+ CreateParams paras = base.CreateParams;
+ paras.ExStyle |= 0x02000000;
+ return paras;
+ }
+ }
+
+ public void ChangeSrm(int srm)
+ {
+ //鍔ㄦ�佸潗鏍�
+ long srmX = Srm_CacheEntity.Srms[srm].Rposxmm;
+ int value = (int)(ProportionX * SrmChange * (srmLocalList[srm] - srmX));
+ if (pBSrmList[srm].Left != value)
+ {
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrmList[srm], "Left", value);
+ }
+ //鏄剧ず杞借揣
+ bool vis = IntToBool(Srm_CacheEntity.Srms[srm].RliftFull);
+ if (pBSrmItemList[srm].Visible != vis)
+ {
+ pBSrmItemList[srm].Visible = vis;
+ }
+ }
+
+ public void ChangeRgv(int rgv)
+ {
+ long rgvY = Rgv_CacheEntity.Rgvs[rgv].posation;
+ int value = (int)(ProportionY * RgvChange * (rgvLocalList[rgv] - rgvY));
+ if (pBRgvList[rgv].Top != value)
+ {
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBRgvList[rgv], "Top", value);
+ }
+ bool vis = IntToBool(Rgv_CacheEntity.Rgvs[rgv].loaded);
+ if (pBRgvItemList[rgv].Visible != vis)
+ {
+ pBRgvItemList[rgv].Visible = vis;
+ }
+ }
+ /// <summary>
+ /// int杞琤ool
+ /// </summary>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ public bool IntToBool(int value)
+ {
+ if (value == 1)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ public void ChangeFormSize()
+ {
+ while (true)
+ {
+ Thread.Sleep(100);
+ if (sizeChange)
+ {
+ sizeChange = false;
+ ChangeSize();
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑷�傚簲
+ /// </summary>
+ public void ChangeSize()
+ {
+ //璁$畻姣斾緥
+ ProportionX = (double)panel1.Size.Width / 1030.0;
+ ProportionY = (double)panel1.Size.Height / 677.0;
+ //闈欐鍧愭爣
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm1, "Top", (int)(ProportionY * SrmdefaultY1));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm2, "Top", (int)(ProportionY * SrmdefaultY2));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm3, "Top", (int)(ProportionY * SrmdefaultY3));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm4, "Top", (int)(ProportionY * SrmdefaultY4));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm5, "Top", (int)(ProportionY * SrmdefaultY5));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm6, "Top", (int)(ProportionY * SrmdefaultY6));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm7, "Top", (int)(ProportionY * SrmdefaultY7));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm8, "Top", (int)(ProportionY * SrmdefaultY8));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBSrm9, "Top", (int)(ProportionY * SrmdefaultY9));
+
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBRgv1, "Left", (int)(ProportionX * (RgvdefaultX1)));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBRgv2, "Left", (int)(ProportionX * (RgvdefaultX2)));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBRgv3, "Left", (int)(ProportionX * (RgvdefaultX3)));
+ WZ.Useful.Commons.ControlHelper.SetControlProperty(pBRgv4, "Left", (int)(ProportionX * (RgvdefaultX4)));
+ //鍥剧墖澶у皬
+ pBSrm1.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm2.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm3.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm4.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm5.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm6.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm7.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm8.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+ pBSrm9.Size = new System.Drawing.Size((int)(SrmDefaultSizeX * ProportionX), (int)(SrmDefaultSizeY * ProportionY));
+
+ pBRgv1.Size = new System.Drawing.Size((int)(RgvDefaultSizeX * ProportionX), (int)(RgvDefaultSizeY * ProportionY));
+ pBRgv2.Size = new System.Drawing.Size((int)(RgvDefaultSizeX * ProportionX), (int)(RgvDefaultSizeY * ProportionY));
+ pBRgv3.Size = new System.Drawing.Size((int)(RgvDefaultSizeX * ProportionX), (int)(RgvDefaultSizeY * ProportionY));
+ pBRgv4.Size = new System.Drawing.Size((int)(RgvDefaultSizeX * ProportionX), (int)(RgvDefaultSizeY * ProportionY));
+
+ SetSrmItem(pSrm1);
+ SetSrmItem(pSrm2);
+ SetSrmItem(pSrm3);
+ SetSrmItem(pSrm4);
+ SetSrmItem(pSrm5);
+ SetSrmItem(pSrm6);
+ SetSrmItem(pSrm7);
+ SetSrmItem(pSrm8);
+ SetSrmItem(pSrm9);
+
+ SetRgvItem(pRgv1);
+ SetRgvItem(pRgv2);
+ SetRgvItem(pRgv3);
+ SetRgvItem(pRgv4);
+ }
+
+ private void _2Dshow_SizeChanged(object sender, EventArgs e)
+ {
+ sizeChange=true;
+ }
+
+ private void _2Dshow_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ threadRe1.Abort();
+ threadRe2.Abort();
+ threadRe3.Abort();
+ threadRe4.Abort();
+ threadRe5.Abort();
+ threadRe6.Abort();
+ threadRe7.Abort();
+ threadRe8.Abort();
+ threadRe9.Abort();
+
+ threadReRgv1.Abort();
+ threadReRgv2.Abort();
+ threadReRgv3.Abort();
+ threadReRgv4.Abort();
+
+ threadChangeSize.Abort();
+ }
+
+ private void panel1_Paint(object sender, PaintEventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.resx b/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.resx
new file mode 100644
index 0000000..d93c6ab
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/2DShow/2Dshow.resx
@@ -0,0 +1,44285 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="pBRgv1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ Qk1WJAAAAAAAADYAAAAoAAAAWgAAACIAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA=
+</value>
+ </data>
+ <data name="pBRgv4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ Qk1WJAAAAAAAADYAAAAoAAAAWgAAACIAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA=
+</value>
+ </data>
+ <data name="pBRgv3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ Qk1WJAAAAAAAADYAAAAoAAAAWgAAACIAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA=
+</value>
+ </data>
+ <data name="pBRgv2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ Qk1WJAAAAAAAADYAAAAoAAAAWgAAACIAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/
+ Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/Dsn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAOyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8Oyf8O
+ yf8Oyf8Oyf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7J/w7J/w7J/w7J/w7J/w7J/w7J
+ /w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/w7J/wAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA=
+</value>
+ </data>
+ <data name="pBSrm1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="pBSrm9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="picLayer.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+ NjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2
+ LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwAD
+ XJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAA
+ AAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBP
+ AFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADl
+ AOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGp
+ AbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2
+ AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT
+ BCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXF
+ BdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
+ B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9
+ ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0N
+ DSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD
+ EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPl
+ FAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3
+ GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7
+ HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1
+ IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtybo
+ JxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizX
+ LQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNG
+ M38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2
+ OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGs
+ Qe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mp
+ SfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIx
+ UnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF
+ W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTp
+ ZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8e
+ b3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnn
+ ekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VH
+ hauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/
+ kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3S
+ nkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sC
+ q3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjR
+ uUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB
+ x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV
+ 1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN
+ 5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt
+ 9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////bAEMAEg4OFhAWIxUVIywiGyIsJxwcHBwn
+ IhcXFxcXIhEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/bAEMBFBYWHRkdIhgYIhQO
+ Dg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIIRAl
+ UAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgv/xACFEAABBAEDAgQCBQcG
+ CAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1Rk
+ RcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/f/
+ xAAfAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgv/xACCEQACAgECBAQDBAUGBwcGBTUBAAIRAyEx
+ EgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKz
+ hMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/3QAEAlX/2gAMAwEAAhED
+ EQA/AOvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTJwkpdJOmKSlkkkySl0kkklKSTJJKXTpk6SlJJJJK
+ WSSSSUpJJOkpZJOkkpZJOmSUpJJJJSkkkklLJJ0klLJJ0klLJJFMkpdSCiFIJKUknTFJTFKUimSUunUU
+ 6Sl0kkklKSTJ0lLpkk6Slkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUoqB
+ U1EhJTCVJqbapAJ1KSNClCiCpSlSmJUJRCFAhEKUCiBAJhMbgESFNqQhPeAqr8sBU7s0eKQCmzbfCz7s
+ uFVuy5VC24lOAU3LM1AOaSqLiSmDHFFTdN5colheo1UkrTox5SU0G4RcrFeB5LZqxgrLccBJTl1YkK9V
+ RCsioBTDYQUsxgCMAFEJ5TSpkQolKUxKCmJTJymStSkkkkLUukknQtSySeEk0lSgpSopIWhRQyERKEQV
+ Ig1TAUoShG1Lgp5UUpTlLkpikkipZJOkjSlBOkmQpLJMkkhSlJJJIcKlJSkmQpSiUySZKlKTwnCeEFLQ
+ nTqJSUvKeVBKUrUylJME6VqUkkkipZJOkkpSZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSS
+ lkydMkpSdMnSUukknSUsmTpikpZOmSSUunTBOkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//0OvSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSTpKUkmSSUpMnSSUpJJJJSkkkklKTpk6SlJJJFJSySSSSlJ0ydJSkkkklKTJ0ySlJJJJK
+ UkkkkpSSSSSlJJJJKWKZOmSUpSCipBJTJRKUpJKWTJ0ySlJ0kklLpJJJKUkkkkpSdMnSUpMnTJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnhMnBSClbUxEKUpinhTCVNrlAhRLoRU2JQ
+ 3vAVd9+1U7syElNi24BZ92VCq35kqhZeXJym1bmFU35JKEZcnbSSkpbeXKbKy5HqxSr1OKipqV4sq1Xh
+ LQqx4VxlISU51eHCuVUbVcFYT7ULUwaIRAVGE6BUySTJ0FLpJk6ClkxTpklKTJ0yapZOkkgpSdJOgpSS
+ SSBUskkkmoUnTJIhS6SZJPClJJJJwUpJJJEKUknTJylJJJJJUnTJIKXSSSSUpMkkmqWTJ0kFLhSUU6Cl
+ 1Ep0kFMUk6ZBS6dMnQUpJJJOClJJJIqWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpYpk
+ 6SSlk6ZOkpdOmSSUpMU6ZJSySdJJSk6ZOkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//0evSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ k6ZOElKSKdRKSliUpTEpgUlMk6YKSSlkkk6SlkkkklKTpkklLpinTFJSySSSSl06ZJJS6ZJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUsknTJKWTymTSkplKSjKUpKXTpk6SlJJJJKXSSSSUpJJJJSk6ZOkpSZOmSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMSnShEKWlSCYBTAT1MHBVL7NqtWGA
+ snLthEBTWyMmFl3ZJKbJu1VMe4p1KZl5cpsrLkajH3LSpw0lNSnGlaFWErdONCvV1AIWpp14YCsNxgFc
+ DAn2ptqawrhTGiIQhlG1Mg5PKFKkCkpmlCQToKWSTpkFKSSTSmqXTJJkFLpk6ZBSk6ZOgpdJMnQUpJJM
+ ghSSSSSlJJJIhSkkkk4KUkkknBS6SSZOCVJJJJylJJJJKUkkmSUunTJIKUkkkkpSSSdAqWSSKaU0qXTq
+ IKdNKlJJ0yaVKSSSQUukkknhSkkkkVLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKTJ0
+ klLJJ0ySlJ0ySSl0kydJSySdJJSkkkySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpSC
+ ipBJS6g5TQ3JKYEpgVElIFJSYKSg1TSUpMkkkpSSdMkpSSZOkpdMU6YpKWSSSSUukkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSmJUCVMoZKSlSpAocqYKSmadMFJJSkydMkpdJJJJSkkkklKTpk6Sl
+ JJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSlJRJSCmYKkCq+5Fa5PpLG4a
+ LCzu63rDosPO7p4Q89kHVKgSU2TymodBRtTvYdYK2KqhCxsOxbNNmiBKmyGAKYEKAcpgpqmUppTEqJKC
+ mRKEVKU0JWphCkE+1PCVqXCkopShalymSTIWpdMkkkpSSSSClJ0kkFKSSSSUpJMkhSl0kydKlKSSSSpC
+ kkkkqUpJJJOUpJJJFS6SZJEFKkkkk61KSSSStSkkkkrUpOmTpKWSSTJWpcJ0wToKYlRJUihkppSyBUwh
+ gqYTSpkknTJpUpJJJClKSSSTwhSSSSKlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJOkpSSSZJSkkkklLpJ
+ JJKUmTqJSUqUpTEppSUyUgohSCSl0ydJJSyZOUySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Pr0kkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpSCiFMJKUhPKMUCwpKQuKTSoOKTSkpstREJiIkpRSSSSUumSSSUsnTJJKZJikkUlLJJJJKXSTJ0
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6SSlBJIJ0lI3ILijOQHFJS0qbShSiNSUmCkFFqmElLJlJMkp
+ SdME6SlJk6ZJSykoqQSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSTJJKUokK
+ SkAiFNchOHQiuaq1phPClrboCxM26VbyLYWLkvJRU0Mh8lDqdqnewkqdVRlFTq4j1tUPWNisIWvQEFOg
+ wo7UCtWGoKUQoFFIUSEFI04TwkgpkEimlNKClFMkkkpSSSSClJJJ0FKSSTpKUkkkkpSZOkkpZMnSSUsk
+ knRUpJJJFSkkkklKSSSSUpJJJBSkkkkVKTpkklKSTpkVKSSSRUpJJJJSxSSKZJTIJ0wToKYOQiUR5QSU
+ EswUVqA0ozU1SRJIJIKWTJ0yCl0kkk4IUkkkipZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUumTpJKWS
+ TJJKZJJgnSUpRKkVApKYkpSokppSUkBUwhgogSUzCRSCRSUxKZOUySlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//1OvSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSgphQCmElKKr2FWCq1qSms4p2FQeU7CkptsRUGtGSUsUgkUgkpdJJJJTFOEyc
+ JKXSKSSSlkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUknSSUpJJJJSgnSCSSkb1XeVYeqz0lMJRWIIR
+ WJKbDVMKDUQJKWTJ0ySlJwmThJSiolSKiUlKCkohSSUumTpklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlBTCgnBSCl3FUr1bcq1jZUgU5N7SVQfQXLafTKiMaUbU4ow5R68KOy2WYwRhj
+ hC1OZVjwr1bIVgUwnDIQtS7NEZpQgFMIWpKCnhQBUwULUohDKKShuQtSIlKUiEwCVqZBOmCkhalk6SSS
+ lJJ0kVKSSSSUpJKUyKl0k0pJUpdMnSRpSySdMjSlJJJJUpSSdMlSlJJJJqlJJJIKUkkkm2pSSSSVqUkk
+ klxKUkknS4lLJJ0yNqWKinKZG1MgpFRCcpWpE8oJKK9AJSSzaUdirNKsMSUmCSQSSpSySSZClLpJk6KF
+ JJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6SlJJJJKYlJIpJKXCdME6SlioFSKg5JTAlNKYpklJWl
+ FagtRWpKSBOUgkUlMCmUiopKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUoKYUApBJS5V
+ W1WSVWtSU03p2Jnp2BJTbrR0CtGSUsUk5SCSl0xTpJKYpwmThJS6SSSSlkkkklKTpk6SlJJJJKUkkkkp
+ SSSSSlJJJJKXSSSSUpJJJJS4TpgkkpG9VXqy9VXpKYBGYgBGYkpstRENqmkpRUSpJikpYKYUU4SUuVAq
+ RUSkpQUlEKQSUumTpklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkklSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0gpUKB
+ ZKInhPtTXNScVwjwmIStTANhThRSQUvCW1IKQSUx2piERRKCmMpbkxUUFJNyXKgFMIKW2pbVNIpKYQkn
+ KZJSkkkklKSSSRUpJJMipSSSSKlJJJJKXTpkkVLpJJIqWSTpJKWTpJIFSySdMmqUkknQKlkkk6ZSlkkk
+ 6FKWSTpJUpSSSZKlLpikkjSmJUVIpoRUyCcpgE5RUgeq7irFirORSzYVZYqrFaYipME6YJJKWSSTJKXS
+ TJ0EKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkikpiUycpJKUFJME6SmJQ3IhQnJKRlMkS
+ ogpKTNRmoDEdqSkoTlRCclJTEqKcpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpOCm
+ TpKWJVexHKBYkprOCdgScnakpsMRggsRgkpdJJJJSkkkklLJJ0klKSSSSUpJJJJSySSSSlJJJJKUkkkk
+ pdJJJJSkkkklKSSSSUpJJJJS4TlMkUlInqq9WrFVekpGEetACPWkpsNRENqmkpdJJJJSySdMkpUpkkkl
+ KTpJJKXTJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgVKSSSTLUpJJJG1KSSSRUpJJJFSkk
+ kk5Skk6ZFSkk6SKlkk6ZJSkkkklKSSSQUpJJJBSkkkk1SkkkkFKSSSQtSkkkkLUpJJJTRUpJJJOpSkk6
+ SBUskkkmqUkkkmqUkkkgpSSSSSlJJJJKUkkkipSSSSSlJJJIqUkkkipSSSSSlJJJJKUkkkgpSSSSSlwV
+ KVFJK1MpTSmSStSkkkkrUpPKZJJTKUxTJIKWITQpJIqYwpBJJJS8pSmSSUsUk6ZJSkkkklKSSSSUpJJJ
+ JSkkkkVKSSSSUpJJJJS6SZOkpSSSSKlJJJIKUkkkkpSSSSSlJJJJUpZOkklSlJJJJUpZMnTJUpSSSSVK
+ UkAknCSlwEzlJRckpr2KsVYsVcpJZsVpiqMVpiKkwSKQTFJSkySSSlJ0ydNQpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmSSUpJJJJSySdJJSk6ZSCSliEB6OUCxJTXcUzSmemakpssVhqr1qw1JTKUpSKikp
+ cpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklP8A/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKTpk6SmJQLEcoFiSmu5O1M5O1JT
+ YYjBBYjBJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXS
+ KSRSUisVV6tWKq9JSMI9aAEetJTYapqDVNJS6SSSSlJk6ZJSySSSSl0kkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSk6ZOkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJClKSSSQ4VKSSSSpSkkkkaUpJJJJSkkkkbUumSSRtS6SZJLiUumSSS4lK
+ SSSS4lKSSSStSkkkkrUpJJJBSkkkkKUpJJJKlKSSSQ4VKSSSUg0UpJJJG1KSSSQJUpJJJC1KSSSTVKSS
+ SQUpJJJJSkkkklKSSSRUpJJJJSkkkkVKSSSRUpJJJJSkkkklKSSSQUpJJJJS6SSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSTpJKWTJ0klKSCSSSmSg5SUXJKa1irlHsVcpJSMVqtVGK3Wkp
+ MEikEklLJJ0kVLJJJJqFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlKQUVIJKWK
+ BYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJk6ZJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0OvSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkk
+ klKSSSSUpOmTpKYlAsRygWJKa7k7Uzk7UlNhiMEFiMElLpJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk
+ kkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSKxVXq1Yqr0lIwj1oAR60lNhqmoNU0lLpJJJKUmTp
+ klLJJJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6IUskkknKUkknQUskkkgpS
+ SSSClJJJJqlJJJIKUkkkgpSSSSSlJJJIqUkkkipSSSSKlJJJIqUkkknKUkkkipSSSSKlJJJJpUpJJJNU
+ pJJJBSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJFSkkkkVKSSSRUpJJJJSkkkklKSSSSUpJJJBSkkkklL
+ pJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJkkklKSSSRUuoOU1BySmtYq5
+ VixVyklmxW61UYrdaSkwSSCSSlJJJJKUkkmQQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpSCipBJSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JTJMnTJKWSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Hr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klLpJJJKUkkkkpZJJJJSkkkklKTpk6SmJQLEcoFiSmu5O1M5O1JTYYjBBYjBJS6SSSSlJJJJKUkkkkpS
+ SSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRSUisVV6tWKq9JSMI9aAEetJTY
+ apqDVNJS6SSSSlJk6ZJSySSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKWSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJEKUk
+ knTlLJJJIKUkkkgpSSSSClJJJJqlJJJIKUkkkkpSSSSSlJJJJKUkkkipSSSSKlJJJJylJJJIqUknSTlL
+ JJ0klLJJJJhKlJJJJlqUkkklalJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSNKUkkkipSSSSSlJJJJKUkk
+ kkpSSSSSlJJJIKUkkkkpdJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkkEKSSSSUpJJJFSkkkklKSSSSSpJJJJSkkkklKTJJJKVKZJ
+ JJS6SZOElLqLlNRcipq2KuVZsVYoJZsVqtVWK1WipMEkgkUlKTJJkFLpJJJIUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpYoFiOUCxJTVemanemakps1qw1V61YakpkmTpklLJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKf/0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpOmTpKYlAsRygWJKa7k7Uzk7UlNhiMEF
+ iMElLpJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJS
+ KxVXq1Yqr0lIwj1oAR60lNhqmoNU0lLpJJJKUmTpklLJJJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKTpk6SlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSk6ZJEKUnTJJ1qUnTJIWpSdMkgpSSSSClJJJIKUkknQpSySSdClLJ0kkqUpMnSSpSk
+ ydJGlLJJ0kVLJJ0k5SySdJFSySdJOUpJJJJSkySSjKlJJJJilJJJJKUkkkjSlJJJIqUkkkkpSSSSNKUk
+ kkkpSSSSKlJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJBCkkkklKSSSSUpJJ
+ JJSkkkkkqSSSSUpJJJFSyZOmSUpJJJBSk4TJwipkouUlFySmtYq5VixVykpmxWWKsxWmJKShMU6YpKWS
+ SSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpYoFiOUCxJTV
+ emanemakps1qw1V61YakpkmTpklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//T69JJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSk
+ 6ZOkpiUCxHKBYkpruTtTOTtSU2GIwQWIwSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJ
+ S6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIrFVerViqvSUjCPWgBHrSU2Gqag1TSUukkkkpSZOmSUskkkkpd
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJC1KSSSStSkkkkbUpJJJFSkkkk
+ aUpJJJGlKSSSRpS6SSSVKUkkklSlJJJIUpSSSZJS6SZOgpSSSSFqUkmSStS6SZOhalkk6ZJSkkkklKSS
+ Tpylkk6SVKWSTpwEaUxSU4T7UVI0kXamLUlI0lIhRKSlJJJJKUkkkgpSSSSClJJ0ySlJJJIKUknSSUsn
+ SSSUsknSSUsknSRUsknShJSySdJJSySSSSlJJ0klLJJ0klLJJ0klLJJ0klKSSSSUpJJJJSkkkklKSTwk
+ gpZJJJJSkkkklKSSSSUpJOmSQpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJKySdKElMUk8JQipZ
+ OEkklMlFydRckpr2KsVYsVcpKZsVpiqsVqtBSYJFIJIqWTJ0kFKSSSRUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpSCipBJSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JTJMnTJKWSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSU//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUukmSSUukmSSUpJJJJSkkkklKTpk6SmJQLEcoFiSmu5O1M5O1JTYYjBBYjBJ
+ S6SSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRSUisVV
+ 6tWKq9JSMI9aAEetJTYapqDVNJS6SSSSlJk6ZJSySSSSl0kydJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ OkmSUukmSSUukmSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkkCpSSSSYpSSSSKlJJJIqUkkknBSkkkk5SkkkkVKTpkkVKTpJ4SUsknTFJSkkydJSk
+ oTpQgpaElKE0JqlkkoSQUsnTwlCCloSTpFJSyZIppRAUukkE6NKUmSJTSjSmSUJgVKUaUslMJi6ECy2E
+ 4BSf1AEvWCy7cqFTsz47pUp3/XCf1gVzX7S80erP3d0qU72+UlRpv3K6wykpeElKExTVLJJJFJSkpUZS
+ lNUySTBSQUpMnTIKUlKYlRLklM5S3IJeo+oipsSlKAHqQekpLKUoW5MXoqTSluQC9N6iSmxKUoAeiByS
+ kiZIFMSkpeUpQy5NvSUllKUMOS3JKSSlKHuS3JKSSlKFuS3pKSylKDvTb0lJ5SlBD1MOSUzSlRlQc9JS
+ XcluVc2JCxJTYlKUEPT7kFJZSlD3JbklJJSlCL1EvSUnlKUDenD0kJ5SlCDk+5KlJJSlD3Ji9KlJZSlA
+ 3pb0qUnlKUIOUgUqUzlKVGUxKVKZymlDLlHekpNKeUDepBySksppQ9yW5JKSUpQ9yW5JSRKUPcnBSUkU
+ HKQKZySmrYq5VmxVykpkxW61WrCt1hBSQJJ4TFFSkkkkFLJ0kyKlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlKQUVIJKWKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJkkySlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKf/V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SmLkCxHcgWJKa7k7Uzk7UlNhiMEFiMElLpJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSKxVXq1Yqr
+ 0lIwj1oAR60lNhqmoNU0lLpJJJKUmTpklLJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSQKlJJJJilJJJJKUkkknKUkkknBSkkkk5Skk6ZFSkkkkVLylKiSo7klJJTKG5SBSUpOmSlJT
+ IFSBQ5SDkFJUyiCpAoKVCUJ0igpZJMVElNKmcpiVCUpSUolMkUykCmQUlAFPuTqUohQJhSLwgWWgIgKZ
+ GyEM5ICpXZELPuy4TqU678wKlblysezMKF9oLk6lN27IJWdfcUUEuQrapCSmkchwKtY2SZVO2qCnp0KC
+ nq8K6YW7Q6QuVwbIhdFjW6JpCnQUSmD5STFLpipJiECpGUwUyE0JqlwpKITpqlEpiUxKgSkpkXITikXK
+ BKSmJKipwn2oqYhTBShJFSpUS5OVAoqWLk0pQpBqSlwURrlCExMJKTh6ReqvqKTXykpKSoynGqRCSlAq
+ UoacJKZymJTpikpaU0pikEFLyokqUJiEVLByIHoJTboQU2S9Dc5C3pxqkpYlSCcNUwxJSwKlKUJQkpUp
+ pTFMUlKLlEuSKaElKlTBUQFIBJDMFSlQhIoqZFygXJiVElJS5cnBUFIJKZgogKEE4KSkspiVCU8pKWJU
+ SiQltSUjTgqRCgUFMtybcoykkplKW5RSSSzDlIFClSBSU2GlOUNpUiUFILFXKsWKuUlJa1crVOtXGFJS
+ VQKclRJSUpOohSCClJk6ZFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWSTpklLp0ydJ
+ SxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9br0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpOmTpKYuQLEdyBYkpruTtTOTtSU2GIwQWIwSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkkl
+ KSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIrFVerViqvSUjCPWgBHrSU2Gqag1TSUukkkkpSZ
+ OmSUskkkkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJKlKSSSS4VKSSSS4VKSSS
+ SpSkkkklKSSSRtSkkkkrUumTpJcSmBUCiFRIR4lMU4KUJkuJTKUpUU8JWpUpwkAnASUuFMFQTykpnKRK
+ jKUo0pRUSnSQpS0JAJ0t0JcKl9qiRCc2AIL7gE4BSz3wq78nahX5AWVkZKkpToWZoHdVbM6e6x7ckqv6
+ 5KNKdS3J3Ko8lyhVLlfpx9yKnNNJKIzHK3GYE9kQ4UdkLU5DKoTWAALRtp2rOv0RU5t8KsHQVYtBKrFh
+ lIqdLFvhb2LkrlqQQVsYjimFT01Nu5W26rLxXTC1K00qZwolTKgUwqUmhOlCapZKFKEoQUwIQ3BWIQ3B
+ JTWITAIjgowjSlAJyYTKDynUpcvUd6C4lRBKNKbEynQ2oidSFAKYChKfclSmRQnqcqJEpUprlTYp+mnD
+ IQpSRikVAaJ5SpSxCcJpSBSpSQJimlKUqUsQlCRKiSlSmSRUZTgpUpi4IRCOQoFiFKRBFYEwYiNEJUpI
+ 0JyozCi5yVKZEqMoZekHJUpmSolKUxSpSlIBRUwlSlwFIBJJEBSoTEJ5SlGlMCFEhTKgUqUsnCZJClMp
+ TyohPCVKXlOCmhMlSkgKlKBuS3oUpKShkqO5NKVKXlSCiFIIUpdMU6RSpTFOEoSCVKStRENqIglBYgFW
+ HhAISUzrVpiqsVpiSkkqBUlEoKUFMKIUwkpZMpFMUlLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKXSSSSUpMnTJKXTpk6SligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSl0kkklLJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf
+ /9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKYuQLEdyBYkpruTtTOTtSU2GIwQWIwSUukkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIrFVerViqvSUjCPWgBH
+ rSU2Gqag1TSUukkkkpSZOmSUskkkkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ EKUkkknqUkkkgpSSSSapSSSSClJJJIKUkkkgpdMkkkpYpiU5USkpZKE4UgEVLBqkGqQCkEVMdqaERRKI
+ UwKjKmQoEJylwU4UOFEvhOUmlRLoQHXgID8kJUptOshVrMiFVsylSuyJTqU27c2FSsz/ADWffcSqbnOJ
+ SU6T8vcgPcXqvW1xV+miUVNI0FykzDK26sOVcZhBOU49GIQtbGohWW4oCOyvahamVdQAT2MEKYMKLzKZ
+ eqXLyWLIvqkrfuZKpux5UgKHBOKSkMEnst9uIjtxAkVPOswSOyvUYxatkYYRG4wCYVIMeuFoM0Q21wiD
+ RMKkkpoTAqQTCpcBKFIJJqmBCSclRlJS8qDinJUHIqRuUFJyEXQnBSRMWyh+opCwJymJrlMKkUPCluCK
+ kYZCZxhO+wBVLbwnISl6YWKi+9M29FTptMowErPruCtMuCCmyGJbEIXBP6wSUyIQyUzrQhufKSmRckHI
+ UypgJKZymL0xCC90IKSGxLfKqGxSY+UlNsFTCAwogdCSk4T7UD1QE/rhJSfaExEIJyQhuyQgpO4oLnIL
+ sgFQ9WUqUmlTagtdKMxJTMBIpwkUlLKQKETCbekpsSmJQg9PMohTIuUd6G4wgOthFDb3pTKpC5GZZKSW
+ xCcBM0ypoKUApAKG6Et4SUzhRITB4TzKSkbghlGIQy1BSwUwEmtRAElMYTSncYQXPQUmBThAD0ZpQUyh
+ IBOE4CSmbQpqLVMoJQ2KuUewquSgpIxWWKqwq0xJSRRKkmKSlBSCiFJJSkxTqKClJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKXSSSSUpMnTJKXTpk6SligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSl0kkklL
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKf//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SmLkCxHcgWJKa7k7Uzk7UlNhi
+ MEFiMElLpJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJ
+ FJSKxVXq1Yqr0lIwj1oAR60lNhqmoNU0lLpJJJKUmTpklLJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSRClJJJJylJJJJKUkkkgpSSSSapSSSSClJJJJKUkkkgpYpoUkyKlgFIJpSlJ
+ TKUtyilCIUyDk4KhCYuhOUmUHEIDrwFWszAEVNiywBUrciFWuzQs+3JlOCm1blqo/LKqvsLkPaSnKbJy
+ CUpLkJlRKu00pKQfZy5TbgE9lq0Y8q/XjBAlTh14MdldpxoWqMYJ/RhC1IaqoVprAmDYUkrUohQIUyok
+ JBKyREpQnCKmBrlN6CMCnkJtqQioBTDApykjaFw0J4TBPKapYhQIUyVAppKllIFRSQtSQOS3IaRKCmRK
+ aVGU4KSmSYhOCkSnhSB4VO10K7Ys7IKeAprvvhQGUqtziq+4pwCnWblKRyllsJUySngKbb8pVLMiUJ0o
+ Tmkp3Chd1xSbcUM1lNsIR4VN1mRCO3KWaJCmJQ4VOj9rS+1rPgpjKXCp0hlSistlZLSVcpclwqdOsyrL
+ AqVTlZFsJpipI/QKle+FO3IACzL8kJUpk6zVTrsWY7I1RarkaU7LHp3WQqlVsqbjISpS1l8Ks/MhNfKz
+ LyQlwqbrs/zTfbSe6xy4yi1AlClOs3JJR2WkqjTUSr1VRSpTbrdKtsKq1shW2BKlJQmcnATOCFKa73Qq
+ 7rYRLtFQsejSm6y2VZYZWVU/VaVJlClL2cLPushaNo0WRklIBTEXaq3TbKyQdVfxk6kOtW5TLkKsaKTk
+ KSxfbCA69RtMKk96FKdBt8qyyyVkVvKv0lClN4apEJmlJzoSpS40SLgFXfdCr2ZMIUps2Wqq61VbMlB9
+ eUKU6LLJVut0rKqfK0aSgpuBSCg1TCCmYSJTBJxQUhsKrkothVclJKZhVutUq1crQUmTFSCYhJSyUpJk
+ FLp0ySClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpMnTJKXTpk6SligWI5QLElNV6Zq
+ d6ZqSmzWrDVXrVhqSl0kkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6S
+ mLkCxHcgWJKa7k7Uzk7UlNhiMEFiMElLpJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUukk
+ kkpSSSSSlJJJJKUkkkkpdIpJFJSKxVXq1Yqr0lIwj1oAR60lNhqmoNU0lLpJJJKUmTpklLJJJJKUnTJ0
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRClJJJI2pSSSSVqUkkkhalJJJIKUkkklSlJ
+ JJIUpdMkklSlimKkmhGlMJSBUiFAmEqUkBTyFWdbCA/KhGlN17wFUuvAVK3N81QuzJTqU2r8uFm3ZhQL
+ bi5BLC5FTJ2QSk0lydmMSr9GIUVIK6C5XK8SVdoxYV+rHARtTmsw/JWGY0LTbSFL0krU1qq4VtmibZCX
+ CaSpMExCgCpSmqWIUVIqJRClJKJKYORUzhROicGUiElIy6Ewemc1RDU5SZrpRAhsCKAmlS6YlMSoEpqm
+ RKZRlOEwqXTwkEkFLQmITymlFS0JJ08JKWlKU8JQnhSGxZ+QFpPCpXNUgU41zEEVq9axAiFIApTK0X01
+ FroUjYE8BSM1JhTKnvBRqyCnUhAMZM7GWixoKkaggpxzQnFK0H1QguACSkHpKLqkV1gCE60I0pHsR6mw
+ hh0qxWEqUnaYUbLCERrUOyqU0qaF95WZdeVp30lZltJSU1vVMqzS8oHpaq1TWjSnRocSrzGyFVxq1q1V
+ 6IKaNtMhZmRSuitYIWTlABBTjGnVXMfHlDJEq5jOCVKb1GNorbaIUaXiEfeEKUxDIRWhC9RSa9KlJgmc
+ mDkzikpqXrLuK0shyyb3I0pnU7VadD1hMsgq7VfCVKdS1+iyMlyPZkaLMyL0qQpp1WjjFYrbtVfx74SU
+ 9BWRCd7gs9mTok7JSUyuKpPUrLpQN8oUlsVBaVAWdSVp0IKbI4QbXQjxogWtlBTn3WEKhbcVoW1EqjbQ
+ UFNJ1pTssTWVEKDRBQU6dDlq0FYuOVsY5QU6DEQITEUIKZBM5OExQU1rFXKs2BAIQUzrVytVKwrlaCU4
+ CRCcJFJTAhMpFMUlLJJJJqlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpMnTJKXTpk6S
+ ligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSl0kkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Lr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpOmTpKYuQLEdyBYkpruTtTOTtSU2GIwQWIwSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkkl
+ KSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIrFVerViqvSUjCPWgBHrSU2Gqag1TSUukkkkpSZ
+ OmSUskkkkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJAqUkkkm2pSSSSVqUknTJ
+ ylJJJIqUknSRUqEoThOE5S21MWoohJ0BC1ICYQnWgJr7Nqyb8uE+lOmcgIL8gLEfneaH9sJRpTp25CoX
+ ZBQTcXKBaXJUpFZcShSXK0MYuVivCPggppV0lyv04kq5ThQtCnGhBTUpwvJXa8QBW2VgIoACCmu2kBFD
+ YUiVAlK1JAVKQgb0g9NUlKgUwdKdNJUxlOCmITIKSApiogpEpwKmDioSpkSo7U5TNpRQJQmhFCKli1R2
+ IqYpWpYCE5KiSoFyBUu4qEpTKcBMKlBTATAKSapSYqSiUFMSU0pFIIqZhTAUAiBOClQmIUpUHFPCkb1V
+ tbKsPKE4SpohTnWsVOwQtaxkqhfWpQpz3PhDNqla2FXhSgKTsslXKnKjW1XKxCNIdCpyPKpMfCJ6qYQp
+ JYVQudCO+2VUtMogKatlhQfUKM9koYqTqUlqMrQpCpVVwtClqaQpt1tRDVKatELlEUtO6gLLvpAWve9Z
+ OTYngIaJYAUeloVZ9uqJVan0p2ccAK+x4AWNTdCsfaNEyQU3L7RCxMu1GvydFk5F0oAKRvt1VnHuWaXS
+ VZoKdSnepv0R/WWbUSrIRpTZFko7HqmwK1WE0hTZaUnFMEimqal+qy72la9jZVV9Mp6nI2mUVkhXfsyX
+ 2ZBTSscYWfcSte2hULaUkNAEyrdLioCjVWqqUlJmPKkXEojKEcYyCWgZKk1pV37MkKIQUtQFp0KpXXCu
+ VaIEIbYUXNlJpUpTUoHUyq9mOFfULOElOFkUQqD2QVs5KyrRqgplRytfGWTSNVr4wTVOgxEQ2IiBUzCc
+ hM1SKCmtYEAhWXhAIQUyYFbrVVissSSnCcqIKUoKXTJSmQUpMnTIKUkkkgpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpdJJJJSkydMkpdOmTpKWKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKXSSSSUskkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkp//0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOkkkpi5AsVhyr2JKa7k7Uzk7UlNhiMEFiMElLpJ
+ JJKUkkkkpSSSSSl0ydJJSySdMkpZJOkkpZJOkkpZOkkkpSSSSSlJJJJKUkkkkpSSSSSlwkUwTlJSKxVX
+ q09VnpKRBHYghGYkpsNU1BqkkpkkmTpKUmKdIpKYpJFMkpdOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkgpSSZJClKlOop0aQukmTpwileEoSlLcjSl4TFRLwhvtAThFSQvhDNwCq2ZACpW5U
+ J/Ch1vtQCg/MCwLM2EA5pKXAl1cnJlY2RYSpesXJxUXp3Cpz3biVOtjitJuFKPXhIUpo11Eq9VjSrdWJ
+ Cu1Y8JpU1asQK7XigKwyuEYCEy1IW0AIgZCJKYlC1MOExKkSolK1MSVAokJi1NtSApgUUtTbELUppRQo
+ AKYSUohRIU1EhGlME6eE8IqWhPtThOipjCcJJIqZApiUkigpG5DRSE21JTEBTASAUk2lLJSkmQpTJMUy
+ SXCpYpQnSSpS4UwVAJ04BS5KG4qRKg5OCkTioqTgoFPtSnKnc2VaJQHiURJTlXVoHpLTfVKCalLHIprM
+ ZCJuhTcyFWtdCmBtCQ3Qm9dUH2qLbJStTo+rKflVqzKtMCVqUGSpCpEa1HYxK1ImVKyxkKbWIoamEqYj
+ RM9ymQhvCCmne9Y+S8rWvasq9idanPc4yjVSomvVWqKpRtSeoFGIKsUUSrP2bRNJU4lzSs+1pXRX4uiy
+ 76IStTlhmqu49agK9Vfxq0rU2KalZFSLTVoj+nCVqa7WI7GpohEakVMgmJSLkB70FMyU0AoBsUm2Jymw
+ 2sFSNISrfKOCmE0pz7qQs26sBbN/CyMgpWpqhglW6KwVUDtVfxinIb1VAVkUBNRwrM6KMlLVfUAqzwAr
+ Vz4WbbckpMCEdhWay2Sr1DpRQ3GqaZgUoTUrSg2FGKBYkpzslyzbDqr+Ss151QUno5WvjLHo5WxjJqnQ
+ YpqLFNBTJqkohSKCkL0Ao70AoKZMVhirsVhiCUoKUpJklLykmToKUkkkmqUkkkkpSSSSSlJJ0ySlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSl06ZOElLFAsRygWJKar0zU70zUlNmtWGqtWrDUlMkkkySlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKf/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWcq9isOVexJTXcnamcnakpsMRggsR
+ gkpdJJJJSkkkklKTpk6SlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKUkkkkpSSSSSlwnKYJyk
+ pE9Vnqy9VnpKYBGYghGYkpO1SUWqSSlwpKIUklKTFOmKSmJTJymSUpSUVJJS6ZOmSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUsknSSUskkkkpSSSSSlJJ0klKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpOmTpKWKiSnKiUkLynAUQiNCSlBqfapgJiYTlMITFJz4QH3AJwUkc6EF90KvZkBU
+ rslOCm1Zlwqdud5rPvySqFl5KkCnSszZVZ+QXKgHkqxUwuTwpckuTtqJV2nGlXqsNIlTQpoK0aaFaZiQ
+ rDaoTbSjrpCsNqCdohFCYSpZtYRg1RCmCoylcBIlNKYlBSiU0piUySF5TqKeUwqZJJpSlMKlEJoTymTV
+ KhJJJShS6SZJOUpJJJJSkkkklKSSSSUpJJJJSkoSSSUpJJOkpaEoUkkVMCEymVEpKWSSTwkpSdKE8JKY
+ qJCJCYhJSEtUC1HKG5JSAtUSxFJCgXBBSM1KBqRt4TF4ToqadtSzcitbFhBWfkAFWYlDi2N1SrbqrFrR
+ KiwCU9TZoYrrK1XphXmEIKXbWjNamDglvAQUmaphVvVCI2yU0qTQoOYpNdKckIWpo3MWZexbNxCzL4Tw
+ pztmquY7EDurmOgp08etXRWIVbHKuA6KORS0shghYmU1b2QdFiZSeEOZGqv4you0Ks0WQnKdykiFNxVK
+ u+AndegpM56YPVQ2ypB8pyk7rFXfYncZQHgpKWNiIx6rFTY6EVOlU9Wg/RZldsKwLkCFM73aLIyDqr1t
+ srPuMptKa7eVoYxVFvKuUmEUOxS7RFNmiossgJ33IEJWybVk3WaqzfbKzrHSUEJ6nyVrYpWNTytjFSU6
+ lfCmVCvhTKYUsCq9qsFAsCKnLyAs541WrexUX16pqlqAtfGWdSxadAhAqbzCpobVKUFJAU5KgCpSgpG9
+ AKM9BKCmbFZYFWYrTEEswEoUgE8IKYQnhOkkpiUycpk1Sk6ZOkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJS
+ ySSSSlJk6ZJSk6ZOkpdOEycJKWKBYjlAsSU1Xpmp3pmpKbFasBV61YCSl0kkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSU//9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6Sl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWcq9isOVexJTXcnamcnakpsMRggsRgkpdJJJJSkkk
+ klKTpk6SlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKUkkkkpSSSSSlwnKYJykpE9Vnqy9VnpK
+ YBGYghGYkpO1SUWqSSlwpKIUklKTFOmKSmJTJymSUpSUVJJS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSySSSSlJJJJKXSSSSUpJJJJSkk6SSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSk6ZJJSiFEhTCUIhTABSDoUXGEB9sJ4CGybAEJ9ypPyYVezKRpTatyIWfdloF2RKoW2Eo0psWZcqu
+ 68uVcglFrqJRUxILkwxi5aFWNKu1YgRtTk14R8Ffpw4WpViBW2Y4CXEpo048K6ysBFFUJRCHEpQan2JA
+ ogTbSjDFINRITQhamMJ06ZC1KTJ0yFqWSTwlCaSpZJKEkLUpKUkyapdJMkgpdOmSUgUukmSTlLpJkkFL
+ pJkklLpJkklLpJkklLpJkkVLpSkmSUqUtyiUySmW5KVFOElMgpAKIUwkpcBPCQKeUlLEKDlMlDcUlInu
+ Vd9kIliq2Sipi+6EB+QoWSqr5QUnOSm+1Ki6VHVOipvOyZVa26ULVQc0lTgoRveoB6k6sqPpFOtTYrth
+ WmXqg1hCK0FC1OgL1E3qqJSIKVqbHro1dyohpVmthQtTfZapm1V2NKdwKClrbVn2vlWLJVV7CUbUhB1V
+ ugoDairdNZCVqdLHcroMhUaBCusTSpFc2QsjKrW3YJCzshkogqcC1kFQa6FeuqVQ1FOtSRt8JG+UL0yk
+ Kylamwx8q5UJVSmsrTorStS4qlDspWi2vRQsrStTjWMhAJhaV1aoWVlG1IxbCIL0A1lSFZStSR1soDzK
+ N6ZTeiUrQharFZhMKSiNrIQtSUWKLrEthUSwpWpr2vlVjqVbfWVAVIWlegLYxgs+mpalDYQU3mKZUGKR
+ KCliEN7USUxQtTRtrVR1S1HtlANaCmrXWr1TYUG1qwxsIKZhKU6igpm1TUGqaCkT0ElGegEoKSsVpips
+ Kt1oJThIpBIpKWTEpEqJKSl5TJpTpqlJ0kklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKWSSSSUpMnTJKUnT
+ J0lLpwmThJSxQLEcoFiSmq9M1O9M1JTYrVgKvWrASUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//W69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlnKvYrDlXsSU13J2pnJ2pKbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSl
+ JJJJKUmTpklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlF
+ qkkpcKSiFJJSkxTpikpiUycpklKUlFSSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkydJJSkkkklKSSSSUukkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmToKXCRSC
+ ZyeFNe58LLyL4V3JdAWHlWqUBDG3JQDeSqr3yVOppcipNJcnbQXKzTjyr9WKgpz68OVdqwlo1Y4CttqA
+ TSVOezGhWG1wrRYFAtStSzAAjhAGimHIFSQoZCluTIWpiAiNUQFIJEqZpiU0piULSolMmlKULUunTBSC
+ FqVCUJ0kFMSmTpigpikkUyCl0kydJS6SSSeFKSTpJylkk6SClkk6SSlkk6SSlkk6SSlkk6ZFSk8JJBJS
+ oS2qYSSUjLU0IhUSkpinBTJJKZhyfchp0lMiVEp0ySkTmygPrlWiFEhJTQfTKA7GlahaFEsCSnIOKoHF
+ WwWBRNYRCnI+yp/sq1fSCf0gpwUOT9kTHEWv6YTGsJWpx/sicYy1TUEhUErU5gxk/wBmWn6QS9MJKc5u
+ MrFeOrIYERoCaSpCKVF9SuaKDgELS5r6UP7OtBzUwYnWhptxkZlEKyGhS0StTBjIRhooyluQtS7lVtbK
+ sEyolsoqc59EoRxZWr6UpxSlanJ+yJDEWx6QSNYStTmsxoVuuuEbYE8QlalDRQepFDKNqQPZKA7HlXQF
+ NrErU5v2ROMRawrCXphC1OYMVL7KtPYE20JWpzfsyX2daBaFEtCNqaPoJjQr+0J/TStDlnHUfs61TUom
+ pJLSZTCtVthTDIUgIQUyBhMXJiolBTIOUgUIKYQUyIlR2KYCcBBTAMUwE8JFBSxUUiUwQUkapqDURBSG
+ xVirNirOSUkYrdap1q5WglOEikEikpgVEqZCiQgpYKQTJwgpdJJJJSkkkklKTpk6SlJJJJKUkkkkpSSS
+ SSlkkkklKTJ0ySlJ0ydJS6cJk4SUsUCxHKBYkpqvTNTvTNSU2K1YCr1qwElLpJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ Ukkkkp//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmT
+ pKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZyr2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklK
+ SSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1W
+ ekpgEZiCEZiSk7VJRapJKXCkohSSUpMU6YpKYlMnKZJSlJRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklLpJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKTpk6CmQUX8KQTP4TwpzMs6Lnct2q6HMOhXN5h1VgBTTGpWliMlZQfBWph2I0h3cekQr7KgFSx
+ rBC0WGVFJTINhSlPCYhMSxJUSnITJFDEhNKkU0JhKlAqYUQEQBNJSvCSdRKbaliUxKRTFC1KSTJJWpkF
+ IKITgpWpmmlNKaUbUuSolIlNKKlkkkkVLp0wUklLJ0kk5SkkkkVKSSSQUpJJJJSkkkkVKSSSSUpJJJJS
+ ydJMUlLyluUSVGUlM9yaVGUpSUyTqMqQKSl4ShKUpSUpMUiVElFSiVAlIlRJSUouUS5MVEpKZbk4KHCk
+ EgpnKRKZRJUgKFFybcoFMErUlBUghBTCVqZKJKUpilamJckHpiFGELUlD0i5CThBTKUpSAUg1G1MZTFy
+ mWKJYlamO5OHJi1IBJSQFEAQgiApWpmAnUZTFyVqXJUS5RJTJWplKZIBPCNqYlQIRYUSErUwARGlRhJK
+ 1JQ5IuQ5SRUyLkxeoFMUkMi9R3KJSASSkBRAhNCM0JWplCgQpqJSUwKinKZC1LFNClCeELUxAUgE8JJK
+ XCdMkgpclRJTlQKCliUgmKcJKSsRUNiIglBYqzlZsVZyCmdauVqnWrlaSmwEimCclJTEpiFJMkpjCSdM
+ gpSdMnSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJJJJSkydMkpSdMnSUunCZOElLFAsRygWJKar0zU70z
+ UlNitWAq9asBJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlnKv
+ YrDlXsSU13J2pnJ2pKbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkkl
+ KTJ0ySlJJJJKUkkkkpcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlFqkkpcKSiFJJSkxTpikpiUycpklKU
+ lFSSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSS
+ lJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCchBSgYQ7HwncYVK+yFJFTVzLdCuczH6rUy7
+ eVg5LiSpwhr79VoYlmqzWtJK0cSso2p38SwrXpdKx8Ri2KQoypuNTkKLVIlRFLAqBUiVApFC0pwVAlNu
+ TCpMCpSghymCmFKRMkEkFLFRKkmKClkydMkpdPKikjSmUppTJIqVKSSScpScJQnARUoKSYJ0lKTJ0yKl
+ JJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSSlJinSSUxKjCnCUJKYQlClCUJKYp08JQkpSUp4ShJTElRKkQ
+ okJKYlRKkVAoqWKZIppSUunUZSlJTKVEpSnCdaGBCUIsJbUbUjhKVIhDKFqZSnCFKI1K1MtqiWooTEJW
+ pCQkFJyghakgRQEAFGaUrUz2pi1SBSJStSItQyEUqBStTBSBTQnhK1LymJTwmIRtSycJoThK1MgnUZTb
+ krUzSUAVIJKVCaEQBPCVqRQmhFIUCEbUwITEKRTI2pjCcBPCcBC1LgKYUQnlK1MiVAlIlQJStSiUkySF
+ qZhSAUQpBK1KUSpFRQtSpTqKdJSimKdMgpjCkAknASSlYFMqLVIoKa9irO5VmxVnJKZ1q5WqbFcrSUmB
+ SJTKJKCmUpSoSpJKXTJJJKUnTJ0lKSSSSUpOmTpKUkkkkpSSSSSlJJJJKWSSSSUpMnTJKUnTJ0lLpwmT
+ hJSxQLEcoFiSmq9M1O9M1JTYrVgKvWrASUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//R69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlnKvYrDlXsSU13J2pnJ2pKbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUmT
+ pklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlFqkkpcKSi
+ FJJSkxTpikpiUycpklKUlFSSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSk
+ kkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJTIJyohPKCkVizsgFaTx
+ Kq2VypIqcHIrJWZZjEldM/GlBOFKnQ8+zEMrRxsaFotwoVivGhNKlseqFoViEJlcI7RCaVJAUxKaVElM
+ KlEpiUySYUsSokIsJbU0qRhEaltTwmqZgp5UAnlBS6SSZBSxSSSSUsknSTlKShOnARUtCUKUJ4RUxhKF
+ KEk5SySSZFSimSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dRlKUVLpJpTSkpkkoynlJT
+ JKEydJSxCiQpqJSUjIQyEUoZSUjKgSiFDKSlpTSkmSUzBUwhhTBRUlCRUAU8pKWIQyEVRISUihTaFLal
+ CSmQKRKjKUoKWKhCIlCSmACkDCltUSkpmHJ9yFKcFJTMqMJwnSUxSTlNKSl0yaUpSUpJKU6KmJUVMhRI
+ SUsEVqgAptSUkCeVGUxckpclRJUS5NKKFFMnSSUpOmToKXTJJJKWKYp0oSUxhJShMUlKBUpQ5SlJSSUl
+ EFSCClJJJikpeUyaUpSSyThRThJSZqkVBqkUlILFWKsWIBQUzrVtgVasK2wJKZFRKmQoEJKWCmFEBTAQ
+ UpMnSRUsnTJ0lKSSSSUpOmTpKUkkkkpSSSSSlJJJJKWSSSSUpMnTJKUnTJ0lLpwmThJSxQLEcoFiSmq9
+ M1O9M1JTYrVgKvWrASUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUukmSSUukmSSUukkkkpSSSSSlJJJJKUkkkkpSSS
+ dJTFyr2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkklKSSSS
+ UpJJJJSkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJKXCkohSSUpMU6YpKYlM
+ nKZJSlJRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukmSSUpJJJJSkkkklKSSSSUpJJJJSkkyS
+ Sl06inSUvKSZJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSliFEtlTSTgaUj9NL0gip07iQi9
+ IJemiymS4lI9qlCkmQtS0KJCmlCFqRwnAU4ShBKwClCSSFKVCiQpJkKUxhOnTIcKlJJJJcKlJk6SXCpZ
+ OkkjwqUnSSRpK6dRSlKlMpSlRlJFS6ZJJJSySSSCFJJJJKUkkkkpSZOmSUpJJJJSkkkySl0pTJJKXlKU
+ ySSl0kydFSySdMkpScJJJKXTymSSUvKiSkSokpKWJUCU5KgUlMSoFTKiQkpglClCUJKWCklCUIqVKeUy
+ dJS4KkoJ0lMlEpSmSUpMnSQUuFIKKUpKZlQKeVEpKYlIJ4SSUyBTyoSnlJS5KiUpSSUskkkkpdOmSSUu
+ mSSRUoKQKinSUyJUCUpSSUsnCZOkhdJJJC1KSSSStSpSSSStSk6ZOlalKJUkyVqYEJQpwlCSmICkEoTo
+ WpRUSnTFJKySScJKXCkAmCkElM2pykE5SUgegEI70EpKSVhW2BVa1bYkpJCgQiJiElMAE6dMkpSZOmSU
+ snSSSUpJJJJSk6ZJJS6SZJJS6SZJJS6SZJJSkkkklKTJ0ySlJ0ydJS6cJk4SUsUCxHKBYkpqvTNTvTNS
+ U2K1YCr1qwElLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUnTJ0lMXKvY
+ rDlXsSU13J2pnJ2pKbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklK
+ TJ0ySlJJJJKUkkkkpcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlFqkkpcKSiFJJSkxTpikpiUycpklKUl
+ FSSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsknSSUskkkkp
+ SSSSSlJJJJKXSSSSUpJJJJSkkkklKTpJJKUkkkkpSSSSSlJJJklMklFJFTJMmSSUukmSSUukmSSUukmT
+ pKUlKZJJS8pJkklLpJk6SlJJJIqUkkkkpSSSSSlJJJJJWTpJJKUmTpJKUkkkkpSZOmQQpJJJBSkk6SSl
+ kk6SSlkk8JQkpikpQmhJSyZShKElMYShShKElLJ08JIqWTJ0klLJ0kklKSSSSUsVEqaiQkpGQokIpCiQ
+ kpGQmhEhKElItqUIu1LakpFCUIm1LaipHCUIm1LakpGlCntShJSOElOEoSUwSUoShBTFJShNCSmKdPCU
+ JKWSTwlCCmKUKcJQkpglCnCUJKYQnhShPtRUwShT2pbUlMIShT2p9qSkcJQibUtqKkcJQibUtqSkcJ4U
+ 9qUIIRwlCnCUJqmMJoU4ShJTCE8KUJQkpjCUKUJQkpjCUKUJQkpaEoTwnhJTGE0KcJQklhCaFOE0JKYp
+ QpQlCSlgphMApAJKZBOUgmKSkL0Eoz0ApKTMVqtVGK1WkpOEimCRSUsmSTJKUkkkipSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJSk6ZOkpdOEycJKWKBYjlAsSU1Xpmp3pmpKbFasBV61YCSl0kk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSU//9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUnTJ0lMXKvYrDlXsSU13J2pnJ2p
+ KbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkk
+ pcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlFqkkpcKSiFJJSkxTpikpiUycpklKUlFSSUumTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSl0kkklKSSSS
+ UpJJJJSkk6ZJS6ZOmSUpJJJJSkkkklKTpk6BUsknSTLUsknSRtSySdJFSkydJOUsknSRUpJJJFSySdJO
+ pSydJMkpdJMkkpdJMkkldJMnSUpJMkkpdJMkgpdJJJBSkkySSl0kkkEKSSSQUpOkkkpSSSSSlJJJIqUk
+ kkkpZJOkkpZJOkkpSZOmSUpMkkkpSSSSSl0kkklKTQnSRUxhNCklCSmMJQpQlCSmMJQpwnhJSPaltRIS
+ hJSPaltRIShJSLaltRIShJSLam2o0JoSUi2pbUWE0IKRbUtqLCW1JSHaltRtqbakpFtT7UTanDUlI9qW
+ 1F2p4SUh2pbUaEtqSkO1PtRYShJSLaltRYShFSLan2okJQkpHtS2okJQkpHtS2okJQipHtTQiQmhNKke
+ 1LaiQlCahHtS2okJQkpHtShEhNCKmEJQpwlCSmEJQpwlCCWEJQpwlCKmEJQpwlCSmEJbUSEoSUi2pbUW
+ E0JKRwnAUoTgJKWASIUoTOSU1noBVixAKSmbFbrVVitVpKTBMU4SKSmKZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJ0ydJS6cJk4SUsUCxHKBYkpqvTNTvTNSU2K1YCr1qwElLpJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkp/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUnTJ0lMXKvYrDlXsSU13J2pnJ2p
+ KbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkk
+ pcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlFqkkpcKSiFJJSkxTpikpiUycpklKUlFSSUumTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklLpk6ZJSkkkklKTJJJKUkmSlJS8p5UZSlNKmSUqEp5TaUylKVCUpRUzlKVCUpRUzlKVCUpRUzlK
+ VCU8pwUylKVCUpRtTOUlCUpTrUzTSoynlK1MklGUpStS6SaUpStK6dRlKUlLylKaUpStS8p1GUpQUySU
+ ZSlBTJJRlKUlMpSUZTyghkkoylKSmUpSoylKSmUpSoylKSmUpSoylKSmUpSoylKSmUpKMppSUzSlQlKU
+ lMpSlRlNKSmUpSoylKSmUpKMqQSUunTBOkpSSSSKlJkkklKTqMpSkpknlQlKUlM5SlD3JbklJJSlD3Jb
+ klJJSlD3JbklJElDcluSUzTKO5LcgpkkoynlJS6SaUpSUunUZSlJTNJQ3JbklM0lDcluSUzTKO5NuSUz
+ lKVDcm3IqSSmlQ3JbklM5SlQ3JtySkkpSh7ktyKmcpSobkpTSpmkoylKCGSSjKUpKZJKMpSkpdJRlKUl
+ MklGUpSSySUZSlJTJJQlKUlJAnUAU4KSmSZKVElJS6SjKUpKZqLilKi4pKQ2FVyUawoBKKkrCrdapMKt
+ 1lJKcJFMEikpSZJJJSkkkkEKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKUnTJ0lLpwmT
+ hJSxQLEcoFiSmq9M1O9M1JTYrVgKvWrASUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//W69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKU
+ kkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSSSlJk
+ 6ZJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJKXCko
+ hSSUpMU6YpKYlMnKZJSlJRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKWS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpJKWSSSSUpJJMkpSSSZJSkkyaUlLpSmlNKSl5TSmJUSUC
+ plKUqEpSgpnKUqEpSkpnKUqEpSipnKUqEpSkpnKUqEpSipnKUqEpSipnKUqEpSipnKeUOU8pJZylKhKU
+ pKZylKhKUpKZylKhKUpKZylKhKUpKZylKhKUoKZylKhKUpKZylKhKUpKSSlKhKUpKZylKhKUpIZylKhK
+ UpKZylKhKUpKZymlQlKUlM5SlQlNKSkkpShylKKmcpSoSlKSmcpSoSlKSmcp5Q5TgpKSAqQQwVMJKZBS
+ UQpJKUkkmKSliUxKRUSUlLymlRJTSipnKYuUJTEpKZFybcoEppQUk3JbkOUpSUl3JbkKUpSUl3JbkOUp
+ SUl3JbkKUpQUl3J9yFKUpKS7ktyFKeUFJNyW5DlNKSku5NuQpSlJSXcluQpSlFSXcm3IcpSkpJuS3Icp
+ SipJuS3IcpSkpnuS3KEpSkpnuSlDlKUlJNyfchSnlJSTcn3IUpSgpLuS3IUpSkpLuTbkOUpSUk3JbkOU
+ pSUk3JbkOUpSUk3JpUJSlJTOUpQ5SlJSUOUg5BlPKSku5MXIcpSkpnuTyhykCkpLKi4pgUxKSkNhQCUZ
+ 6AUkpmFW61TrVytJSYJymCdJSyZOkkpZOkkghSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6
+ ZJSk6ZOkpdOEycJKWKBYjlAsSU1Xpmp3pmpKbFasBV61YCSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//1+vS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UukkkkpSSSSSlJJJJKUkkkkpSdMnSUxcq9isOVexJTXcnamcnakpsMRggsRgkpdJJJJSkkkklKTpk6Sl
+ JJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKUkkkkpSSSSSlwnKYJykpE9Vnqy9VnpKYBGYghGYk
+ pO1SUWqSSlwpKIUklKTFOmKSmJTJymSUpSUVJJS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJK
+ UkkkkpSSSSSlJk6SSlkk6ZJSkkkklKSSSSUpJJJJS6ZOkkpSSSSSlkkkklKTJJJKWTJ1EpKUmlIpikpU
+ pSmTJKUSmJSTFJSpTJJJUpeUkySVKUnTJJUpdJMkgpeUpTJJKXlKVFOlal5TJJJWpeU0pkkrSvKUpkkr
+ UvKUpk6VqVKUpJkrUvKUpkkbUvKUpkkrUvKUpkkrUvKUpkkVMpSlRTpIZSlKinSUvKUpkySmUpkySSl5
+ SlMkkpUpJkklLylKZJFSpSlMkkpeUpTJJKZAqQUApBJTMKYUApBJSQJwohSCSl1Ep0xRUxKgSpFQKSli
+ UxKRUSkpUpiU0pJKUmSSQUpJJJJS6SSSClJJJJKUkkkkpdJMkkpdKUySCl5TSkkkpSSZJJS6SSSSlJJJ
+ IqUkkkkpSdJJJSkkkklKSTpIqWSTpklLJJJIKUkkkkpSSSSSlJJJJKUklCUJKUklCUIqUklCUJKUknTJ
+ KVKUpJJKUpBRUgkpkEinASISU13oJCO8IJCSUlYVysKpWrlaSkoCeE4SKSmMJJ0klLJJJk1CkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJ0ydJS6cJk4SUsUCxHKBYkpqvTNTvTNSU2K1YCr1qw
+ ElLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkp//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdyd
+ qZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkydMkpSSSSS
+ lJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJKXCkohSSUpMU6YpKYlMnKZJSlJRUklLpk6ZJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUukkkk
+ pSSZJJSkkkklLJinTQkpYqKlCYhJTEpinKiUlUpJRJTFySqZFMVHelKIVSk6ZKU61UySUNybelaqSJIf
+ qJb0LVRSJIe9LemqopEyhvTymqorpJJQgqlJ0ySCl0lGUpSSukkkkpSdRlLckqmSZNuSlJVLpJJJyqUm
+ TwlCKqWSUoTQkpZOlCSKlJwkmlFDIJ0PfCXqIqpImUQ+U6SlJJ4SSUsknSSUsknShJTFJShMkpaEk6SS
+ mKZOUySlwpBRCkElMwphQCmCkpmFIKIUkVKTFOmKSmBUCplQKSmBUSpFRKSlkydMgpSSSSClJJJJKXST
+ JJKXSSSSUpJJJBS6SSSSlJJJJKUmTpJKWSTpJKWTpJJKUkkkkpSSZJFS6SZJJS6SZJJS6eVFOkpdJMnR
+ UpJJJJSkkkklKShJOkpaEoTpklKSSTpKWSTpJKWShOkkpZMpJklLJJ0klKAThMFIJKZAJFOEikprvQSj
+ vQSklJWrdaqMVutJScJFMEiUlKTJSmSUpOmSQQpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSky
+ dMkpSdMnSUunCZOElLFAsRygWJKar0zU70zUlNitWAq9asBJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Hr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klLpJJJKUkkkkpSSSSSlJJJJKUnTJ0lMXKvYrDlXsSU13J2pnJ2pKbDEYILEYJKXSSSSUpJJJJSk6ZOk
+ pSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpcJymCcpKRPVZ6svVZ6SmARmIIRm
+ JKTtUlFqkkpcKSiFJJSkxTpikpiUycpklKUlFSSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSS
+ SlJJJJKUkkmSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJSkkkySFJJJ4SUsknhJJcpKEk8pJpYhQIRCUNxSX
+ AMColOSoEpLxFg8wgOshEeqr0k8KQWIrXSqYKsMKBKuFsyhudCfcg2OTeJHCxfZCEbkOxyruelxMkYAt
+ v104uVEPUwULZfaDc9ZN6yrEqBchaPbDebajsfKzWOVupyVqOMN1pUkJhU9yFsUoUuSoFyi56A+1K2Ok
+ xemD1UNqQtStVN4OU5VVliLuStVLvdCCbVG16qPtRZIwtuttRmvlZbLVartRZPbbwKUoAsS9RFHAGyCp
+ BVRapi1FYYNiEoUGvlEBlFry0YkKMIhUCkx2sUNxhEKFYhbLEW132QhesmtVUkyla/hdGu2VaY6Vl1OV
+ 6p6VoptJFRDk6NopZJPCaErRTIJ1EKQRtVLEKJU1EhK1UxlMSmcYQ3PRVSQlNKAbE4sRVTYBUggtephy
+ SqSgqQKECphJVJQUQIbUQIKpdMU6YpLUZUCpOUCkhiUxTpJWtYQkpQmhJNsUk6SSVk6SSSlJJJJKUkkk
+ kpSSSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySdJJSkkkklKSSSSUpJJJJSkkkkkLpJkklLpJk
+ kVLpJkkFLykmSSUunUU6Kl0kySCl0kySSV0ySSSlkkkySmQUgoBTCSkgSISCcpKQPCAQrD0ApKZMVpiq
+ sVpiSkwKYpJJKUmSTpKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lLJJ0klLJJ0ySlJk6SSlJJJJKXTh
+ MnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//S69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJ
+ JJKUkkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSS
+ SlJk6ZJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJK
+ XCkohSSUpMU6YpKYlMnKZJSlJRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJk6
+ ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCoTwkE6SloTFSTFJcGKUpJklwWJQ3FTIQnBJeGJKaUxS
+ SXgsHKu8Kw4oDykutFCI0whkpAppUn3oT3Ji5Ce5MRSOwqu4oj3Ku5yDNAMwjNVUPRW2JMycqBCbemLk
+ FUzYrNZVQORmPSRTea5OXIDHInKTDMMHvVV71Ze1VbGoMFIS9O16gQkAkmm3W9WA9UWmEUPRVTOxyp2F
+ WSZQnMlFliELSrFb0P01ICEWamyHpF6EFOJRWkK9RSbYoFicMRYyG3XYrbHKhWIVphRasw2JUSmBSRYR
+ FSg8KaYprPENK1iqurWk8KtY1Be1W6KxW+FXeYTNeitdNj5R26qjS6VerRQzATEKag4pIYynBUCUgUVJ
+ Qk5MCmcUVIbCqj3qzaVRtKKljYkLVWc5M1ySXRY9Ha5UK3K3WUlNlpRWoTEZqSEjQiBRaFMJKUolSKg5
+ BajcVAqTlApLSpOoqQSWqTFOmKSmJTJymRXKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSZJC6SZJJS6SZJJS6SZJJS6SZJJS6SSSSlJJJJKUkkk
+ kldJMkkpSZOmSUuFMKAUwkpIE5TBOUlIXoBR3oBSUzYrLFWYrLElJUkkklLJ0ydJSkkkkFKSSSSUpJJJ
+ JSkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWG
+ pKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUnTJ0lMXKvYrDlXsSU1
+ 3J2pnJ2pKbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKTJ0ySlJJ
+ JJKUkkkkpcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlFqkkpcKSiFJJSkxTpikpiUycpklKUlFSSUumTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6Z
+ JNKSF5TyoylKSmUpk0pJLgulCQUgkuDAhDc1HIUHBJcGsQokIxCG4JLkD1VeVasVOxJcGEqQQ0RoTSvC
+ 5CC9WYQntUZXgNJ6ruVx7VXc1JniEMpw5SLUgxBkpcOUwUmsRAxJVMQitKbapNCCqbNatMbKq1BXq0mC
+ bBzFVsYr7gq1qTC0HMUdiO5RhJdSKIThTLU21FVLtRA1QGiffCTJEKLQolM6xDL0WWk7UZoVVjlYY5EL
+ SEuxOGKIepB6csIZhqIAoNMozQk1phcKQSATwkxUsokqRUCUlwYuKrWlFe5VrHJJatpQ2nVPYZUGjVJD
+ foK0qjosugwtCt2iKGyShOKfcolFDFOE8JQkpUpiUxUZRUxfqqlrVcIlBsakpzXhQAVmxqCGopTVK7WF
+ UqCu1hJSdgR2oLUZqSkwUgohSCSFFQciFQcEFpQuQyiuCgQktYpSlCSSFSlKaU0pKUUkkkVKSSSSUpJJ
+ JJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmKSFkk
+ kklKTpkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkldJJJJSkkkklKCmFAKYSUkCcpgnKSkL0Ao70ApKZsVl
+ irMVliSkqSSSSlk6ZOkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04
+ TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//U69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJ
+ JJKUkkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSS
+ SlJk6ZJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJK
+ XCkohSSUpMU6YpKYlMnKZJSlJRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKUkmTpIUkkkkpSZO
+ kklZJJJJKkkkklKSSSSQpJJJJSkydMkpUppTJJIUnTKUJKWTpQkklcKQKgnlJcyJUHFOShuKS4LFDKkS
+ mKS9A8KpY1XnBAe1JIaW1TapOaoEwmlkCUFQcobkxcoyyBG8Ku5Ge5V3FBmiqFNrUMFHYkyWyDE8KSg4
+ pItRThCLlJpQVbbrKtscqDHKw1yTDNO56rWPSe9VbHpMS5emDkAuTtKSW0NU8KDEYBFKJwhBe5WHhVnh
+ Jliic5MCkQptaiyMmKw0obWogCKFy5IPUCmCKwt2oyrlYVGlXqyk1phLCgVMlDcUWKliUJxUiUJ7kkob
+ HKq9yNYVWIlJLAiVJrERrJRRWihizRWWPVYiEg9JDoNdKKBKp1PVxhRQzATEKUpikhEQowiEJBqKmICH
+ YEeEKxJLQtCDCPaUCUVJqwrjFTrKtsKSWw1FagtRWpITBTCG1ECSF1EhSTFJCIhQIRSoFBajIUSEQqJC
+ SKRlMpkJoSQskkkipSSSSSlJJ0klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKTJ0ySFkk6SSlkk6SSlJJJJKUkkkkpSSSSSlJJJJKUkknSSpJJJJSkkkySlwphQC
+ mElJAnKYJykpC9AKO9AKSmbFZYqzFZYkpKkkkkpZOmTpKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJS
+ kkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkp//1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSdMnSUxcq9isOVexJTXcnamcnakpsMRggsRgkpdJ
+ JJJSkkkklKTpk6SlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKUkkkkpSSSSSlwnKYJykpE9Vn
+ qy9VnpKYBGYghGYkpO1SUWqSSlwpKIUklKTFOmKSmJTJymSUpSUVJJS6ZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKTpk6SFJJJJKUkkkklZJJJJKkkkklKSSSSUpJJJJCkydKElMYShThKEkMQFKEoTpKWhMVJ
+ MUksUk8JQkuDEobkUhDcElwRJ0iFEpLlEoLypuKrvekuDB6C5TLpUeU2TIEZUCUUtQnBRMgROKC5GIUd
+ kpMsUQCOwqOyE40SXpZUSmBUwJSUhKcIhYoRCCk1astCrVq7WJSYpIntVaxq0XMVaxiTG0dimxiLsRGN
+ SSpjEcNUmNU4RU13tVV7VeeFVekyxa+1SaE6cJMjIKUqKSKFEJ2tSCI0IrClqCuMKqMR2uRYJNiVBybe
+ hvsSYmLnID3prLEAvlFK7jKZrJTtEqzXWihiytFLEZtcJy1JTQsagHRXrGKq9kIrWVboVtlioAwiNsSU
+ 6IenDpVJtqOx8pIbCkAhgqYKSlFV7SrBVa1FLRtKBKNaEGElJqyrbCqlYVutFTYajNQWozUlJWogUGqY
+ SQuokqSg4pIYkoZKdxQyUFrKUyjKeUkKTFOkUVrFMnSSUsknSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ STpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpkkLJJ0klLJJ0klLJJ0klLJ0kklKSS
+ SSUpJJJJSkkk6SVk6SSSlkydMkpcKYUAphJSQJymCcpKQvQCjvQCkpmxWWKsxWWJKSpJJJKWTpk6SlJJ
+ JIKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5QLElNV6i1Seo
+ tSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSdMnSUxc
+ q9isOVexJTXcnamcnakpsMRggsRgkpdJJJJSkkkklKTpk6SlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSS
+ SUpMnTJKUkkkkpSSSSSlwnKYJykpE9Vnqy9VnpKYBGYghGYkpO1SUWqSSlwpKIUklKTFOmKSmJTJymSU
+ pSUVJJS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SFJJJJKUkkkklZJJJJKkkkklKSSSSUpMn
+ TJIXUgoqQSQvCUJSlKSlkkkySl0kySSV08JgpBJcGJCG4IpQ3JJQkIZRChuSXoLCqljlasVOxJLDcitE
+ oLQrNbU0ptYtQHhXSzRAexMTxNTaiNrUwxGYxJkE2ua0JzIWgWID60l/G1WtVhjEzWI7WoK40L2Ku4Qr
+ zwqr2pUrjWqV+pUqwrtSTHKSZ3Cq2FWHHRVLSks4kRcpscglSYgribrCiqvWFYARTxILCqdhV20KlY1F
+ ljJECitQgEZgSX8bMNSIUwkUUcSNOHJiopLTJO1yIHqu1TRYJSZuthAfemfKrPBSWcTN1sp2GUJrCVZq
+ rRXAp6mq9WxAqZCts0RTbINTEKUqJSQicyVXsYrpCDY1JDmWCELdCt2sVYsSRbNjlarKqMarLElNppRQ
+ VXaUUFFTMlBsCMoOCSmhY1B2K85kofppJRsarLAmaxFDUks2orUMIjSihM1ECE0ogSQuUNyIUNwSQgcU
+ MlFcEIhBC0qQKhCkElrIJJBJFCySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSdJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJIUkkkkpSSSZJS6SSSSlJJJJKUkkkkpSdMnSUpJJJJKkk
+ kklLJk6ZJS4UwoBTCSkgTlME5SUhegFHegFJTNissVZissSUlSSSSUsnTJ0lKSSSQUpJJJJSkkkklKSS
+ SSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61Yakpkm
+ TpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSU//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdydqZyd
+ qSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJ
+ JKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJKXCkohSSUpMU6YpKYlMnKZJSlJRUklLpk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpOmTpIUkkkkpSSSSSVkkkkkqSSTpKWSSSSUpMnSSQpKUkySF5TyoSlK
+ SmcpKMp5SUumSlMkpeU8qKUpLgyJQnFSJQykuYkqBUimhJcELwqj2K84ILmJLmq1mqtVsTBiMwQgUL7N
+ EF7FZUHBMRbU2IrWqW1OAkuBVtQ3Vo4CRCTJbV9NSiEYtUC1JFoXBBLJVotUdiCrQsYrDBCcMUwElpLB
+ yrvbKtEIZYkstqemisrRRWitYlSbYsZCKGqQCdJNoXslVn1K8QoOaivBc81QkGwrbmIZYkvtCkp7E4Yi
+ i0UJBiOGKQYkglCGKexFDFLaiwyarq5UPQlXgxSDEljSZjqwymFYDAp7Ul4QhsKYKRCgUVyQOTgoYUwU
+ kMpUHap5TJIQPZKA6pXYUSxJDTFcKbQjFibaipTQihRAUwkpcJEJ0kksdqbYigJ4SSiDE8KaiUlLKQKi
+ pAJKStKMEFqKEkM1BwUlFySELghEIzkIpLWMJwEyeUkLpJSkihYpk6aElKSShJJSkkkklKSSSSUpOmTp
+ KWSTpJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkmSSUukmTpKUkkmSUumSSSQsknSSUsknSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkk6SVk6SSSlkydMkpcKYUApBJSUJymCcpKQvQCjvQCkpmxWWKqxWmJKSpJJ
+ JKWTpk6SlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5Q
+ LElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/Q69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSS
+ SSlJ0ydJTFyr2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkk
+ lKSSSSUpJJJJSkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJKXCkohSSUpMU6
+ YpKYlMnKZJSlJRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSSukkkklSSSS
+ SlJJJJKUkkkkhRUSpJikhimUk0JKUnSSSUpJJJJSySSSSVlEhSUSkuDEhRKmVEpLgxKgQplRKS5jCcJJ
+ klpLKUxKZOgx2qEoSSQXArp0ySSbUmITp0lWw2pbVNKElcTGEoUkkqWksYTbVNJKkWw2pwFJMlSrVKUp
+ JJLgVJFJKEl4LEhRLEWEoSTaHYlsRoShFVogxPtRIShJaSwhKFOEoRYyWMJwnhJJba4KUpkkmQFRUYUk
+ kl7EBOkkkhdMkkki10kkkkLEJtqkkkpiAnTpJKUkkkkplKUpkxSSuSoykUySmQUwFAIjUVM2hECgFMIK
+ XUSVIqBSWo3FCKI5DKKGJKUpikktZAp1EBSSUpJOkklSZOkklZJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpMnSSUsknSSUsknTJKUkkkkpSSSdJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkk6SSVkk6ZJSyZOmSUupBRCkElJAnKYJykpC9AKO9AKSmbFaYqrFaYkpKkkExSUpOmTpKUkkkgpS
+ SSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZ
+ rVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSdMnSUxcq9is
+ OVexJTXcnamcnakpsMRggsRgkpdJJJJSkkkklKTpk6SlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpM
+ nTJKUkkkkpSSSSSlwnKYJykpE9Vnqy9VnpKYBGYghGYkpO1SUWqSSlwpKIUklKTFOmKSmJTJymSUpSUV
+ JJS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkkkrpJJJJUkkkkpSSSSSlJJJJIUk
+ kkkhaEoTpJKWhJOmSUpMnSSUsmKdMkpZRKkolJcGJUSpFRKS4MSokpyopLlSkkkktKk6SSSylJJJJUlS
+ dMnSpKkkkkKQukkklSlJJJkqQpOmSSpC6SSSSaUkkkkuCkkkkqXBSdMkjSV0kySVIXSTJJIK6ZOmSWFd
+ MnTJLaUkkkkvCkkySS610kySSLXSTJ0kWpJJMkq10kySSF0kySSV0kySSl0ikkkm2JSSKSSrZBTaUMIj
+ UlJQVMIYUwkpcqJTlRKK1gUMqZUCkhiUoSSSWrgJ0wTpKUmSSSXKSSTJJXSTJJKXSTJJKXSTJJKUkkkk
+ pSSSSSlJ0ySSl0kkklKSSSSUpJJJJSkkkySl0kySSl0kySSl0kySSl0kySSF0kySSl0kySSl0kySSl0k
+ ySSl0kydJSkkkklKTpkkkqSSTpKYpJ0klKCkFEKYSUzCcpBOUlIHoBVh6AUlMmKyxVmKyxJSRJOEySlJ
+ 0ydJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSm
+ q9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Lr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJ
+ KUnTJ0lMXKvYrDlXsSU13J2pnJ2pKbDEYILEYJKXSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUmTpklKSSSSU
+ pJJJJSkkkklKTJ0ySlJJJJKUkkkkpcJymCcpKRPVZ6svVZ6SmARmIIRmJKTtUlFqkkpcKSiFJJSkxTpi
+ kpiUycpklKUlFSSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkKSSSSUpJJJJK6SSSSVJJJJK
+ UkkkkpSSSSSFJJJJIUkmSSQpJJJJSkkkySlJk6ZJKyiVIpiklgVEqZUSkuDAqJCmQmISXMElKEyKFJJJ
+ JIUnSSSUpJJOkhZOkkkpSSSSSFJJJJKWSTpJKUkkkkkKSTJJJXSTJJJXSTJJJXSTJJKXSTJJIXSTJJLS
+ ukmSSQukmSSSpJJJJSkkkklKSSSSWqTpkkFLpkkkkKSSTJJUnTJ0lLpJJILlkydKElKCIFABEASUzCmF
+ ABTCKFFQKmVEorUZQyiFDKSFkkySSGUp1FOkoKSTJJLwpJJJJKkkkklKSSSSUpJMkkpdJMkkpdMkkkpS
+ SSSSl0kySSl0kySSl0kySSl0kySSl0kySSl0ySSSlJJkklLpJJJIUkkkkpSSSSSlJ0ydJSkkkklKSSSS
+ UpJJJJSkkkkkrp0ydJSkydMkpcKQUQphJSQJymCcpKQPQCrD0ApKZMVlirMVliSkgSTpklLJ0kklKSSS
+ QUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Ra
+ kps1qw1V61YakpkmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJ0ydJTFyr
+ 2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJ
+ SkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJKXCkohSSUpMU6YpKYlMnKZJSl
+ JRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSSukkkklSSSSSlJJJJKUkkkk
+ hSSSSSFkk6ZJSkkkkkLJJ0klLJk6SSVlEqSYpJYlRKkUxSXMCmKkUxSSxTJymKSlkkkkVLpJk6SlJ0yS
+ S1dJJJJCkkkkkKSSSSSpJJJJKkkkySVJJJJJUkkkkpSSSSSVJJJJIUkkkkhSSSSSFJJJJKUknSSUpMnS
+ RUsnSSQQsknSSQsknTJIUkkkgpSSSSSVJJJJKXSSSlJKkkycIJZBTCgEQJIZhSCiFIIqUVEhTUCitRlD
+ KKUMpIYFMnKZJCk6ZOkoKSSSSXhSSSSSVkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6SSlkk6SSlk
+ k6SSlkk6SSlkk6SSlkk6ZJSkkkklKSSTpIUkknSUsknTJKUknTJKUkknSUsknSSUsknSSUsnSSSSpJJJ
+ JSk0pJpSUyCmEMFTBSUlCcqIKclJSJ6AUZ5QCUlJGKyxVWFWWJKShIpgkkpSdMkkpdJJJBSkkkklKSSS
+ SUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVXrVh
+ qSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSdMnSUxcq9isOVexJTXc
+ namcnakpsMRggsRgkpdJJJJSkkkklKTpk6SlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKUkkk
+ kpSSSSSlwnKYJykpE9Vnqy9VnpKYBGYghGYkpO1SUWqSSlwpKIUklKTFOmKSmJTJymSUpSUVJJS6ZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkkkrpJJJJUkkkkpSSSSSlJJJJIUkknSQsknS
+ SQskkkkpZJOmSUpMnTJKWTFOUxSXMSolSKiUkrFMnKZJKxUVJNCSWKSlCUIpWSTpQkgrJ0oTwktKySeE
+ klqySeEoSUskpQlCSWKSlCZJKyZShNCSVkk8JQklSSUJQkpSSUJQkpZJPCUJIUmTwlCCFkk8JQkpZOlC
+ UJKUkkkihSSUJIqUkkkkpSSSSCFJk6ZJCkkkkFKSSSSUsknTJJVKUpJkErynBUU4SSzCIEMKYSQkCmEM
+ KYRUuolOmKK1gVAqZUCkhgUykUySGKdKE8JKCySlCUJLwtCaFKEoSSxSTwlCSlkk8JQkpZMpQlCSmKSl
+ CUJKYpKUJQkpjCdPCUJKWSTwlCSlkk8JQkpZJPCSSlJk6SSlkk8JJKWSSSSUpJJKElKSSSSQpJJJJSkk
+ kklKSSTpKUkkkkpSSSSSlJJJJKUkkkklSZOkkpimUoTQkpQUwoBSCSkoTlRCcpKQvQSUV6CUlM2FWmFV
+ WKyxJSYJkgkkpSdMkkpdOmToKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXTh
+ MnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//V69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJ
+ JJKUkkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdydqZydqSmwxGCCxGCSl0kkklKSSSSUpOmTpKUkkkkpSSSS
+ SlJk6ZJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKXCcpgnKSkT1WerL1WekpgEZiCEZiSk7VJRapJK
+ XCkohSSUpMU6YpKYlMnKZJSlJRUklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSS
+ SSukkkklSSSSSlJJJJKUkkkkpSSSSSF0kyUpIXTJSmSQpJJJJSkydMkpZMU6SSWJUSpqJCSWJUSplRSS
+ tCUJ4TgJJYwlCnCUJKYQnhShPCSCWEJ4UoTwksJYQlCnCUJIthCUKcJQki2EJQpwlCSbYQlCnCUJLrYQ
+ mhEhLakm0cJQibUtqSrRwlCJtS2pKtHCUIm1Laki0cJQibUtqSrRwlCJtS2oKtHCUIm1LakhHCUIm1La
+ klHCUIm1LanBIRwlCJtS2pyUUJQi7U21BCOEoRNqW1JCOE0Im1LagpHCUIm1LagpHCUIm1LakpHCaEXa
+ m2pJRwmhF2ptqCUcJwFPan2pKYgKYCQapgJKUApBIBSARUxTFThMQihGQoEIpCiQktREJQiQmhJDCEoU
+ 4TwkoMITwpwlCS5hCaESEoSSjhKESEoSUjhKESEoSUjhKFOEoSUwhKFOEoSUwhKFOEoSUwhNCJCUJKRw
+ lCnCUJKYQlCnCUJKYQlCnCUJKYQlCnCUJKYQmhEhKElI4ShThPCSkcJQiQmhJTCEoU4TwkhHCUIkJQkp
+ HCUIkJbUlI4ShE2pbUVMIShT2pQgphCUKcJbUlMIShE2pQkpHCUIm1LaklHCUIkJoSUjhNCIQowkpiAp
+ AJQpAJKXATkJwEiElNd4QCrLwq5CSmTFZYq7ArLAkpIEk4ShJSydKE6Slk6SSClJJJJKUkkkkpSSSSSl
+ JJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSn//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkk6ZJSkkkklLpJk6SlJJJJKUkkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdydqZydiS
+ mwxGCExGCSlJJ0ySlJJJJKUnTJJKXSSSSUpJJMkpdMkkkpSSSSSlJJJJKUkkkkpSZOkkpZJJJJSkkkkl
+ LhOUwTlJSJ6rPVl6rPSUwCMxACMxJTYapKLVJJS4UlFOkpdMUkxSUsUydJJSykmTpKXTJ0ySlJJJI0pS
+ SSSClJJJIKUkkkipSSSSSlJJJJKUkkkjSlJJJJUpSSSSSlJJJIKUkkkhalJJJJWpSSSSVqUkkkipSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkjSlJJJJUpSSSSVKUkkklSlJJJJUpSS
+ SSVKUkkklSlJJJJUpSSSSVKUkkkgpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSClJJJ
+ JKUknSSUsknTJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSlJJJ
+ IqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkgpSSSSVqUkkklalJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSClJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSdJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lLJJ0yKFJJJ0lLJJ0kEqSSSSSpJJJJSkkkklKSSSSUpJJMi
+ hSSSSSFJk6SSFkk6ZJSkkkklKTJ0kkrJiFJNCCWBCaFOE0JJYwnAUoTgJKWhKFKEoSUxhKFKEoSQVoSh
+ OnRW0tCUJ0kkUtCUJ0klUtCUJ0kE0tCUJ0kk0tCeEk6SaWhKFJJJTGEoUkklUxhKFJMkiloShOkkqloS
+ hOkkqloShSSSRTGEoUkkksYShSTIgrgtCUJ0k60rQlCdJC0MYShSSStDGEoUkkkMIShTSQUwhKFNMgpj
+ CUKUJJJYwlCkkklhCUKaSSVgE4CdOElKATwklKKl4TEJSkktYkKJCkmStDGEoUkkrW0xhPCdJK00tCUJ
+ 06KWMJQnTpJYwlCdJK1LQlCdJK1LQlCdJK1LQmhSSStTGEoUkkrUxhKFJJK1MYShSSStTGEoUkkLUxhK
+ FJJK1MYTQppJWphCUKaSNqYQlCmklamEJQppoStTGE8J4TpKYwlCkkkhjCUKSSSmMJQpJJKYwlCkkkpj
+ CUKSSSmMJ4TpJKWhKFJJJLCExCmlCSkZCjCIQmhJTCE4CeE4CSlwEiFIJikprvVcqxYq5SUzYrLFVYrT
+ ElJQkkEklKTpk6SlkkkkFKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJ
+ SxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//X69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKSSSSUpJJJJSkkkklK
+ TpkklLpkkklLpJJJKYuQLEdyBYkprlOxMU7ElNliOEBiOElKSSSSUskkkkpSSSSSlJ0ydJSkydMkpZJJ
+ JJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhOmCdJSJ6qvVp6qvSUwCMxACOxJTYapqDVNJS6SSSS
+ lJkkklKSSSSUpJJJJS6ZOmRCl0ydJOUskkkmFSkkkk1SkkkklKSSSSUpJJJPCl0ySScpSSSSSlJJJJFS
+ kkklGVKSSSTVKSSSQUpJJJFSkkkk8KUkkkipSSSSClJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSIUpJJJOUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSTCpSSSSYpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSKlJJJJ
+ KUkkkkpSSSSSlJJJIqUkkkkhSSSSSlJJJJKUkkkkpSSSSSlJJJIJUkkkkpSSSSSVJJJJKUkkkkpSSSSS
+ FJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ dMkkkpSSSSSVJJJJIUkkkkpSSSSSlJJJJKUkkkkhSSSSSlJJJJKUkkkipSSSSSlJJJJJUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSapSSSSSlJJJ0lLJJ0ySlJJJIKUkkkkpSSdJJSySdJJSySdJJSySdMkpSSSSSlJJJJ
+ KUkknRUsknTJKUkkkkpSSSSSVJJJIKUkkkkpSSSSSlJJJJKUkkkihSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSFJJJJKUkkkkpSSSSClJJJJ4UpJJOnJWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSSSSKlJJJKMpUkkkgpdMkkkhSSSSSl0kkklKTJ0ySFJ
+ JJIqUkkkkpSSSSSlJJJ0lLJJJJJUkknSUsknSSUsknTJKUkkkkpSSSSSlJJJIqUkkkipSSSSSlJJJIKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSSlJJJJpUpJJJBSkkkklK
+ SSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSClJJJKQK
+ UkkkipSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKl
+ JJJJpUpJJJNUpJJOkpZJJJBSk6ZJJSkk6SClkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOmRUpJJJ
+ JSkkkkUqSSSSUukmToIWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKW
+ STpJKWSTpJKWSTpJKWSTpklKSSSSClJJJJ4UpJJJFSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSTSpSSSSapSSSdJSySdJJSySdJJSySdJJSySdJJSy
+ SdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySd
+ JJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdMkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJIKUkkkkpSSSSSlJJJJKUkkkipSSSSKlJJJJKUkkkkpSSSSSlJJJIKUknSSUskkkgpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSTJJKXSTJIqXSTJJKXSTJJKXSTJJK
+ XSTJJKXSTJJKXSTJIKXSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySdJJSySdMkpSSSS
+ SlJJJJKUmTpJKWSSSSUpJJJJSkkk6SlJJ0klLJJ0ySlJJJJKUkkkkpdMkkkldJJMkpdMkkklSdMnSUpJ
+ JJJSkkkkkKSSSSUpJJJJSkkkkkKSSSSUpJJJJSkpSSQSqUkkkkqSSSSQpJJJFCkkkkkKSSSRUpJJJJSk
+ ydMklSSSZJK6SZOklSdMnSUpKUkklKlJJJBCkydMkhSZOmQQpJJJJS6SSSKVJJJJKXSTJJKXSTJJKXSS
+ SSUpMnTJKUkkkgpSSSSSlJJJIqUkkkklSSdJJSySdMkpSSSSSlJJJJKUkkkkpSdMnRUskkknIUkkkgpS
+ ZOmSUpJJJJSk6ZOkpSSSSSlJJJJKUnTJ0lLJk6ZJSySdJJS6i5SUXJKa9irlWLFXKSmTFaYqrFaYkpME
+ kgkkpSdMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBY
+ jlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Dr0kkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklLpJJJKYuQLEdyBYkprlOxMU7ElNliOEBiOElKSSSSUskkkkpSSSSSlJ0ydJSkydMkpZJJJJS6SS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhOmCdJSJ6qvVp6qvSUjCOxACOxJTYapqDVNJS6SSSSlkkkkl
+ KSSSSUpJJJJS6ZOmRClJJJJylJJJJhUpJJJMUpJJJFSkkkklKSSSTwpSSSScpSSSSSlJJJIKUkkkmFSk
+ kkk1SkkkklKSSSSClJJJJ4UpJJJOUpOkkmqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6SSlkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSk
+ kkkrUpJJJK1KSSSStSkkkkrUpJJJG1KSSSStSkkkkrUpJJJK1KSSSStSkkkkt1KSSSS4VKSSSQpSkkkk
+ qUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSR4VKSSSSpSk
+ kkk1SkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSSpJJJJSkkkkkqS
+ SSSUpJJJJS6ZJJBCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUumSSSSpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSRQpJJJJSkkkklKSSSSUpJJJJSkk
+ kkkqSSSSUpJJJJSkkkklKSSSSUpJJJGlKSSSS4VKSSSS4VKSSSS4VKSSSS4VKSSSSpSkkkkqUpJJJKlK
+ SSSSpSkkkkqUpJJJKlKSSSS4VKSSSSpSkkkkuFSkkkkuFSkkkkuFSkkkkOFKkkkkuFSkkkkqUpJJJKlK
+ SSSRpCkkkkqUpJJJKlKSSSSpSkkkkqUpJJJLhUpJOklSlkk6SVIWSTpJUpZJOklwqWSTpkuFSkk6ZDZS
+ kkkkrSpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkk
+ rUpOmSStS6ZJOlalkkkkqtKkkkkuFS6SZJLhUumSSS4VLpk6ZLhQpJJJHhUpJJJLhQpJJJLhUpJJJKlK
+ SSSSpSkkkkqSpJJJKlKSSSSpSkkkkqUpJJJLhUpJJJClKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSpSkkkkuFSkkkkaUpJJJKlKSSSS
+ 4VKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkk6XCpZJOklSlkk6SXCpZJOklSlkk6SF
+ qWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SV
+ qWSTpJWpZOkklalkk6SW6lkkkk6lKSSSQpSkkkkqUpOmSS4VKSSSSpSkkkkOFCkkkkqUpJJJKlKSSSSp
+ KkkkkuFSkkkkeFSkkkkqUpJJJKlKSSSRpK6SZJLhUukmSQ4UKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqU
+ pJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkuFSkkkkqUpJJJC1KSSSStSkkk
+ kLUpJJJG1KSSSStS6SSZK1LpJJJWpSZOmStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkLU
+ pJJJHdSkkkkeFSkkkkuFSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkk
+ kkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqU
+ pJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJLhUpJJOlwqWSTpJcKlkk6SXCpZJOklwqWSTpJc
+ Klkk6SXCpZJOklwqWSTpJcKlkk6SXCpZJOklwqWSTpJcKlkk6SXCpZJOklwqWSTpJcKlkk6SXCpZJJJL
+ hUpJJJClKSSSS4VKSSSRpSkkkkuFSkkkkuFSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJLhUpJJJKlKSSSS4
+ VKSSSSpSkkkkOFSkkkkqUpJJJHhUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpJJ
+ JLhUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpJJOlwqUkkklSlJJJJUpSSSSVKUkkklSlJ
+ JJJUpSSSSVKUkkklSlJJJJUpSSSSVKUmTpkqUpJOmSpSkkkkqUpJJJKlLJJJJUpSSSSVKUnTJ0qUpJOk
+ lSlkk6ZKlKSSSS4UqSSSS4VKSSSS4VLpkkkqSpJJJKlKTpk6VKUkkklSlJJJJUhSSSSVKUkkklwqUkkk
+ lSFJJJJcKlJJJJUpSSSSXClSSSSHClSSSSPChSSSSXChSSSSXCpSSSSPChSSSSVKUmTpkuFKkydMlwpU
+ nTJ0uFKk6ZOlSlJJJJcKlJJJIcKFJk6ZLhUpMnSS4VqySSSXCpdJJOlwpWSTpJcKlkk6SXCpZJOmS4VK
+ SSSS4VKSSSS4VKSSSS4VKSSSS4VKSSSSpSkkkkuFKkkkkqUpJJJLhUpJJJLhUpJJJLhUpJJJLhUpOmSS
+ pSkkkkEKSSSSUpMnTJKUkkkkpSdMnSUpJJJJSkkkklKTpJJKWTJ0ySlk6SSSl1FykmckprWKuVYsVcpK
+ ZMVpiqsVpiSkwSSCSSlJ0ydJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSS
+ SSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0evSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lK
+ TJ0ySlkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoN
+ U0lLpJJJKWSSSSUpJJJJSkkkklLpk6ZEKUkkknKUkkkmFSkkkkxSkkkkVKSSSSUpJJJPClJJJJylJJJJ
+ KUkkkgpSSSSYVKSSSTVKSSSSUpJJJIKUkkknhSkkkk5S6SSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSBUpMnSTVLJ0kklKSSSSUpMnSSUs
+ knSSUsknSSUsknSSUsnSTJKUkkkkpdMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkknhS6ZOknqWTpk
+ kFLpJkklLpJkklLpJkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUukmSSUukmSSUukmSSUpJJJJSkkkklKS
+ SSTCpSSSSClJJJJKUkkkkpSSdMipSSSdJCySSSKlJJJJKUkkkkpSSSSSlJJJJJUkkkkpSSSSSVJJJIKU
+ kkkkpSSSSSlJJJJIUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJJUkkkkpSSSSSlJJJJKUkkkkhSSSSSlJJJJIUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSKVJJJJKUkkkgpSSSSSlJJJIqUkkknBSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSS
+ SSUpJJJJSk6ZJJS6SZJJS6SZJJS6SZJJS6SZJJSk6ZJJSkk6ZRyUpJJJMUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6ZEKUkkkpAlSSSScpSSSSSlJJJ
+ JKUkkkkhSSSSSlJJJJIUkkkkpSSSSSlJJJJKXSSSSSpJJJJSySSSSlJJJJKUkkkkpdMkkmlSkkkk1Skk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJOkkpZJOkkpZJOkkpZJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSTgpSSSSKlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnSTJKXSTJJKU
+ nTJJKXSTJ0CpSSSSiKlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSeFLJJJKRSkkkklKSSSSUpJJJJSkkkkFKSSSSQpJJJJSkkkklKSSSSSpJJJ
+ JSkkkkVKSSSSUpJJJJS6ZJJJKkkkklKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmQKlJJJKIqUkkkgpSSSSSl0kySSl0kySSlJJJJKXS
+ TJJKXSTJ0lKSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKUkkkkpdMkknBS6SZJSqUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTJ0y
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pdMnTJKUkkkgpSSSSSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSClJJJJKUknSRUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUskkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKTJJJKUkkkkpSSSSSlkkkklKSSSSUpOmTpKUkkkkpSdMnSUskkkklSSSSSlJJJJKUkkkkpSSSSSlJ0
+ ySSl0kySSl0kySSl0kySSl0kySSl0kySSF0kydJSkkkkkKSTJJLl0kySSlJ0ySSl0kySSF0kySSl0ySd
+ JSySdJJSySSSKlJk6SSVk6SSSVJ0kyCl0kkklKSSSSQpJMkkpSSSSCFk6SSKlJ0ySSl0ySSSl0kySSl0
+ ySdJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJIFSkkkkxC
+ kkkklKTJ0ySlJJJJKUnTJ0lKSSSSUpJJJJS6SSSSlKKkmSUskkkkpdM5SUXJKa1irlWLFXKSmTFaYqrF
+ aYkpMEkgkkpSdMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEyc
+ JKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0uvSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkk
+ kklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJ
+ KWSSSSUpJJJJSkkkklLpk6ZEKUkkknKUkkkmFSkkkkxSkkkkVKSSSQUpJJJSBSkkkk5SkkkkFKSSSSUp
+ JJJMKlJJJJqlJJJJKUkkkiFLpJk6eFKSTJIlSkkkkwqUkmToWpSSSSVqUkkklalJJJJWpSSSSVqUkkkl
+ alJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkkipdJMnRpSkkkyVKXSTJJKXST
+ JJKXSTJJKXSTJJKXSTJJUpdMknSpSySSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSNKUkkkgpd
+ JMklal0ySSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJ
+ WpSdMklal0ySSVqUkkknUpSSSSVKUkkklSlJJJ0qQskkklSlJJJJUpSSSSVKUkkklSlJJJI0pSSSdClL
+ J0ydGkrJJJJUpSSSdKkrJJJJUpSSSdKkrJJJ0qQskkkhSFJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkk
+ klSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUknSSpKkkySVJUkkklSFJJJJUp
+ SSSdKkLJJ0yVKUkkklSFJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkkjSlJJJJUlSSdMhSlJJJJUpSSS
+ SFqUkkklalJJJJWpSSSSVqUkkkhalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJI2pSSSSVqU
+ kkklalJJJJWpSSSSFqUkkklalJJJJWpSSSSVqUnTJJWpdJMklal0ySSVqUkkklalJJJJWpSSSSNqUkkk
+ lalJJJJWpSSSSVqXSTJJWpdJMklal0kySVqXTJJIKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKU
+ kkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkkklSSSSVpUkkklaFJJJJW
+ pSSSSVoUkkklalJJJI2hSSSSVqUkkklalJJJJWpSSSSVqUnTJJWpSSSSVpUkkklalJJJIWpSSSSKlJ0y
+ dGlLJJJJUpSSdJKlLJJ0kqUsknSSpSySdMlSlJJJJUpSSSSVKUkkklSlJJJ0qUsknSSpSySdJKlLJJ0k
+ qUskkklSl0ydMlSlJJJIFSkkkkLUukmSStS6SZJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkbUpJJJK1K
+ SSSStSkkkkrUpJJJK1KSSSStSk6ZJK1LpJkkrUpJJJBSkkkkqUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJKlKSSSSUpJJJG0qSSSStSkkkkrQpJJJK1KSSSQ
+ tSkkkkrQpJJJK1KSSSStSkkkkrUpJJJK1KSSSStKkkkkbUpJJJK0qSSSRtSkkkkrUpJJJC0KSSSStSkk
+ kkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrU
+ pJJJC1KSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSUpJJJJSkkkkqUpJJJKlKSSSSpSkkkkq
+ UpJJJKlKSSSSpSkkkkqUpJJJJSkkkkbUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSS
+ StSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSk
+ kkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkr
+ UpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJ
+ JK1KSSSStSkkkkLUpJJJK1KSSSRtSkkkkrUpJJJC1KSSSStSkkkkrUpJJJK1KSSSStSkkkkbUpJJJK1K
+ SSSQtSkkkkrUpJJJG1KTpk6VqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalkkkkrUpJJJ
+ K1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1LpJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJ
+ JJJWpSZOmStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KTJ0yVqUkkklalJ0ydK1KSSSStSkkkkrUpJJJ
+ K1KSSSStKkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStCkkkkrUpJJJK1KS
+ SSQtSkkkkrSpJJJK1KSSSRtCkkkkrUpOmSRtS6SZOlalkkkkrUpJJJK0qSSSStSkkkkLUpOmTpWpSSSS
+ VqUmSSStCkkkkLUpJJJK1KTpkkbUukmSStS6SZJK1LpkkkrUpJJJK1KSSSStSkkkklKSSSStSkkkkrUp
+ JJJK0qSSSStSkkkkrUpJJJC1KSSSStSkkkkbUpOmToWpZJJJJCkkkklKTJ0ySlJJJJKUnTJ0lKSSSSUp
+ JJJJS6SSSSlJk6YpKWTpk6Sl1FykouSU1rFXKs2KsUlMmK0xVWK0xJSYJJBJJSk6ZOkpZJJJJSkkkklK
+ SSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVX
+ rVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSmLkCxHcgWJKa
+ 5TsTFOxJTZYjhAYjhJSkkkklLJJJJKUkkkkpSdMnSUpMnTJKWSSSSUukkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJk6ZJS4TpgnSUieqr1aeqr0lIwjsQAjsSU2Gqag1TSUukkkkpZJJJJSkkkklKSSSSUumTpkQpSSSS
+ cpSSSSYVKSSSTFKSSSRUpJJJBSkkklIFKSSSTlKSSSQUpJJJJSkkkkwqUkkkmqUkkkkpSSSSIUpJJOpA
+ pSZJJEqUkkkoyFLJJ0kKUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJ
+ JJKlKSSSSpSkkkkqUsknSSpSkkkkQFKTpkk5SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk4FS6ZOmRtSkk6SVqWSTpJWhZJJJK1
+ KSSSStSkkkkrUpJJJK1KSSSStSk6ZJK1KTpkkrSpJJJG1KTpk6VpWSSSStKk6ZJK1KTpkkrQukmSQtC6
+ SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6
+ SZJK1LpJkkrUukmSStKkkkkrSumSSStCkkkkrUumSSStCkkkkrUumSSStCkkkkrUpJJJK1KSSSStSkkk
+ krUpJJJK1KSSSStKkkkkrUpJJJK1KTpkkrUpJJJNUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJOkpZJOkkpZJOkkpZJOmRUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkKSSSQSpJJJBKkkkkkqSSSSQ
+ pJJJJSkkkkkKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJKkkkklKSSSSUpJJJEKUnTJ06
+ 1LJJ0yVqXSTJJWpdMkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSdMklal0kySVqU
+ kknStSkydJK1LJJJJpKlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ ipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSSlJJJJKUkkkghSSSSSlJJJJIUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJJUkkkilSSSSSlJJJJKUkkkgpSSSSSFJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSdJFSySdJFSySSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkkgpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkipSSSSSl0ySSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSdJSydMnQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSSUskkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJIUkkkkpSSSSSVJJJJKUkkkklSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSFJJJJKUkkkkpSSSSSFJJJJJUkkkkpSSSSSlJJJJJUkkkipSSSSSlJJJI
+ oUkkkkpSSSdJSySSSSlJJJIKUnTJJKUkkkgpdMkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSClJJJJKUkkkkpSSSSSlJJJJKUnTJJKUkkkihSSSSSlJk6Z
+ JSkkkklKTpk6SlJJJJKUkkkkpdOmTpKWTFSUSkpSSSSSl1FykouSU17FWKs2KsUlMmK0xVWK0xJSYJJB
+ JJSk6ZOkpZJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHK
+ BYkpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1OvSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUp
+ JJJJSkkkklLpk6ZEKUkkknKUkkkoypSSSSapSSSSSlJJJJKUkkknhSkkkk5SkkkklKSSSSUpJJJMKlJJ
+ JIKUkkkkpSSSdFSkydMpApSSSdFSySdJNUsknSQUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknS
+ SUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUskkkgpSSSSSlJJJJKUkkkkpSSdMkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJ0lLJJ0kFLJJ0klLJJ0klLJJ0klLJJJJKUnTJ0CpZJJJC1KSSSRUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkkVKSSSSUpJJJJS6ZJOgpZJJJJSkkkklKSSSSUpJJJBSkkkklLpJJkrUukmSQtS6S
+ ZJK1LpkkkrUumTpkrQpJJJK1KSSSStSk6ZJK1LpkkkbUpJJJK0qSSSStSkkkkbSpOmToWpSSSSNpWSST
+ o2pZJJJC0KSSSQtCkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUp
+ JJJK1KSSSStSkkkkrUpJJJK1KSSSStIUkknRtKkkkkLUsknTJWhdJJJK1LJJ0yVoUkkklalJJJJWpSSd
+ MlaFJJJJWpSSSSVqUkkklalJJJJWpSSSSVpUkkklalJJJJWpSSSSKlJJJJKUkknSUsknTJKUkkkipSSS
+ SSlJJ0klLJJJJKUkkkkpSSdMkpSSSSSlJJJJKUkkkgpSSSSSlJJJJKUkkkkhSSdJJSySSSSlJJJJKUkk
+ kkpSSSSSVJJJ0lKSTJJKXTJ0klLJJ0ySlJJJIqUkkkkpSSdMkldMnTIqUkkkkpSdMnSUsnSSSQpJJJBC
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSdJS
+ ySSdJepMknSUpMnTJIUkkkkpSSSSSFJJJJKUkkkgpSSdJJSySdMkhSSSSSlJJJJKUnTJ0lLJJ0kUrJJ0
+ klKSSSSUpJJMgpSSSSbalJJJI2pSSSSVqUknSStSySSSVqXSTJ0rSsnSTJWpSSSSVqUkkklal0kkyVqU
+ kkklaFJJJJWpSSSSVqUnTJJWpSSSSFqUkkkjalJJJIqUkknQUsknSSUsnSSSUpJJJJSySdMkpSSSSSlJ
+ JJ0lLJJJIqUkkkkpSSdMipSSSSSlJJJIqUkkkkpSSSSSlJJ0kFLJJ0klLJJ0klLJJ0klLJJ0klLJJ0kl
+ LJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klKTJ0klKTJ0klyySdJJSySSSSFJ
+ JJIIUkkkkpSSSdJCySdMgpSSSdJSySSSSlJJJJKUkknRUskkkklSSSSKVJJJJKUkkkkpSSSSCFJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTJ0klLJJJIqX
+ SSSSUpJJJFSkkkklLJJ0klLJJ0klLJJJJKUkkkkpSSSSSlJJ0klKTJ0klLJJJ0lLJJ0klLJJ0ySlJJJJ
+ KUknSSUpMkkgpSSSSCl0ySdJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lLJJJJ
+ KUknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSClJJ0klLJJ0ySlJJJIKUkknSUsknS
+ QUskkkkpSdJJJSkydMkpSSSSKlJJJIqUknTJKUkkkipSSSSSlJJ0yClJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lKTJ0ySlJJJ0lLJJ0klLJJ0ySlJJJ0lKSSSQUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpMnSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSFJJ0klLJ
+ J0klLJJ0ySlJJJJJUkkkkpSSdJJKydJMkpSSdMkpSSSSSlJJJJKUkkkkhSSSSSlJJJJKUkkkkhSSSSSl
+ JJJJKUkkmSUukmTpJUkkkklSSSSKlJJJJKUkkkkpSSSSSlJ0ydJCySSSSFJJJJKUkkmSUukkkglSSSdJ
+ SySSSSV0kkklLJJJIoUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklLJJJJKUkkkkpSSSSCVJJJJKUkkkg
+ pSSSSSlJJJJKUkkkgpSdJMnBSkkkk9CkkkkFKTJ0ySlJJJJKUnTJ0lKSSSSUpJJJJS6dMnSUpMU6ZJSy
+ SSSSmSi5SUXJKa1irFWbFWKSmTFaYqrFaYkpMEkgkkpSdMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0
+ ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkp//1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SU
+ pJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInq
+ q9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUpJJJJSkkkklLpk6ZEKUkkknKUkkkoypSSSSapSSSS
+ SlJJJJKUkkknhSkkkk5SkkySSmSZOnSUxSTpkwqUkmSQUukkkipSSYppRCmaSjuS3J4UySUdyW5OUyhK
+ E25LchSl4ShNuS3IUpeEoTbktyVKXhKE25LclSl4ShNuS3JUpeEoTbktyVKXhKE25LclSl4ShNuS3JUp
+ eEoTbktyVKXhKE25LclSl4ShNuS3JUpeEoTbktyVKXhKE25LclSl4ShNuS3JUpeEoTbk25GlMoTwohyk
+ HIUpUJoTymJQpKoTJEppR4VLp4TSlKFKXhMlKYuR4VLpKO5LelwoZwlCiHJ9yXCpeEoTbkxchwqZJQo7
+ k4cjwqZQlCbcn3IUpUJQm3JbkqUvCUJtyW5KlLwlCbcluSpS8JQm3JbkqUvCUJtyW5KlLwmhLcluSpSo
+ ShNuS3IcKF4TwohykHIcKlQlCUpSjwqWhKEpS3JcKVQlCW5LclwqVCUJbktyXClUJJbk25LhUvCeE25P
+ uS4VKhNCeUpS4VLQlCeU0pcKlJJi5NuR4VMoTwohycOQ4ULwlCW5LclwqVCUJbgluS4VKhKEtyW5DhQq
+ EoS3JtyXCpeEoTbk+5LhUqEoS3JtyXCpeEoS3JbkuFSoShLcluS4VKhKEtyW5DhUqEoS3JbkuFSoShLc
+ luS4VKhNCfcm3JcKlQlCW5LcjwqXhKEpS3JcKVQlCbcnDkuFSoShPKYlLhStCSYuTbkeFTJKEwcnlLhS
+ qEkpTSjwqXSUdyfclwqK8J4Tbk+5DhWqhKEtyW5DhUqEoS3JbkuFSoShLcluS4VKhKEtyW5LhUqEoS3J
+ bkuFSoShLcluS4VKhKEtyW5LhUqEoS3JbkuFSoShLcluS4VKhKEtyW5LhUqEoS3JbkuFSoShLcluS4VK
+ hKEtyW5LhUtCeE25PuS4VKhKEtyW5LhSFiEyRcoFyPClmkh7lIOS4VM0lEFPKXCpdJRlLclwoZQnhRDl
+ IOQ4UKhKE+5NuS4VKhKEtybclwqXhKEtyW5LhQqEoS3JbkuFSoShLcluS4VKhKEtyW5LhUqEoSlKUuFS
+ oShKUpS4VKhKEpSlLhUqEoSlLclwqWhPCbcluR4VLwlCW5PuSpS0JoSLk25LhUvCUJtyfclwpVCUJ5Sl
+ KlLQkkXKJcjwpZJKG5OHJcKmUJ4TAp5Q4VLQkkSolyPCpkkobk4clwqZJJAptyHCpdKE25OHI8KF4ShO
+ ClKFKWhKE8ptyVKVCUJbktyXChUJoT7k25LhUqEoS3JbkuFSoShLcluS4VKhKEtyW5LhUqEoS3JbkuFS
+ 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
+ Jg5PuQ4VKhJMXKO9HhUzhKFEPUg5DhUvtShPITFyXCpaEoS3JbkuFC8JQm3J9yXCpUJQluS3JcKVQlCW
+ 5LclwqWhJIuUS5LhSukoF6W9HhUkShQDlIOQ4VMoTQluTylwqWhKE+5LclwqWhKE8pSlwqWhKE8pSlwo
+ WhKE8pSlwqWhKE8pSlwqWhKE8pSlwoWhKE8pEpcKloTJi5NuS4VM4T7UwcpgoUpjtS2okhRJCVJYQlCR
+ colydwpZJQo7k4clwpXhKEpSlKlKhKEpSlKkKhKEtyW5KlLwlCbcluSpC8JoS3JbkqQqEoS3JbkuFSoS
+ hLcluS4VKhKEtyW5DhUqEoS3JbkuFcqE8JtyW5LhUvCUJtyW5LhUqEoS3JbkeFCoShNuS3JcKl4ShNuS
+ 3JcKl4ShNuS3JcKl4ShNuS3JcKl4ShNuS3JcKl4ShNuS3JcKl4TwmDlIOSpK21KFKVEuCFKWhKExcluR
+ 4VLwlCW5KUOFSkoSlOlwqWhMpQolDhUpJMnCXCpSdJIocKlkkkkaUpJJJFCkkkkFKTJ0ySlJJJJKUnTJ
+ 0lKSSSSUpJJJJS6dMnSUpMU6iUlKSSSSUyUXJ1FySmvYqxVixVykpkxWmKqxWq0lJgkmCdJSk6ZJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPU
+ WpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpi5
+ AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUpJJJJSkkkklLp
+ k6ZEKUkkknKUkkkoypSSSSapSSSSSlJJJJKUkkknBSkkkk9SySdJJS6dMnRUsVEqRUVGVKTgJlIIKXAS
+ IUgExRUichOfCJYYVK2yEQpKbYUfXWdbkQq5yk8Kdn10/rLHbkyii9PCnS9dL11m+sm9ZOpTp+ul66y/
+ WT+sjSnT9dL11mesl6yVKdP10vXWZ6yXrJUp0/XS9dZnrJeslSnT9dL11mesl6yVKdP10vXWZ6yXrJUp
+ 0/XS9dZnrJeslSnT9dL11mesl6yVKdP10vXWZ6yXrJUp0/XS9dZnrJeslSnT9dL11mesl6yVKdP10vXW
+ Z6yXrJUp0/XS9dZnrJeslSnT9dL11mesl6yVKdP104vWX6yb10KU6/rp/WWQL0QXoUl0/VUhYs0Xp/tE
+ I0p0hYn9RZf2oJ/tYSpTpGxQNiofagonISpTdNqib1RNyGbkUOl9oTjIWV6ycXIUp1fXTG9ZnrJeslSn
+ T9dOL1l+sn9ZJTq+ul66y/XS9dClOp66XrrL9dL10qU6nrpeusv10vXSpTqeul66y/XS9dKlOp66b11m
+ eum9dKkOp66XrrL9dL10qU6nrpeusv10vXSpTp+ul66zPXS9ZBTqC9SF6yhcnF6SnV9dN66zPXS9dJTp
+ +ul6yzPXT+skl0vWS9ZZvrJ/WSpTo+sl6yzfWTi5Gkul6qXqrPFyRuSpLf8AWS9dZbsiEP7UlSnaFwUh
+ asVuUijJSpTqm1RNqzftKY5CVKdA3KJuWeb0xuSQ6PrpfaFlm9RN6SHW+0pfaVkfaEvXKCnX+0pfaFke
+ unF6SnYGQl66yBepeukh1fXS9dZfrpeukp1PXS9dZfrpeugp1PXS9dZfrpeukp1PXS9dZfrJeskp1PXS
+ 9dZfrJeukp1PXS9dZfrJesgp1PXS9dZfrJeskp1PXS9dZfrJeskp1PXS9dZfrJ/XSU6frp/XWX66f10l
+ On66Y3rN9dRNyKXT9dSF6yfWUhclSnWF6RuWYL0xvSpLpG5IWrKOSnGSnJdYWpeqsv7SkcpKlOp6qb1V
+ l/alIZEpUl0fVS9ZUPWUTclSC6Hrpeusw3JvXQWup66XrrL9dL10FOp66XrrL9dL10lOp66XrrL9dL10
+ lOp66XrrL9dL10lOp66XrrL9dL10lOp66XrrL9dL10lOp66XrrL9dL10lOp66XrrL9dL10lOp66XrrL9
+ dL10lOp66XrrL9dL10lOp66XrrL9dL10lOp66XrrL9dL10lOp66XrrL9dL10lOp66XrrL9dL10lOr66X
+ 2hZXrpvXSpIdQ3pvVWb6ycXI0l0hYpixZovTjJhFTqB6XqLM+1BL7UEFOibFE2qh9olRN6SHQ9ZL7Qsw
+ 3KBvSpDrfaEvtCyfXSF6FKdb10vXWX6yf1klOp66XrrL9dL10qQ6n2hL7Qsr10vXSpTq/aEvtCyvXS9d
+ JTq/aEvtCyvXS9dJTq/aEvtCyvXS9dJTq/aEvtCyvXS9dBTq/aEvXWV66XrpKdX10xvWX66RvRU6ZvSG
+ Qsv1k3rIqdcXpeusoXpeulSnUN6b11mesl6ySnTF6kLlli5SFyKXU9ZL1lm+ul66FKdA3JvVWf66QuRp
+ LoeqnFqoeqmN0IqdIXJxcsk5MJDKQpLreqom1Zn2pI5KVKdE2pC1Zn2hSF6KHT9VMblQ9ZRNyFKb5vSF
+ 6zDcm9ZKkOsL0/rrKF6XroUp1PXTeusv10vXSpTqeul66y/XS9dJDq+um9dZfrpeukp1PXS9dZfrpesi
+ p1PXTeusz1kvWSQ6frpeusz1kvWQU6frpeusz1kvWSS6frpeusz10vWSU6frpeusz103rpKdT10vXWX6
+ yXrJKdT103rrN9ZL10kun6ycXrM9ZL1kkup66X2hZfrJvXSpTq/aE/rrJ9dP66VKdX10vWWV9oTfaUaS
+ 63rJeqsoZKkMlGlOoLU/qrL+0pvtSVKdM2qBtWf9olP60o0pveql6yoG1RNyC0ul66XrrM9ZL1kEOn66
+ XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9ZL1kl
+ On66XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9ZL1klOn66XrrM9Z
+ L1klOn66b11m+sl6ySnS9dOL1mesl6ySnV+0Jeusn10/rpUvdT1khaswXqYvRpLqCxTFiyxkp/tQQpDq
+ eoFE2LN+1hL7TKVKdA2qBuVA3qBvSpDo/aEvtKyjeoG9CkOv9pTfaFk+ul66SnW+0J/XWSL1IXpIdX10
+ vXWYLkvWSU6frpeusz1kvWSU6frpeusz1kvWSU6frpeusz1kvWSU6frpeusz1kvWSU6frpeusz1kvWSp
+ Tp+ul66zPWS9ZGlOn66b11m+sm9ZBTqDIUhkLI9ZOL01Lr/aExvWV66RvSpTpG9N66zPWS9ZFTpi5SFy
+ zBcpC5JTpesl6qz/AFkvWRS6HqpvVVAXKXqpJb3qpC5Z5uhDOTCSnXFycXLGGX5qYy/NKlOsbUM2rO+0
+ pjkJUp0fVSFyzfXT+ukh0/WS9dZnrKJvQpTq/aE/2hY5vS+0IUp2PtKX2hY/2hP66VIdU5CichZZvTeu
+ lSnVF6kL1ki9SF6SnV9dN66zPXTeuih1PXS9dZXrpeuip1PXS9dZfrpeukp1PXTeusz103rpKdT10vXW
+ X66XrpKdT10vXWX66XrpJdX10vXWV66f10FOp66XrrL9dL10lOn66XrLN9ZIXIqdMXJ/XWb6yb1kqU6Z
+ vTeusw3pvWSpTqeupC9ZQuT+ulSXXFyf1gsj7Sn+1JUp1Tam9VZn2pMclGlOn6qXqrL+1JxkyjSnT9VM
+ bVQF8pG1KlN03JvXWe65DNyFIdT10vXWX6yXrJUp1PXS9dZnrJeslSnT9dL11mesl6yVKdP10vXWZ6yX
+ rJUp0/XS9dZnrJeslSnT9dL11mesl6yVKdP10vXWZ6yXrJUp0/XS9dZnrJeslSnT9dL11mesl6yVKdP1
+ 0vXWZ6yXrJUp0/XS9dZnrJeslSnT9dL11mesl6yVKdP10vXWZ6yXrJUp0/XS9dZnrJeslSnUF6f1lli5
+ SFySQ6JuUDcqPrKJuSXN8XojchZBvhR+0wkQp3BkBL11iDLRG5MptIdf1kvWWYL0/ro0h0vWSNyzPXSN
+ 6VIdA3KBuVA3KBuSQ6IvUxesv1k4uSQ6vrpjesz11E3pKdT104vWT9oSF6SnX+0JfaFk+ul66SnUOQm+
+ 0LL9dL1kkur9oTi9ZIuUhekp1Ren9ZZguUhckl0fVT+qs71kxvRS6Xqpesss5KicpKlOqb1H11lHKTfa
+ EFOt66l66yBepC9KkOqb1E3rM9dMb0qU6RvS9dZhvS9ZFTpi9OL1li5SFySnT9dL1lm+sl6yCnS9ZN6y
+ zfWS9ZFTpesl6yzfWT+skp0DckLlnesl6ySnTFyl6yzBcl66CnRNyj6yzzcm9ZFTo+spC5Zvqpeukp1B
+ ekcgLJOTCGcpNpTsHICichYxy0hkyip1/XUhcspt8ogtRU6guT+ssz1kvXQpTpG9N6yzfXS9dGlOl66X
+ rrN9ZL1kqU6Prpeus31kvWSpTpeul66zfWS9ZGlOl66XrrN9ZL1kqU6XrJess31kvWSU6XrJess3103r
+ JUp0/WTi9ZnrJeshSnU9dN66zfWS9ZKlOl6ycXLMN6gcmEqU64vT+usX7UpDKSpTrm5QNyzhkSmNyNKd
+ H11MXrK9ZOL0KU63robr1neuom5KlOh6ykLVmi1Fbaip0RYpeqqAtTG5AhTfNyGb1QdeoG5ClN83peus
+ 43JvWRU6YuTi5ZguUhckp0xcn9ZZvrJesgp0/XS9dZnrpeulSnSN6iblneumNySnR9dIZCyzeoHIRU7I
+ yFMXhYf2pSGWhSna9ZMbVmNyZRBdKSm6bE3qqobVA2oqb/qp/WWd6yXrJKdH1kjcs71lE3IKdE3qPrrO
+ NyibkVOn66f7Qsr1kvXQU632hL7Ssj10vXSpTsfaE/2hY4vUhelSnW+0Jeusr10/rJUp0/XS9dZfrJes
+ kp1Repi9ZAvUxelSnV9ZI3LNF6RvQpToG9RN4WW7JhCOUjSnZ9dL1ljjKRG5CSnV9VL1VnC9ObkVN83J
+ vXWcbkM3oKdT10/2hZPrp/XSU6v2hL7Qsr10vXSU6v2hL7Qsr10vXSU6v2hL7Qsr10vXSU6v2hL7Qsr1
+ 0vXSU6v2hL7Qsr10vXSU6v2hN66y/XTeukp1fXSF6yvXTi5JTrC9L11mC5L10qU6nrpeuso5CgcpKlOx
+ 9oCXrrF+1pxlJUp2fWTi1ZTciVMXpKdMXJess71kxuSpTom9QN6zzehm9KlOkchN66yzcl6yKnU9dP66
+ yxcn9ZJTp+ul66zPWT+skp0/XS9dZnrJeskp0/XT+usv1kvWSU6nrpeusz1kvWQU6frpeusv1kvXRU6n
+ rpvXWZ6yXrIKdT10/rrK9dMchGkut66ib1knKUDlI0l1/XT+sscZKI29KkOqLk/rLNFyf1kqQ6XrJeus
+ z10vXQpTp+un9dZXrpeuhSnU9dN66zPXTeskh1PXS9dZfrJ/WSU6vrpeusv1kjegp0jeoG9ZpvUTekp1
+ BepC9ZIuUxcip1hen9dZYvT+ulSXSNygblnm9N6yNKdEXKYuWWLk/rpUl1hekbwsg5MKBy0OFLruvQjc
+ sv7VKkL5TgFOkLlMXLMFycXJFDqesm9ZZvrpeuhSHS9dL11meul66VKdP10vWWZ66f10qU6XrJ/WWZ66
+ XrpUp0/WS9ZZvrpeulSnS9ZL1lm+ul66VKdL1kxvWd66ib0qU6BvTDIWYblH10qU7AyE/rrIF6mL0qU6
+ ZuTeqs71kvWSU6YtUhcsv1032lKlOr6wUTcss5Sb7TKVKdI3JvWWd68p/VRU6QvT/aFl+smN6FKdX7Qm
+ +0LK9dL10qU6vrpeusv1k/rIKdP10vXWZ6yXrJKdP10vXWZ6yXrJKdP10vXWZ6yXrJKdP10vXWZ6yXrJ
+ KdP10vXWZ6yXrJKdP10vXWZ6yXrJKdP10vWWYLlMWoqdEWqQuWd6ygciEFOr66XrrHOUl9qSpTrG5RNy
+ zBkSn9dJToesnF6zvWTesip0/XS9dZnrpvXQU6RvUTes43KJuRU6YyEQZCx/WUhegp2PtCY3rKF6XrpU
+ p1PXS9dZfrpeukh1PXS+0LL9dN66SnV+0J/tCyvXS9dJLq+un9dZXrpeskp1DemNyzfWT+sklv8Aqpeq
+ qHrJvWRU6QtUhcsr7RCX2pJTresm9dZP2pL7Qgp1fXS9dZfrpeukp1fXS9dZfrpeukp1PXS9dZfrpeuk
+ h1PXS9dZfrpvXSU6vrpfaFleul66SnV9dL11l+ul66SHV9dMb1meul6yVKdE3qPrLP8AWTeskh1BeiDI
+ WR6yf10KU6xyFA5CyjkKJvSpLqnITessv104vTqXOqLVMWrJGQpfaUkusLUvUWV9rCcZaVKdT1FE2rPG
+ TKY3pUpvm5R9dZ7r0M3pUh1PXT+usr10/rpUtLqeul66y/XS9dKkOp66XrrL9dL10qU6nrpeusv10vXS
+ pTqeul66y/XS9dJLqeul66y/XS9ZClzqeul66y/XS9dJLqeul66y/XS9dJTp+ul66zPWTesitdT10vXW
+ X6yXrJUp1PXS9dZfrJeslSnU9dL11l+sl6yVKdT10vXWX6yXrJUp1PXS9dZfrJeslSnU9dL11l+sn9ZK
+ lOn66cZCyvXTeuhSXX+0qJyFleum9dKlOr66cXrJ9dP9oSQ64uUhascZKK3JSS6wfKK0rMrulXK7JQU2
+ lEhJpTpqmKcJJwipSZSTFBTFJJJAqUkkkmoUkkkkpSZOmSUpJJJJSk6ZOkpSSSSSlJJJJKXTpk6SlKJU
+ lEpKUkkkkpdRcpKLklNaxVyrFirlJTJitVqqxWq0lJQnTBOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKf/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKYuQLEdyBYkprlOxMU7ElNliOE
+ BiOElKSSSSUskkkkpSSSSSlJ0ydJSkydMkpZJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhOmC
+ dJSJ6qvVp6qvSUjCOxACOxJTYapqDVNJS6SSSSlkkkklKSSSSUpJJJJS6ZOmRClJJJJylJJJKMqUkkkm
+ qUkkkkpSSSSClJJJJ4UpJJJPUukkkkpSSSSKlimTpkwqUpBRThBSSUxKUqLikpr2uWXk2QtG8rGyynBT
+ n5F8FU/tGqhkv1VRriSpAFOpVcSrjHErOxmkrWpqJCcpaSm1Vn0UjSlaGtqlqrHopeilamvqlqrHopei
+ lamvqlqrHopeilamvqlqrHopeilamvqlqrHopeilamvqlqrHopeilamvqlqrHopeilamvqlqrHopeila
+ mvqlqrHopeilamvqlqrHopeilamvqlqrHopeilamvqlqrHopeilamvqlqrHopeilamvJSkqx6KXopWpr
+ 6paqx6Kf0UQUtYSpbiEb0VF1UJyULrYVd+VCnc0hZeQ4hJTZdmx3URn+axbbSEIXmUlPSMzJR2ZErn6b
+ SVp0ElJTpB8p9VGphKstqQU14KkAVZFKmKElNSCm1Vw0qJpSQ1NU+qseil6KSmvqlqrPopeigprapaqx
+ 6KXopIa+qWqseil6KSmvqlqrHopeikpr6paqx6KXopKa+qWqseil6KCmvqlqrHopeikprapaqz6KXopK
+ a0lKSrPopvRQUgkpSUf0UvRRUhkp5KN6SXpJKRSUpKL6SXpIpQklIOKKakwqSSoEpnOKMKlCyvRFLRts
+ hU35EKxkiFlXOhJTcGUityljiworbCkp1hkqYvlZbXlWapKSnQbZKnJQqmSrTakkIDKgSVbNKh6KCmuJ
+ UgCrApUxQghqQUoKuegl6CSGpqlqrXoJeggprSUpKs+gl6KSmvqlqrHop/STqU19U2qs+kl6SNKa2qWq
+ s+kl6SFKa2qWqs+kl6SVKa2qfVWPSS9FClNfVLVWPRS9FKlNfVLVWPRS9FKlNfVNJVk0qBqRpSDcU4cU
+ Q1JxUUqUjBKWqOKlL0UqS1oKkAVY9FP6SNKaxJCC+whW31KlcyEaSgffCh9pQbZCqucUeFLf+1qJy1ml
+ 5QzYUeFTsNypVmu+Vh1vMrSxySlwpdRr5UiSo1MlWBUgQgtUym1Vk1JvRTaWNfVLVWPRS9JKlNfVLVWP
+ SS9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNfVLVWPSS
+ 9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNfVLVWPSS9JKlNeSlqrHpJek
+ lSmvqlqrIpT+ilS4NUkhQLyFadUqtrCEaXInZEILsyEG+Qs66whLhQ6ZzvNO3NnusB1xlErtJKXCp6Jm
+ TKsNslY+O4latLSUuFCaSVEyjtqT+klSGuAU4BVkUqXooUpq6paqyaUxqSpDXkptVY9JL0UqU19UtVY9
+ FL0UqU19UtVY9FL0UKU19UtVY9FL0UqU19UtVY9FL0UqU19UtVY9FL0UqU19UtVY9FL0UqU19UtVY9FO
+ KUqU1oKeCrQpT+igpqapaq16KXopKauqWqs+il6KSmvJSko/pJvSSSi3FRLyjGpQNaKke8qQcUvTKm2o
+ opVuKFZbCOayql7YSSgsyIQTlqve4hUnWFJTrDLUxlLHbYUZjykp1W3yjstlZlZJV6oSkpth8pySkxiI
+ K0kIDKQlH9JSFSCEABSgqyKU/ooIahBTaq2aVH0UlNXVNJVo0pjSkprSUgSrHopeikhBqn1R/RT+ikpr
+ 6ppKsekl6KSmvJS1Vj0UvRSU15KUlWPRS9FJTXkpaqx6KXooJa+qWqseil6KSmvqlqj+il6KSmvJTSVY
+ NKb0SklCCVIEoopKmKUUoNUxlW/RUTSkprapElWfRUXVIqab3kKu+8hWLmQs+4EIpSfaU4ylnuJUdxRU
+ 6Ry0wy1mOeUzXlFTtMyJVplkrIoJK1KGkpKTyVEyjtqTmpNK0tbVLVH9JL0kEIEkf0kvSSUgSR/SS9JJ
+ SBJH9JL0klIEkf0kvSSUgSR/SS9JJSBJH9JL0klIEkf0kvSSUgSR/SS9JJSBJH9JL0klIEkf0kvSSUgS
+ R/SS9JJSBJH9JL0klIEtUf0kvSSUg1S1R/STilJTW1TSVa9FRNScvDWLyEN18ItlcKjcCEks3ZcIZzvN
+ Z9zyFSfcUkO4M6e6MzLlc6y4q/Q8lBTuMtlT3EqtQCVeZVKCEBlRgq56KQoQQ1IKUFXfQTGhJTT1TiVZ
+ NCXopIQAlPJR/SS9JBSCSm1Vj0kvSSU19UtVY9JL0kVINUtUf0kvSSU19U+qP6SXpJKQapSUf0kvSRU1
+ 9UpKsekl6SSmvqlBVgVKQpSU1YKWqt+imNKVKauqbVWjSm9FKktbVLVWPRS9JKlIASpAlF9JL0kaSi3F
+ NuKKalE1pUpYOKluTtrKka0aS17LIVK2+FbvbCyMkwlSkhy4Tty1kvsIKZtpRpTuDKRBkSsdjyrVZJSp
+ TpNtlFDyVVqBKuMYUKUvJTGUYVKXpIUhqmU2qs+il6KVKa+qeCrApUhShSGqZUdVcNKiaUqQ1ZKcEqx6
+ KXopUpBJSkqx6KXooKa+qWqs+il6KSmtqlqrPopvRQU19U2qs+il6KSmtqlqrPopeikprapaqz6KXooK
+ a2qWqs+il6KSmvqlqrHopeiklryU4JRvRSFJRUiBKfVGFKl6SSWsZTQVaNKQpRU1tVBziFcNSrW1wipq
+ vuIQTkkKN4IVF7iEVN/7WkctZm8pi8oqdP7WisyZWMHlWqXEpKdqu2UYOlU6ASr7K5SUidKGZVs1KJpT
+ VrW1S1Vj0UvSSU19UtVY9JL0klNfVLVWPSS9JJTX1S1Vj0kvSSU19UtVY9JL0klNfVLVWPSS9JJTX1S1
+ Vj0kvSSUg1S1Vj0kvSSU19UtVY9JL0klNfVLVWPSS9JJTX1S1Vj0kvSSU19UtVY9JL0klNfVLVWPSS9J
+ JTX1Taqz6KXopKa4lSBKN6SXpJLghkqLiVY9JQfUkuaVjyFVfdCtXshZtuiCkzbyrVVpKy2HVaGO2UkN
+ 5ripSVKurRENSSEG4pbiimpL0kkISSoklWPSTekkhBJSko3pJ/SQQgJKiSVY9EpvRSU15KcEo/opxSkp
+ CJT6qwKVIUpKasFKCrfopeiilqQU4lWfRTekkpCCU8lG9JI1JJQF5CE+0hHfWqlzSEUon5MIBykC8kKm
+ XGUlOo3IJR2WErMpJK1KK5QQlBKmCURtKn6KSkElKSj+in9FJTWkpaqx6KXopKQSU8lH9FL0UlIZKUlG
+ 9JL0klIJKUlG9JL0klIgSlJRhUn9JJSGSlJR/STekkpDJTSUb0k3pJKRSUgSjekpClJSGSoOcQrRpQLa
+ 4SU032kKs+8o1zYVCwpKTeuistJWeCrVIlJToVuJVgEoVFcq42pJSEkqJcVZNSGaklIZKUlG9JN6SKkU
+ lKSjekl6SKkMlKSi+kl6SSkMlKSjekl6SSkMlKSjekl6SSkMlKSjekl6SSkMlKSjekm9JJSKSpAlEFSk
+ KklIhKeSjCpI1JKar3kKpZfCuXVwFlZAISUo5KIzJlZjnGUWokpKdhlsowcSqlDSVeZWkpjJUtUUVKQq
+ SUg1Taqwak3pJKQglEaSpipSFSSmO4qLnFF9NRNRQU1ySoyVYNSXooKa+qaSrPopvRSUgBKkCUYVKQpS
+ UgkpElWPRUTUkpryUpKMakvSSUhkpElHFSRpSU1Hkqu95Cu2VKlcyElNd15CYZKBboq+4ykp2KsiVdrs
+ lYtBJWtjtJSU2tyg5xRhWVF1SSkG4p9xUvSUhUkpHJTElH9JL0klNcyomVa9FL0UlNTVNqrfoJvRSU1N
+ UtVb9BL0ElNUSpCVY9FOKUlIBKfVWBSn9FJTW1TGVb9FRNKSmrJThxRjUmFSSlg4qL3kI4qQra4CSmjb
+ aQqrshEyBCz3kykpvMvVllyyqyVeqBKSm82xT3lCYwowrKSmJJUSSjipP6KSmtqlqrPopeikprapaqz6
+ KXopKa2qWqs+il6KSmtqlqrPopeikprapaqz6KXopKa2qWqs+im9FJTX1S1Vj0U/opKa4lSAKsClSFKS
+ mvqoklWzShPqSU03vIVWy4hWrmQs64Qkpc5CIy8lZ5JlFqkpKdWu0lWWvKp0MJV9lRSUrcUpKKKk/pIq
+ a5JUTKtekmNKCmoQU2qteil6KSmuJS1Vj0UvSSU19UtVY9JL0klINUtUf0kvSSUg1Sko/pJekkpBJSko
+ /pJekkpryUpKsekl6SKmvqn1RxUnNKCmo4kID7SFcsqhULmwnBKJ98If2hBtlBkpyW+y4lW67CVm1Ala
+ NDJQU2WuKckqbKlM1IIa5cU24oxqS9JBCGSnkovpJxUghDJT6o4qTipBSASn1VgUp/RQU19VEyrfpKJp
+ SU1DKiZVs0qPopKawlSEqwKU4pRUgkpSVY9FMakVNeSlJRvSS9JFKGSoueQjmpBtYQilq2XEKs7JKe8E
+ LPe4yil0GZEqzXaSsqokrRoaSipuNcVKSkytFFSaUIpKUlG9JN6SCEMlKSjekl6SSkMlPJRfSS9JJSKS
+ nkovpJekkpFJSkovpJekkpFJS3FF9JL0klIdxSkovpJxUkprmU0FWxSn9BJTU1TglWDSo+kkpFuKiXkI
+ 5qQn1lJSF1sIDsiE9oIVG0kJKbJyVJmRKzN5R6SSkp1WWSjAlV6GEq8ypJSEkqOqtGlMKUlNaCngq0KU
+ /opKauqWqsmlN6KCmvqlqrHpJeikpr6paqx6KXopKa+qWqseil6KSmvqlqrHopeikpr6paqx6KXopKa+
+ qWqsein9FJTWEqQJR/RSNSSms55CrWXQrVtZAWbkAhJSzslJuQqD3GU9btUlOqy6Udr5VGkSr9TJSUyk
+ pElGFSf0UlNeSlJR/STilJTX1TEFW/RS9BJTTgpwCrXoJeikprapSVZ9FMaUkNaSlJVj0U3opKQSU+qO
+ KVIUpKa8FPBVkUp/RSU1YKfVWfRTekklr6pSVY9JRNSSkBcUJ1kKw+tVbWEJJQvyIQDlIV5IVFzzKSnV
+ ZkyrNdhKyKSStbGZKSmwCVLVGZSpGlJTW1T6o/pJ/SSQ19UtVY9FL0UlNfVNJVj0k3pJKQapao/pJekk
+ hBJTyUb0k4qSUh1S1Vj0UvRSU19UtVY9FN6SSEGqWqsekn9FJDUIKaCrnopvQSXBqaqJcQrhoQLaiElw
+ aj7oQH5UKV7SFmXuISS3Tm+ak3NlYjrDKnXYUUvQ15Mqw22Vj45JWpS0lJCbcSo6ozalL0kkFBqlqrHo
+ peiktLX1Skqx6KXopLWvJS1Vj0kvRSQ19UpKsekl6KSWvqlqrHopeiglr6paqx6KXopLg19UtVY9FL0U
+ lzX1S1Vj0UvRSU19UtVY9FL0UlrX1S1Vj0UvRSU19UtVY9FL0UVNfVLVWPRS9FJTX1S1Vj0UvRSU19Ut
+ VY9FL0UlNfVLVWPRS9FJTX1TQVZ9FP6KSmrBSgq2KUjSgppEkITrCFcsqhUbmwglib4U2ZCovMKLH6oK
+ d2m+Vp0WSuex3rZxigp12OlFVepWAgpZOExSlBTJRKUpiUkqSUZTgoIXSSSQQpJJJJSkydMkpSSSSSlJ
+ 0ydJSkkkklKSSSSUunTJ0lKUSpKJSUpJJJJS6i5SUXJKa1irlWLFXKSmTFarVVitVpKShOmCdJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fq
+ k9Rakps1qw1V61YakpkmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSS
+ mLkCxHcgWJKa5TsTFOxJTZYjhAYjhJSkkkklLJJJJKUkkkkpSdMnSUpMnTJKWSSSSUukkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJk6ZJS4TpgnSUieqr1aeqr0lIwjsQAjsSU2Gqag1TSUukkkkpZJJJJSkkkklKSSSS
+ UumTpkQpSSSScpSSSSjKlJJJJilJJJJKUkkkkpSSSSeFKSSST1KSSShJS6SUJ4SUsmUoTEJpUxThIpgg
+ pmouSlRcUVNa5Yuati4rFzSiFODk8oFTZKNkHVQo1KlCnXwqZW9Rj6LN6e2YXR47BCRKmt9nUDQtQsQi
+ xNBQ5/oJegr+xLYipoegl6Cv7EtiSmh6CXoK/sS2JKaHoJegr+xLYkpoegl6Cv7EtiSmh6CXoK/sS2JK
+ aHoJegr+xLYkpoegl6Cv7EtiSmh6CXoK/sS2JKaHoJegr+xLYkpoegl6Cv7EtiSmh6CXoK/sS2JKaHoJ
+ egr+xLYkpoegl6Cv7EtiSmh6Cf0Fe2JixIFIaPoIb6FobVF7E4FLhZNKw8uuJXU5LNFgZreU61PN3s1Q
+ Gt1V7Ibqq7RqlamzjMW1i1yszGC3MRqVqb9FKuspTUN0V1jUCVIBSpeirIapbU21NM0qJpV0tTFqVqaP
+ oJChXdifYlaGl6CXoK9sS2JWpo+gl6CvbEtiVqaPoJegr2xLYlaGj6CXoK9sS2JWpo+gl6CvbEtiVqaP
+ oJegruxLYlaml6CXoK7sS2JWppihP6CuBikGoWpo+gm+zq/tS2BK1Of9nT+gr+xLYlanP9BN6C0CxR2I
+ 2po+gl6CvbEtiVpc80JChXyxOK0bS1BQg3UwFqhirXs0QBS8zmMhYWQNV0eeIlc5knVOU1RyrDAq4Oqs
+ 1FFSdjVeorVataGOElN3HqlX2UIeM1aTGaJpKmmaFA0LSLEMsStDUbQiChWWsRAxAlDT9BL0Fe2ptqFo
+ aPoJegru1PtStTR+zpfZ1f2JbAhanPNCb0FfLFHYnWppegl6Cu7EtiPEppegl6Cu7EtiXEppegl6Cu7E
+ tiXEppegl6Cu7EtiVqaXoJegruxLYhaml6CXoK7sS2I2ppegmNCvbE+xK1Od9nTjHWh6aXpocSmiKE/o
+ q7sTbEeJc0/RT+irYYpbEuJTm2UrPyKlu2M0WdksThJLz19SovYtfIas60J9qaL2oJCtvVcnVG0s6W6r
+ XxK5WXRyt3CbwkSp08enRXBQljM0V4MUUpKLRNCb0FeLE2xDiWNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH
+ 0EvQV7YlsS4lNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH0EvQV7YlsS
+ 4lNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH0EvQV7YlsS4lNH0E/oK7
+ sS2JcSGmKE/oK5sSLUuJeHPfQqV9K2nsVK9icCl5vJqWPkMXSZTFh5LU+1OO9uqLS3VSeNUSgaoWh0sS
+ uVu41Sy8NvC6DGbolambKVP0VZa1S2ptoawpUvRVgNUw1NMkNM0qJpV7am2JcSml6Cf0Fc2J9iXEhpeg
+ l6Cu7EtiXEppegl6Cu7EtiXEppegl6Cu7EtiXEppegl6Cu7EtiXEppegl6Cu7EtiXEppegl6Cu7EtiXE
+ ppegnFCubE+xC1NQUp/RVvaltQtTT9FL0Fc2pbUrU0/QTGhXtiRYlanPNCY0K8WJtiNpaBoUTQtDYm2I
+ 2lzvs6I3HV0Vora0jJLnPo0WZl1Qujsr0WLnNiUgVPL5QhZz+Vp5pgrLc7VOCmbArVbFXqKu1IqbNNa0
+ qKlVoC1MdqSk1dKMKUapiOGJpKGn6KkKVb2JBqFqawpT+irQan2oWhqeil6Ct7U4ahaGn6Cb7Or2xPsC
+ Vqc/7Om9BaGxMWJWpoegl6CvbEtiNoaPoJegr2xLYlamj6CXoK9sS2JWpo+gl6CvbEtiVqaPoJegr2xL
+ YlaWj6CXoK9sS2JWpo+gm9BX9ibYlamj6CX2dX9icMQtLQGOpihXgxPsQtLQNCiaVfLUMtTgVNP0VF1C
+ vBiTmI2lxL6Vk5FS6PIYsfJanBTivrQyxXbAgOhFTTe1M1uqM9RZyipu4rJW5jVSsrEC6HEZogSlKyhS
+ NCuMZopFijJWlz/QS9BXtibala1pegl6Cu7EtiNqaXoJegruxLYlaml6CXoK7sS2JWppegl6Cu7EtiVq
+ aXoJegruxLYlaml6CXoK7sS2JWppegl6Cu7EtiVqaXoJegruxLYlaml6CXoK7sS2JWppegl6Cu7EtiVq
+ aXoJegruxLYlaml6CXoK7sS2JWppegl6Cu7EtiFqaXoJxSrmxLYlag0zSoOpV4tUHBOBZA5VtKzMmpb9
+ rVl5LU5TzeQxZtjVt5IWXaNUkIK26rUxGSqFY1WvhjhBTr4lS1K6FVxGrWrbogUIPQTilWtqcNTbU1hQ
+ kaFcDU+1NtDQNCj6CvlqbYjaGj6CXoK9sS2I2po+gl6CvbEtiVqaPoJegr2xLYlamj6CXoK9sS2JWpo+
+ gl6CvbEtiVqaPoJegruxLYlaml6CXoK7sS2JWppilOKVc2JbUrU1PRTGlXNqbalxKafopegrm1PsS4kt
+ H0EjQr2xMWI8SWj6CXoK7sS2JcSmiaFE0LQ2JemjxJaLaFI0K+2tO6vRN4kuBlUwFz+YyJXWZrIC5jPE
+ SngqcK3lRYpWnVRrKfaG5U1X6WKnStPHCVqbdFS0aqUDHatOliaSpg2hS9BXGsUtiYZKaHoJvRV4sTbE
+ eJTUFKkKVaDVINQMkNP0ExoV7alsQ4kND0EvQV7YlsS4kNH0E/oK7sS2JWppegl6Cu7EtiVqaXoJegru
+ xLYhaml6CXoK7sS2JWpo+gl6CvbEtiSmj6Cf0Fd2J9iSmj6CXoK9sTbElNL0EvQV3Yn2JWlo/Z0vs6v7
+ An2BC1ND0EvRV4sUS1G0tI0pClWy1OGoqahpVS+nRbBYql7NEgVPNZNSy7Warfy2rIuGqeFNHYoFqsFQ
+ cipCGq7jsVZvKv4oSU6uLUtSunRVcNvC2KmaJpKWt6Cj6C0CxQLE21rS9BL0Fd2JbErQ0vQS9BXdiWxK
+ 1NL0EvQV3YlsStTS9BL0Fd2JbErU0vQS9BXdiWxK1NL0EvQV3YlsStTS9BL0Fd2JbErU0vQS9BXdiWxK
+ 1NL0EvQV3YlsStTS9BL0Fd2JbErU0vQS9BXdiWxK1NL0EvQV3YlsStTS9BL0Fd2JbErU0vQS9BXdiWxK
+ 1NL0E/oK6GJbErXBomhCfStItQbGor3Bya4WNkNgrocscrAyTqihr1jVa+HXMLJqOq3cETCSHTpo0R/Q
+ Rsdmis7E0lDmmhL0FfLE2xK0NH0EvQV7YlsStDQ9BP6CvbE+xK0ND7Ol9mWhsT7AhanO+zp/s60NgTbE
+ rU0RQpegrmxLalamn6KRpVzamLUrS0jSm9FXdqWxG1NP0ExoV8MTFiVpcx9CoZFK3bGLOyWopeaya1QL
+ NVsZQWaRqipLjVytzFplZmKNVv4jUEJWUKfoK4xinsQtTQFCf0FeDE+xC1ND0EvQV/YlsStTQ9BL0Ff2
+ JbErU0PQTegr+xNsRtTQ9BL0Fe2JbErU0vQT+gruxSDErU0fQSNCvbEixC1OeaE3oK+WJbEbU0RQpjHV
+ wMRAxAlTQNCqX0wtpzFRyGpAqedya4WVc1bmWOVjXnVOU1mt1V/GZKpMOq08VJTqY1UrRZRogYjVrVs0
+ TSVNE0IZoWoWIRYkCpz/AEEvQV/YlsTrU0PQS9BX9iWxK1ND0EvQWh6aXppWpz/QS9BaHppemlanP9BL
+ 0Foeml6aVqc/0EvQV/00vTStTQ9BL0Ff2JbErU0PQTihXtiWxK1NIUpGlXdiRYlanHyKdFiZdcLp8hui
+ wcwI2pwns1RqGaprBqrGONUrU6WNUtKulV8Vq1amJWpCKVL0VbDE+xC1NL0UvRVzYnDErU1BQpihWwxT
+ DECVNH0FE0LQLAoliFqc/wBBOKFd2JwxG1NH0E3oK/sCYtStTSFCkKFbDVINSJU0/QUTQtDaolqFqc80
+ JegrxYlsRtTTFCRoV4MSLELU5NtCzciqFvXNWXkhOU89kMhUi3VaeSFQPKSmziskrexKphY+INV0eE3h
+ BTYbRomdQr7GaJOYhanN9BSFCu7FIMRtTR9BP6CvbEtiFqaPoJ/QV3Yn2pWpo+gm9BXtqbalamj6Cf0F
+ d2JbEbU0fQS9FXS1NtSU1BSnFKtbUtqSmt6KiaVc2pbUrU0DQmFCvFicMRU1PQVe+nRa2xVshmiAKnmM
+ uuFk2N1W9mjlYtvKKlqmarToqlUKOVsYwSU2KqVaZQiUMVxjElNQUJegr+xMWIWpo+gl6CvbEtiVqaPo
+ Jegr2xLYlamj6CXoK9sS2JWpo+gl6CvbEtiVqaPoJegr2xLYlamj6CXoK9sS2JWpo+gl6CvbEtiVqaQo
+ UxSrWxSDUrU0zSgWUrTLVXtalanFvqWRkVrfyAsfJRU5RZqrNFeqGeVbxuUVOjjUytOuhAxGhatTNECp
+ rihL0Fe2BLam2lomhMaVeLVEtRtTS9FN6Ku7U2xFDT9FL0Vd2JbUrU0vRS9FXdqW1C1NL0UvQV7YlsSt
+ TS9BN6CvbEtiVqaPoJegr2xLYlamj6CXoK9sTbEbU0xQnNCuhikWIWpyLqVlZNULor26LGygnBLg3M1Q
+ AzVXL+UBvKelPRWtfGpWfjBbmK1NKk1dCmaFcrZoiFiYShzDQl6C0CxNsRtDQ9BP6Cv+mlsQtDRFCcUK
+ 7sT7ElNMUp/RVvYn2oIafopeirm1LakpomhN6Cv7E2xJTSFCf0FdDE+xK0tE0KJoWgWKBYkCpo+gl6Cv
+ bEtiNpaBoVW+nRbDmKnkN0TgUvNZdcLKsbqtzMHKxrOU9LKhmq2caqVl4/K3cQcJKbVdCMKEepqsBiYS
+ hpegmNC0NiYsTbQ5/oJegr+xLYjamh6CXoK/sS2JWpo+gl6CvbE+xC1NH0EvQV7YlsStTR9BN6Cv7Eti
+ VqaHoJxQr2xIMStTUFCc0K5tTbUrU0TSo+grxakGI2poGhAtoWsWKvcxK1PP31Qsu9kLfyWrGyAipztu
+ quY7JKB3V7FGqSnUxaZWmyjRAw2LXrZomkpaRoUfQWi5iHtSBU1BSn9FWw1PtStDSNCb0Fd2pbErU0vQ
+ S9BXdiWxK1NL0EvQV3YlsStTS9BL0Fd2JbErU0vQS9BXdiWxK1NL0EvQV3YlsStTS9BL0Fd2JbErU0xQ
+ kaFdDFLYhanGvo0WLl1QupyGaLAzWxKcp561uqVTdUW/lRq5SU6OMyVrUVSs/EC28ZqSmTKFI0K4xiIW
+ Jtqc00JxQrxYkGI2pqChL0Fd2ptqFqaXoJegrhaltRtTT9BL0FdDU4YhamgcdN6C0diiWJWhoegnFCub
+ UtqKmp6Kf0Vb2pbUrU0/RTeiru1LYlaWl6KY0K+GJFiVqct9Co30rcexUMhiKnmsquFmPZqtzLHKyLOU
+ lJMZmq3sOqYWPijVdFhN4SU3K6NFM0K3WzRSLELS0PQT+grm1PsStDT9BL0Fd2JtiVqaXoJvQV7Yo7Er
+ Q0vQS9BXdiWxFTS9BSFCt7FIMQtTTFCf0FcDE+xC1NL0E3oK9sTFiVoLS9FP6KtlqW1FDV9FOKFaDVIN
+ QJXBpnHVa7HWwWKtcwQkCueayqFiZNS6nLYFg5TQnLnDezVEqr1RXgSiUt1RU3cWpbVFOioYjVuY7NEl
+ LspUxSrTGKYaktLU9BL0FdDUtiba0tL0EvQV3YlsSta0vQS9BXdiWxK0NL0EvQV3YlsStTS9BL0Fd2Jb
+ ErXBpegl6Cu7EtiVrg0vQS9BXdiWxK1zS9BL0Fd2JbErU0vQS9BXdiWxK1rS9BL0Fd2JbErU0vQS9BXd
+ qW1K1NL0EvQV3altStTS9BL0Fd2JbErU0vQS9BXdiW1K1NL0EvQV3YltStLS9BP6KubEtqVqagpSNKth
+ qfakhyrqdFl5NcLobmaLIympJcC5uqE0aq5e3VVgNU1TbxgtzECxsYLbxOySnVpGiPCFVwjFNUjKjKdy
+ ihalEqJKeEoSUsCpBMGqQCSlwkkkghSSSSSlJk6ZJSkkkklKTpk6SlJJJJKUkkkkpdOmTpKUolSUSkpS
+ SSSSl1FykouSU1rFXKsWKuUlMmK1WqrFarSUlCdME6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0
+ ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkp//0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SU
+ pJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInq
+ q9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUpJJJJSkkkklLpk6ZEKUkkknKUkkkoypSSSSapSSSS
+ ClJJJJKUkkknhSk6ZJPUukmlKUlMk6hKcFJTJMUpSTSpiUynCUIKYFDcjlqG9qKmjeVi5pW5eFjZjU4K
+ eeyOU2Pyi3s1UaG6qUKeh6ceF0uOdFzOBpC6LHdohIKbhQyFMFMVGFMISU4TQjaGKSkklamKSkklamKS
+ kklamKSkklamKSkklamKSkklamKSkklamKSkklamKSkklamKSkklamKSkklamKSkklamKUKUJQlamMKJ
+ CJCRCVpCGFB6PCG8aIWuc3J4XP5vddBlcLn83ulxKcLI5VVvKs5HKrDlLiQ6GMVu4hWDjLdw0uJTuY50
+ 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
+ YwnClCcBC1LBOnATwhalkxCmmKC0oyoohCaE60MVJqeFIBAleFFV7jorJCq38JBc4+WVg5RW5lnlYGUU
+ 9cHOedUWk6oDzqi0HVFLt4hW7j8LBwyt3GOiSG+xEUGIoCBQoJKUJQm2sLFJShKErWsUlKEoStDFKFJK
+ ErUxSUoSStcGKSkkla8MUlJJK1wYpKSSVqLFPClCUIWtLFJShKErQwSU4ShK1MElOEoStTBJThKErUwS
+ U4ShK0sITqUJQlamEJiiQmhG1MAnUgEiErQ1ruFkZS2LuFkZSSXFvGqqjlW7+VV7ptqbmOtrFKxMdbWK
+ hanYqOiMSq9XCOhakbkykUwTbUuAnDUgpAoWpbamIU5USnBTFJIpkULpJJJKUmTpklKSSSSUpOmTpKUk
+ kkkpSSSSSl06ZOkpSiVJRKSlJJJJKXUXKSi5JTWsVcqxYq5SUyYrVaqsVqtJSUJ0wTpKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlN
+ mtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpi5AsR3
+ IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUpJJJJSkkkklLpk6ZE
+ KUkkknKUkkkoypSSSSapSSSSClJJJJKUkkknhS6ZJJPUsUylCaElMU4KeEoRUuCnBUU8phUyUgoSnlBT
+ MoTynLkB70VILysjLK0L3rJyXSnhTl38odRgqVx1QWmCpAp28OyFuUXgBctRZC0qsiE6rU9EMgJfaAsP
+ 7UU32tN4EO99oCb7QFhfa032tLgU732gJfaAsH7Wl9rS4FO99oCX2gLB+1pfa0uBTvfaAl9oCwftaX2t
+ LgU732gJfaAsH7Wl9rS4FO99oCX2gLB+1pfa0uBTvfaAl9oCwftaX2tLgU732gJfaAsH7Wl9rS4FO99o
+ CX2gLB+1pfa0uBTvfaAl9oCwftaX2tLgU732gJfaAsH7Wl9rS4FO99oCX2gLB+1pfa0uBTvfaAl9oCwf
+ taX2tLgU732gJfaAsH7Wl9rS4FO8MgKXrhYAy1IZaXAkO564QrLwsn7WoPyZR9tcnybhCwcyyZVu++Vk
+ 5LyUvbU597tVWDtUW0EoAaZS9tToY71tYli5+mQtPHsIQ9tD1GPcFoV3hc1TfCtsykvbU74vCl64WF9r
+ S+2Je2p3DeE3rhYn2tN9rQ9tDt+uEvXCxPtSX2tL21O564S9cLD+1pfa0vbU7n2gJeuFh/a0vtaXtodz
+ 1wl9oCw/taX2tD21O59oCX2gLD+1pfa0vbU7nrhL1wsP7Wm+1pe2p3PXCXrhYf2tL7Wl7anc+0BL1wsP
+ 7Wl9rS9tDtm8JvXCxftSX2pEQpTteuFIXhYn2lL7Ujwqdz1wm+0BYn2pL7Wlwpdo3hN64WL9qS+1I8Kn
+ aF4UheFiDKT/AGpLhS7frhOMgLD+1Jfa0uBLunICq35AhZZy0C3KkJCCVZloMrByHAlW8i8lZdryU/hU
+ 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
+ LE+1JfakuFTueuEvXCw/taf7Whwqd31wl64WH9rS+1pcKnc+0BMcgLE+1pjlpcK0u39oCXrhYX2tIZaX
+ Ctd8XhSF4WCMtTGWhwrw7ZvCq33CFQOUgW5EoiK8I8u1YeS9Xci2VlXmU7hXtV7tUWl+qruBlTrkJcKn
+ bxLIW3j3LmKHkLTpvhHhQ9LXeEYXhc+3KRBlocK0u964TeuFh/a0vtaHAtLueuEvXCw/taX2tLgWl3PX
+ CXrhYf2tL7WlwrXc9cJeuFh/a0vtaXCp3PXCXrhYf2tL7Whwrg7nrhL1wsP7Wl9rS4V4dz1wl64WH9rS
+ +1pcK8O564S9cLD+1pfa0uFRd31wl9oCw/taX2tLhWF3PXCX2gLD+1pfa0uFTueuEvXCw/taX2tLhU7n
+ rhL1wsP7Wl9rS4VO564S9cLD+1pfa0uFTueuEvXCw/taX2tLhU7nrhL1wsP7Wl9rS4Uu564S9cLD+1pf
+ a0uFTueuExyAsT7WmOWUOFDpXZAhZOTcCh25JKz7ryUqStdZJVcO1Q3vJUWHVNpTp45W1ilYWMtzE7Ic
+ KnYp4ViFXo4VoBNIUjIUYRSFEhNpTBKUiokpcKmW5KVCVII0pdJJJJCkkkklKTJ0ySlJJJJKUnTJ0lKS
+ SSSUpJJJJS6dMnSUpRKkolJSkkkklLqLlJRckprWKuVYsVcpKZMVqtVWK1WkpKE6YJ0lKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSm
+ zWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSmLkC
+ xHcgWJKa5TsTFOxJTZYjhAYjhJSkkkklLJJJJKUkkkkpSdMnSUpMnTJKWSSSSUukkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJk6ZJS4TpgnSUieqr1aeqr0lIwjsQAjsSU2Gqag1TSUukkkkpZJJJJSkkkklKSSSSUumT
+ pkQpSSSSKlJJJJhUpJJJMUpJJJJSkkkklKSSSTgpSSSdPUpJNKUoqXTJSkipZJJJMKlJ04CUIKRuVexW
+ 3BAsanKc25Zt7SVsW1qnZTKcFOHZUShikrYONKQxVIFOdXUQrLWkK63FRBjJ4U5xBUSCtI4yicVShDnQ
+ UoK0fsqX2VHRTnQUoK0fsqX2VLRTnQUoK0fsqX2VLRTnQUoK0fsqX2VLRTnQUoK0fsqX2VLRTnQUoK0f
+ sqX2VLRTnQUoK0fsqX2VLRTnQUoK0fsqX2VLRTnQUoK0fsqX2VLRTnQUoK0fsqX2VLRTnQUoK0fsqX2V
+ LRTnQUoK0fsqX2VLRTnQUoK0fsqX2VLRTnQUoK0fsqX2VDRTnwUtVofZU32ZEUkNISlBV0YykMZO0XOY
+ 9hKqW0EreOMoOxJSsKeZfikoX2QrpjheSh9i8kdFOCzGIVqukhawwvJEbiIaKc9jCEQAq+MVP9mQsIc/
+ VLVXzjKP2ZHRTS1TiVdGMpDGS0U0YKUFXxjJ/syFhDnwUoK0PsyX2ZDRTnwUoK0PsyX2ZLRTnwUoK0Ps
+ yX2ZLRDnwUoK0PsyX2ZLRTnwUoK0PsyX2ZLRTnwU0FaH2ZL7Klopz4KUFaH2VL7KlopoQU8FX/syf7Mm
+ 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
+ 50FOAVf+zJfZkkNGCngq8MdOMZJDnwUxBWl9mS+yoJcsgpoK0zipvsqKnNgpwCtD7Kl9lSS0AClBWh9l
+ S+ypaKc0goT2ErW+yqJxUlOG+klCOOVvHETfY0lOKyghWq2ELRGIiDFSU0QCnMq/9mS+zJKc+ClBWh9m
+ S+zJKc/VLVaH2ZL7Mkpz4KUFaH2ZL7Mkhz4KUFaH2ZL7Mkpz4KUFaH2ZL7MkpoQUoKv/AGZL7MkhoQUx
+ BWj9mSOKktLmkFR1WkcVQOMkhpCUQEqyMZTGOkvDWkqDgSrwx0jjpLw49jCVTsoJW+7GQnYiS8PPHGKd
+ uOVu/Y04w0UuVXSQrLGELRbiIgxUkOcAU+q0PsqX2VLRYWhBSgq/9mT/AGZJYXPgpQVofZkvsyS0ufBS
+ grQ+zJfZklrnwUoK0PsyX2ZBTnwUoK0PsyX2ZJeHPgpQVofZkvsyS8OfBSgrQ+zJfZkF4c+Cngq/9mS+
+ zJJLQgpaq/8AZkvsyCwtDVLVX/syX2ZJDQ1Sgq/9mS+zIqaGqWqv/ZkvsySmhqlqr/2ZL7Mipoapaq/9
+ mS+zIKaGqWqv/ZkvsySmhBTwVeGMpDGSU0IKYtK0vsqc4qCnHewqu+olbrsRCdiJqXBNJUmUGVsHESGJ
+ CCmtj1QtjFZCDVjwtCmuE0qblIVkFAYIRZUZUuSokpiVElKlKKiU6UIqYwpBPCUJpUpJJJNQpJJJJSky
+ dMkpSSSSSlJ0ydJSkkkklKSSSSUunTJ0lKUSpKJSUpJJJJS6i5SUXJKa1irlWLFXKSmTFarVVitVpKSh
+ OmCdJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAs
+ RygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1OvSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklL
+ pJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSS
+ SSUpJJJJSkkkklLpk6ZJSkkkkbQpJJJBSkkkkKUpJJJKlKSSSSpSkkkklLpkkkbUsmTpkrUunTAJwlal
+ JJ0kFKTqKUoqZFDcFOUinBTVeyUF1SvFqiWJwU0fQTilXNiW1OU1hUpCpHhIBOtKD0kvSVkBPtQ41NX0
+ UvSVraltS40NX0UvRVraltS41NX0UvRVraltS41NX0UvRVraltS41NX0UvRVraltS41NX0UvRVraltS4
+ 1NX0UvSVraltS41NX0kvSVraltS41NX0kvSVraltS41NX0kvSVraltS41NX0kvSVraltS41NX0kvSVra
+ ltS41NX0kvSVraltS41NX0kvSVraltS41NX0lE0q5tTbURNLU9FOKlZ2pw1LjXNf0kxpVqE0JcRU1DSm
+ 9BXNqbYjxlDUFCkKVa2J9qHGVNX0UvRVvam2pcamoaU3oq5tS2JcammKFIUq3sT7EuNTU9FP6StbU21D
+ jU1fSS9JWtqbalxIa3pJekrO1LalxKa3pJekrO1LalxKa3pJekrO1LalxIa3opekrO1LajxKavpJ/SVj
+ an2pcSmt6Sb0lZhKEuJTX9JL0lYhKEONTWNSY1KyQmLUuJDVNSQqVnanDUuJLXFKmKVYDVINS4lNf0kx
+ qVnamLUuJc1TUomlW9qW1HjU0/RS9FXNiW1LjS1RSm9IK0WpiEuJTTNIUPQV7alsR41NMUKYoVsMT7Eu
+ NTT9FL0lbLVEtS41Nb0k/pKxtS2pcSGv6QS9JHhPCHEhB6SkKkYBSAQ4kIPSTGlWtqYtS4kNM0qPoq4W
+ ptqXEpqipP6SsbU+1O4l1Nb0kvSVmEtqXEqmt6SXpKzCUIcSqa3pJekrO1LalxKpr+kl6SsbUtqXEqmv
+ 6SXpKxtS2pcSqa/pJekrMJQhxKprekm9JWdqfalxqavopeirW1Lalxpa3opvRVqExCXGpq+ipilHhSAS
+ 41IPRUTSrm1MWpcaWgaU3oq4WqO1O41NUUpxSrO1PtS41Nf0UvSVnaltQ4021vSS9JWdqcNS40Freil6
+ KtbU+1LjWNT0UvRVvaltQ41NT0UvRVvaltS41NT0UvRVvaltS41NT0UvRVvaltS41NT0UvRVvaltS41N
+ T0UvRVvaltS41NT0UvRVvaltR41NT0UvRVvaltS41NT0UvRVvaltS41NT0UvRVvaltS41NT0UvRVvalt
+ S41NT0UvRVvaltS41NT0UvRVvaltS41NT0UvRVraltS41NT0U3oq5tTbUuNcGr6KXoq1tUg1LjTbU9BM
+ aFd2pFiXGVW0DQm9BXS1R2o8aGsKVMUqwGqYagZqavoqJqV0tUC1ATU0jUo+irham2p3EhrCpTFSOGqQ
+ CBkpB6Sb0lZhLahxKa3pJekrO1LajxKa3pJekrO1NtS4kNf0kvSVjaltS4lNf0kvSVjaltS4lNf0kvSV
+ naltS4lNb0kvSVnaltS4lNb0kvSVnaltQ4lNb0UxpVvamLUuNDSNSXpK0WqO1LjUgFSIKkQBEaEuNKH0
+ kxpVoBOWocaWgaVA0q+WqBanCaWoKVIVKztThqPGpripL0lZ2piEOJLVNSiaVaIS2o8ammaE3oK7tS2I
+ 8ammKERtKsBimGoGamuKUxqVvaolqbxoaRqSFStFqYNR40IRUpCpHDVKEONDX9JL0VZhKEONTW9FMaVa
+ hMQhxoanopvRVuE0Jwmpq+kl6Ss7UtqPEmmt6SXpKztS2o8Sqa3ohL0VZ2p9qHEqmr6KXoq1tS2pcSqa
+ vopeirW1LalxKpq+il6KtbUtqXEmmr6KXoq1tS2ocSmp6Kb0Vc2ptiXElqein9FWtiW1LjU1vSS9JWdq
+ aEuNKD0kvRVkBSDUuNTTNKY0q6WqBajxqaZqTekrRaltR40tcUqYqCOGqQCBmpB6KY0qzCfahxlLU9FN
+ 6Kt7UtqPGsLV9FL0Va2pbUuNa1fRS9FWtqW1LjU1fRS9FWtqW1LjU1fRS9FWtqW1LjU1fRS9FWtqW1Lj
+ U1fRS9FWtqW1LjU1fRS9FWtqW1LjU1PRS9FW9qbalxqavopeirW1LalxqavopeirW1LalxqavopeirW1
+ LalxqavopeirW1LalxqavopeirW1Lalxqavop/RVnaltS41Nb0UxpVraltS40hp+inFKtbU4Yl7i4NUU
+ J/QVwMUtiHGUtH0ExoV4sUS1LjU0vQTilWtqUI8aEAqUvSRwE8JvEprmpDNSuEKJajxKaRqTipWdqcNR
+ 4kIBUpekrIakWocSqapqTekrJamhLiQ1/SS9JWIShHiU1/SS9JWIShLiQ1/SS9JWIShLiU1/SS9JWISh
+ LiU1/SS9JWYShLiU1vSS9JWdqW1LiU1vST+krEJQhxKa5qUDUrcJtqHGppmlIUq5sS2I8amqKVMVKwGq
+ QalxpaxqUTUrZaolqQklpmpL0Va2pw1HjU1RSpeirQan2pcaWmaVE0q6WqJakJpaRpS9FW9qW1HjQ0/R
+ S9FXNiQYjxqaopUxSrIYphiaZqanopeirm1RLUONTU9JL0lZLU0JcaEAqCf0kcBPCHGhqmlRNKuEKO1L
+ jQ1PQS9BW9qfahxqanoJeirm1NtThNTU9FP6KtbUtqPEmmr6KXoq1tS2pcSqavpJ/SVnan2pcSqavpJe
+ krW1LahxIavpJeirW1LalxJavopeirW1LalxKavopjSre1LalxJafopClW9iW1DiU1xUpCpHDU8JcSkB
+ qUDSrcJiEuNTTNKb0VbLUtqdxpanop/RVran2pcamn6KXoq3tSDUuNTVFCf0FbDU+1LjKWkaE3oq4Wpt
+ qXGVFq+il6KtbU+1LjWFq+im9FW9qW1LjQ1PRS9FW9qW1LjU1PRS9FW9qW1LjU1PRS9FW9qW1LjU1PRS
+ 9FW9qW1LjU1PRS9FW9qW1LjU1PRT+irW1LalxqavopeirW1LahxpavopeirW1LalxqavopeirW1Lalxq
+ avopeirW1LalxqavopeirW1LalxqavopeirW1LalxqavopeirW1LajxoavopvRVvam2ocaWsKVIUqwGq
+ Yahxp4mmaEJ1AWiWobmpcauJoChFbQrAYiNalxotregomlXtqgWpcaLaXoqQqVnakGpcarQekmNKtbUt
+ qXGhpmlN6KubU2xLjU0/RT+irexLYlxoaoqT+krO1PtS41Nb0kvSVnalCXGlq+kl6SswlCXGlr+kn9JH
+ hPCXGpB6Sb0VZhKEuNLUNKiaVcLUxajxpaRpTeirZam2pcamsKVIUKyGqYalxoaopUvRVraltS41NX0k
+ xqVotUSEuJTWNSb0lZhLalxKa/pJekrIan2pcamt6Sb0lb2pi1LiU1PSS9JWtqbajxKa4qT+krG1PtQ4
+ lNb0kvSVmEoS4lNb0U3oq3tS2pcSmp6KXpK1tTQjxKa3pJeirMJQlxKavohL0Are1LalxKavohL0QrMJ
+ QlxKa/pJjUrMJbUuJTTNKb0Fd2JbEuJTTFKl6KtbE+1LjU1PRS9FW9qW1LjU1PRT+irW1Lahxqavopei
+ rW1LalxqavopeirW1LalxqavopeirW1LalxqavopvRVvan2pcamn6KXoq3tTFqPGpqilSFKPCkAhxqa5
+ pQ3Uq9tQ3NSE1NL0VJtCsbVNrUfcUgFCf0VbDUxam8amp6ScVKwQkAjxqQekkalYhKEONTVNSgaVcLVH
+ ajxqanopxUrWxOGo+4prCpP6Ks7UoQ41Nb0VIVKwAnhDjU1/STGpWoUSEuJTW9JN6SswmhHjUg9JL0lY
+ AUgEuNTVNKiaVc2pi1LjU0/RTegrm1NtS41NM0JvQVzaltS41NMUKQoVsMThqXGpqilP6KtbUoS41NT0
+ k3oq3CW1LjU1PQT+grYYphiHGpo+gn9FXdiYtS41NT0kvSVnaltR41NU0pvQVvalsS41NT0E/oq3sSLE
+ uNTTNSialcLVAtR4lNb0k4pVgNUw1LiU1hSpCpWNqeEOJTX9JN6KtbUi1DjU0zSoGkK6WqBancSmp6IS
+ FKs7U4alxKawpUvRVgNUg1LiU1fRTeire1LalxKanopeirexLalxKanopeire1LalxKanopeire1Lalx
+ KanopeirW1LalxKavopeirW1LalxKavpJekrW1LalxKanpJekrW1LalxKavpJCpWtiW1DjU1xUpCpHDV
+ INS41NY1ITqFf2qJYlxqc046dtCvGtNsS41NdtKkalYDU+1LjU0zSm9BXdikGJcamiKE/oK9sTFiXGpp
+ eil6KuFibYlxqavopeirW1LalxqavopeirW1LalxqavopeirW1LalxqavopeirW1LalxqavopeirW1La
+ lxqavopeirW1LalxqavopvRVvaltS41NT0UvRVvaltS40tT0U/oq1tShL3EtX0UvRVqEoS9xTV9FL0Vb
+ 2pbUeNDU9BN6Cu7U21LjQ1BQnFKt7UtqHEpq+il6StFqiQlxIa3pJekrEJQjaGv6Sf0gjwlCVqQekE3p
+ o8JQlamv6SXpKwApBqXElq+in9JWdqRalxKa3ppemjkKKXElH6SXoowCIGocaWoaVE0q6WqBal7iWp6K
+ Xoq1tThqXuKaopUhSrO1PtS40NX0kvRVraltS4kNX0UvRVraltS4lNT0U/pK1tS2o8Smr6SXpK1tS2pc
+ Smr6SXpKztS2pcSmt6SXpKztS2pcSmt6SXpKztS2pcSmt6Kb0Vb2pbUOJTU9FOKVa2pw1LiU1hSkaVa2
+ pEJcamkaU3ohWyFGEeJTWFAUhQFYAUwEuJTV9AKJoV3amLUONTRNKQpVwtTbUeJTXFSf0lZDU+1DiU1f
+ SS9JWtqbalxqa3pJekrO1Lalxqa3pJekrO1Lalxqa3pJekrO1Lalxqa3pJekrO1Lalxqa3pJekrO1Lal
+ xqa3pJekrO1Lalxqa3pJeirO1PtS41NQ0KJoV3altS41NH0An9AK5tS2pcSmoKE/oq1tS2pcamt6Kb0V
+ b2p9qXGpp+gl6CubEtiXGpp+in9JWi1RLUuNTX9JL0keE8Jcamsak3pK0WptqXGprCpSFSOGqYalxIa/
+ pJekrW1ItQ4ktQ1JvSVotUYR4lNb0k/pKxtUg1LiU1vRT+irQan2ocammaFE0K9tUS1HjU0vQTegrham
+ 2o8Smp6Kf0VZ2pbUuJTX9JL0lZ2p9qHEpq+il6QVraltS4lNX0kvSVram2o8Smt6SXpKztS2pcSmt6Sf
+ 0VZ2p9qHGpq+il6KtbUtqXGpqein9JWtqW1LjQ1vST+krO1KEuJFNM1KBqVwtUC1LiRTV9JSFKsBqkGo
+ 8SQ1xSn9FWg1S2oca5oGhQNC0CxQLEeNdbQ9BSFCt7U4alxqtrChT9FWQ1S2ocaranopvRVshNCXGhqe
+ il6KtbUtqPGimr6SXoq1tS2pcaKavopeiFa2pbUuNHC1fSS9FWtqW1LjVwtX0UvRVraltS4k01fRS9FW
+ tqW1LiS1fRS9JWtqW1LiXW1fST+irO1PtS4kW1fRS9FWtqW1DiWtX0UvRVraltS4lNX0UvRVraltS4lN
+ X0UvRVraltS4lNX0UvRVraltR4ktX0UvRVraltS4lNX0U3oq3tS2ocSmqKVIVKxtShLiUhFSXpBGSS4k
+ tc1BQNKtQmhK1NQ0JvQVzanDELU1W0wjsZCIGKUIEqUAnJTJpTUqKipJJWhinCeEyVpXTqKdNQpJOkgh
+ ZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunUU6SlJk6ZJSkkydJS6i5SUXJKa1irlWbFWKSmTFarVVi
+ tMSUlCdIJJKUkknSUsknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kydJSkydJJSySSSSlJJJJKXThMn
+ CSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1evSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkk
+ kklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJ
+ KWSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkkVKSSSSUpJJJJSkkkklKSSSQUpOmSCClQlCkE8IKYwkkUxK
+ Sl0yaUpRUpJMkiFLynCipJwUulCcJJyloUSFOFEhJLEpBPCQCchcKQUQpBMIUpJOmQpKkkkkqUpJJJKl
+ KSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUsmKkmhGlMU
+ k8JQnJVKdMnCCl4TgJBSCCloTQpKJSUsU0piUyKmYThRCkEipdJJMUEKlMoylKNKZJJkklLpJkklKSSS
+ SUpJJJJSkkkklKSSSSQpMnSSUskkkhSlQlCcJ4SpDGElJRKSVwpAocpwUaUzSTBOglZJIpkUrpKKdJKi
+ E0KQCeErSxATgKUJkLUvCZKUxKSlFRISJTSnIXhKEpThBC0JQpJ4SQxhOnTIIUkSkmISpCxKinIShKlL
+ J0oSTl4UknTJKUknSSUpJJJJSkkkkFKSSShJSkk8JQhSlkk8KJSpSk6inAQpS6ZSAS2pKYqQTbVIBKks
+ gUxShMUaUxKUJJwlSlBqeE4TpKYQmIUyoFFSycJkglSGaSZJCkLpJkkqUukmSSpS6SZJKlLpJkkqUukm
+ SSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukkmSpSiokpyExCIUqU4KhC
+ cI0lKCpIYKmE0qWIUYU0ySlgFIJkklLkoZUiVEohTFJPCUIoUnBTJklM06iFIIKUkkkkpZJOlCSlkkoS
+ SUpJOkkpZJOkkpZJOkkhZOkkkpSRSSQpDEhRhEhMQlSmACkEoSSpLMFPKgCnlKkqKiU6iUQpaU4KiUka
+ SzlJMFIBJK0JBqmApQm2phCYhEhQKSmKkFFOCipmolPKYoUhgQkAkU4SpDIBOkEkKUslKRUSEqQvKiSl
+ CUJtIVKSUJQnAKXSSST1ykkkkkqSSSQQpOmTpKUkkkkpSSSSSVJJJJKUkkmlClLpQkE6VJYkJoU4TQhS
+ lgphRAUgjSlFQIUlEpUpjCcNUgFIBJTHalCJCYhJLBKUiFFFTKU6gFJClpXSSSQpCkkkkaUpJJJKlKSS
+ SSpSkkkkqUpJJJKlKSSSSpSkySSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlk4SSQp
+ cyBUlBOClSWSYhOkkhgQowiEJiElMUpShNCNKZSmKUJQkpaFIBKE4SUyCYpSmJSUxKZOUyKFJJQkkpSS
+ SSKFJJJJKUkkkkpdJMkkpdJMkkhdJMkgVMoTwmCkE2kLQlCmolJTFPKYppRpK6YpJJUlZJOVEopZAp5Q
+ 5Tgo0lnKaEgnAQUtCUKcJQhakcJKRUSipkFIIcpwUqUkUSmlKUKQsQmhOkhSFkk8JQhSFiVGU5CjCVIX
+ lSBUAFIBClMpSShJPCVJJJIrlJJJJKUnTJJKXSSSSQpJJJJSk6ZJJK6ZOmQUskkmSpK6dMkhSlSlKSaE
+ qUpOmhPCNKXCUJJ0lLQlCdJJKkikmKSliU0pFNCKmSSZJClhZJkkkqUpJJJKlKSSSSpSkkkkqUpJJJKl
+ KSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpOmSSpSioynKihSGQKmChBSCFIpKo
+ kJwnhKlUjhSCeExSpS5KgSmJUCUqUylOFAFSCVKZp1EJ0qUpJMklSl0oTJ0qUqEydMlSlJJJJUlSSdMl
+ Slkk5USlSV5SlRSSpTOUyYJwEqUtCW1TAT7UqUwAUgnhMiApkmKaUkVKKiVJMQkpinCUJQlSlwpKIUkl
+ KTFOmSUsmTpIqUnSSQUsU0pFMjSmYSUQnSUolRlIqJSpTKU4UFIJUpmE8JgpIKYwmhSITFFTFOkkkpSS
+ SSSl0kySFKXSTJIUpdJMklSl0kySVKXSTJJUpdJMklSl0kySVKXKiU6iUqUspAqKcJUpIokJwnhKlMNq
+ kApQlCSl0xSlRJSpSxSCZOjSl0kkyFKUnhMpBKlLQmhTUSEqUsmlIhMlSmUp5UE6VKZSmKSSVKWTKUJo
+ SpSgU4KiklSmcppTJkaUylMmThKlLwlCcBSAQUxhJSIUClSlEppTFMjSmUpwohSCFKZhPKglKVKZymJU
+ JSlKlMk8JgpJKWhJIpiUqUySUJTyjSlEKJClKRSUxhOEyaUVMk8qEpSlSkkpShynBSpTIqJCkEoQUjhK
+ FMhRKKlBSCikCkpknhME6SlQlCSSClQlCSSSlQlCSSSlQmhOkkpaEoTpJKWhKE6ZFS0JQnToKWhKE6SS
+ loTgJJJUpcBPCYKQQUwLVEhFhQISUwSBTFMjSkgUwhAqYKVKZpEJgUpQUsQmhSlMUqUxhMnSSpSydJJK
+ lKSSSSpSkkkkqUpKEkkqUqEoSSSpSoTQnSSpSoShIKUIUljCZThRISpLFJKEkaUqUpTJkaQylKVBKUaQ
+ klPKGCnBSpDMlRKSZFSkkkklKhJOkkpaEylCaElKCcJgpJKUmKdMUFMSoqZCaEUrBEBUIUgm0lmmIThS
+ hNSjhKFMhRISpSydMkjSF0kkkUKSTJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0lGUpSUySlRSSUylMSo
+ ymSpS5KZKE8JKUFIFNCSSmUpiVEppSpTKUlFOEaUyCdRToKXTJJkKUukmSSpS6SZJKlLpJkkqUukmSSp
+ S6SZJKlLpJk6VKUlKZMUqUylPKGpBKlMkoSCdJSyZOVEpKXlOChynBSpSUJ1AFSlJSioFSKYpKYpwEk4
+ SpSoTQpJklLQpBMnlJTJMU0pSkpRUU6ZJSk4ShJJTIJ5UUklMpTJkySlJoUoShJTGEykQolJSk6inRpS
+ 6dMkkpSSSZJSk6ZJKlLp0ydJS6SZJBS6ZJMipdKVGUpSpC5USE6eElMIThOQmhJTIFSlDUghSmSiQnSS
+ SwhKFOE0IqUEpTJilSVyU0qJShKlMgVJQCkElLpJJJKUkkkkpSSSSSlJJJJKUkkkkhSSSSSlJJJJKUnT
+ JJIXSTJJIXSTJJJXSTJJKXSTJJKXTJJJJXSTJJKUmJSShJS0ppTwmhFKpTpoTwkpeFMBRCkECpeExTqJ
+ QSxJTSkSoykpkCpBQBUwgpeEiE4SKSmEJKSZBCkkkkEKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJ0
+ ydJSkydMkpZOmTpKXUXKSi5JTXsVYqzYqxSUyYrTFVYrTElJgkkEklKTpk6SlJJJJKWSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSk6ZOkpSSSSSlkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61Yakpkm
+ TpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSU//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSmLkCxHcgWJKa5TsTFOxJ
+ TZYjhAYjhJSkkkklLJJJJKUkkkkpSdMnSUpMnTJKWSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJ
+ S4TpgnSUieqr1aeqr0lIwjsQAjsSU2Gqag1TSUukkkkpZJJJJSkkkklKSSSSUumTpklKSSSSUpJJJJCk
+ kkkkqSSSSUpJJJJSkkkklKSCSSCmQTqMpiUFLkqBKRKZJSkkoUgEVLJKUJQiFLBOEiFEmE4KZykXIDrI
+ QLMiE5TcNgUDaFl2ZkIJzvNFTteoEvUCxRneal9tTgFOz6gS9ULFOam+3I8Knb9UJeqFifbkvtyXCp2/
+ VCXqhYn25L7clwqdv1Ql6oWJ9uS+3JcKnb9UJeqFifbkvtyXCp2/VCXqhYn25L7clwqdv1Ql6oWJ9uS+
+ 3JcKnb9UJeqFifbkvtyXCp2/VCXqhYn25L7cjwqdv1Ql6oWJ9uS+3JcKnb9UJeqFifbkvtyXCp2/VCXq
+ hYn25L7clwqdv1Ql6oWJ9uS+3JcKnb9UJeqFifbkvtyXCp2/VCb1QsX7cl9tS4FO2LQpCwLC+3J/t/mg
+ Ypd31AmLwsT9oeab7f5ocKXaNgTeqFinO80327zREUO4LQpC4LBGd5qQz/NLhCnc9UKJtCxvt3mmOd5p
+ cKnYNoTeqFjHNUftyPCp3RaEQWBYAzvNEGd5ppip3DYFA2BZH25QOakIqdf1QkLQsU5qX21O4UO36oS9
+ ULF+2pfbUOFTteqEvVCxftqX21LhU7XqhL1QsX7al9tS4VO16oS9ULF+2pfbUuFTteoE/qBYv21L7clw
+ qdr1Al6gWL9uS+2pcKna9QJeoFi/bUvtqXCh2DaE3qhYxzU321KlO4LQpiwLDGapjNQpDsGwKBtCyjmo
+ ZzUgEuv6oTi0LFOakM1O4VO6LQpeoFhjN81MZqaYrnZNgUTYFkHNUTmo8KXY9QJxYFjfbE321LhU7gtC
+ f1QsE58d037R80OBTveqExtCwv2h5p/t/mjwKdk2hMbQsY5vmm+2p3Cp2PVCf1Qsb7Yn+1pcKnYFoUha
+ Fi/bE/21DhQ7YtCf1QsQZqf7ahwodr1Qm9ULF+3JfbkOFDteoE/qBYn27zTjOS4VO16gTbwsb7d5p/ty
+ VKdj1Am9QLH+2pvtqPCl2fUCXqBY321L7alwpdn1Al6gWN9tS+3JcKnZ9QJ/UCxftqX21LhU7XqBL1As
+ X7al9tQpTteoEvUCxftqX21KlO16gS9QLF+2pfbUqU7XqBN6gWN9tS+2pUp2PUCkHhY32xOM1KlO2HhL
+ 1AsX7d5pjn+aHCl2/UCXqBYX7Q80h1DzS4VO6bAoG0LG+3+aic7zREVOx6oTi0LE+2+akM3zTuFTuC0J
+ eqFi/bfNMc7zQ4FOybgom0LFOd5pvt3mjwKdv1Ql6oWL9tT/AG1HhU7XqhP6oWJ9tS+2ocK12vVCXqhY
+ v21L7alwqdr1Ql6oWL9tS+2pcKna9UJeqFi/bUvtqXCp2vVCXqhYv21L7alwqdr1Ql6oWL9tS+2pcKna
+ 9UJeqFi/bUvtqXCp2vVCf1QsT7al9t80uFTt+qEvVCxftqX21LgU7XqhL1QsX7al9tS4FO16oS9ULF+2
+ pfbUuBTteqEvVCxftqX21LgU7XqhL1QsX7al9tS4FO16oS9ULF+2pfbUuBTteqEvVCxftqX21LgU7fqB
+ L1AsT7d5pvt/mhwpdsvCj6gWKc/zS+3+aQip2xaFMWhYQzvNSGd5o8Knb9UJvVCxft3ml9uQ4Qp2vVCf
+ 1QsT7b5p/tvmlwqdk2hR9QLHOb5qP25LhU7YsCf1AsQZyf7d5pcKnYNgUfVCyDmqP21HhQ7YtCkLQsMZ
+ qkM1AxU7fqhL1QsX7cm+3eaHCl2/UCb1AsX7al9uR4UO16gS9QLF+3eaX23zS4VO16oS9ULF+3JfbkuF
+ TteqE/qhYn25L7clwqdv1Al6gWL9uS+2+aHCh2vUCY2hY325Mc1LhU7PqhOLQsT7anGajwqdsWBP6gWM
+ M1P9tQ4VOsbAo+oFknNUDmo8KnZ9UJ/VCxftqQzUeFLteoExsCyPtqY5iXCl1jYEhYFkfbEhmI8KXZFg
+ UxYFijMS+3R3TTFTui0J/VCwP2h5px1HzTeBLum0KBtCxvt/mmOd5oiKHXNoSFoWL9t804zU7hU7fqhM
+ bQsf7YmOYlwodf1QpC0LEOanGalwqdwWhP6oWGM5P9uTeFDteoE3qBYv27zS+3JcKHb3hPvCxBnKQzkC
+ EOzvCYvCyPtyic5IRS65sCXqBYxzU321O4Uu16gS9QLG+2pfbUuFTs+oEvUCxvtyX21LhU7PqBP6gWL9
+ uS+3JcKna9QJeoFi/bkvtqXCp2vUCXqBYv21L7b5pUl2vUCXqBYv25L7b5pcKnZNgTeqFj/bUvtaVKdg
+ WhSFoWN9rT/bEKS7XqBN6gWKc7zUDn+aXCp3fVCf1QsEZ/mpDP8ANLhU7ZtCibQsY53mo/bvNERS7YtC
+ ILQsEZ3mpjO80jFTueqFE2hYpz/NQPUPNDgU7ZtCj6gWH+0PNL7f5p3Cp3PUCf1QsT7d5pfbkuFaXc9U
+ JeqFifbkvtyXAh2/VCXqhYn25L7clwKdv1Ql6oWJ9uS+3JcCnb9UJeqFifbkvtyXAp2/VCXqhYn25L7c
+ lwKdv1Ql6oWJ9uS+3JcCnb9UJeqFifbkvtyXAp2vVCXqhYv23zTfbfNLhU7fqhL1QsT7b5pfbfNLhU7f
+ qhL1QsT7b5pfbfNLhU7fqhL1QsT7b5pfbfNLhU7fqhL1QsT7b5pfbfNLhU7fqhL1QsT7b5pfbfNLhU7f
+ qhL1QsT7b5p/tvmlwqdr1Qn9ULE+2+aX25LhU7fqhL1QsT7f5pvt/mhwrnb9UJxaFh/bvNIZ3mlwpd0W
+ hSFoWEM/zT/b/NLgU7vqhN6gWJ+0B4pfb/NDhU7RsCb1Asb7f5qJzvNLhQ7fqBL1AsP7f5p/t/mlwqdv
+ 1AmNoWN9u80xzfNLhU7BuCXqhYv21L7ancKHb9UJ/UCxPtqf7chwqdr1Am9QLG+3JfbUuFTs+oEvUCxv
+ tqX21LhQ7PqBL1Asb7b5pvt3mlSna9QJeoFi/bUvtvmlSna9QJeoFi/bkvtyVKdr1Am9QLF+2p/tyFKd
+ n1Ql6oWL9tTfbUaQ7gtCmLQsEZqmM5DhQ7vqhRNoWN9uUTnJcKXYNoUfVCxjnKP25O4VO4LQpCwLDGap
+ jNQ4UuybAomwLK+2KJzEuFLq+oEhYFkfbEvtidwpdkWhTFoWH9thN+0PNN4VO/6oSNoWAOoeakM/zQ4V
+ O0bQoG0LIOd5qBzfNOEVOz6oTi0LE+2pxmo8Knb9UJ/VCxftiX21DhQ7XqhP6oWJ9tT/AG1DhQ7fqhL1
+ AsT7cn+3eaHCh2TYFHeFj/bvNN9uSpTth4Ug8LFGcpDOQpTsF4UTYFkHOUDnIiKnZ9UJeqFifbkvt3mn
+ cKXb9UJeqFifbvNL7d5ocKnb9UJ/VCw/t3ml9u80uFTueqEvVCw/t3ml9u80uFTueqEvVCxPtyb7d5pc
+ Knc9UJeqFh/bvNL7d5oUl3PVCXqhYf27zTjOSpTteoEvUCxxmJ/taNKdf1An9ULHOYoHNS4Uu36oS9UL
+ C+3+acZ/mlwqd31Al6gWIM/zT/bkOFLteqEvVCxDneaX27zR4VO36oT+qFh/bvNI5/mlwqdv1Ql6oWEc
+ /wA0vt/mlwqdz1Al6gWIM/zT/bkuFTs+oE3qhYxzU321HhWl2vVCXqhYv21L7d5pcKHa9UJeqFi/bvNL
+ 7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL
+ 7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL
+ 7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bvNL7d5pcKna9UJeqFi/bUvt
+ qXCp2vVCXqBYozVIZiXCp2PUCkLAsb7Yn+2JcKadoWhS9ULD+3eab7f5pvAp3TaFA2hYv7Q81E53miIK
+ dg2hQNoWQc1McxOEUOwLQpi0LEGYpDNS4VO36oS9ULG+2pjmocCnZ9UJeqFi/bUvtqPAp2/VCf1QsT7a
+ n+2ocCnZ9UJeqFi/bU321LgU7XqhOLQsT7apDNS4VO16oT+oFijNT/bUOBLsGwKJsCyTmKJzEeFTr+oE
+ 3qBZH2xL7YjwpdkWBSFgWJ9tT/bvNDhU7gtCf1QsL7f5pj1HzTeBTuG0KJtCwz1DzTfb/NHhQXd9UJ/V
+ CwhnKYzkuFDt+qE3qBY321L7alwqdj1Al6gWN9tS+2pcKna9QJ/VCxPtqf7alwqdr1Qm9ULG+2pvtvml
+ wqdn1Ql6oWL9tS+2pcKnb9UJ/UCxBm+af7alwqdg2BN6gWR9tTfbEuFTsiwJ/UCxhmJ/tqXCp1jYFH1A
+ sk5qb7YjwqdcWBSFgWP9sS+2pcKnbFoT+qFhHPjuonqHmm8KXeNwTeqFgftHzUhnz3R4UO76gS9QLGGb
+ 5qQzEuFTr+oEvUCyDmKJzUuFTseqEvVCxTmpvtqPCp2vVCf1QsT7al9tS4VO36oS9ULE+2pfbUuFTt+q
+ EvVCxPtqX21LhU7fqhL1QsT7al9tS4VO36oS9ULE+2pfbUuFTt+qEvVCxPtqX21LhU7XqBL1AsX7apDN
+ S4VOx6gT+oFj/bEjmJcKnZFoUhaFhnNhROfHdDgS7/rBMbgsD9o+ab9o+aXAp3jcFH1QsP7f5pxneaPA
+ h2/VCf1QsQZqf7alwqdr1Qm9ULGOao/bUuBTti0KQtCwxmqQzUjBLueqEvUCxhmpHNTeFTrmwJvUCxzm
+ qJzUeFTs+oE/qhYn21P9tR4UO2LAn9QLEGd5qX25DhS7PqBMbAsf7amOclwqdg2BN6oWMc7zUftyPCh2
+ /VCXqhYn25L7clwqdv1Qn9ULD+3eab7f5pcKneFoUhaFz/7Q8046j5ocCXf9UKJsCxBn+al9unulwKdc
+ 2BN6gWR9sS+2I8KHYFgUhYFjDMT/AG1LhS7BsCibQsg5qgc1IQQ7PqhOLQsP7apDNR4VO6LQp+qFhjNU
+ vtqYYJdg2hQNoWQc1DdmoiCnZ9YJC4LDOakM3zR4UO8Lgn9ULDGapDNQ4VOybQom0LIOYmOYjwqdf1Ql
+ 6oWP9sS+2JUp2PVCcWhY32xL7YlSncFoUvVCwft0d0vt/mhwqd02hQNoWJ9v80vt3mlwqdr1AnFoWL9t
+ T/bUeFTtC0KXqhYf21L7d5ocKnc9UJeqFh/bvNL7d5pcKnc9UJeqFh/bvNL7d5ocKnc9UJeqFifbvNL7
+ clwqdv1Ql6oWJ9u80vt3mlwqdv1Ql6oWJ9u80vt3mlwqdv1Ql6oWJ9u80vt3mlwqdv1Qm9ULF+3eab7c
+ jwqdv1Qm9ULE+2pfbUeBLt+qEvVCxftqX21LgU7YtCkLgsH7d5pftDzQMFPQesFE2hYP7Q80/wBvnulw
+ Kdk2hR9QLH+2yn+2J3Cp2RaE/qhY32xN9tQ4VO16yf1gsP7al9tS4EO56wS9ULD+2p/tqXAl2/VCXqhY
+ n21L7clwodv1Ql6oWJ9uS+3JcKnb9UJeqFifbkvtyXCp2/VCXqhYn25L7clwqdv1Ql6oWJ9uS+3JcKnb
+ 9UJeqFifbkvtyXCp2/VCXqhYn25L7clwKdwWhSFoWD9uT/b/ADQMEh3fVCibQsM9Q81E9Q80uFLueqE/
+ qBYQz/NEbmpcKnZ3hRLwsv7YmOWlwodMvCXqBZRy032tGkOsLApeoFj/AGxL7YlSHZ9QJvUCx/tqX21C
+ lOx6gT+oFi/bUvtqVIdr1Ql6gWL9uTfbUKS7XqBL1AsX7an+2o0h2vUCf1AsX7an+2pUl2fUCb1Asb7a
+ l9tS4VOz6gS3hY4zFL7YlwrnVNgSFoWQcxQOajwqd1toRBaFzwz47px1HzTTFLvm0KBtCxP2j5pfb/NI
+ QU7XqhL1QsX7al9tR4UF2vUCXqBYv21L7b5pcKHa9QJeoFi/bfNL7b5pcKna9QJeoFi/bfNL7b5pcKna
+ 9UJeoFi/bfNN9tS4VO36gS9QLE+2pfbUuFTt+oEvUCxPtqf7alwqdr1Am9QLG+2+aY5qXCp2fVCb1Qsb
+ 7amGajwqdv1Al6gWMM1P9sQpTr+oEvUCyPtiX21GlOyLApCwLE+3J/t/mhwqdr1AmNgWIc/zTfb/ADS4
+ VOybAl6gWP8AbU/2xHhU6/qBP6gWP9sS+2JcKnY9QJeqFj/bU321LhU7PqhL1QsX7al9tS4Uu16oS9UL
+ F+2+aX21LhU7XqhL1QsX7al9tS4VO16oS9ULF+2pfbUuFTteqEvVCxftqX21LhU7XqhL1QsX7al9tS4V
+ O16oS9ULF+2pfbUuFTteqE3qBY321OMxLhU7HqBP6gWP9sUDnR3R4UO4LQpeqFz/AO0PNOOoeaHAl3za
+ FE2BYoz/ADS+2pcCnYNgSFoWP9sTfbEeFDti0KQtCwxmqQzUOBLtG0KJtCx/tqY5qHAp2PVCcWhYv21L
+ 7ajwKdz1QmNoWL9t80xzUOFTteqEvVCxPtqb7cjwodz1Ql6oWJ9uS+2ocKnc9UJeoFiDNUhm+aXCp2vU
+ Cf1AsUZqf7ahwqdn1Al6gWP9tS+2pcKnY9QJeoFjfbUxzkuFTt+qEvVCwjn+ab9o+aXCl3TaFA2hYn7Q
+ 8032/wA0RFDt+qEvVCxPtqf7ajwqdv1Ql6oWL9tS+3IcKna9UJvVCxftqX21LhU7XqhL1QsX7b5pfbUe
+ FTt+qE/qhYn21L7ahwqdv1Ql6oWL9uS+3JcKna9UJjaFi/bkvtqXCp2DaE3qhY/2xOMtHhQ7QsCmLAsU
+ Zif7agYqdg2BRNgWOc5QOf5oCKna9QJxYFh/bvNOM5HhS7otCf1QsMZ3mn+3eaHCp2jaE3qBY327zS+3
+ eaPCl2fUCW8LHGan+2pcKnW3hNvCyTmqJzUqU7HqBP6gWL9tS+2pcKna9QJeoFi/bUvtqXCp2vUCXqBY
+ v21L7alwqdr1Al6gWL9tS+2pcKna9QJeoFi/bUvtqXCp2vUCXqBYv21L7alwqdr1Al6gWL9u80vtvmlw
+ odr1Al6gWL9u80vtqVKdv1Al6oWL9tS+2pqHa9UJeoFi/bUvtqSHa9QJeqFi/bUvtqSXZ9UJ/VCxftqX
+ 21KlO16gS9QLF+2pfbUqU7XqBL1AsX7al9tSpTteoE3qhY321L7alSnZ9QJ/UCxftvmm+3+aVJdzeEt4
+ WH+0PNP9v80qU7RsCb1Qsb7d5qP27zQS7YtCkLQsMZ3miszJQU7PqJi5Z7MmVYZZKSkxTJAyphqCmIUw
+ kGqQCCV0xKRUSUlKlKVFOEEMkkkkEKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJ0ydJSkydMkpZOmT
+ pKXUXKSi5JTXsVYqzYqxSUyYrTFVYrTElJgkkEklKTpk6SlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSSSSSlkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSU//9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKYuQLEdyBYkprlOxMU7ElNliOEBiOElKSS
+ SSUskkkkpSSSSSlJ0ydJSkydMkpZJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhOmCdJSJ6qvV
+ p6qvSUjCOxACOxJTYapqDVNJS6SSSSlkkkklKSSSSUpJJJJS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUumTpkFLFMnhKEFMU4CkAnhJSwCcBJKUVMklDcnBRClFCeUUlBenBTUufCzMi+FfvWPlFOU07
+ 8khVDlFRvJlVwCSnKbzMglHbaSq9FJK0qsQlOCmtvcm3uWiMI+CX2E+CdxKc3e5Le5aX2EpvsJ8EeJTn
+ b3Jb3LR+wlL7CUOJTnb3Jb3LR+wlL7CUuJTnb3Jb3LR+wlL7CUuJTnb3Jb3LR+wlL7CUuJTnb3Jb3LR+
+ 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
+ 0N7kt5V/7EfBL7EfBJTQ9RyXqOV/7EfBL7EfBJTQ9RyW9yv/AGI+CX2Ioqc82OUDY5aZwj4KBwT4IJc3
+ 1XJxa5X/ALAfBSGAfBJLnm1ygbyFoPwiFStxyEFIxklHqyiqD2EJMJBSU79GRK1KLJXO4z1tYrkFOxUZ
+ VhoValW2pqlQmKclQJSUsSolIlMglScJQnhJC6SSSCFJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUsnTJ0lLqLlJRckpr2KsVZsVYpKZMVpiqsVpiSkwSSCSSlJ0ydJSkkkklLJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSdMnSUpJJJJSySSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ
+ 0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKf//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSmLkCxHcgWJKa5TsTFOxJ
+ TZYjhAYjhJSkkkklLJJJJKUkkkkpSdMnSUpMnTJKWSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJ
+ S4TpgnSUieqr1aeqr0lIwjsQAjsSU2Gqag1TSUukkkkpZJJJJSkkkklKSSSSUumTpklKSSSQUpJJJFSk
+ kkklKSSSSUpJJJJSkkkklKSSSQUpIKJKQKCkgTqAKlKSlioFTKiQkpinCUKbQnKVCg9qOAoPCKnNvasb
+ LC3cgLEzE4KcS4aqNTJKe86p6DqnqdfDoBW5RiiFmYA4XQ440SJUxGKEvswVtRJUdlTW+zBN9mCtbk0p
+ WprfZgl9mCsylKVqa32YJfZgrMpSlamt9mCX2YKzKUpWprfZgl9mCsylKVqa32YJfZgrMpSlamt9mCf7
+ MFYlKUrU1/swS+zBWZSlK1Nb7MEvswVmUpStTW+zBL7MFZlKUrU1vswS+zBWZSlK1Nb7MEvswVmUpStT
+ W+zBL7MFZlKUrU1vswS+zBWZSlK0NcYwT/ZQjhyfclZS1zitQLcUQr25DsOiIS4OVjgLn8yqJXV5fC5z
+ OHKdanm8hsFVRyruSNVTA1StDdxmytzEqlY2KNV0GEErU62NjgrRrxQg4o0WlWhaUQxQn+yhWZSLk2yp
+ qnGCb7KFa3JAo2hqfZQl9lCuJiUrU1PswT/ZgrMpSlamt9mCX2YKzKUpWprfZgl9mCsylKVlTW+zBL7M
+ FZlKUrKmt9mCf7MFYlPKVlTW+zBL7MFYlKUrKGv9mCX2YKxKUpWprfZQm+yhW5SlK1NT7KEvswVuU0pW
+ hrDGCf7KFZBUghaWmcUKJxQr6iUrS0DihN9mCvFRTrU0/swTjFCtpwlaWr9lCrXYwha0KteNEgUvM5dA
+ CwsmsAro848rnMp2qNqaJGqIwIJdqi1lG1Nypi0seqVn0LWxkrU6GPQCr7MYIWMFpVjRC1Nf7MEvswVy
+ EyFoaoxgpjGCsAqQKFoa32UJvsoVuUpQtDU+yhL7KFblNKNqan2YJfZgrUppQU1/swT/AGYKxKeU0lTW
+ +zBL7MFZlNKVpa/2YJfZgrEpSlamv9mCX2YKxuS3JWpr/Zgl9mCsSlKSmv8AZgl9mCsylKVqa32YJfZg
+ rMpSjaWt9mCY4wVqUpRU0/soS+yhXEilamp9lCf7KFZlNuRUgGKFL7K1GDlIOQ1U034ohZ2TjgLaedFn
+ ZJTgl57JpAWXdXC28lZNwUgQ572oe3VWHhBjVOS2KGSVtYlIMLJx+VvYXZK1Onj4wKutxQmxhorgUUpK
+ apxQl9mCtEppTLWtb7ME32YK1KUo2pq/Zgl9mCtSlKVqav2YJfZgrUpSlamr9mCX2YK1KUpWpq/Zgl9m
+ CtSlKVqav2YJfZgrUpSlamr9mCX2YK1KUpWpq/Zgl9mCtSlKVlTV+zBL7MFalKUrKmr9mCX2YK1KUpWV
+ NX7MEvswVqUpSsqav2YJfZgrUpSlZU1fswS+zBWpSlKypq/ZgnGMFZlKUrUgGKEjitVjcmL0NUtOzFCz
+ sjGAWy9yz8gpwU83l1ALEyWwuizAsDKCcpzH8otIkoTxqj0DVK0OviVzC6DEoBWLhDhdHhjhC1NyrGCs
+ DFCJVwjSmkpa32UKJxQrkqJKFlDTOKE32UK5KSNqagxQn+zBWkpStTW+zBL7MFZlKUrU1fswS+zBWpSl
+ K1NX7MEvswVmUpStTW+zBL7MFZlKULU1vswS+zBWpSlK1NX7ME/2YKzKUpWhrfZgl9lCsynBStTV+yhM
+ cUK4mKNqaRxgl9mCtkpgUbU1hjBP9lCtBSCHEppnFCicUK8VEpcSWj9mCX2YK4Uk60tQYoUhihWgphAy
+ S51uMIWPmUASukuGiwc88pwKnmMtgCzXjVaOa7VZT36o2pPWFcqZKpVFaFCVqb1FUrUx6AVSxgtjGCVq
+ TVYwVgYoRqhorACaZIaJxQkMUK8QmQ4lNT7KEvsoVtKULWtT7KEvsoVuUpStTT+yhL7MFbJUSUVNb7ME
+ 4xgrEpwUCVNcYwT/AGYKwCnlMtLW+zBL7MFZlKUbU1vswS+zBWZSlK1Nb7MEvswVmUpQtTW+zBL7MFZl
+ KUrU1vswS+zBWZSlG1Nb7MEvswVmUpSU1TjBQOMFdlKEbS0fswTjFCuwlCNpagxQpDFCsyluStSAYrVF
+ 2KFblM4oWpyL8YBY+TSAugyCsXLKkCnDvZCovatDIKoWFPCkJCPS0FVyUeh2qKnZxKgVu42MCsTCdwuj
+ xDogVNlmKFM4oR2FTJUJJQWn9lCX2YK1KUoWhq/Zgl9mCsylKVqa32YJfZgrMpSlamt9mCX2YKzKUpWp
+ rfZgl9mCsylKVqa32YJfZgrMpSlamt9mCX2YKzKUpWprfZgl9mCsylKVqa32YJfZgrMpSlamt9mCX2YK
+ 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
+ LWOIFUvxgAtUlVLzolEpecy6AFh5LIXR5hXPZZUinNcNUWluqC46o1B1SU62LXK2segELJw1vY3CCWxX
+ jBGGMESsooKBKmv9mCb7MFalKULU1fswS+zBWpSlK1NX7MEvswVqUpStTV+zBL7MFalKUrU1fswS+zBW
+ pSlK1NX7MEvswVqUpStTV+zBL7MFalKUrQ1fswS+zBWpSlK1NX7MEvswVqU0pWhrfZgl9mCsylKVqa32
+ YJfZgrMpSlamt9mCX2YKzKUpWprfZgl9mCsylKVpa32YJfZgrMpSlamt9mCX2YKzKUpWprfZgl9lCsyn
+ lK0tYYgT/ZArQKmm2pyrsUQsjKxwF0t3CxMwJ1qecvrgqqBBV/J5VLukpt462sQLGxhqtvEHCCnXoCth
+ AoGisgIKRuKG4oj0FyClpUghqbUFJAEkgnSUskkkkhSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpOmT
+ pKUmTpklLJ0ydJS6i5SUXJKa9irFWbFWKSmTFaYqrFaYkpMEkgkkpSdMnSUpJJJJSySSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUnTJ0lKSSSSUskkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkyd
+ MkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSn/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKYuQLEdyBYkprlOxMU7ElN
+ liOEBiOElKSSSSUskkkkpSSSSSlJ0ydJSkydMkpZJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklL
+ hOmCdJSJ6qvVp6qvSUjCOxACOxJTYapqDVNJS6SSSSlkkkklKSSSSUpJJJJS6ZOkkpZJJJBK6ZJJFSkk
+ 6ZFSkkkklKSSSSUukkmQUumSSQUxKaFKEoQUsFMFRSlJTJMlKSSlKbVFIIqSyhvKRKE9ycFNXIKxMwrY
+ vKxcxOCnEvOqVB1TX8pqDqnKekwDwuio4XN4B4XRY50QKm0UIlTJQyUAEKlKVGUpSpTKUpUZSlKlMpSl
+ RlKUqUylKVGUpSpTKUpUZSlKlMpSlRlKUqUylKVGUpSpTJJNKUoqXSTSlKSl0k0pSkpdJNKUpKXSTSlK
+ Sl0k0pSkpdJNKUoIXlIlNKaUUryou4TgpnFFLQyRoufzRyuhyToufzTynUp57JGqpgaq9k8qmOUqQ3cU
+ arfwgsHG5W9hlKlO/jcLQYVm450V5rkCEpiUxchlyYuQpSTcpAoG5SDkaQmlMSoByfcm0peUpTSlKKl5
+ STSlKCl0k0pSlSl0k0pSlSl0pTSmlKlMpSlRlKUqUySTSlKVIZSluUNyiXI0pIXKO5DLk25KlJw5TDlX
+ DlIPQpSfcmJQt6W9KksyU0qG5KUaUylSaULcnDkqS2JVbI4RQ5AvdogAlwc/uuayuV0uceVzuSNU8BTn
+ Eao9TVCNUesI0ptUhauMFm1LTxilSnaxlo18LNxitFh0TCFJCVAlOXIZckAhmCpgoIcpgpEISSmTSlKa
+ pkko7k8pIVCaFKUxKClk0pyVGUqSukmlKUqUukmlKUqUukmlKUqUukmlKUqUukmlKUaUulKaUpSpK8qQ
+ KhKW5KlJJSJUNyW5KlKKiU8piipYFEBQ1KUUrPOioZBV15WdkORAU5eSVl3LRyHLNtKeAhqvCCeUZ5QC
+ dU6lNrH5W9hHhc/QdVu4TuECEvQ450V0FUMZ2iuAqKQUuVFIlNKatXSTSlKKl0k0pSkpdJNKUpKXSTSl
+ KSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpclRJ
+ TkqJKISwcVTvVxxVO8p1KcXLCwsoLeyysPJRpTlvGqNQNUN/KNRylSHZwhwuixFz2GeFv4pQpTr1nRE3
+ KvW7RE3JpCUkppUNyaUqQklPKFuS3JUpLKUqAcnlClLpJpSlKlLykmlKUqUukoylKVKZJKMp5SpS6SaU
+ pSpS6SaUpSpC6cFRlKUqUklMSoFyiXJUpkSmBQy5IOTqUnBUwUAOT700hSaVElQ3ptyVJZSlKjuS3I0l
+ ICphADkUOTSEsLuFg9Q4K3bTosPP4KcFPKZo1WW4arXzRqstw1T6UlpC0qAs+kLRpKNKdTHC18ZY+OVr
+ Y7kCFOrUUcFVanIwcoyEMyVGVEuUdyVKSSlKHuT7kaQzlKVDcnlCkMlEhPKUpKYwnSlKUKUukmlKUqUv
+ KSaUpSpK6SaUpSpS6SaUpSpS6SaUpSpS6SaUpSpS8pJpSlKksgVIFC3Jb0aUllMSh70tyVJZEppTSmlG
+ lJAVFxTAqLylSmrkFY2UVrZDljZJTwFOVeqNgV64qm8J9Kargi08qLgp1co0p2cLsujxDoucw+y6LEOi
+ bIJdVimUNhUiVAd1pWSTSlKC1dJNKUopXSTSlKSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUpKXSTS
+ lKSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUpKXSlNKUpKUShuKkShuKeAua1yyMsLWuKycoqSlOFl
+ DlZFo1WzklZVvKVKQ1DVbOEOFl1DVa+GOEKU9DhBbNXCyMNa1Z0QIUnlKVEuUdyZSkkpwUOUtyVKTSmJ
+ Qt6fchSGRKaU0pSlSl0k0pSlSF5TqMpShSmUpJpSlKlLpJpSlClLp5UZSlLhUylJRlKUOFTIFSBQ9yW9
+ ERQl3KJKHvTbk6lM5Tgoe5OHI0pJKUoe5MXoUlJKaULcn3I0pKCnBQtyfchSU4KZ50UGvSe7RCtUuXnH
+ Qrlc86ldRmnRcvnclSAKcO3lPUErRqpVI0pv0BamOFm0laNBRpTr461KVkUOWnU9NIQ32FElV2PU96jI
+ UzJUSVAuTbkaUklPKFuThyVISSokqO5LclSF0yUp5SUpOmlKUKUvKUqMp5SpK8pSmlKUqUvKUppSlKlL
+ ylKaUpSpS8pSoylKVKZSlKjKUpUplKQKjKW5KkpAUpQ9ybejSkhKgSolyjuRpLOVJpQtyk0pEKSkqpkH
+ RWSVUyDokApxssrEv5WzllYt51UgCmm4IZCMUMhOpSq+VqYizWcrSxSjSnoMPsterhY+IeFr1HRRSUnU
+ SnlRJUa0rpSmlNKSGUpSoylKSWUpSoylKSmUpSoylKSmUpSoylKSmUpSoylKSmUpSoylKSmUpSoylKSm
+ UpSoylKSmUpSoylKSmUpSoylKSmUpSoylKSmUpSoylKSl0k0pSkhkE6iClKS4KKBajEoFpTlzkZndc9k
+ 8roczuufyeUlIKTqug6eeFgVcrdwDwkh6XHOisyqWO/RWd6aQpclRlRLk25GlMpTSmlNKNIZynBQ5S3J
+ UpLKUoe5LchSmcppUC5NuRpSSU8oQcpByVKSSmlRlMXIUplKQKhuTByNKTgpEoYenLkKUjtWVl8LTsKz
+ Mo6I0p53N7rKPK18wcrLI1SU3cPldNhdlzmGNV0mFwEFOtXwplQrOimSkhQSSBSlJSimSJTSlalJ00pS
+ lal0kpSlJSkyeU0pWpSkFGU4KSkgKRKhuSLkFKcVGUxcoyipM0orSqwciNegVJXFZ+SVbc9UMhyQU4uW
+ eVjXHVbGUeVj3J1qRMOq1MUrLZytLFKVqegxCtRh0WTiFabDogpKShynJUJSUzBTqAKlKSl0k0pSlSl0
+ k0pSlSl0k0pSlSl0k0pSlSl0k0pSlSl0k0pSlSlwpAqEp9yVKZyovOijuTOchSmllcLm85dFknRc9mo0
+ pxLOVaxTqq9g1VjG5SpT0GGVsUlYmIVr0uSpTeaUQFV2uRA5ClJZT7kLcluSpSXcmLkLemLkqUkLlElQ
+ Lk25GlJAVIFCDk4clSksqJKjuUS5KlM5SlQ3JwUqUylRlKUxKVKZAqQKHKcOSpSUFReUg5RcUKU1risn
+ JK07ysnJKNKcfKKzzyr+SVR7pUpv4g1XS4PAXOYg1XR4R4SpTtV8J3FQY7RJzk2tVMSUlEuSlOpTIKQK
+ HKW5KlJgUpQt6fehSmRKiSolyiSjSmYKkChSpByVKSymJUNyRclSlEqEpFyjKNKStKICgBynuQpTIlRl
+ RLkwcjSkhKqZPCtSquQdEqU8/m91h28rdze6xLRqjSlU8rYxVk08rXxSlSnZx1oVrPxyr7HaIUpOolLc
+ okoUpkkoylKVKZJKMpSlSmUpSoylKVKZSlKjuS3JUplKUqO5LclSmUpSo7ktyVKXSlR3Ji5GlMwVMFA3
+ KYcgQpMSgWqe5BschSnNyhyufzAuhySsLLCNKcZw1V7DGqrObqruINUaU9DgjhbNfCx8IrXrdogQpKVF
+ IuTSgpdNKRKiSipeUpUC5LclSkkpSogpSlSmUpSoylKVKZSlKjKUpUplKUqMpSlSmUpSoylKFKZSlKjK
+ UpUpI0qRKGCpEpUpq5HCwstbl50WJlqSIS4tw1QWco9/KC06qcBLoYy2sVYmMVtYpTJBTrVI0qvWUXco
+ SFMpTyhFyW5CkJZTSh7ktyBCEkpSh7ktyaQhJKUoe5Lem0pJKaUPcluSpSQFSBQdyfelSkspSh7ktyIC
+ mcppUC5NuTwFJgU8oIcn3I0uSOKo5PCsucqeQ7ROgFPP5/dYNw1W/m6ysS0aqcBS+MNV0OEOFhY41W9i
+ dkSEuzSrTVUpKtNKgkEM5SJTApiVHSF5SUZSlGlMkpTSlKVKXlJNKUpUpdJNKUpUpdJNKUpUpdKU0pSl
+ SmYKUoe5LcjSkkqTSgblNrkCEpiVUyOFYLlWuKACnGyxysLJC38pYmSFIAhzgNVoYnKpRqr2KdUiFPR4
+ S2KzosXDctet2iYQlM4ocpOchFyQCkwclKEHJw5KlJJTKMp5SpC6SaUpQUukmlKUlLpJpSlJS6SaUpSU
+ ukmlKUlLpJpSlFTIFTlDBUtyFKa+QdFz2d3W9kO0WBmlJTgX8qFXKJfyo1DVFTr4a38UrAxFuYxQpTr1
+ nREJVet+iIXoUpZxUZTOcobkVJAU4KFuS3oqT7kpQd6W9ClJCU25Q3KJcipJuS3IW5LckpMHKUoAcnDk
+ lJpTSh7k+5JTJKVDcluSUlCRUA5OXIKR2BZ2SFovcs/IKKnAzBysd41W3md1kWDVG1J8QarpcDsucxeV
+ 0mCeErU7VfCmUOs6KZKapgkmlKUVLpkpTSipdJNKUpKZJ1GU8oKXSTSlKSlJBKUpSUzCdD3J96CFyoFI
+ uUZTghkCiNKECptKBSkJVW86KwXKre7RIJcXMWBlBb+WVg5SNqcxw1R6BqhO5RqOUrU7OGFu4w0WJiLc
+ xzolaW+xECGwogKVqXSSlKUFKSSlKUlKSSlKUrUpJKUpStSoShKUpQtCoShKUpStSkkpSlK1KSSlKUrU
+ pJNKUooXSTSlKKl0k0pSkpdJNKUpKXSTSlKSV0k0pSkpdJNKUoKXSTSmlFSRpU0IFTDk0hKO46LGzFrX
+ O0WPluRU4mTyqUaq5kHVVBykpt4wW5idliY628Q8IKdqjhWZVSk6KxKapi9AcjOQyElI4RGhNCkAgpmE
+ kkikpZJJJJCkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSdMnSUpMnTJKWTpk6Sl1FykouSU17FWKs2K
+ sUlMmK0xVWK0xJSYJJBJJSk6ZOkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpZJJJJS
+ kkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//S69JJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS6SSSSmLkCxHcgWJKa5TsTFOxJTZYjhAYjhJSkkkklLJJJJKUkkkkpSdMn
+ SUpMnTJKWSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJS4TpgnSUieqr1aeqr0lIwjsQAjsSU2Gq
+ ag1TSUukkkkpZJJJJSkkkklKSSSSUukkkklZJJJJSkkkklLpk6ZFSkkkklKSSSSUpJJJBSkkkkFLpFJM
+ UFLEqMpFMkpmFMBQaEUBJS0JoRITEIqROQXo70B6cFNO5Y+WFs2rJyhKcpwMgaqFB1R8hmqFW2CnKd3A
+ dwuhofouYxHwtmq+Akp1TYhGxVDkIRvQpDf9RL1Fn+ul66SnQ9RL1Fn+ul66SnQ9RL1Fn+ul66SnQ9RL
+ 1Fn+ul66KnQ9RL1Fn+ul66SnQ9RL1Fn+ul66SnQ9RL1Fn+ul66CnQ9VL1Vn+um9dJTo+ql6qzvXS9dJT
+ o+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXT+ukp0PVTG1Z/rq
+ JyEQp0RakbVm/aEjen0lLkWaLBzX8rQuukLIynSnKcjIdqqgOqt3NkoArMpIbeMVuYjliUNha2MYSU79
+ D9FcbYsiq2FZFyCnQ9RL1FQ9ZP6yCm76if1FS9ZL1kVN4WJxas/1kvXQU6Pqpeqs77Ql9oQpTo+ql6qz
+ vtCXrpUp0fVS9VZ3rpeulSnR9VN6qz/XS9dKlOh6qXqLP9dL10qU6HqJeqs/10vXSpDoeql6qzvXT+ul
+ SnQ9RNvVAXqQuSU3N6W9VPWS9ZFTc3pb1T9ZN6ySm76ib1FSN6b10kugLE+9UBen9dJTcNiYWKkb1EXp
+ JdMWoV1miqC9DtvkJUppZr+VgZJ1WvlPlY94koqas6o1ZQduqKwIqbdbloY71lsKuUvhJT0GNYtJlmiw
+ aLYV9l+ibSnQNiGbFUN6Gb0qQ6AsUxYs0XqfroKdD1U3qqgchQOQlSnR9ZP6yy/tCX2hCkOr6yXrLK+0
+ J/tCVKdM2pvVWd9oS+0IJdH1UvVWd9oS+0JKdH1UvVWd9oS+0JKdH1UvVWd9oS+0JKdH1UvVWd9oS+0J
+ KdH1UvVWd9oS+0IqdH1UvUWd9oS+0JKdH1UxtWf9oUTkJJdH1U4tWZ9oTjIRU6osS3rOGQpfaEqU3/US
+ 9RZ/2hI5CNKbdlizcm1SsvVC+2UQpq32KhY9HudKquTlInlAJR3BCLUbUlpdqtvDfwsOoQVrYroSS9Jj
+ v0V0WLGougKz66ZIIbxtUfVVB2Qo+uokOl6qXqrN9dL10VOl6qXqrN9dL10lOl6qXqrN9dL10lOl6qXq
+ rN9dL10lOl6qXqrN9dL10lOl6qXqrN9dL10lOl6qXqrO9dL7Qkp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0
+ fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeugp0fVS9VZ32hL7Qkp0fVUTaqHrp
+ jengJbzrFUusQjeq9tsp6mplPWLklaeQ6Vl3iUlNBx1RqTqoFhlFqZCSHWxCtzGesDHMLWoshJTsssRP
+ UWa25T9dBLoCxL1FQF6f10EN02JvUVI3qPrpKdAWqQtWb66f10FOl6qb1Vn+ul66SnQ9VL1Vn+um9dJT
+ o+ql6qzvXS9dJTo+ql6qzvXS9dBTo+ql6qzvXS+0JKdH1U/qrN+0J/tCSHR9VL1VnfaEvXSU6HqJjYqP
+ rpeuipu70t6pesl6ycpvCxL1FR9dL10FN71EhYqHrpxekl0PUTeoqIvSN6Sm76iK2xZfrojb0qS3rLNF
+ j5ruVaffoszKslGlOHmHVZbuVp5IlZ7maoqZ1FXqnKkxsK1Xokp06HrVx3rDqdC0aLYSU7lViOLFl13o
+ wvQpTdL029Uzem9dJDe3pb1R9dL10FN71EvVVD103roUp0fVT+qs310/rpUh0PVS9VZ/rpvXQU6HqJeq
+ s/103roKdH1EvUWf66XrpJdD1EvUWf66XrpKdD1EvUWf66XrpKdD1EvUWf66XrpKdD1EvUWf66XrpKdD
+ 1UvVWf66b10VOgbVH1FR9dN66KXQFikHrOF6IL0VN/elvVL10vXSpTe3qD3qp66G+9GlLZD1kZL1bvtl
+ Zl75TlNS1yrOKM9CIRU13KVZ1Sc1Jg1RS6+G9dDiP0XMYxhbWNdASIU77LNE5tWc3I0SOQoJBBb/AKqb
+ 1VnfaEvtCYtdH1UvVWd66XropdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66Xrp
+ KdH1UvVWd66XrpKdL1UvVWb9oT/aElOj6qXqrO+0JfaElOj6qXqrO+0JfaElOj6qXqrO+0JfaElOj6qX
+ qrO+0JfaElOj6qXqrO+0JfaElOj6qXqrO+0JfaEFOj6qf1Vm/aE4yEQp0DYhueqZvUXXqUBczusWVkvV
+ i25Z175T1OdkuWZaVoX6qg9hSQxrOq18RyymMMrSxtElPSYj1qMt0WBjWQr7L00qdI2pCxZ5vTi9ClOk
+ Hpb1RF6l6ySm2XpvUVM3KJvQU3/US9VZ/rpeugp0PVS9VZ/rpeukh0fVS9VZ3rpeugp0fVS9VZ32hN9o
+ SU6XqpvVWd9oS+0IKdH1UvVWd9oS+0JKdH1U/qrN+0JfaEFOj6qY2rP+0JvXRCHQ9ROHrPF6mL09TfD0
+ +9Uhel66Sm4XqBsVQ3oZvSS3fUUhYs/11IXoqb/qJeoqPrpjekl0m2p3WaLObenN6FKYZj9FzWceVtZN
+ shYWXqnKcew6p6ipWMMpMYUlN2py0KXrNrCuVGElOxRYtKqxYlL4V6q1JTsMsU/UWc29T9dNpTdL0xsV
+ P11E3pIbvqJ/VVD103rpKdD1U3qrPN6j9oQpDpi1P6qzPtCcZCVKdP1UvVWb9oS+0IKdH1EvUWf9oTeu
+ gl0fUS9RZ/rpeukp0PUS9RZ/rpeukp0PUS9RZ/rpeukp0PVS9VZ/2hN66KnR9VL1Vneul66SnR9VL1Vn
+ faEvXSS6HqJvUVH10vXRU3fUS9RUfXTG9FTe9RTbYs311Nt6KnT3qrkP0QvXVe66QlSmhlvWPc7VaGS+
+ VmWalOCkJKiSpQmLU5TFrtVoYr1nhqt0GEkvSYlnC1qrNFzuNZC06702QU6htUTaqByFA5CgIWuj6qXq
+ rO+0Jeugh0fVS9VZ3rpeuil0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0
+ fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpe
+ ukp0fVS9VZ3rpeukp0fVS9VZ32hL7Qkh0vVT+qswZCl9oSXBvmxCssVT7QhvvTlyHLesLJOq08iyVk3m
+ SkpFWdVtYT4hYjOVp4z4SQ9LRborHqrIqvgI32hJToeonFizvXUhekh0N6beqXrpeukpu70t6peul66S
+ G9vS3ql66XrpKbheol6qG5RNySm6HqQeqHrJxekpv70xeqXrpjekpuGxR9VUjeo+ukp0Ran9VZwvT+uk
+ puvsWfkv0TuvVS+2UlOZllZjjqtDJMqg4apKbmI7VdFh2cLmsfRbONbCaVPQMt0U/VWWy9T+0IKdH1Ev
+ VWd9oS+0JKb5tTeqs83pvXSU6Pqpxas311IZCSnR9VP6izvtCX2hJToeqm9VUPtCb7Qkp0PVS9VZ32hL
+ 7Qkp0vVTeos/7Ql66Sm+bE29UfXS9dFTe9RSFqzvXSGQkp0XWqnfYhG9VrbpSU1clyyrir175WfZqkpG
+ 06rQxnLPA1Vygwkp6DFetNj9FhY9kLQZekpvl6GXqsb0M3JKbwsS9VZ5vTeuip0fVS9VZ3rp/XSU6Hqp
+ eqs710vXSU6Pqpeqs710vXSU6Pqpeqs710vXSU6Pqpeqs710vXSU6Pqpeqs/103rpKdH1UvVWd66f10l
+ Oh6qZ1qz/XSN6SkmQ/RYWY5aN1shZOSZSU5lh1RqDqhPGqJUIKSnbxXrVpsWFjvhaNVqSnXa9ED1nNvU
+ xekpveol6io+ul66Sm7vS3ql66XrpKbhem9RUzeom9JTe9RIWrP9dL10lOgbUxtVA3qJvSU6ItUxYswX
+ qYvSU6PqJjYqXrqJvSU3vUSFioG9N66SnTFqZ1izxekb0qUkvsWTk2KzddKzL3ykpo5D1VDtUW7VBA1S
+ U6WI5dDiP0C5rGMLaxrYSpTvts0TOtWeL0zr0qU3fUUg9ZwvUxekpvl6ibFTN6gb0lN71U/qLP8AWUhe
+ kpv+om3ql6yf1klNzen3qn6yb1klN02KJtVI3KJvTgpveol6ioesn9ZFTfFif1FQ9ZL10lN02JCxUTck
+ LklOkLFXvfogi9BuukIKc7MdysW12q1Mp0rKtGqKmVTtVqYz1kVjVX6HQkp3qLVeZasOq2FbZegp1hal
+ 6qzhel66VKdH1UvVWd66XrpUp0fVS9VZ3rpeulSnR9VL1Vneul66VKdH1U3qrP8AXS9dJToeql6qzvXS
+ 9dKlOj6qXqrO9dL10qU6HqpvVVD10vXSU3/UUhYs711IXoKdH1UJ9iqeuhvvQpSsh6xspyu3WyszIdKK
+ mm52qtYz9VSdyj0GElPSYlq1GXaLnce2FoMyEqU63qpC1Zn2hSGQhSnS9RRNio/aExvSpTdNib1FRN6b
+ 10lOgLU/qrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqr
+ O9dL10lOmLU5tWaMhOchClJ77dFj5T1ZtvlZmQ+VJFLRvfqq4fqp3aquAZVgFTp41i2sWxc9QYWvjWQm
+ lTv1v0RDYs2u9TN6jIU3DYm9RUTem9dNIQ3/AFEvUVD10vXTSpv+on9RZ/rp/XTChv8AqJvVVD103roK
+ dD1EvUVAXp/XSU3/AFEvUVH103rpKdAWJeoqAvT+uiFN02JvUVI3qJvTwpvixP6qzxel66dSW+61U77N
+ EN16rXWynhLRy3ysmw6rQyHSs941UgUloOq2sV6xKtFp0PhG1O7VYrLbVkV3Qji9QSU6XqpG1Z3rpG9R
+ odD1UvUWd66f10VOh6iXqLP9dL10lOh6qXqrP9dL10lOh6qf1Vneul66KnR9VL1Vneul66SnR9VL1Fnf
+ aE/rpKb/AKiW9UfXS9dFTd3qQsVD104vSU6BsQLbFWN6DZelSkWS9Y2S5X77JWXeZTlNUu1VvGfqqRGq
+ PQYSU9Jh2LXrt0XOY1sLSrv0QpTpmxQNipm9R9dKlN4PT+oqAvT+ukVN/wBRP6qzvXTfaFGVOl6qXqrN
+ +0J/tCCnR9VL1VnfaEvtCSnR9VL1VnfaEvtCSnR9VL1VnfaEvtCSnR9VL1VnfaEvtCSnR9VL1VnfaEvt
+ CSnSFqc2rMGQnOQkpPfbosPMfKvXXSFk5L5RU5tx1TVHVKwSUqxqkp1cVy2MexYVDoWlTbCSnbZaieqs
+ tt6n66Sm8bE3qKj66XrpKb3qKJsVM3qJvSU3fVUhYs711IXpKdDelvVIXp/XQU2y9NvVQ3JjckpuB6kH
+ qh66cXpKb+9PvVD10vXSU3vUTeoqJvTG9JToC1ObVneukchJTdfaqN9ii69VLrZSU0st6ybH6q9kulZz
+ xqkpuYr9V0OFZwuZoMFbWLbCSnpK7dFM2rLZkaKRyElN71UvVWd9oS9dJTo+qm9VZ/rpeukp0PVS9VZ/
+ rpeukp0fVT+qs310/rpKdH1U/qrO9dL10lOh6qb1VQ9dN66Sm/6qXqrP9dL10UOh6iXqKgL0/rpIb/qK
+ QtWd66QvSS6RtVa61VzkIFt8oKa2U9YmS5aWQ+VlX6pJaLjqjUO1QnN1RKhBSU7WI9bmO/Rc7jOhatNs
+ BBLtNsU/VWa29P8AaElOl6qb1VnfaE32hKlOl6qXqrN+0JfaEqU6Xqpeqs37Ql9oQU6Xqpeqs37Ql9oS
+ U6Xqpeqs310vXSQ6Xqpeqs310vXSU6Xqpeqs310vXQU6Xqpeqs310vXSCnR9VL1Vm+ul66kCHS9VL1Vm
+ +ul66KnS9VL1Vm+ul66SnS9VL1Vm+ul66SnS9VL1Vm+ul66SXS9VL1Vm+ul66SnS9VL1Vm+ul66SnS9V
+ L1Vm+un9dJTpC1T9VZgvUvXQU2brdFkZdiPbfoszIslJTSvfqq4OqnaZKgxuqCm9jLaxVj47Vs4yal16
+ TorIVSkq0CkpYqJCnCUJqkcJwpEKJQUvKUqKSKmSSSSSFJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSk
+ 6ZOkpSZOmSUsnTJ0lLqLlJRckpr2KsVZsVYpKZMVpiqsVpiSkwSSCSSlJ0ydJSkkkklLJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSdMnSUpJJJJSySSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUy
+ TJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKf/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ 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
+ SlSmG8p95UvRKf0SlSmG8pt5RPRKXolKlI95TbyieiU3olGkMPUKf1CpeiUvRKNIY+oUvUKl6JS9EoUl
+ j6hUHPJRfRKb0SlSmm8Eqq+mVrfZ0vsqVJcM4yk2iFtfZE32VKlOfWwhWWOIR/s0JegUKSxFhS9QqXol
+ L0SlSmPqFL1Cp+iU/oFClI95S3lE9ApegUqUj3lLeUT0Cl6BSpSPeUt5RPQKXoFClI95T+oUT0Sl6JSp
+ CP1Cl6hU/RKf0SlSke8pbyieiUvRKVKR7ylvKJ6JS9EpUpHvKbeUX0Sm9EpIR7ylvKJ6JT+iUlIt5S3l
+ E9EpeiUVI95S3lE9EpeiUlI95S3lE9EpeiUko95S3lE9EpeiUlI95S3lE9EpeiUlI95Ug8qfolOKSkph
+ vKRsKJ6JTGkoKQPeSqrwSrxoKb7OgpzDVKmyhaIxkVmMgprU1QtKhsJmUQrTK4QU2KirLSq7BCO1BKUJ
+ 1EJ5QQsVAqZKgUEsU4SSCKF06ZOkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklLJ0yd
+ JS6i5SUXJKa9irFWbFWKSmTFaYqrFaYkpMEkgkkpSdMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0l
+ KSSSSUpJJMkpSSSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKf/1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ ukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJ
+ JSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wn
+ qq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUpJJJJSkkkklKTpk6CVkkkklKSSSSUumSSTlKSSSSUpJJJ
+ JSkkkkFKSSSQUsknhJJSyUp00IKVKUpkklMpTyopwipkokKQSRCkLmITq1aIUCE5TUNKiaFchLaiponG
+ S+yrQDVLYEVOb9lS+zLS2BLYjxIc37Ml9lWlsCWwI8SnN+zJfZlo7EtiXEpzvsyX2ZaOxLYlxKc77Ml9
+ mWjsS2JcSnO+zJ/sy0NgT7AlxKc77Ml9mWjsCWwIcSnO+zJfZlo7EtiXEpzvsyX2ZaOwJbAjxKc77Mm+
+ zLR2BLYlxKc77Ml9mWjsS2JcSnO+zJfZlo7EtiXEpzvsyX2ZaOxLYlxKc77Ml9mWjsS2JcSnO+zJfZlo
+ 7AlsS4lOd9mTfZlpbEtgS4lOb9lS+yrS2BLYlaXOGMpDGV/YlsStTRGOn+zq7tS2pWhpfZ0xx1e2pbUr
+ U0Psyb7MtDYlsQtTQ+zJfZlf2p9qVqc/7Mn+zK/tS2pWpz/syY4y0dqWxK1Ob9lS+yrS2BLYErU5v2VL
+ 7KtLYEtgStTnfZUvsy0doTbQlanP+zJfZlobQn2pWpz/ALMl9mWhtS2pWpz/ALMl9mWhtCW1K0Of9mS+
+ zLQ2pbUrU0PsyX2ZX9qW1K0tD7Mm+zLQ2pbUrU5/2ZL7MtDaltStTn/Zkvsy0NqbalanP+zJfZlobUto
+ StTn/Zkvsy0NoS2hK1Of9mTfZlo7QltRtTQGMn+zq9tS2pWlpfZ0vswV7an2oWpz/syb7MtHYlsStTm/
+ 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
+ tqbalaml9nTfZ1e2pbUrU0Psyb7MtDaltStTn/Zkvsy0NqfYlanO+zJfZlo7EtiVqc77Ml9mWjsS2JWp
+ zvsyX2ZaOxLYlanO+zJfZlo7EtiVqc77Ml9mWjsS2JWpzvsyX2ZaOxLYlanO+zJfZlo7EtiVqc37Ml9m
+ WjsCWxHiU532ZL7MtHYlsS4kuf8AZk/2dX9ibalxIaP2dI46vbUtiXEpzzjJvsy0diWwI8SnO+zJvsy0
+ tiWwJcSnN+zJfZlo7AlsCXEpzvsyf7MtDYE+wJcSnO+zJfZlo7AlsCHEpz/syX2ZaGwJbAlxKc/7Ml9m
+ WhsT7EuJTnfZkvsy0diWxLiU532ZL7MtHYlsS4lOd9mS+zLR2BLYlxKc77Ml9mWjsS2JcSnPGMnGMr+x
+ LalxKaX2dL7Oru1LahxJaJx0xxlf2pbUuJDn/Zk32ZaOwJbErU532ZL7MtHYlsRtTnfZkvsy0dqWwJWp
+ zvsyX2ZaOwJbAlanO+zJfZlo7AlsCFqc37Ml9mWlsCWwI2pzPsqX2ZaewJbAlanM+ypfZVp7AlsStTmf
+ Zk/2VaWwJbErU5v2ZL7MtLYlsStTm/Zk/wBmWjsS2JWpzxjp/s6v7E+xDiU5/wBnTfZlobEtiXElz/sy
+ f7MtDYn2JWhz/sqb7MtHaEtoQtTnfZkvsy0doTbUbU5/2ZL7KtDaltStTn/ZUvsq0NoS2hK1Of8AZUvs
+ y0NoS2hK1Of9mS+zLR2hLalanO+zJfZlo7UtiVqc37Mm+zLS2JtiVqc37Ml9mWlsS2BG1Ob9mT/Zlo7A
+ lsStTnfZk4x1f2JbErU0fs6Rx1e2JbErU55xk32ZaOxLYErU5v2VP9lWjsCWwJWpzfsqf7KtHYEtgStT
+ nfZk/wBmWjsCWwJWpzvsyX2ZaOwJbAlanO+zJfZlo7AlsCVqc77Ml9mWjsCWwJWpzvsyX2ZaOwJbAlan
+ O+zJfZlo7AlsCVqc77Ml9mWjsCWwJWpzvsyX2ZaOwJbAlxKc8YykMZXtgT7UuJTR+zpfZ1e2pbUuJTQO
+ MonGWjtCbaEuJTnfZkvsy0diW1LiU532ZL7MtHalsS4lOd9mS+zLR2JbEuJTnfZkvsy0diWxLiU532ZL
+ 7KtHYn2JWpzfsqX2VaWxLYlanN+ypfZVpbE2xK1Ob9lS+yrS2JbErU5v2VL7MtHYlsStTnfZkvsy0diW
+ wI2pzvsyf7MtDYltStTQGMn+zhXtqW1K1NH7Om+zK/tT7ELU532VL7KtLYlsStTm/Zk/2ZaOxNtStTn/
+ AGZL7MtDaltStTn/AGZL7MtDam2pWpofZkvsyv7UtoStTQ+zJfZlf2hLalamh9nS+zq/tS2pWpofZkvs
+ yv7U+1K0Od9mS+zLR2JbUrU532ZL7MtHYm2pWpz/ALMl9mWhtT7UrS5/2ZOMdX9qbalaml9nS+zq7tS2
+ o2loHGTHGWhtS2pWpzvsyX2ZaG1PsCFqaAxk/wBlV8NUtqFqc77Kl9lWjtS2pWpzvsqX2ZaO0JbUrU53
+ 2ZL7MtHam2pWpz/syX2ZaG1LalanP+zJfZlobQltStDn/Zkvsy0NqW1K1Of9mS+zLQ2pbUrU532ZL7Mt
+ HYlsCCnO+zJfZlo7AlsCSnO+zJfZlo7AlsCVqc77Ml9mWjsCWwI2pzvsyX2ZaOwJbAlanO+zJfZlo7Al
+ sCVqc77Ml9mWjsS2JWpzvsyf7MtDYltStTQ+zJjjLR2pbQhanN+ypfZlpbAlsCCnPGMpihXdiWxBTUFK
+ mK1Y2pQkpEGqYCeEkFLylKjKSapclRTpQkpZOlCUJKUnSSRUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJ
+ JKUnTJ0lKTJ0ySlk6ZOkpdRcpKLklNexVirNirFJTJitMVVitMSUmCSQSSUpOmTpKWSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61Y
+ akpkmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSU//1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpi5AsR3IFiSmuU7
+ ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUpJJJJSkkkklLpk6ZBSkkkklKS
+ SSRUpJJJFSkkkklKSSSSUpJJJJSkkkkFLpJk8oKUlCSdBTGE0KSUJKWhOAnhOAkpaElKEoTgpgolTIUC
+ EVMZTgpiknKZgqQKEFIJKSSlKinTSpUpSkmQtS8pSmSStS8pSmSStSpSlJJK1LylKinStS8pSmSStS8p
+ SmSStS8pSmSStSpSlMklal5SlMnStSpSlJMlal5SlMklal5SlMklal5SlMklal5SlMklamUpSmSRtK8p
+ SmSStS8pSmSSQvKUpk8JWpUpSlCUJKVKUpQlCSlSlKUJQkpUpSlCSVqVKUpkkLUvKUpkkrUqUpTJI2pe
+ UpTJIWpeUpTJJWpeU0pkkrQvKUpkkrUvKUpkkrSvKUpkkrUvKUpkkrUvKUpkkrUvKUpkkbUvKUpkklLy
+ lKZJJS8pSmSSUylPKikkpnKUqKSSl5SlMkkpeUpTJJKXlKUySFqXlKUySVqXlKUySVqXlKUySVqXlKUy
+ ZOUvKUpkklLylKZMkpeUpTJJKXlKUySCl5SlMklal5SlMnQtS8pwVFOELUyBTyopJWplKaUySFqXlKUy
+ ZK1LylKZJC0rymlJJK1KlKUySVqXlNKUJQlal5SlNCSIKl5SlMknIXlKUySNqXlKUySVqXlKUySVqXlK
+ UySVqXlKUySVqXlKUySVqXlKUySVqZSlKZJK1LylKZJK1LylKZJK1LylKZJK1LylKZJK1LylKZJK1Lyl
+ KZJK1LymlJPCVqWSlPCUJWlZJKEoQtSkkoSStCkpSSStS8pSmSStS8p5UU6VqXlKUySVqXlKUyZK1Lyl
+ KZJK1LylKZJC1LylKikjamUppTJIWpeUpTJJWplKUpkyVoZSlKZJK1LynlRSQtLKUpUUkLUylKVFJK1M
+ pSlRSRtTKUpUUkrUylKVFJK1MpSlRSStTKUpUU6VqXlKUydK1KlKUkkrUqUpSTJWpeU0pJJWpUpSmSSt
+ S8pSmSStS8pSmSStS8pSmSRBUvKUpkk61LymlJMkpeUpTJJKXlKUySVqXlKUySFqXlPKinStS8pSmSSt
+ S8pSmTJWplKUqKSFqZSlKZJK1LylKZJK1LylKZJK1LylKZJC1LylKZJK1LylKZJK1LylKZJG1LylKZJK
+ 1LylKZJK1LylKZJK1LylKZJK1LylKZJK1LylKZJK1LylKZJK1KlKUySVqXlKUySVqXlKUySVqXlKUySV
+ qXlKUySVqXlKUySVqXlKUySVqXlKUySVqZSnlRSQtTKUpUUkLUylKVFJG1MpSlRSStTKUpUUkbUvKUpk
+ krUvKUpkkrUqU8qKdG1LylKiklamUpSmSRUvKUqKSSmUpSopIqZylKikkplKUqKSKmUpSopJKZSmlMkm
+ kqXlNKZJR2peUpTJI2peUpTJJWpeUpTJkrUylNKZJK1LylKZJK1LylKZJK1KlKUySNqXlKUySVqXlPKa
+ EkrUvKUpkkrUvKeVFOlal5SlMklal5TyopJWplKUpkkrUvKaUyZOBUvKeVFJOUylKVFJBTKUpUUklMpS
+ lRSSUylKVFJBTKUpUUkrUylKVFJC1MpSlRToWpeU0pJJWpUpSkklalSlKSSFqXlKUySVqXlKUySFqXlK
+ UySVqXlKUySNqXlKUkkbUqUpSSStSpSlJJK1KlKUkkrUqUpSSStSpSlJJK1KlKUkkrUqUpSTJWpeUpTJ
+ 0rUqUpSSStSpSlJJK1KlKUkkrUqUpSSStSpSlJJK1KlKUkkrUvKeVBOErUylPKiklal5SlMklal5SlMk
+ haF5SlMkjal5SlMmStTKUpUUkrQylKVFKUrUylNKZPCVqWSTwlCFqWSTwmhG1KSShKELUpKUkkbUqU8p
+ kkrUvKUpkkrSvKUpk6FqVKaUimTwleUpUU6cpeUpTJJKXlPKinSUvKUpkklLynlRTpKXlNKSSSl5SlMk
+ kpUpSkkipUp5TJ0FKTpk6SlJJJJKUlKSSSlSmlJMkpUpSkmRUvKUpkyRUylKVFJMKl5SlMkhal5SlMkl
+ al5SlMklal5SlMklal5SlMklal5TyopJKZSlKZJJS8pSmTpWpUpSmSStS8pSmTpWpUpSkklalSlKSSVq
+ VKUpJJWpeUpTJJWpeUySSVqXlNKZJFS8pSmSSUvKaUkySl5TSkkkpUpSmSSUvKaUkoSUqUpTQlCSl5Ty
+ mhOlal5SlMklal5SlMkkpeUpTJJKXlNKSSSlSlKSSSlSlKSSSlSlKZJJTIFPKiE6FqXlKUkkrUqUpTJJ
+ WpeUpTJJWpeU0pJJWpUpSkklalSlKZJK1LylKZJK1LynlMklal5SlMklal5SlMklal5SlMklal5SlMkl
+ al5SlMklal5SlMklal5SlMklal5SlMknKXlKUySSlSlKSSClSlKZJJS8pSkkkpaUpSSSUpJJJK1KSlJK
+ ErUvKUpQklalJJJJWpUpSklCVqVKUpQnhK1KlKUkkrUqUpShKELUqUpShJK1KlKUkyFqVKUpJIWpUpSk
+ klalSlKSSNqVKUpJI2pUpSkknKVKUpJI2pUpJJJKXlOmSSUukkmSUukmSSUukmSQtS8pSmSQtS8pSmlJ
+ C1LylKZKU21LylKaUpStS8ppTJI2peUpUUkbUylNKZJK1LynlRSStTKUpUUkrUylKVFJK1MpSlRSStTK
+ UpUU6VqXSSSStSkkkoStSpSlKEkrUtKUpJJWpSSSZK1KlKUkkrUqUpSTI2peU8qKdK1LynlMklal5SlM
+ klal5SlMklal5SlMklal5SlMklal5SlMklal5SlMklal5SlMklalSlKSSVqVKUpJJWpUpSkklalSlKSS
+ VqVKUpJJWpUpSkklalSlKZJC1LynlMnTgpeUpSSRUqU0pJIqVKaU6ZJSpSlJMkpUpSkkkpUpSkkkpUpS
+ kkkpeUpTJJKZSlKikkplKaUySSl5SlMkkpeUpTJJKVKUpJklLylKZJJSpSlKEoSUvKeU0J0kLymlOkkh
+ ZJJJJKkkkklKlKUkoSStKUpQlCSlSlKUJQklUpSlCSSlwU8qKSSmUpSopJKZSlKikgplKUqKSSl5SlMk
+ kheUpTJJKXlKU0JQkpeUpTQkkplKUqKdJS8pSmSSUvKUpkpSUvKUpkklLylKZJJTKU0pkkVLylKZKUlL
+ ylKZMkplKeVBOgpmCnlQlKUFM5SlRlKUlLymJTSkgpYpk6ZBSydJJBSk6ZPKSl0yUpJKUkkkipSSSSSl
+ JJJJKWSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklLJ0ydJS6i5SUXJKa9irFWbFWKSmTFaYqrFaYkpME
+ kgkkpSdMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBY
+ jlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9br0kkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklLpJJJKYuQLEdyBYkprlOxMU7ElNliOEBiOElKSSSSUskkkkpSSSSSlJ0ydJSkydMkpZJJJJS6SS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhOmCdJSJ6qvVp6qvSUjCOxACOxJTYapqDVNJS6SSSSlkkkkl
+ KSSSSUpJJJJS6ZOmQUpJJJJSkkkklKSSSRUpJJJFSkkkklKSSSSUpJOmQUslKRTIKZAp1FOgpdJMmlJT
+ MFOCoSnBSUkSUAU8oqUVEhSlRKcpiQmhSShOUsAnAUgE8JKYpSkU0phUvKSjKUoKZSlKjKUpKXlKVFJJ
+ TJJRlKUlMklGUklMklFJJTKUpUZSlJTKUkySSl0kySKl0pTJIKXlKUySKl0kySCl0kyZJTJMmSSUunUU
+ 4RCmSSZJPpK6SZJKlLpJkkqQunUU6VKXSTJIUpdJMlKVKXTqMpSlSl0k0pJUpSSSSVKUkkmSpS6SZJKl
+ KSSSSpSkkkkqUpMnTJUhSSSSVKUkkklSVJJJI0pSSSSVKUnTJ0KUpJJJKlKSSTpUpZJOklSlkk6SVKWT
+ J0yVKXSTJJUpdJMklSl0kydKlLpJk6VKUkmSSpS6SZOlSl0k0pJUpSSSSNIUkkklSlJk6ZKlKSSSSpSk
+ kkkKSpJJOlSlk6SSVKUkkkhwqUkmSSpS8pJkkuFS6SZJClLpJkkuFS6SSSFJUkkklwqUkkklwqUkkklS
+ Fkk6ZOUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklLhOop5SpTJJRlKUaSukmlNKFKZJk0pSlSF0pTSmlKlMpSlRlKUaUylJRlKUqUySUZTpUpdJMkh
+ Sl0kySVKXTJJJUpSSSSNKUkkkhSlJJJJcKl0ySSPChdJMkhwqXSlMkhwpXlJMkhwqXSTJI0pdJMklSl5
+ SlMklSl5SlMklSl5SlMklSl5SlMklwqZJJpSRpS6SZKUuFS6SaUpSpS6SZJLhUpJJJLhUpJJJLhUpJMk
+ lwqXSTJI0pdJMklSl0ySSVKUkkklSlJJkkqUukkklSlJ0ySVKXSTJJUpdMkklSlJJkkOFS6SZJKlLpJk
+ 6XCpSdMnSpSkkkkuFSkkkkuFSkkkkuFSkkySFKXSTJIKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJK
+ XTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSNKUkkklwqXSTJ0uFSkkkkqUpJJJGlK
+ SSSSpSkkySVKXTJJI0pSZJJKlKTpkkaUpJJJKlKSSSSpSpSlJMjSl5SlMklSl5SlMklSmSSinQIUunTJ
+ JnCpSSSSXCpSSSSXCpSSSZLhUukmSS4VLpkkkuFSkkkkaUpJJOlSlJJJJUpSSSSXCpSSSSXCpSSSSXCp
+ SSSZLhUukmSS4VLpJkkuFS6SZOnUpSSSSNKUkkkhSlJJJJUpSSSSVKUkkklSlJJJIUpSSSSVKUnTJ0KU
+ pJJJKlLJJJJUpSSSSFKUkkklSl0kySVKUnTJ0KUpJJJKlKSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJ
+ KXSTJJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJMkpklKikkplKUpkkqUvKUpkk
+ kLymlJMkpdNKSSSlSlKZMlSF5SlRSSUzBUghgqQKSmaSaUpSpSkk0pJKXTJSmlJNLpJpSSVS6SZJJVLp
+ JkklUukmSSTS6ZJJK1KSSSR4lKSSSS4lKSSSS4lLpJJkuJS6dMklxKXSTJI8Sl0kySXEpdMkmS4lMkpU
+ ZTylxKZSlKjKUpcSmUpSoylKFqZSlKjKSPEplKaU0ppS4lLpJkkuJS6ZJJLiUpJJJBSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklLylKZKUlLylKaUpSUvKUppSlJS8p5UZSlJTKUpUZSlJTKUpUZSlJTK
+ UlGU8pKXlJNKUpKUkmSRUukmSSUukmSSUumSSSUpJJJJSkkkklLJJ0klKSSTJKZJKMpSkpkkoylKSl0k
+ 0pJKXSTJJKXSTJJKXSTJJKUkkkkpdOmSlGlMkkyaUqUukmlOlSlJJJJUpSSZKUqUukmlJKlLpJkkqUuk
+ mSSpS6SZNKVKZJKMpSlSmSSjKUpUpkkoylKVKZJKMpSlSmSSjKUpUpkkoylKVKZJKMpSlSmSSjKUpKZJ
+ KMpSkpkkoylKCmSSjKUpKZJKMpSkpdJNKUpKXSTSlKSl0k0pSkpkkmlJJS6SZJJS6SZKUlLpJpSlJTJJ
+ RlKUFMkkyUpKXSTSlKSl0yUppSpS6SaUkuFS6SZJHhUukmSlKlLpJpSlGlLpJpSlGlMkyaUpRpS6SaUp
+ SpS8pSmlMlSmUpSopJUplKUqKSVKZSlKikhSl5SlMkhSl5SlRSQpTKUpUUkuFTKUpUUkOFTKUkySPCpd
+ JJJHhUpJMklwqXTJJJcKlJJJJUpdJMklSl0kySVKXTqKdKlMgU8qEpSlSmcplGUpSpTKUpUZSlKlLykm
+ SSpS8ppTSlKVKXSUUkqUukmSSpS6SZJKlMpTqKdBS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZ
+ JJS6SZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMlKSl0pUZSlLiUylKVGUpS4lLykmSS4lLpk
+ kyXEpdJMnS4lKSSSR4lKTpkkOJSk0pJilxKXlKVFJLiUylKUySXEpeUkySXEpkkmSS4lLpJkkuJS6SZO
+ lxKUkkklxKXSTJJcSGSSaUkuJCkkkkuJKkk0pSlxKXSTSlKXEldJNKUo8Sl0kySXEldMkklxKUmSSQ4l
+ KSSSS4lKSSSStS6SSSVqUkkklaFJ0kkrUpJJJK1KTJ0yVqUmlJJK1KSSSRtSkkkkrUqUkkkrUpKUkkbU
+ pJJJJSkpSSSUpOmCmAkpUJQpAJQkpgkpEJoQUsknhNCSlJJ0kFLJQnSQUsmTpIKWTSkUySl5TqKcJKZJ
+ Jk6KlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUsnTJ0lLqLlJRckpr2KsVZsVYpKZMV
+ piqsVpiSkwSSCSSlJ0ydJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl
+ 04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/1+vSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0y
+ SlkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lL
+ pJJJKWSSSSUpJJJJSkkkklLpk6ZBSkkkklKSSSSUpJJJFSkkkkVKSSSSUpJJJJS6ZJJBSySdJBS0J06S
+ CmJTKRCYhJTFOClCaElMgU8qKdFS8pSopiiFMpSBUZTSnKSgp5QwU4KSmRUU6SaVLJJ0kFMUk6SKlkk8
+ JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKUknhKElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSyZSSSUxSUk
+ yClk4CeE8JwUskpQlCeliknSSUsknhKEVLJJJJKXTJ0yCFJJJIqUkkkkpSSSSSlJJ0klLJJ0kFLJJ0kl
+ LJJ0ySlJJ0klLJJ0kkLJJ0klLJlJMilZJOkkpZJOkkpZOkkkpSSdJBSySdJJSkkkklKSSSSUsknSSUsk
+ nSSUsknSSUsknTJKUknSRUskkkkpSSSZJS6SZOkpdJJJBCkkkklKSSSSUsknSSUsnSSSSpJJJJSkk6SS
+ lkk6SSmMJQnSSUtCSdJJSySdJBSySdJJSkkkklLJ0kklKSSSQUpJJJJSkkkkFKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klKTJ0yIUpJJJOSpMnS
+ QUskkkihSSSdJSySdJJSySeEoSUsnTwkkpZJOkkpZJOkkpZJOkkpZJJJJSkkk6Slkk6SSlkk6SSFk6SS
+ SlkoUkoQSxhKFKEoSUxhKFKEklMYShSSSUxhKFKEoSUxhKFKEoRUxhKFKEoQUxhKFKEyKlkk6SSlkk6S
+ Slkk6SSlkk6SSlJJ0klLJJ0oSUsknhJJKyZShMkhZJJJJSySdJJSySdMkpSSSSSlJJ0klKSSSSUpJJJJ
+ SkkkklLJJ0klLJJ0klLJ0kklKSSTpKWTpJJKUkkkkpSSSSSlkk6SaVLJJ0k1SySdJJSySdJJSySdJJSy
+ SdJJSySdJJSySdJJSydJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6SloShOknhS0JQnSRUsk
+ nSQUsknSSUsknTIqUmTpJKWSSSSUpJMnCSlJQnTpKYwkpJklLJoUkoSUxhKFKEyKlkk6SSmKSkmSUskn
+ ShJSydJOkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6SKlk6SSSlJ
+ k6SSlkk6SSlkk6SSlJJJ0FLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJ0kklKSSSSUsknS
+ SUskkkgpSSSSSlJJJJKUkkkkpdJMnQUpMnSTVLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJ0k6Sl
+ kk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6ZJSySdJJSydJJJSkkkklKTJ0kkLJJ0klMUo
+ TpJKYwmhSShJSwThJJJS6SSSSlJJJJKUmTpJJWSTpJKWSTpJJWTp0oQUsknShFS0J4ShOmFSyUJ0kELJ
+ J0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkipZJOkkpZJJJJSySdJJSydJJJSkkkklKSSTpKWSTpJKVCUJ0k
+ lLQmhSTJylkoTpIqUknSSUsknSSUsknSSUsknSSUxhKE6SSlkk6SSmKSdMkpSSSSSlJJJJKUkknSUskn
+ SSUsknSSUsnSSSUpJOmSUpJJJFSkkkklKSSSSUpJJJJSkk6SSlkk6SSlJJJJKWTKSZJSySSdJSySdJJS
+ ySdJJSySdJJSySdOkpinTpJKWSTpJKWSTpk4KUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJO
+ mRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkk6SapZJJJJSkkkklKSSSSUpJJJBSySdJJSyS
+ dJJSydJOkpZJOkkpZJOkkpZJOkkpSSdJJSySdJBSySdJJSkkkklKTJ0kQpZJOknqWSTpJKWSTpklKSSS
+ RUpJJJJSkkkkkqSSSSUpJJOgpZJSSStTFKFJKErUxhNCnCaErQxhKFKEoSUxhKFKEklMYShShJJTGEoU
+ kklMYTp0klLJJ0ySlJk6SKlkk6SSlkk6SSlkk6SSlJJJ0FLJJ0ySlkycpkVKlJMnSUpJJOgpSSSSSlk6
+ SSSlklKEoSUxTwnhKElLQlClCUIKYwnTwkgpZJOkgpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJ
+ OmSUpJJJJSkkk6SlJJJJKUkkkkpSSSSSlJJJIqUmTpJpUsmTpJilJk6SSlkk6SSlkk6SSlk6dJJSySdP
+ CSmKdPCUJKYwmhThNCSmEJQpwlCSmCeFKEoSUxhKFKEoSUxhJShKElMU6eEklLJJ0klLJJ0klLJ0kkUL
+ JJ0kkKTJ0kkrJJ0klLJJ0ySVJJJ0lLJJJ0krJJ0klLQlCkkkpjCUKSSSmMJQpJJKYwnhOkkpaEkkkkKS
+ TpklKSSSSUpJJOkpaEoUkkVMYShSSRUxhKFJJJTGEoUkkVMYShSSSUxhKFJJFTGEoUkklMYThOUxKSmU
+ pShylKSmcpKMp0lKSSSSUpJJJBSkk0pSmqUkmlOkpaE0KSeElMITwpQmSUpJJJFSkkkklKSSSSUskkkk
+ pSSSSSlJJJJKUkkkkpSdMnSUpMnTJKWTpk6Sl1FykouSU17FWKs2KsUlMmK0xVWK0xJSYJJBJJSk6ZOk
+ pZJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUW
+ qT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkk
+ kpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSySSSSlJJJJKUnTJ0lKTJ0ySlkkkklLpJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSZOmSUuE6YJ0lInqq9Wnqq9JSMI7EAI7ElNhqmoNU0lLpJJJKWSSSSUpJJJJSkkk
+ klLpk6ZBSkkkkkKSSSSUpJJJFSkkkkVKSSSSUpJJOkpZJOmQUpNKSSCmQTqIClCClJoTpJKYwlCdOkpa
+ EoUgnRUjhMQiQmITlI4TQpkJoRUxhPClCUJKUkknTSpZJJJBKkkkklKSSSSUsknSSUpJJJJSkk8JQkpZ
+ JPCUJKUkkkkpSSSSSlJJJJKUkkkkpSZOkkpZJJJJSkkkklKTpk6Sl0kkk60qSSTJWpSSdMlalJJJJWhS
+ ZOmhK1KSShKErUpMnhKErUsnShKErUpJKEoStSkkoShK1KSShKELUpJKEoStSkpShJLiUqUpSSStCpSl
+ JJK1KSSShG0qSShKErUpJKEoStSkkoShK1KSShKErUpOmSStS6SZJC1LpJkkrUukkklalJJJJWpSSSSV
+ qUmTpkbUpJJJK1LJJQlCVqVKSUJQlalk8pQlCVqXlKUySbxIZSmlMkhxKXlKUydHiUqUpSSS4lKlPKin
+ S4krylKZJLiUulKZOlxKXlKUySNqUkkklalJJJJWpSSSSVqUkmhJC1KlKUoSStSkkkkrUqUkk0JWpdKU
+ 0J0bUvKUpkkVLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS6SZJJS6SZJJS6SZJ
+ JS6SZJJS6SZJJS6SZJJS8pSmSSUpJJKECVLJJ4ShN4krJJ4ShLiUsknSR4kLJ0kkuJSk6ZOlxKUkkklx
+ KUknTJcSlJk6ZHiUqUpTJJWpeUpTJJWpeUkySNqXlKUySVqXlJJJK1KTpkkrQukmTpWpdJMkhaV0kySV
+ qXSTJJWpdJMklal0kySVqXSTJJWpdJMnStSkydMlalJkkkbUpOmSStS6SSSVqUkkklal0kySVqXSTJ0b
+ UpOmSStSkxTpimkqWTJ4STOJSySdNCXEpSSUJQjxKUklCUJcSlJJQlCPEpSSUJ0uJSySdJLiUsknTQja
+ lJJJJWpSSSSNqUnTJJWpdJMnStSkkkkrUqUpSSRtCpSlMklamSSZJNUukkkklSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJTKUpUU6N
+ oXlKUySVqXlKUySFpVKSSSVqUkmSStSpSlKEkbUsklCUIWpScJoTpWpcJ0ySVqXTJJJWpSSSSXEpSSSS
+ XEpSZJJLiUpJKEoS4lKTJ4ShLiUsknhKEuJS0pSlCUI2pUpJQlCVqUklCUJWpSSdJK1LJJ0krUsknSSt
+ SySdJC1LJJQlCNqUlKUJQlalSklCUJWpSSUJQjalJ00J0rUpJJKErUpJKEoStSkkoSStSkpSTJpkpeUp
+ TJIcSl5SlMnS4lKlKUkkuJSpSlJJLiUqUpTJJcSl5SlMkjxKXlKUySXEpeUpSShK1KlJKEkrUpNKUJJW
+ pSSSSVqVKUpJQlalSlKUJQlalSlKSUJWhUp5TQnStS6SZOkpSSSSSVJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpSmSSUukmSRSukmSSUukkkkpSSSZBC
+ 6SSSSlkk6ZFSkyeEoSUsknhJJSySeEklLJJ00JJUklCUJKXSSSQTSkkkkVUukmToJpSdMkiql00pJJtL
+ SpJMklSF5STJJUpdJMklSl5STJJUpUpSkklSlSkkklSlSlKSSVKUnTJ0aUpMnTJUpSSSSVKUkkklSlJJ
+ JJUpdJJJKlKTpkkqUukmSSpSkkkyCl0kyUJKXSSSSUukmSSUukmSSUpJJJJSkk0JJKXTJJJKUmTpJKWS
+ TpJKWSTpQkpZOlCUJKUkklCSlJJQlCSlJJQlCSlJk8JQipZJKEoRUpJKEoSUpJKEoSUpKUoShJS6UpoS
+ SUvKUpkklLylKSSSlSkklCSlJJQlCSlJJQlCSlJJQkkpSdMnSUpJJJJSkkkklKSSSSUpMnTIWpSSSSXE
+ pSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSUJcSlJJQlCXEpSSUJQlxKUklCUJcSlJJQl
+ CXEpSSUJQlxKUklCUJcSlJJQlCVqUklCUIqUklCUJKUklCUJKUklCUJKUklCUJKUklCUJKUklCUJKUkl
+ CeElLJ0oShJSkkoShJSkk8JQgpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkkoSTrUpJJJK1KTJ0
+ kLUpMkklalJJJIcSlJJJJcSlJJJkuJS6eVFOhxKXlKUySXEleUkySVoXSTJI2pdJMklal0kySNqXlKUy
+ SNqXlKUySSl5STJIWpSSUJJWpUpSkklalJJJI2pSSSSFqUkkklalJJQklal0ySUJWpYplKEoQ4lMUlKE
+ oS4lLJJ4ShLiUsknhPCXEpZJPCUIcSlk6UJQlxKUknSS4lLJJ0yXEpSSSScpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSZOmSUqU0pQlCSlSlKUJQkpUp5TQkkpeUpSSSUqUkkoSUpJKEoSUqUpShKElKlJKE8
+ JKUkkkhSlJk6ZKlKSSSSpSk6ZJKlLpJk6VKUnTJJUpdJMklSl0kk6VKUkkklSlJk6SVKWSTpkqUpMnSS
+ pSySdMlSlJJJJUpSSSSVKUkkkjSFJJJJUhSSSSVJUkkklSlJJJJUlSSSSVKUkkklSVJJJJUpdJMklSmS
+ ZJMlSl0kySVKUkkklSlJJJI0hSSSaEqUqUpShKEqUqU8poShAhS8p5UUk1TKUpUUkLUylKVFJFTKUpUU
+ kbUylKVFJFTKUpUUklMpSlRSRUylRJSShJSyeE8J4SUsAnhOkkpUJJJIKWSKdMgpiUk8JQgpinShKElL
+ hOmSSUukkmSUpJJKEVKSSSSUpJJKElLJJ4ShJSySeEySlJJJJKUklCUJKUnSTpKWTJ0ySlk6SQSUuouU
+ wouSU1rFWKs2Ks5JTJitMVZissSUmCSQSSUpOmTpKWSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSS
+ SlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSU//0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkk
+ kpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpi5AsR3IFiSmuU7ExTsSU2WI4QGI4SUpJJJJSyS
+ SSSlJJJJKUnTJ0lKTJ0ySlkk6ZJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhOkEklInqq9Wnqq9J
+ SMI7EAI7ElNhqmoNU0lLpJk6Slkk6ZJSkkkklKSSSSUumSSlBSkk0p0kKSTpJKWSTwmRUpJOmlFSkk0p
+ SkpkkobktySmaShuS3JKZJKG5PuTVMwnlD3J9ySmcpiVDcmLkFM5SlD3JtySkwKfcg7k+5FSWUxKHuS3
+ JymcpIe5LcipJKdD3J9ySmcppUdybcmlTNJQ3JbkEs0lDcluSUzSUNyW5JTNJR3JbklM0lDcluSUzSUN
+ yW5JSRMo7ktySmSShuS3JKZpKG5LckpmkobktySmcpSobktySmcppUdyW5JTJJR3JbklMpSlR3JbklMp
+ Tyobk25JSSUkPcluSSklKVDcluSUzlKVDcluSQzlJQ3JbklM0lDcluSUzSUNyW5JSRJQ3JbklM0lDclu
+ SUzSUNyW5JTNJQ3JbklMklHcluQUySUdybckpmkobktySmaShuS3JIZpKG5Lckpmkobk+5FLJJR3Jbkl
+ MklHcluSUySUdyW5JTJJR3JbklMklHcluSUySUdyW5BTJJR3JbklMklHcm3JKZpKG5LckpmkobktyKma
+ ShuS3JKZpKG5Lckpkko7ktySmSSbcluSUukm3JtySmSZNuTSm0hkkoylKFKZJKO5LcjSmSSjuS3JUpmk
+ obktyVJZpKO5LclSmSdQ3JbkqUyTqG5LcipmkobktySmaShuS3JKZpKG5LckpmkobktySmaShuS3JKZp
+ KG5LckpmkobktySmaZR3JbkQpkkobktycpmkobktySmaShuS3JKZpKG5LckpmkobktySmaShuS3JKZpK
+ G5Lckpmkobk+5JTJJR3JbklMklHcluSUySUdyW5JTJJR3JbklMklHcluSUySUdyW5JTJJR3JbkkM06Hu
+ T7kwhLNJQ3Jbk2ksklHcm3I0pmkobktyVIZJKO5LclSmaShuS3JUpmkobktyVKZylKhuS3I0pmmUdybc
+ lSmaZR3JbklMklHcluSUySUdyW5FTNJQ3JbklM0lDcn3JUpmkobktyNIZpKG5LclSmUpSobktyFJZylK
+ huS3IUpnKUqG5LcjSmcpSobktyVKZylKhuS3JUpnKUqG5LclSmcpSobktySmcpSobktySmcpKG5Lckpm
+ kobktySmaUqG5LclSkkppUNyW5FSSUpQ9yW5JSRKUPcluRUklKVDcluSUzlJQ3Jbk0qZpKO5Lco6UySU
+ dyW5KlMklDcluSpTNJR3JtyNKZpKG5LcjSmaShuT7kqUySUdyW5GlMkybcm3JKZJKG5LcipmkobktySm
+ aShuS3JKZpKG5LcipmkobktySmaShuS3JIZpKG5LckpmlKhuS3JKSSlKHuS3JJSSlKHuS3JKSSlKHuS3
+ JKSSlKHuS3JKSSlKHuS3JKSSlKHuS3JKSSlKHuS3JKZpKG5LcgpmkobktyKmaShuS3JKZpKG5Lckpmko
+ bktySmaShuS3JKZpKG5LckpmkobktyCmaShuS3IoZylKhuS3JUpnKShuS3IJSJKG5LckpmkobktySmaS
+ huS3JKZpKG5LckpmkobktySmaShuS3JKZpKG5LcgpmkobktyVKZpKG5LclSmaShuS3JUpmkobktyVKZp
+ KG5LclSmaShuS3JUpmkobktyKmaShuS3JKZpKG5LckpmkobktySmaShuS3JKZpKG5LckpmkobktySmaS
+ huS3JKZJ1DcluSUzTKO5LcipmkobktySmaShuS3IqZpKG5LckpmkobktySmaShuS3JKZJKG5LcmFTJJR
+ 3Jbk2lMk6huS3I0pmkobktyVKZpKG5LclSmaShuS3JUpmkobktyNKZJ1DcluSUzTqG5PuSUySUdybckp
+ mkobktyKmaShuS3JKZJKG5LckpmkobktySmaShuT7kEMklHcm3IqZylKhuTbkkpJSlD3JbklJJSlD3Jb
+ klJJSlD3JbklJJSlD3JbklJJSlD3JbklJJSlD3JbklJJSlD3JbklJJSUNyW5JTNJQ3JbklM0lDcluSUz
+ SUNyW5JTNJQ3JbklM0lDcluSUzSUNyW5JTNJQ3JbkVM0lDcluRSzSUNyW5JSSUpQ9yW5JTOU6HuS3JKS
+ JIe5PuSQzSUNyW5JTNJQ3JbklM0lDcluSUzSUNyW5JLNMobktySmaShuS3JJZpKG5LckpmlKHuT7kks5
+ SlQ3JbklWzlPKHuS3JKtnKUqG5LcktLOUpUNyW5KkM0lDcluQUzSUNyW5JTNKVDcluRUzSUNyW5JTNJQ
+ 3JbklM0lDcluSUzlPKHuS3JKZykobktySmaShuS3JKZylKhuS3JKZpKG5LckpnKeUPcluSUzlKVDcluR
+ UzlPKHuS3IKSSkh7k+5ClM0lDcluQpTNJQ3JbkqUkSUNyW5KlM0lDcluSpTJJQ3JbkqUzSUNyW5KlM5T
+ KO5LclSmSShuS3JUpmkobktyVKZp1DcluSpTNJQ3JbkqUzSUNyW5KlM0lDcluSpTNJQ3JbkqUzSUNyW5
+ GlM0lDcluRUzSUNyW5BTNJQ3JbklM0yjuS3JKZJKO5NuSUzSUNyW5JTNJQ3JbklM06HuT7klM0lDcluR
+ UzSUNyW5BTNJQ3JbklM0lDcluSUzSUNyW5JTNJQ3JbklM0lDcluRUzTKG5Lcm0pmkobktyVKZpKG5Lcl
+ SmaShuS3JUpmkobktyVKZpKG5LclSmaShuS3JUpmkobktyVKSJKG5LclSmaShuS3JUpmkobktyVKZpKG
+ 5LclSmaShuS3JUpmkobktyVKZpKG5LclSmaShuS3JUpmkobktycFM0lDcluRUzSUNyW5BTNJQ3JbklM0
+ lDcluSUkSUNyW5JTNJQ3JbklM0lDcluSpTNJQ3JbkFM0lDcluSUkSUNyW5JTNJQ3JbkqUzSUNyW5JTNJ
+ Q3JbklM0lDcluSpTNJQ3JtySmaShuTbkVJEkPcluSUzSUNyW5NUzSUNyW5JTJJR3JtyFKZpKG5LchSma
+ ZR3JbkqUzToe5PuSpTNJQ3JbkqUzSUNyW5KlM0lDcluRpTNJQ3JbkVM0lDcluRUzSUNyW5FTNJQ3Jbkl
+ M0lDcluQUzSUN6W9JTNJD3pbklM0lDcluSUzSUNyW5BTNJQ3JbklJElDcluSUzSQ9yfekpInQw9PvQUz
+ SUN6W9JTJJR3pbkqUySUN6W5ClM0lDcluSpTNJD3JbkqUklKUPcluSpSSU0qG5NuSAUklKUPem3p4Ull
+ KULelvRUllKULelvSUllKULelvSUllKULelvSUllKULelvSUllKULelvSUllMh70+9JTNJQ3JbklM0lD
+ cluSUzSUNyW5JSRJQ3JbklM0lDcluStTNJQ3pb0lM0lDcluStTNJQ3pt6SkiUoe9NvRUllNKHvS3pKSS
+ lKHvS3pKSSlKHvS3pKSSlKHvS3pKSSlKHvS3pKSSlKHvS3pKSynlB3p96Sk0pShb0t6SkkpShb0t6Sks
+ pShb0t6SkspShb0t6SkspShb0t6SkkpIe9LekpIkh70t6SkiSHvT7kkM0lDcluStDNJQ3Jbkks0lDclu
+ SSzSUNyW5JVM0lDcluRUzSUNyW5JKRJD3Jb0lM0pQ9yW9JSSUpQ9yW9JSSUkPelvSUkSQ96W9JSROh70
+ t6SGaShvS3pKZpKG9Lekpmkob0t6RUzSUN6W9RkKZpKG9LehSmaShvS3oqZpKG5Lcipmkob0t6SmaShu
+ S3oqZpKG5Lckpmkobkt6KkkppQ96bekpLKW5B3pt6Sk25Lcg70t6Ck8pSg71LegpLKSHvS3pKSJIe9Le
+ hSmcppUC9NvSUklPKFvSD0VJZTyhb0t6SkspShb0t6SkspkPelvSUkSQ96W9JSRKUPem3pKSylKFvS3p
+ KSylKFvS3pKSynlC3J9ySkkppUNybckpmkFDcnBSUkUXFNuUHOSUisVZyM9yCSkpmxWmKowqwwpKbASU
+ QU8pKXTpkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAs
+ RygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/0uvSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukk
+ kkpSSSSSlJ0ydJTFyr2Kw5V7ElNcqTFEqTElNliMEFiMElLpk6ZJSkydMkpSSSSSl0kkklKSSSSUskkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcJymTlJSGxVXq1Yqr0lMAjVoIRq0lNhqmotU0lKSSSSU
+ pMnSSUskkkkpSdMnSUsmTpoTSpSdKE8IKUkkkipSSRKiSipRKiSmJUC5OUyLkxehFygXpKTF6beq5emL
+ 0VNnem9RVd6W9JTa9RL1FU3pb0FNv1EvUVT1Et6Sm36iW9VfUS3oKbO9Leq29Lekptb0t6q70t6Km1vS
+ 3qrvS3oqbW9Lequ9Leihteol6iq70t6Sm16iW9VPUS9RNS296W9VPUS9RJTb3pb1U9RL1ElNvelvVT1E
+ vUSU2/US9RVPUS9RJTb9RL1FU9RL1ElNv1EvUVT1EvUSU3PUS9RU/US9RJTc9RL1FT9RL1ElNz1EvUVP
+ 1EvUSU3PUS9RU/US9RJTc3pb1T9RL1ElNzelvVP1EvUSU3N6W9U/US9RJTb3p96p+ol6iSm36iXqKp6i
+ XqIKbXqJeoqu9NvQS2/US9RVN6W9JTb9RL1FU3pb0kNv1EvUVTelvSU2/UT+oqe9Lekpueol6ip70t6C
+ m56iXqKnvS3pKbnqJeoqe9Lekpt+ol6iqb0t6Sm36iXqKpvS3pKbfqJeoqm9Leipt+ol6iqb0t6Sm36i
+ XqKpvS3pKbfqJeoqm9Leiht+ol6iqb0t6Sm4LE4sVPenD0ktv1EvUVT1EvUQU2/US9RVPUS9RJTb9RL1
+ FU9RL1ElNv1EvUVT1EvUSU2/US9RVPUT+okpteol6iq+ol6iSm16iXqKr6iXqJKbXqJb1U9RL1ElNvel
+ vVT1EvUSU296W9VPUS9RJTb9RL1FU9RL1ElNv1EvUVT1EvUSU2/US9RVPUS9RJTb9RL1FU9RL1ElNv1E
+ vUVT1EvUSU2t6W9VfUS3pKbW9Lequ9Lekpteol6iq70t6Km16iW9Vd6W9JTa3pb1V3peokptb0vUVX1E
+ vUSU2vUS9RVPUS9RFTb9RL1FU3pb0lNv1EvUVTelvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvS
+ U2/US9RVN6W9JTb9RL1FU3pb0ENv1EvUVTelvSU2/US9RVN6W9JTb9RL1FU3pb0Etv1EvUVTelvSU2/U
+ S9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvSU2/US9RV
+ N6W9JTb9RL1FU3pb0lNv1EvUVTelvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvSU2/US9RVN6W9
+ JTb9RL1FU3pb04IbfqJeoqm9LenUpt+ol6iqb0t6FKbfqJeoqm9L1EqS2/US9RVN6W9ClNv1EvUVTelv
+ SpTb9RL1FU3pb0qU2/US9RVN6W9KlNv1EvUVTelvSpTa9RLequ9LelSm1vT+oqm9LekpteolvVXelvSU
+ 2vUT+oqm9Lekpt+ol6iqb0t6Km36iXqKpvS3o0pt+ol6iqb0t6VKbW9Lequ9LehSm1vS3qrvS3pKbW9L
+ equ9LelSm1vS3qrvS3pUptb0t6q70t6FKbW9Lequ9LelSm16iXqKrvS3oqbXqJeoqu9Lekpteol6iq70
+ t6Sm16iW9Vd6W9JTa3pb1V9RLekpt+om9RVd6W9JTa9RL1FV3pb0lNr1E/qKpvS3pKbfqJeoqm9Lekpt
+ +ol6iqb0t6Cm36iXqKpvS3oUpt+ol6iqb0t6VKbfqJeoqm9LelSm36iXqKpvS3pUpt+ol6iqb0t6NKbf
+ qJeoqm9Lekpt+ol6iqb0t6Sm36iXqKpvS3pKbfqJeoqm9Legpt+ol6iqb0t6Sm36iXqKpvS3pKbfqJeo
+ qm9Lekpt+ol6iqb0t6Sm36iXqKpvS3pIbfqJeoqm9Lekpt+om9RVd6b1Ektv1EvUVT1EvURU3PUS9RU/
+ US9RJTc9RL1FT9RL1ElNz1EvUVP1EvUSU3PUS9RU/US9RJTc9RL1FT9RL1ElNz1EvUVP1EvUSU3PUS9R
+ U/US9RJTc9RL1FT9RL1ElNz1EvUVP1EvUSU3PUS9RU/US9RJTc9RL1FT9RL1ElNz1EvUVP1EvUSU3PUS
+ 9RU/US9RJTc9RL1FT9RL1ElNvelvVXelvRU2vUS3qrvS3pKbXqJ/UVTelvSU2/US9RVN6W9BTb9RL1FU
+ 3pb0lNv1EvUVTelvSU2/US9RVN6W9KlNv1EvUVTelvSpTb9RL1FU3pb0qU2/US9RVN6W9KlNv1EvUVTe
+ lvSU2/US9RVN6W9GkNv1EvUVTelvSpTb9RL1FU3pb0aU2/US9RVN6W9KlNv1EvUVTelvQpLb9RL1FU3p
+ b0FNv1EvUVTelvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvQU2/US9RVN6W9JTb9RL1FU3pb0lN
+ v1EvUVTelvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1E3qKrvS3pKbXqJeoqu9Leipteol6iq70t6Sm16iX
+ qKrvS3pKbXqJeoqu9Lekpteol6iq70t6Cm16iW9Vd6W9KlNrel6iq70t6Sm36iXqKpvS3pKbfqJeoqm9
+ LekpteolvVXelvSU2t6W9Vd6W9JTa3p/UVTelvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvQU2/
+ US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvSU2/US9RVN6W9JDb9RN6iq70t6Sm16ib1FV3pb0ktr1EvU
+ VXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXel
+ vSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSU2
+ vUS9RVd6W9JTa9RL1FV3pb0lNv1EvUVXelvTlNr1EvUVXelvQU2vUS9RVd6W9JTa9RL1FV3pb0VNr1Ev
+ UVXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXem3pKbfqJeoqm9Lekpt+ol6iqb0+9BTa9RL1FV3
+ pb0lNn1EvUVXen3pKbPqJeoq29Lekps+ol6irb0t6Smz6iXqKrvT70lNn1EvUVXelvTgpteol6irb029
+ OpTa9RP6iqb0+9KlNr1E3qKrvS3pKbXqJ/UVXelvQU2vUS9RVd6W9JTa9RL1FV3pt6Sm36iXqKpvS3pK
+ bfqJeoqm9PvQU2vUS9RVd6W9JTa9RL1FV3pb0VNr1EvUVXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1E
+ t6qb0t6Sm3vS9RVN6fekpteon9RVN6W9GlNv1EvUVTelvSpTb9RL1FU3pb0qU2/US9RVN6W9KlNv1EvU
+ VTelvQpTb9RL1FU3pb0qU2/US9RVN6W9KlNv1EvUVTelvSpTb9RL1FU3pb0qU2/US9RVN6W9KlNv1EvU
+ VTelvSpTb9RL1FU3pb0qU2/US9RVN6W9KlNv1EvUVTelvSpTb9RL1FU3pb0KU2/US9RVN6W9FTb9RL1F
+ U9RL1ElNv1EvUVT1Et6Sm36iXqKpvS3pKbfqJeoqm9Lekpt+ol6iqb0t6Sm36iXqKpvS3oKbfqJeoqm9
+ Lekpt+ol6iqb0t6Sm36iXqKpvS3pKbfqJeoqm9Lekpt+ol6iqb0t6Km36iXqKpvS3pKbfqJeoqm9Lekp
+ t+ol6iqb0vUSU2/US9RVPUS3pKbXqJeoqu9LelSm16iXqKpvS3pUpt+ol6iqb0t6VKbfqJeoqm9LelSm
+ 36iXqKpvS3pUpt+ol6iqb0t6VKbfqJeoqm9LelSm36iXqKpvS3pUpt+on9RVN6W9KlNv1EvUVTelvSpT
+ b9RL1FU3pb0qU2/US9RVN6W9KlNv1EvUVTelvSpTb9RL1FU3pb0qU2/US9RVN6W9ClNv1EvUVTelvRpT
+ b9RL1FU3pb0VNv1EvUVTelvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvQU2/US9RVN6W9JTb9RL
+ 1FU3pb0lNv1EvUVTel6iSm56iXqKp6iXqJKbfqJeoqnqJeokpt+ol6iqeol6iSm36iXqKp6ib1ElNz1E
+ vUVP1EvUSU3PUS9RU/US9RJTc9RL1FT9RL1EqU3PUS9RU/US9RBTb9RL1FU3pb0FNv1EvUVTelvSU2/U
+ S9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvQU2/UTeoqu9Lekptb0t6q70t6Sm16iXqKrvTb0lNv1EvUVT
+ elvSU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvRU2/US9RVN6W9JTb9RL1FU3pb0lNv1EvUVTelvS
+ U2/US9RVN6W9AqbfqJeoqm9Legpt+ol6iqb0t6Sm16iXqKrvS3pKbXqJ/UVTelvSU2/US9RVN6W9JTb9
+ RL1FU3pb0lNv1EvUVTelvSU3PUS9VU96feipt+ql6qqb0t6Sm36iXqKpvS3pKbfqJeoqm9Lekpt+ol6i
+ qb0t6SW36iXqKpvS3pKbXqJeoqu9LekpteokbFV3pi9JTZ9RL1FVL029BDb9RL1FU3p96Sm16iXqKrvS
+ 3pKbXqJeoqu9Lekpteol6iq70t6Km16iXqKrvS3pKbXqJeoqu9Lekpteon9RVN6W9JTb9RP6iqb0t6Sm
+ 36iXqKpvS3pKbfqJeoqu9Legpteol6iqb0t6Sm36iXqKpvS3pKbfqJeoqm9Lekpt+ol6iqb0+9C1Nr1E
+ 3qKrvTb0Qpteom9RVt6benobfqJeoqu9Lekpteol6iq70t6CW16iXqKrvS3pKbXqJeoqu9Leklteol6i
+ q70t6Sm16iXqKrvS3pKbXqJeoqu9Lekpt+om9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSQ2vUS9RVd6W
+ 9JTa9RL1FV3pb0lNr1EvUVXelvRQ2vUS9RVd6W9JTb9RP6ip70+9NKm36iXqKpvS3oIbfqJeoqm9Lekk
+ Nv1EvUVTelvTlzb9RL1FU3pb0Utv1EvUVTelvRS2/US9RVN6W9BDb9RL1FU3pb0lNr1EvUVTelvQQ2/U
+ S9RVN6W9JDb9RL1FU3pb0ENv1EvUVTelvSU2/US9RVN6W9FLb9RL1FU3pb0ktv1EvUVTelvRU2/US9RV
+ N6W9JTb9VL1VU3pb0qQ2/VS9VVN6W9KlNv1UvVVTelvQU2/US9RVN6W9JTb9RL1VU3pb0lNv1UvVVTel
+ vRU2/VS9VVN6W9JTb9VL1FU3pb0lNr1EvUVXelvSU2fUS3qtvS3pKbO9Leq29Lekpteol6iq70t6Sm16
+ if1VU3pb0lNv1EvUVTelvSpTa9RL1FV3pb0aU2vUS9RVd6W9AqbfqJeoqm9LemqbfqJeoqm9Lekpt+ol
+ 6iqb0t6Sm36iXqKpvS3pKbfqJvUVXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNwWJ/UVPel6iSm2bE3qKo
+ bE3qJKbosUg9UhYph6Sm0XobrEEvQ3PSUlc9D3IRem3pKbLXIzHKm1yMxySm41yICqzSigpKSynlDBTy
+ kpnKdRBThJS6SSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU
+ 1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0+vSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSS
+ lJ0ydJTFyr2Kw5V7ElNcqTFEqTElNliMEFiMElLpk6ZJSkydMkpSSSSSl0kkklKSSSSUskkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSS
+ SSUpJJJJS6SZJAqXSTSnlNpS6ZJJFSygVMhRIRUjKGUYhQLU5SAqBRyxRLEVNchRIVg1pvTSU1iEoVj0
+ 0vTQU1oSgqz6Sf0kFNWE8Kz6SXpJWprQlBVn0kvSQtTXgpQVZ9JL0krU1oKUFWfSS9JG1NaClCs+kl6S
+ NqasFKCrXpJekjaGrBShWvSS9JK1NWCmgq16SXpJtpasFKFa9JL0krU1YShWvSS9JK1NWEoVr0kvSStT
+ VhKFa9JL0krU1YKUFWvSS9JK1NWClBVr0kvSStTVgpQVa9JL0krU1YShWvSS9JK1NWEoVr0kvSStTVhK
+ Fa9JL0krU1YShWvSS9JK1NWEoVr0kvSStTVhKFa9JL0krU1YKUFWvSS9JK1NWClBVr0kvSSU1YKUFWvS
+ S9JKktWEtqtekl6SVKasJQrXpJekhSGrCUFWvSS9JKlNWClBVr0kvSSU1YShWvSS9JKlNWEoVr0kvSSU
+ 1YS2q16SXpJUprbUtqtekl6SVKau1LarXpJeklSmrtS2q16SXpJKau1LarXpJekipq7Utqtekl6SSmrt
+ S2q16SXpIoam1LarXpJekkprQlCtekl6SCWtBSgqz6SXpJKa0JQrPpJekkprQlCs+kl6SSmtCUKz6SXp
+ JUprQlCs+kl6SFKa0FKCrPpJeklSmtBSgqz6SXpJKasFKCrPpJekkprQUoKs+kl6SSmtBShWfSS9JKlN
+ aEoVn0kvSSpTWhKFZ9JL0kVNaEoVn0kvSSU1oSgqz6SXpJKa0FKFZ9JL0klNaEoVn0kvSSU1oShWfSS9
+ JBTWhKFZ9JL0kVNaEoVn0kvSSU1oShWfSS9JJTWhKFZ9JL0kVNaEoVn0kvSSU1oShWfSS9JJTWhKFZ9J
+ L0klNaEoVn0kvSSU1oShWfSS9JJTWhKFZ9JL0klNaEoVn0kvSSU1oShWfSS9JJDWhKFZ9JL0kFNaEoVn
+ 0kvSSU1oShWfSS9JKktaEoVn0kvSSpTWhKFZ9JL0kqU1oShWfSS9JKlNaEoVn0kvSSpTWhKFZ9JL0kqU
+ 1oShWfSS9JKlNaEoVn0kvSSpTWhKFZ9JL0kqU1oShWfSS9JKlNaEoVn0kvSSpTWhKFZ9JL0kqU1oShWf
+ SS9JKlNaEoVn0kvSSpTWhKFZ9JL0kqU1oShWfSS9JFDWhNCtekl6SVqa0JQrPpJeklamtCUKz6SXpJWl
+ rQlCs+kl6SFqa0JQrPpJeklamtBShWfSS9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oShWfSS9JK1NaClBV
+ n0kvSStTWgpQVZ9JL0krU1oKUFWfSS9JK1NaClCs+kl6SNqasJQrXpJeklamrCeFZ9JL0krU1oShWfSS
+ 9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oShWfSS9JK1NaClCs+kl6SFqa0JQrPpJeklamtCUKz6SXpJWpr
+ QlCs+kl6SVqa0JQrPpJeklamtCUKz6SXpJWprQUoKs+kl6SVqa0FKCrPpJeklamtCUKz6SXpI2prQlCs
+ +kl6SVqa0FKCrPpJeklamtCUKz6SXpJWprQltVn0kvSSU1oShWfSS9JJTWhKFZ9JL0kFNaEoKs+kl6SK
+ mtCUKz6SXpJKa0JQrPpJekkprQlCs+kl6SSmtCUKz6SXpJKa0JQVZ9JL0kFNaClBVn0kvSSU1oKUFWfS
+ S9JJTWgpQVZ9JL0klNaClBVn0kvSSU1oKUKz6SXpJIa0JQrPpJekkpqwU0FW/STekglqwUoVn0kvSRtT
+ WhKFZ9JL0krU1oShWfSS9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oShWfSS9JK1NaEoVn0kvSStTWhKFZ9
+ JL0krU1oShWfSS9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oShWfSS9JK1NaEoVn0kvSStTWhKFZ9JL0krU
+ 1oSgqz6Sf0krU1oTwVZ9JL0kbU1oKUKz6SXpJWprQUoVn0kvSQtTWhKFZ9JL0krU1oShWfSS9JK1NaEo
+ Vn0kvSStTWhKFZ9JL0krU1oSgqz6SXpJWprQlCs+kl6SVqa0JQrPpJeklamtBSgqz6SXpJWprQlBVn0k
+ vSRtDWhKCrPpJeklamtCUKz6SXpJWprQlCs+kl6SVqa0JQrPpJeklamtCUKz6SXpJJa0JQrPpJekkprQ
+ lCs+kl6SSmtCUKz6SXpJKa0JQrPpJekgprQlCs+kl6SSmtCUKz6SXpJKa0JQrPpJekkprQlCtekl6SSm
+ rCUK16SXpJKasJQrXpJekkpqwlCtekl6SKmrCUK16SXpJKasJQrXpJekkpqwlCtekl6SSmrCUK16Sb0k
+ lNaEoVn0kvSQU1oSgqz6SXpJKa0FKCrPpJekkprQUoKs+kl6SSmtBSgqz6SXpJKa0FKCrPpJekkprQUo
+ Ks+kl6SSmtBShWfSS9JJTWhKFZ9JL0klNaEoVn0kvSSU1oShWfSS9JJTWhKCrPpJekgprQUoVn0kvSSU
+ 1oKUFWfSS9JJDWgpoVr0kvSSU1dqUK16SXpJJasJQrXpJekipqwlCtekl6SSmrCUK16SXpJKasJQrXpJ
+ ekkpqwlCtekl6SSmrCUK16SXpJKasJQrXpJekkpq7Utqtekl6SSmrtS2q16SXpJKau1LarXpJekkpq7U
+ tqtekl6SSmrtS2q16SXpJKau1LarXpJekkpq7Utqtekl6SVKau1PtVn0kvSSU1oShWfSS9JFTWhKFZ9J
+ L0kFNaEoVn0kvSSU1oShWfSS9JFTWhKFZ9JL0klNaEoVn0kvSSU1oShWfSS9JJTWhLarPpJ/SSU1dqW1
+ WvSS9JBTV2pbVa9JL0klNXaltVr0kvSSU1dqUK16SXpJKasJQrXpJekkpqwltVr0kvSSU1dqW1WvSS9J
+ BTV2pbVa9JL0k8FTV2pbVa9JL0kbU1dqW1WvSS9JC1NXaUtpVr0kvSStTV2pbVa9JL0kLU1dqW1WvSS9
+ JK1NXaltKtekl6SVqau0pbSrXpJeklamrtShWvSTeklamtCUKz6SXpJWprQlCs+kl6SVqa0JQrPpJekl
+ amtCUKz6SXpJWprQlCs+kl6SVqa0JQrPpJekjamtCUKz6SXpJWprQlBVn0kvSStTWhKFZ9JL0krU1oSh
+ WfSS9JK1NaEoVn0kvSStTWhLarPpJeklamtBSgqz6SXpJWprQUoKs+kl6SVqa0FKCrPpJeklamtBSgqz
+ 6SXpIWprQUoKs+kl6SVqa0FKCrPpJeklamtBSgqz6SXpJWprQUoVn0kvSStTWhKFZ9JL0krU1oShWfSS
+ 9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oShWfSS9JK1NaEoVn0kvSStTWhKCrPpJeklamtBSgqz6SXpJWp
+ rQUoVn0kvSStTWhKFZ9JL0krU1oShWfSS9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oSgqz6SXpJWprQUoK
+ s+kl6SVqa0FKCrPpJeklamtBSgqz6SXpJWprQUoKs+kl6SVqa0JbVa9JL0krU1dpS2lWvSS9JK1NXaUt
+ pVr0kvSStTV2lLaVa9JL0krU1dpS2lWvSS9JK1NXaUtpVr0kvSStTV2lLaVa9JL0krU1dpS2lWvSS9JK
+ 1NXalCtekm9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oShWfSS9JK1NaEoVn0kvSStTWhKFZ9JL0krU1oSh
+ WfSS9JK1NaEoKs+kl6SVqa0JQrPpJekjamtCUKz6SXpJWprQlCs+kl6SVqa0JQrPpJeklamtBSgqz6SX
+ pJWprQUoKs+kl6SVqa0FKCrPpJeklamtBSgqz6SXpJWprQlCs+kl6SFqa0JQrPpJeklamtCUKz6SXpJW
+ prQlCs+kl6SVqa0FKCrPpJeklamtBSgqz6SXpJWprQUoKs+kl6SVqa0JQVZ9JL0krU1oShWfSS9JJTWh
+ KFZ9JL0klNaEoVn0kvSSU1oSgqz6SXpJKa0FKCrPpJekgprQUoVn0kvSSU1oKUFWfSS9JJTW2pbVZ9JP
+ 6SKmrtS2q16SXpJKau1LarXpJekkpq7Utqtekl6SCmrtS2q16SXpIqau1LarXpJekkpq7Utqtekl6SSm
+ rtS2q16SXpJKau1LarXpJekgpq7Utqtekl6SVKau1LarXpJekkpq7Utqtekl6SSmrCW1WvSS9JJTV2pb
+ SrXpJekkpq7Utqtekl6SSmrtS2q16SXpJKasJQrXpJvSRU1oShWfSS9JJTWhKFZ9JP6SSmrCUK16SXpJ
+ KasJQrPpJ/SSS1YShWvSS9JJTVhKFa9JN6SSmtCW1WfSS9JJTW2ptqt+kl6SahqbUtqt+kl6SSmptS2q
+ 36SXpJKam1LarfpJekipqbUtqt+kl6SSmptS2q36SXpJKam1LaVb9JL0klNTan2q16SXpJKau1LarXpJ
+ ekkpq7Utqtekl6SSmrtKW0q16SXpJUpq7Utqtekl6SFKau1LarXpJekkpq7Utqtekl6SSmrtS2lWvSS9
+ JClNXaltVr0kvSTgpqbUtqt+kl6SKGptS2q36SXpIqam1LarfpJekgpqbUtqt+kl6SSWptS2q36SXpJJ
+ am1LarfpJekkpqbUtqt+kl6SSmptT7Va9JL0klNXaltVr0kvSSU1dqW1WvSS9JJTV2pbVa9JL0kkNXal
+ tVr0kvSSU1dqW1WvSS9JJTV2pbVa9JL0kkNXaltVr0kvSSU1NqW1WvSTekmlTVhPCs+kl6SCGtCUKz6S
+ XpIpDWhKFZ9JL0k5c1oKUFWfSS9JFLWgpQVZ9JL0kUtaEoVn0kvSQQ1oKUKz6SXpJKa21NtVv0k3pIIa
+ u1LarfpJvSSQ1dqW1WvSS9JBDV2pbVa9JL0klNXaltVr0k/pJJam1LarXpJekipq7Utqtekl6SKWrtS2
+ q16SXpJKau1LarXpJ/SQtDU2pbVb9JL0krU1NqW1WvSS9JK1NXaltVr0kvSStTV2pbVa9JL0krU1dqW1
+ WvSS9JK1NXaltVv0kvSQtTU2p9qtekl6SNqa21LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqau1La
+ rXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqau1LarXpJekjamrtS2q16SXpIWpq7Utqtekl6SCmrtS2q
+ 16SXpJKau1LarXpJekkpq7Utqtekl6SSmrtS2q16SXpJKau1LarXpJekkpq7Utqtekl6SSmrtTbSrfpJ
+ /RSU0i0ptpV00pvRSU1Q0qYBVgUqXpJKapCG4K6akN1aSmkQmAVh1ahsSUxaFYYFBrEdjElM2hFCZrUQ
+ NSUsE4TwnhJSgpBMAnSUukkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSl
+ igWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Tr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSkkkklLp
+ JJJKUkkkkpSdMnSUxcq9isOVexJTXKkxRKkxJTZYjBBYjBJS6ZOmSUpMnTJKUkkkkpdJJJJSkkkklLJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTlMnKSkNiqvVqxVXpKYBGrQQjVpKbLVNQappKUkkkk
+ pSSSSSlkkkklKSSSSUpMnTIKUnTJ0lLpJJJKUlCdMipaFEhTTIqYFqbaiJkVI9iWxEhPCCkWxLYiwlCC
+ kexLYiJIKR7EtimnQUw2JbFNOgpHsS2IiSSmGxLYppJKR7EtiIkipHsS2IiSKkexLYiJJKR7EtiIkgpH
+ sS2IiSCkexLYiJJKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiIkkpHsS
+ 2IiSSkexLYiJJKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiIkiFI9iWxEST0o9iWxETJKYbEtiIkkhHsS2
+ IiSSkexLYiJIKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiIkkpHsS2IiSSkexLYiJklMNiWxESRUj2JbER
+ MkphsS2KadFCPYlsU0klMNiWxTSQSw2JbFNJJTDYlsUkklMdiWxSSSUx2JbFJJJTHYlsUkklMdiWxSTp
+ KYbEtimkgpHsS2KaSSmGxLYppJKYbEtimkiphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKY
+ bEtimkgphsS2KaSCmGxLYppIqYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSKmOxLYppJKYbE
+ timkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbE2xESSCkexLYppJymGxLYppIqYbEt
+ imkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtim
+ kkphsS2KaSSmGxLYppJKYbEtimkkphsT7FJOmFTDYlsU0kxTDYlsU0klMNiWxTSQUw2JbFNJJTDYlsU0
+ klMNiWxTSQUw2JbFNJJTDYlsU0klMNiWxTSSUw2JbFNJJTDYlsU0klMNiWxTSRUw2JbFNJJTDYlsU0kl
+ MNiWxTSSUw2JbFNJJTDYlsU0klMNiWxTSSUw2JbFNJJTDYlsU0klMNiWxTSSUw2JbFNJJTDYlsU0klMN
+ iWxTSSUw2JbFNJJTDYlsU0klMNiWxTSSUw2JbFNJJTDYlsU0klMNiWxTSSUw2JbFNJEKYbEtimknKYbE
+ timkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSKmGxLYppJKYbEtimkkphsS2KaSCmGxLYppIqYbEti
+ mkkphsS2KaSCmGxLYppJKYbEtimkkphsS2KaSSkexNsRUyaVI9iWxESQUj2JbERJJSPYlsREklI9iWxE
+ SSUj2JbERJJSPYlsREklI9iWxESSUj2JbERJJSPYlsREklI9iWxESSUj2JbERJJSPYlsREklI9iWxESS
+ Uj2JbERJJSPYlsREklMNifYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkgphsS2KaSSmGxLYppJKY
+ bEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSKGGxLYppJKYbEtimkiphsS2KaSSmGxLYppIhTDY
+ lsU0k5LDYlsU0klMNiWxTSQUw2JbFNJJTDYlsU0klMNiWxTSSUw2JbFNJJTDYm2IiZJTDYlsU0klMNiW
+ xTSSUw2JbFNJJTDYlsU0klMNiWxTSSUw2JbVNJFTDYlsU0klMNifYppIKYbEtimkkphsS2KaSSmGxLYp
+ pJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJ
+ KYbEtimkkphsS2KaSSmGxLYppJKYbEtimkiphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKY
+ bEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbE
+ 2xETJKYbEtimkkphsS2KaSCmGxLYppJKYbEtimkkphsS2KaSSmGxLappIqYbUtqmkkphsS2qaSSmG1La
+ ppIKYbUtqmkkphtS2qaSSmG1LappJKYbUtqmkkphtS2qaSSmG1LappJKYbUtqmkgphtS2qaSSmG1Lapp
+ kFMdqW1SSSUx2pbVJOkphtS2qaSCmG1LapJJKY7UtqkkkpjtS2qaSSmG1LappJKYbUtimkkphsS2KaSS
+ mGxLYppIqYbEtimkkphtS2qaSSmG1LYppJKY7EtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmG
+ xLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSCmGxL
+ YppJKYbEtimkkphsS2KaSKmGxLYppJKYbEtimkkphsS2KaSCmGxLYppJKYbEtimkkphsS2KaSSmGxLYp
+ pJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSKmGxLYppJKYbEtimkkphsTbVNJBTDaltU0k
+ lMNqW1TSSUw2pbVNJJTDaltU0klMNqW1TSSUw2pbVNJJTDaltU0klMdiWxSTpKYbEtimkiphsS2KaSSm
+ GxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGx
+ LYppJKYbEtimkkphsS2KaSSmGxNsREklI9iWxTSSUw2JbFNJJTDYlsU0klMNiWxTSQUw2JbFNJJTDYls
+ U0klMNiWxTSSUw2JbFNOnBTDYlsU0k5TDYlsU0klMNiWxTSSUw2JbFNJJTDYlsU0kFMNiWxTSRUw2JbF
+ NJJTDYm2oiZJTDaltU0klMNqW1TSSUw2pbVNJBTDaltU0kVMNqW1TSSUw2pbVNJJTDaltU0klMNqW1TT
+ JKY7UtqkkkpjtS2qSSSmO1LapJJKY7UtqmkkphtS2qaSSmG1LapJJKY7UtqkkkpjtS2qaSSmG1LappJK
+ YbUtqmkiphtS2qaSSmG1LappJJYbUtqmkkphtS2qaSSmG1LYppJKYbUtqmkmoYbUtqmkkphtS2qaSSmG
+ 1LappIqYbUtqmkkphtS2qaSSmG1LappJKYbUtqmkkphtS2qaSSmG1LappklMdqW1SSSUx2pbVJOkphtS
+ 2qaSCmG1LappklMdqW1SSQUx2pbVNJFTDan2qSSKGO1LapJJKYbUtqmkkphtS2qaSSWO1NtU0kEsNqW1
+ TSSUw2pbVNJJTDan2qSSKmO1LapJJKY7UtqkkkpjtS2qSSSGO1LapJJKY7UtqkkkpjtS2qSSSGO1LapJ
+ JKYbEtimkgVI9ifYppIIYbEtimkikMNiWxTSRXMNiWxTSTksNiWxTSSUw2JbFNJJTDYlsU0kFMNifYpp
+ IIYbEtimkkhHsS2IiSCEexLYiJJKR7E+xTSSUj2JbERJFKPYlsREkUo9iWxESQUj2J9imkmFTDYlsU0k
+ kMNiWxTSSUw2JtiIkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaZJTHaltUkklMdqW1SSSUx2pbVJJJT
+ HaltUkklMdqW1SSRUx2pbVJKUlMdqW1SlKUlMdqW1SSSUw2pbVNJFTDaltU0klMNqW1TSSUw2pbVNJJT
+ DaltU0klMNqW1TSSUw2pbVNJJSwYn2JwpSkpgWJtiJKZJTAMUtikkkpGWITmqwUJySmq9qHtR3oRSUpr
+ UZjVBoR2BJTIBTASAUoSUtCUJ4SSUsknTJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSS
+ SlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1evS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJ
+ KUmTpklKSSSSUukkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNcqTFEqTElNliMEFiMElLpk6ZJSkydMkpSSSSS
+ l0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ2Kq9WrFVekpgEatBCNWk
+ pstU1BqmkpSSSSSlJJJJKWSSSSUpJJJJSkk6ZBSkkkklLpJkklLpJkk5SpTSkkipSSZJJS6SZOgpdJMk
+ gpdJJJNUpJJOgpZJOkkpSSSSClJJJIqUkkkipSSSSVqWSTpIqUkmSTqUukmSS4VLpJkkuFS6SZJLhUuk
+ mSS4VLpJkkuFS6SZJLhUukmSS4VLpJkkuFS6SZJLhUukmSS4VLpJkkuFS6SZJLhUukmSS4VLpJkkuFS6
+ SZJKlKSTpkkqSSSSUpJJJJCkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSk6ZJJSk6ZJJSkkkkVKSSSSU
+ pJJJJCkkkklKSSSSSpJJJBSkydJJSySdJJSySdJJSySdJFSySdJBSySdJJSySdJJSySdJJSySdJJSySd
+ JFSySdJBSySdJJSySdJJSySdJJSySdJBSySdJC1LJJ0kbUsknSStSySdJK1LJJ0krUsknSStSySdJK1K
+ SSSStSkkkkrUpJJJG1KSSSStSkkkklKSSSSUpJJJJSkkkkrUqEoTpJcSloShOklaloShOklaloShOkla
+ loShOklaloShOklaloShOklaloShOklaloShOklaloShOklaloShOklaloShOklaloShOklaloShOkla
+ loShOklxKWhJJJHdSkydJGlKSSSQpSkkkkqUpJJJClKSSSSpSkkkkqUpJJJClKSSSSpSkkkkqUpJJJKl
+ KSSSSpSkkkkaUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSS
+ SpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSQUpJJJJSkkkkrUpJJJK1KSS
+ SStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkklKSSSSUpJJJJSkkkklKSSSRpCySdJHhSsk
+ nSS4VLJJ0kuFSySdJLhUsknSS4VLJJ0kuFSySdJLhUsknSS4VLJJ0kuFSySdJLhUsknSS4VLJJ0kuFSy
+ SdJLhUsknSS4VLJJ0kuFSydJJLhSpMnSSpSkkkkKUpJJJKlKSSSSpCkkkkqUpJJJClKSSSSpSkkkkqUp
+ JJJKlKSSSRpSkkkkqUpJJJKkKSSSRpSkkkkqUpJJJJSkkkk20qSSSStSkkkkrUpJJJK1KSSSStSkkkkr
+ UpJJJJSkydOkpiknSSUsknSSUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJ0kkrUpJJJC1KSSSStSkk
+ kkrUpJJJK1KSSSRtSkkkkrUpJJJK1KSSSStSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSR
+ QpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ LJJ0kErJJ0kLUsknSSUsknSStSySdJK1LJJ0krUslCdJK1LJJ0krUtCSdJK1LJJ0klLJJ0klLJJ0klLJ
+ J0klLJJ0klLJlJJJTFJSSSUxSUkkQFMUlKEk6lMUlJJClMUlJJKlMUlJJClMUlJJKlMUlJJKlMUlJJKl
+ LQknSSpSySdJKlLJQnSSpS0JJ0kqUsknSRpSySdJKlLQlCdJKlLQknSSpSkkkkqUpJJJKlKSSSSpSkkk
+ kqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJClKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUp
+ JJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJK
+ lKSSSSpSkkkkqUslCdJKlMUlJJKlMUlJJKlMUlJJKlMUlJJKlMUlJJKlMUlJJKlMU8J0kqUsnSSSpSkk
+ kkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJGlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqU
+ pJJJKlKTJ0kqUsknSQpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlKSSSRUpJJJC1KS
+ SSStSkkkkrUpJJJBSkkkkrUpJJJK1LJQnSStTFJSSStTFOnSStSySdJK1LQmUkkbUxSUkkrUsknSSUsk
+ nSRUsmUkkEMYShSSSUxhKFJJJTGEoUkklLJJ0klLJJ0kksUlJJJTFPCdJJSyUJ0klLQlCdJJS0JJ0kbU
+ sknSSUtCSdJJKySdJJSySdJJSyUJ0klLJJ0k1CySdJJSySdJJSyUJ0kbUtCSdJK1LJJ0kVLJJ0klLJJ0
+ klLJJ0klLJQnSSUxSUkkFMUlJJJSySdJBSyZSSSUxSUkklMU6dJJSySdJK0LJJ0krUsknSStS0JJ0krS
+ sknSStKySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsknSStCySdJK1LJJ0krUsknSStCySdJK1LJJJIWp
+ SSSSSFJJJI2lSSSSNrlJJJI2lSSSSKlJJJJKUkkkhalJ0kkLQpJJJC0KSSSStCkkkkLUpJJJFSkkkkbS
+ pJJJK0rJ0kkVKSSSSpCkkkkaUpJJJKlKSSSQpSkkkkqUpJJJLhUpJJJHhUpMnSSpSyUJ0kqUtCUJ0kqU
+ tCUJ0kKUtCSdJKlLJJ0kaUsknSSpSySdJKlLJJ0kKUtCUJ0kFLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS0
+ JQnSSUtCUJ0klLJ0kySlJ0ycJKXTpgpJKYkIbgiqDklNZ4QyEZ6CUlM2BHYEFisMSUkATwkEpSUqEoSl
+ KUlLFRKclMUlKSTJ0lKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBY
+ kpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9br0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSkkkklLpJJJKUkkk
+ kpSdMnSUxcq9isOVexJTXKkxRKkxJTZYjBBYjBJS6ZOmSUpMnTJKUkkkkpdJJJJSkkkklLJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTlMnKSkNiqvVqxVXpKYBGrQQjVpKbLVNQappKUkkkkpSSSSSlk
+ kkklKSSSSUpJJKElKSShKEFKSSSRUpJOkipZJOkipjCeE6SSloTwklKClQlCeUpQKmKSdMmqUkmToKUn
+ TJ0FKSTJ0lKSSSSUpJJJGlKSSSRUpMnTIhSkkklIFKSSShG1KSShKErUpJKEoStSkkoShK1KSShKErUp
+ JKEoStSkkoShK1KSTwlCVqWSTwlCVqWSTwlCVqWSTwlCVqWSTwlCVqWSTwlCVqWSTwlCVqWSTwmQUpJJ
+ JBKkkkkFKSSSSQpJJJJSkkkkFKSSSSUpJJJJSkkkyClJJJJKUkkkipSSSSSlJJJJKUkkkipSSSSSFJJJ
+ JKXSTJ0lKSSSQSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSQUpJJMkpdJMnSUpJJ
+ JJSkkkklKSSSSUpJJJNUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSySSSClJJJIqUkkkkpSSS
+ dJSkkkklKSSSSUpJJJJSkkkyVKXlKUySFKXSTJJUpdJMklSl0kySVKXSTJJUpdJMklSl0kySVKXSTJJU
+ pdJMklSl0kySVKXSTJJUpdJMklSl0kySVKXSlMklSl5SlMkhSl0ySSkClJJJJ6lJ0ySClJJJJKUkkkkp
+ SSSSClJJJ0lLJJ0kFLJJJ0lLJJ0klLJJ0klLJJ0klLJ0kklKSSSRUskkkkpSSSSSl0kydJSkkkklKSSS
+ SUpJJJJSySdJJSydJJJSySSdJSySdJJSySdJJSySdMkpdMnSSUsnSSSUpJJJJSkkkklKSSSStSySSdAq
+ WSSSTVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSU
+ pJJJJSkkkk8IXSTJJyl0kySVqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0
+ kySVqXSTJJWpdJMklal0kySVqXSTJJWpSSSSC5SSdMkpdJJJBSkydJJSySdMkhSSSSSlJJJIKUkkkkpS
+ SdJJSySdJJSySSdFSySdJJSySdJJSydJJJSkkkkVKTJ0k0qWSSSTVKSSSSUpJJJJSkkkklKSSSQUpJJJ
+ JSkkkklKTpk6KlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpkFKSSSQUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSRUpOmTpKWSSSRUpJJJJSkkk6Slk6SSSlJJJJKUkkkkpSZOmSUpJJJFCkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SS
+ SC5SSSSSF0kySSl0ySSSlJJJJKUkkkgpSSSSSlJJJIqUkkkkpSSSSSlJJJJKUkknSUpJJJJSySdMkpSS
+ SSSlJJJ04KUkkknWpZJOmQUpJJJJSk6SSSlJJJJKWSTpIKWSTpklLpkkklKSSSSUpJJJJSkkkkVKSSSS
+ UpJJJFSkkkklKSSSSUpMkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJ0lKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSySdMgpSSSSSl0kkklKSTpIqWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWTpJ
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSdFSySdJJSySdJJSySdJJSySdJJSyS
+ dMkpSSSSClJ0ydJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUsknTIKUnTJIKXSSSSUp
+ MkkkpSSSSSlJ0ydJSkkySCl0kkklLpJJJKUmTpklKTpkkVLpkkklKSSSSUpJJOipZJOmSUukmSQQpJJJ
+ JSkkkklKSSSSUpJJJJSkkkkUqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKTpkk
+ FKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpOmSSUukmSSUukmSSUpJJJBSk6ZJJS6SZJJS6SZ
+ JJS6SZJJS6ZJJJSkkkkEKSSSSUpJJJJSkkkkkqSSSRSpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJ
+ JJSkkkklKSSSSQpJJJJSkydMgpSSSSSFJJJIpCkkkkVykkkkUqSSSRUpJJOkpZJOmSUpJJJNQpJJJBCk
+ kkkkKSSSSUpJJJJSkkkkUrpkkkkqSSSRClJJJJ6FJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnRtSkkkkr
+ UpJJJK1KSSSStSkkkklKSSSSUpJJJC1KSSSStSkkkkrUpOmSQKl0kkk1SkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSySdMkpUJwEk6SlJ0kklKQ3IhQ3pKa7ygkotiAUlJGFWWFVWKwxJSYFMXJkxCSl9yW5RhK
+ ElM5SUQpBJS6SSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU
+ 1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1+vSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSS
+ lJ0ydJTFyr2Kw5V7ElNcqTFEqTElNliMEFiMElLpk6ZJSkydMkpSSSSSl0kkklKSSSSUskkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSS
+ SSUpJJJJS6dMnQUqEyeU0pKUkkmSUumSSTlKSSSSUtKUpQlCSlSlKUJQkpUpSmhKEFLykmToKXSTJSkp
+ dOmSQUukkkkpSSSSKVJJJwipZJTATwjSkcJQiQlCKkcJ4U4TwhaEcJQiQlCFqRwlCJCUJWpHCUIkJQla
+ kcJQiQlCVqRwlCJCUJWpHCUIkJQlakcJQiQlCVqRwlCJCUJWpHCUIkJQlakcJQiQlCVqRwlCJCUJWpHC
+ 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
+ OkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1
+ Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSZOmSUpJJJJS6SSSSlJJJJKUnTJ0lMXKvYrD
+ lXsSU1ypMUSpMSU2WIwQWIwSUumTpklKTJ0ySlJJJJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq0EI1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkkkklKSSSQ
+ UqUpTJJKXTJJJKXSSSRUpOkkipSUJJ0lLQlCdJJS0JoUkySmJCZSKaEFLJ08JQglZJOQmKVKVKUqMpAo
+ 0pmkmCdGlKS3QouMKvZbCNKbPqgJvXCyrcuFVdneadSnf9cJfaAud+3p/tyXCp6H7QEvtAXPfbUvtyHC
+ h6H7QEvtAXPfbkvtyHCp6H7QEvtAXPfbkvtyXCp6H7QEvtAXPfbkvtyXCp6H7QEvtAXPfbkvtyXCp6H7
+ QEvtAXPfbkvtyXCp6H7QEvtAXPfbkvtyXCp6H7QEvtAXPfbkvtyXCp6H7QEvtAXPfbkvtyPAp6H7QEvt
+ AXPfbkvtyXAp6H7QEvtAXPfbkvtyXAp6H7QEvtAXPfbkvtyXAp6H7QEvtAXPfbkvtyXAp6H7QEvtAXPf
+ bkvtyXAp6H7QEvtAXPfbkvtyHCp6H7QEvtAXPfbkvtyIgp6D1wn9cLnvtqcZqfwJeg9cJesFgjNUxmpc
+ Cnc9YJeqFifbUvtqHCh2vWCXrhYhzVA5yXCp3vXCb7QFz5zlH7ehwqei+0BL7QFzv25OM5LhU9D64S9c
+ Ln/tqf7alwqd/wBcJ/XC5/7am+3JcKnoftAS+0Bc99uTfbkuFT0X2gJfaAud+3J/tyXCp6H7QEvtAXPf
+ bkvtyXCp6H7QEvtAXPfbk325LhU9F9oCX2gLnftyX25LhU9F9oCX2gLnftyf7clwoeh+0BL7QFz325L7
+ cjwqeh+0BL7QFzhz032/zQ4VPSfaAl9oC5wZ6kM5LhU9D9oCX2gLnjnKJz0uFT0f2gJfaAuc+3pxnJcK
+ XovtAS+0Bc99uSOclwqeh+0BL7QFzhzk328pcKnpPtAS9cLnBnqYzkeBL0PrhL1gsEZqIM1LgU7XqhL1
+ Qsf7YmOYlwKdn1gm9cLEOahnOS4FO/64TfaAufOconPQ4UPRfaQl9pC5s56b7f5pcKnpftAS+0Bc4M9S
+ Gclwqei9cJeuFz/21L7alwqd/wC0BL7QFz/25Mc5LhQ9D9oCX2gLnPt6X29LhU9J9oCX2gLnBnJ/tyXA
+ l6L7QEvtAXPfbk325LgU9F9oCX2gLnftyf7chwKeh+0BL7QFz325L7clwKeh+0BL7QFz325L7clwKeh+
+ 0BL7QFz325L7clwKeh9cJeuFz325L7clwKeh9cJfaAue+3JjnJcCnovtAS+0Bc59uTjOS4FPReuEvXC5
+ 8Zqf7ajwJd/1wl64WB9tS+2pcCnf9cJeuFz/ANtTHOR4FPQ+uE/rBc8M/wA0VubPdLgKnc9UJeqFkDMT
+ nLS4FOt6wTeuFiuzUJ2cjwKd/wC0BL7QFzpzkvtyXCp6L1wl64XPDOT/AG5CkPQeuEvXC5/7cl9uSpT0
+ HrhL1wuf+3JfbkqU9B64S9cLn/tyX25KlPQeuEvXC5/7cl9uSpT0HrhL1wuf+3JfbkqU9B64S9cLn/ty
+ X25KlPQeuEvXC5/7cl9uSpT0HrhL1wuf+3JfbkqU9B64S9cLn/tyX25KlPQeuEvXC5/7cl9uSpT0HrhL
+ 1wuf+3JfbkqU9B64S9cLn/tyX25KlPQeuEvXC5/7cl9uSpT0HrhL1wuf+3JfbkqU9B64S9cLn/tyX25L
+ hU9B64S9cLn/ALckM5DgS9D64S9YLBGapjNS4FO36oS9YLF+2pjmpcCnb9YJvXCwzmpjmocCnd9cJfaA
+ ufOaonOS4FPRfaAl9oC5z7cl9uQ4FPR/aAl9oC5z7cl9uS4FPR/aAl9oC537cl9uS4EPRfaAl9oC537c
+ l9uS4FPRfaAl9oC537cl9uS4FPRfaAl9oC537cl9uS4FPRfaAl9oC537cl9uS4FPRfaAl9oC537cl9uS
+ 4FPRfaAl9oC537cl9uS4FPRfaAl9oC537ckc5LgU9F9oCX2gLm/t6cZ6HAh6P7QEvXC54ZyX25HgU9D9
+ oCX2gLnftyX25LgU9F9oCXrhc8M5P9tS4EvQeuEvtAXPHOTHOS4FPQ/aAn+0Bc59u80hnI8BS9H64S9c
+ LnxnKYzUuBTvesEvVCwxmogzEuBTseqEvVCyPtiicxLgU7PrBN64WG7NQznJcCnoPtAS+0Bc6c5ROehw
+ Iej+0hP9oC5r7enGelwKek+0BL1wudGcpfbkuBT0HrhL1wue+3JfbkuBT0P2gJfaAud+3JvtyHAh6P7Q
+ EvtAXOfbk/25EQU9F9oCXrhc99uS+3J3Al6H1wl64XPfbkvtyXAp6H1wl64XPfbkvtyXAp6H1wl9oC57
+ 7cl9uS4FPQ/aAl9oC577cl9uS4FPQ/aAl64XPfbkvtyHAp6H1wl9oC577cl9uS4FPQ/aAm+0Bc8c5ROe
+ lwKej+0BP9oC5sZ6kM5HgU9F64S9cLAGan+2pcCXe9cJeuFgnNUTmpcCnoPtAS9cLnTnpDP80uBT0frB
+ L1QsJmdKMMxHgU6/qhL1gsg5iC7OhLgU7nrhL7QFzxz/ADUft6XAVPR/aAl9oC5z7cn+3IGCC9F9oCX2
+ gLnftyX25DgQ9F9oCX2gLnftyX25LgU9F9oCX2gLnftyX25LgU9F9oCX2gLnftyX25LgU9F9oCX2gLnf
+ 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
+ kkyXCpdJMnSpCkkkklKSSSSUpJJJJSkkkklKSSSSUpJOmSUpJOkkpZMnSSUoJ0ySSl5TEp0ySliUNyJC
+ g4JKatiASrFgVchJSWsq3WVTYrdaSk4KRKYJFJSpTyopJKZSmSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZO
+ kpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSU/wD/0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNcqTFEqTElNliMEFiM
+ ElLpk6ZJSkydMkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ
+ 2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSSSSUpJJJJS6ZOkgVLJJJJqlJJJIqUkkkipSSS
+ ScFKSSSSUpJJJJSkkkklLJSkmSSzCdQBUwUlKIUSFNPCKkRakAi7UtqSkcJEwpkITzCcFIrHws7JthWb
+ nrJynpymnk5BWe68kqd7pKrNbJTkp2WEo7dxT4+PK0qsOQnKc6HJoctf7F5JjheSS1yfclDlrfYkvsXk
+ kpyYclDlrfYvJL7F5JKcmHJQ5a32LyS+xeSSnJhyUOWt9i8kvsXkkpyYclDlrfYvJL7F5JKcmHJQ5a32
+ LyS+xeSSnJhyUOWt9i8kvsXkkpyYclDlrfYvJL7F5JKcmHJQ5a32LyS+xeSSnJhyUOWt9i8kvsXkkpyY
+ clDlrfYvJL7F5JKcmHJQ5a32LyS+xeSSnJhyUOWt9i8kvsXkkpyYclDlrfYvJL7F5JKcmHJQ5a32JL7F
+ 5Iqcn3JS5apwkN2JCcKS5xeQom4hWrceFRtZCNBTI5JS+1FUXuhC3pUEOn9oJS9UlUmGVcqr3IUFL7iU
+ vcrleNKsNwpQ0U5gDlIBy1Rg+SmMFDRLkgOTw5av2JL7ElohyYcmIctf7Em+xJaKciHJe5a/2LyS+xeS
+ SnIhyUOWv9i8kvsSSnIhyUOWv9iS+xIKcmHJoctf7El9i8kdFORDkoctf7F5JfYvJJTkQ5KHLX+xeSX2
+ LySU5MOTQ5a/2LyS+xeSSHGIcow5bJwfJN9h8ktFOSA5TActUYPkpfYkNFOOQ5QO5bJwlA4XkipyBuUx
+ uWl9i8lIYXkjSXNG5KHLVGEpDCQ0U4xDlHa5bf2HyS+weSFhLigOTy4LXOB5IFuJCcFOebSFH7SQpX1b
+ VnWOITqCnRGWl9qKyfVKI15KFBToHIJTeqSq7JKtV1SlQUsHOKUOV6rFlWW4U9kDSnGIcmhy2/sHkm+w
+ eSCnHAciAOWqMHyT/YvJLRDle5L3LV+xJvsSSnK9yYhy1/sSX2HySQ48OShy2fsPkl9h8kFOOA5PDlrf
+ YfJL7F5I6Kcn3JQ5a32JL7D5I6Jcn3Je5a32LyS+xeSGiXJ9yUOWt9i8kvsXklohyoclDlrfYvJL7F5J
+ aKcmHJQ5a32LyS+xeSWinJhyUOWt9hS+xJaJcmHJiHLX+xeSX2HyS0U48OTgOWv9h8k32JLRTljcnly0
+ vsaX2RHRTm+5OA5aQw0QYXklopyCHITy4LbdhKpdiQkCFOV6pCm3IIT20wqrgQngBTfGUkcpZpeQo+oU
+ aCnROQSo+oSqjDKv0U7ktEsAXFOA5aVWHKOMHyUcihyIcl7lrnB8kvsXko0ORDkoctb7F5JfYvJJTkw5
+ KHLW+xeSX2LySU5MOShy1vsXkl9i8klOTDkoctb7F5JfYvJJTkw5KHLW+xeSX2LySU5MOShy1vsXkl9i
+ 8klOTDkoctb7F5JfYvJJTkw5KHLW+xeSX2LySU5MOShy1vsXkl9i8klOTDkoctb7F5JfYvJJTkw5KHLW
+ +xeSX2LySU5MOShy1vsXkl9i8klOTDkoctb7F5JfYfJJTkw5KHLW+xeScYXkkpyQHJ4ctYYXkkcJOCQ4
+ 53KBeQtZ+GqlmNCeKS0/WIT/AGghNZXtVR5IRpTbOUU32krOdYnY+UqCHSF5KmHkqtS2VoVUShQUglxT
+ EOWmzElTGF5JppTkQ5KHLY+w+SX2HyQ0U48OShy2PsPkl9h8ktFOPDkoctj7D5JvsPkkpyYclDlrfYfJ
+ L7D5JIcmHJQ5a32FL7EkpyYclDlrfYkvsSSnJhyUOWt9iS+xJKcmHJQ5a32JL7EkpyYclDlrfYUvsKSn
+ JhyYhy1/sKX2HySU40OTgOWv9h8khg+SSHLAckQ5awwvJI4SSnHO5N7lrnC8k32LyRpTljcpQ5aYwlIY
+ SSXKIcokOWx9i8k/2HyQU4u1ycNctn7B5J/sHklYS43uCY2ELVfhwqGRRtThSmscghOMsqndLVVNpCNB
+ TtDLTHJJWUy0lHa4lKlNs3Epg8lRrZKuVY8pUFNf3FRIctVmHKJ9g8k3RTiQ5SActg4HkkMHyQU5QDk/
+ uWr9iTHCRQ5R3JvctU4aX2JKghyoclDlrDC8lMYPkgpx4clDls/YfJROD5JClOR7kvctU4Sb7EnaJcv3
+ Je5av2JL7Elopyvcl7lq/YkvsSWinK9yXuWr9iS+xJaKcr3Je5av2JL7Elopyvcl7lq/YkvsSWinK9yX
+ uWr9iS+xJaKckhyiQ5bIwfJOMDyQ0S4oa5TActj7B5JvsXklopzBuT6rS+xpfZEdFOadyg7ctf7Gouwk
+ tEuI8uCGbCFq24kLPtohHRDFmQQjtyiqDhtUC8hOoKdF2UgPySVSdYUzSSjQS3BaSiNLioUVblq0Ykpp
+ pTQAcnhy2RgeSRwfJRkhBcb3Je5a/wBi8kvsXkktcj3Je5a/2LyS+xeSSnI9yXuWv9i8kvsXkkpyPcl7
+ lr/YvJL7F5JKcj3Je5a/2LyS+xeSSnI9yXuWv9i8kvsXkkpyPcl7lr/YvJL7F5JKciHJQ5a32HyS+w+S
+ SnJhyUOWt9h8kvsPkkpyYclDlrfYfJL7D5JKcmHJQ5a32HyS+w+SSnJhyUOWt9h8kvsPkkpyYclDlrfY
+ fJL7D5JKcmHJoctf7D5JfYfJJTkQ5PDlrfYfJP8AYfJJTkQ5Mdy2DheSg7CThS5ydzgm9UhX7MWFTtqh
+ OoKY/aCEvtRVWzRVnWEIUFOl9qKX2glZgslWatUqU2vVJUgXFSqp3K7XiShQU0fckQ5awwvJS+w+SGin
+ GhyaHLZOD5JfYfJDRTjw5PDlr/YfJL7D5JaKciHJQ5a/2HyT/YfJJTjw5PDlr/YfJL7D5JaKciHJQ5a/
+ 2HyS+w+SWinIhyUOWv8AYfJL7F5JaKceHJQ5a/2HyS+w+SWiHIhyUOWv9h8kvsPklopyYclDlr/YvJL7
+ F5JaKcchyidy2TheSicHyR0U5A3KQ3LU+xeScYSSHL9yidy1/sSgcLyRoKcglyQLlqHC8khhJUFOaNyl
+ 7lpDCUhhpaJcqHJQ5awwk/2HyS0S5ADlL3Ba32HyUXYUJAhTkueQhuyCFcvx9qyrwWp1BScZZUxllY7n
+ kKbLCUqCnXGSSn9YlUqySrdbJSoKZh5Kl7ij1Y8q2zElA0pzSHKJa5bQwfJI4Hkm2FOJDkhuWwcHyUTh
+ JaIcsblL3LS+xp/saKnMO5RO5av2NN9iQQ5PuShy1hheSf7D5JaKciHJ4ctf7D5JvsXklopyfcl7lq/Y
+ kvsSWiXK9yXuWr9iS+xeSWinJ9yXuWt9i8kvsXkkpyfcl7lrfYvJL7F5JKcn3Je5a32LyS+xJUpyfcl7
+ lq/YUvsXkkpyvcm9y1vsSQwfJLRLkQ5La5bQwPJP9g8kLCnFAcnG5a5wfJROEnClOYNyf3LS+xqQw0dF
+ OXDlB24LZOEg2YcJWEuQXkJheQrV2PCpPZtTgAhstySk7KVAuhCdYU6gpuvyioC8lUg4lWqGbkqCWwxz
+ ijAOVjHxdy0GYU9lGSFOPDkoctk4PkonC8ky1pciHJQ5a32HyS+w+SOiHJhyUOWt9h8kvsPklopyYclD
+ lrfYfJL7D5JaKcmHJQ5a32HyS+w+SWinJhyUOWt9h8kvsPklopyYclDlrfYfJL7D5JaKcmHJQ5a32HyS
+ +w+SWinJhyUOWt9h8kvsPklopyYclDlrfYfJL7D5JaKcmHJQ5a32HyS+w+SWinJhyUOWt9h8kvsPklop
+ yYclDlrfYfJL7D5JaKcmHJQ5a32HyS+w+SWinJhyUOWt9h8kvsPklopyYcmhy2PsPkkcHySSHH9yW8ha
+ rsJV7MWEdFzS9YhROSU91RaqLyQnUEN37SSnFpKosJKv0VbkKClS4poctKvDlHGB5JpoKccByIA5av2H
+ yS+xJWEOZJUCStQ4iGcRGgpzZclLlo/Y1IYSVBTlHcoEOWz9h8kvsHkhopxQHKYDlrjA8k/2HySU5PuS
+ O5a32LyUTheSOinJO5RO5axwk32JHRTkw5OA5a4wfJTGB5IWEuOGuUoctkYHkkcHySsKcb3BMXkLVfhw
+ qduPCcKKWqbyE32koVrYVedU6gpueuSnDnFCpZuWlTjbkwgIaoDlIBy024Sn9iTEOXDkxDlrfYkxwklO
+ OdyY7lrnCTfYvJJTke5P7lrfYvJOMLySU5UOShy1vsSX2JJTk+5L3LW+xeSb7F5JKcr3Je5av2LyS+xJ
+ Kcn3Je5a32LyS+xeSSnIhyUOWx9h8k/2HyQ0U40OTw5bH2HyTfYfJHRTk+5MXOC1XYXkgWYsI0FOebSF
+ H1yEW2mFTeIRpSf7QVIXkqkFYqZKNBScPJSlyPVj7lcZhylQU5Z3Je5a/wBh8kvsPkm6KciHJ4ctb7F5
+ J/sXkgpyIcl7lr/YUvsXkkpyIclDlr/YvJL7F5JKciHJQ5a/2LyS+xeSSnIhyUOWv9i8kvsXkkpyIclD
+ lr/YvJL7CkpyIcnhy1vsKX2JJTkQ5MQ5bH2JL7D5JaKcaHJe5bH2HyUXYXklopyC5wUTaQtC3FhZ91W1
+ OoKY/aCpDIKqO0U6xKVBTcFpKkHkpVVSrbMaUqU1ZclDlotxEQYXkhopyCHITg5bpwVA4HkgpwociNDl
+ r/YPJSGB5I6KcxocpQ5aowk/2JDRTjkOQyHLbOF5KBwfJBTiw5OA5a/2HyTjB8kVOUA5KHLXGD5JfYvJ
+ LRTjkOTHctg4XkoHC8kVOUNykNy0/sXkpDC8klOYNyeXLT+x+Si7DR0U5hcVAvIWg/FhVbKISoKa/rEK
+ QyCg2MhBlKlOg28lFFhKo0yVpU07kaCkLi4oLg5a7cSUjg+SaaU40OUg1y1xgeSmMHyQU5G1yUOWz9h8
+ kxwfJBTjQ5P7lrHCUfsSOinL9yR3LU+xpfYvJKgpyCHKJDltfYfJN9g8kFOJDlIBy2fsHkl9g8ktFOUN
+ yn7lpfYk/wBjRU5Z3IZDlsfY032HySU421ycNctkYHkpjA8kLU5DWuUjuC2PsMdkC3EhIKcl1pCEcghH
+ yKtqzrNCnUptDIKkLSVTZJV2mqUqUtucUocr9eLKstwZ7IKcgByUOW19g8k32HyQU48OShy1/sPkl9h8
+ kVORDkoctf7D5JfYfJJTkQ5KHLX+w+SX2HySU5EOShy1/sPkl9h8klORDkoctf7D5JfYfJJTkQ5KHLX+
+ w+SX2HySU5EOTQ5bH2HyS+w+SSnHhyUOWx9h8lIYPkkpxocnlwWucHyQn4cJaKcz1CEvXIR7aIVG1pCd
+ Sk32gp/WJVGVZqbuSpSYOJUgHKzRjbldZhIGlOVDkiHLX+xKJwkFOOdyGdy2DhKBwkaCnI9ycblrfYfJ
+ OMHySoKcsblL3LUGF5J/sXkkpyfclDlrfYvJL7F5IKcn3Je5a32LyS+xeSSnJ9yXuWt9i8kvsXkkpyfc
+ l7lrfYvJL7F5JKcn3Je5a32LyS+xeSSnJhyUOWuMHyTnB8klOQC4J/VIWhZiQqN1W1OACUZyChnIKFZo
+ hgSpKCU4uJRGvJUKqpV6rGlAgIQDckQ5abMOUT7F5JpIU4xDlAhy2jg+SicHyQsKccBymA5agwfJTGF5
+ JaIcuHJiHLW+xJjheSGiHIhyUOWv9iS+w+SWinI9yUuWscLyUDhI6Kc0FykNy0RhqQw0qCnM9yYhy1/s
+ SX2LyQ0U48OTw5a/2HyS+w+SVpciHJe5a/2LyUTheSNhLkncokuC1jhID8SE4Upz/UIT+uQiW07VUcIT
+ qCmwLypeqSqrRKs11ylQUvvJTS5W2Y0o7cOUwgILm+5L3LV+xJvsSbQQ5fuS9y1PsSX2JKlOX7kvctT7
+ El9iSpTl+5L3LU+xJfYkqU5fuS9y1PsSX2JKlOX7kvctT7El9iSpTle5ONy1PsSX2JKlOaNyXuWmMNOM
+ NLRLlEOTQ5bH2JOMHyQ0U48OTEuC2Dg+SrW4kIhTmm0hN9pIU7qoVF8hGgpuDJKmLyVnNJVukSlQU2Q8
+ lMdxVmmjcrjcKUNFOQQ5NDlsnB8lH7D5IaKcobk/uWp9i8kvsSOinK9yaHLX+xJfYkFORDkoctf7El9i
+ QU5MOShy1vsSX2JJTkQ5KHLX+xeSX2LyRU5EOShy1/sXkl9iS0U5EOShy1/sSX2JFTkQ5KHLX+xJfYkF
+ OTDkoctb7F5JzheSKnIJcFE2ELTsxIWffVtRoKQnIITfaSq1mig0klGgpvC8lSDyUGphKvVY8oUFIPcU
+ 8OWkzDlGGD5IFTjw5KHLYOD5KJwvJDRTlS5NLlqHDUDiJ1BTmkuTe5aYw1MYSGinJhyeHLYGD5JfYfJB
+ TkAOUhuWp9iS+xoocz3JSVpfY032RGgpzSXJiXLT+yJvsaVBLmHcokOWsMJP9h8ktFOPDkoctn7D5Jjg
+ +SFpcf3JbyFqOwoVa3GhOFKaZvITfaSoXM2qm4mUaCm/9oJT7yVVqG5adGPuSoKa/uTgOWq3CnspfYfJ
+ N0U5PuT+5an2JP8AYvJLRTlQ5KHLV+xeSX2JLRTkw5NDlr/YvJN9iQ0Q5PuS9y1vsSX2JLRTkw5PDlrf
+ YvJOMLyS0Q5MOShy1/sXkl9i8kNFOP7k3uWucJN9iRQ5UOTw5aowvJTGD5IaKcfa5Ptctn7D5JfYfJKw
+ lx4clLgtc4Pkg2YkJwIXOd6hCicghGup2rPt0TwAlsnKKb7SSs11hTseSjQU6PrkpbyUGpm5X6seUqCm
+ tLkvctJuHKIMJMNKcmHJQ5a/2LyS+xeSGiHI9yXuWt9iS+xeSGi1yfcl7lrfYvJL7F5JaKcn3Je5a32L
+ yS+xeSWinJhyUOWv9i8kvsXklopyPcl7lr/Yk32LyS0S5PuS9y1vsXkl9i8kdEuT7kvctb7F5JfYvJA0
+ hyfclDlr/YkvsPkm0hyIclDlr/YfJL7ElSnIhyUOWv8AYfJL7D5JKciHJQ5a/wBh8kvsSSnI9yXuWv8A
+ YvJL7F5Ipcj3Je5a/wBi8kvsXkkpyIcl7lr/AGJN9h8klOTDlIBy1Rg+SkMHyQU5IDk8OWv9h8kxwvJJ
+ TjOLghl5C1bMSFStx4RpTWFxCPVeVWdXCdmhSpTs0XStWh8rAxytjGcmkJdZhRECo6IyYQpYpJFOglZM
+ nKYoqUkEycIFDJMknUaFkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSk6ZOkpUKLgpqLk
+ lNSwKuQrNiruSUyYrVaqsVpiSkwSSCSSlJk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklK
+ TJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkp/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKU
+ kkkkpSSSSSlJk6ZJSkkkklLpJJJKUkkkkpSdMnSUxcq9isOVexJTXKkxRKkxJTZYjBBYjBJS6ZOmSUpM
+ nTJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTlMnKSkNiqvVqxVXpK
+ YBGrQQjVpKbLVNQappKUkkkkpSSSSSlkkkklKSSSSUukkkgVLJJJJqlJJ0yKlJJJIqUkkkipSSSSKlJJ
+ JJKUkknCSVoS2qYCeElI4SRCFAoqVKcOQyUpSSmBTyghykClSmTigWIpKE9PCmhesnKWxcFk5QTwFONb
+ ylSJKe7lNSdU6lO1h1grbppELGwjwt6g6IFTL0QmNIVhRKjsoKD0Ql6IRkkbQh9EJeiEZJK1IfRCXohG
+ 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
+ BYeYwBdHk8Lns48p/Ehwrhqo1tkqd3KVI1S41OhjVytjHpCoYjVs47UuNTYqpCOKgkxElNMlIzUE3oBE
+ 3KY1Q4ktY0BDOOFfhQc1OE0NIUBEbSEUhIJGSlhUEjUFMFPKbakJpCY0hHlJHiQ1/QCb0ArUJQjxKano
+ BL0Are1MQlxJawpCkKQipSlxKYikJjSEUFOhaWnZSFn5FIWw8LPyAniSnnMuuFlvbqtvMCyLBqncSkuK
+ 3VdDhVgwsHF5XRYXZDiU6ddIhSNIU6+FMplqa/pBP6QRJTyjakfohL0QiykhakXohN6IRpSS4kIfRCf0
+ QipSlxKReiE/ohFlPKHEpF6IS9EI0pSlaEBpCb0ArCUJcSEApCmKgiJpStTH0gnFQS3KTXIWkMDSFWuo
+ ELQlAuGiIkVzz2VVCw8psLpMwLnssKUTS5LzqiU6lDs5RaBqjxqdbEZK28enRZeE1b2O3RLjUkZSEUVB
+ EATymGSmApCXohFBUk20IPRCXohHSQ4lqD0Ql6IRk6XEpB6IS9EI6SXEpB6IS9EI6SXEpB6IS9EI6SXE
+ lB6IS9EIydHiSg9EJeiEdJLiUg9EJeiEdJC1qD0Ql6IR0krUg9EJeiEdJG1IPRCXohHSStSD0Ql6IR0k
+ rSg9EJeiEZJK1IfRCXohHTJWpEKQnFQRUpQsqYekEzqQigpFKylz7qQsvIqAW5cNFlZITrU4trIQANVa
+ vVWdUuJTboWvjLIoWvjIWp1KgrACDUNFYCaSphCeE5SQtLEqJUyoFK0LJwmThAlS6dMnTULJJ0ySlJJJ
+ JKUkkkkpSSSSSl0kkklKSSSSUpJJJJSkydMkpSdMnSUuoOU1BySmtYqxVmxVikpmxWmKqxWmJKTBJIJJ
+ KUmTpklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUC
+ xJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//T69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSZOmSUpJJJJS6SSSSlJJ
+ JJKUnTJ0lMXKvYrDlXsSU1ypMUSpMSU2WIwQWIwSUumTpklKTJ0ySlJJJJKXSSSSUpJJJJSySSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq0EI1aSmy1TUGqaSlJJJJKUkkkkp
+ ZJJJJSkkkklLpJJIFSySSSapdMnTIqXTJ0yKlJJJIqUkkkipSSSSSlJJ0ySWQKeVBKUlM5USlKSKWJCj
+ CJCaEVMYUgE8J4RUxKG5FKC9EKatyyMtatxWRllPCnGvOqjSdUrzqoU8p6nfwjwt/HOi57BHC6HHGibJ
+ TaCYhTAShQ2gsIShThNCNoYQlCnCUJWphCUKcJQlamEJQpwlCVqYQlCnCUJWphCUKcJQlamEJQpwlCVq
+ YQlCnCUJWphCUKcJQlamEJQpwlCVqYQlCnCUJWphCUKcJQlamEJQpwlCVqYQlCnCUJWpjCeE8J4StTEB
+ M8aKUKL+EkudlcLns48roMs6Lm848pUpwsl+qph+qPk8qoBqlRQ6eK7Vb+EVz2INV0OEEqKnfxuFfYFR
+ xhotBgQpSiFEhF2pi1BSEhIIhao7UlKCkmAUgEqUpJPCeEFMUylCUJKYpKUJQipikpQlCSlkk8JQkpin
+ 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
+ eFn5I0RU4OYeVjWu1Wvm91iWnVOoqbmK7VdHg9lzOJyunwBwhSnZrGikQlW3RTIQtSGE8KUJQipinTwl
+ CCFkylCUJKYpKUJQgpZJPCUJIUnCUJAIKXCeEgE8JIYkKBRCFEtRUiKk1PsUmtRSzCDcdEaFXu4QCXIz
+ CudzCt7MPK57LTwEuY86o+OdVWeNVYxxqjSXoMFb+ONFz+Ct/G4QpTcAShSaE+1BCwClCcNTwghjCSnC
+ aEEMYShShKEEMYShShKElMYShShKEksYShShKElMYShShKEksYShShKElMYShShKEUMYShShKElMYShS
+ hKElMYShS2pQipjCUKUJQkpjCUKUJQlamMJQpQlCVqYwolEIUSEkrBShMApwklr2jRZOUte7hY+Wkpx8
+ g6qpOqs5B1VOdUlN2g6rZxSsTHW1ioKdio6I8qvSNEeEFLEpApikgpdMU6SSmMJ08JIKWTpJkkKSSSSU
+ pJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKTpk6Sl1BymoOSU1rFWKs2KsUlM2K0xVWK0xJSYJ
+ JBJJSkydMkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAs
+ RygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1OvSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukk
+ kkpSSSSSlJ0ydJTFyr2Kw5V7ElNcqTFEqTElNliMEFiMElLpk6ZJSkydMkpSSSSSl0kkklKSSSSUskkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSl
+ JJJJKWSSSSUpJJJJSk6ZJBSkkkklKSSSSUpJJJFSkkkkVKSSSSUpJJJJSkkkggleEoUgnQtTGEykVApW
+ lUpAqKcI2pmE6iFIIqYuQHqw4IDwnAqaNxWRlrXvCx8tOBU493KagapXnVDqsgpwKno8HsugoIhcpiZE
+ LZpzAAkdVO4HBRLwss5w8VA53mmcKC6+8Jbwsf7d5pfbvNHhQ7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5p
+ fbvNLhU7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5pfbvN
+ LhU7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5pfbvNLhU7
+ G8Jbwsf7d5pfbvNLhU7G8Jbwsf7d5pfbvNLhU7G8Jbwsf7cPFL7cPFLhU7G8Ji8LI+3DxTHP80eFLreo
+ EN9gWUc7zUXZs904QSmyn6Lns0zKv35crHybpUvAhyshslV2s1R7XSUNp1S4EN7FYt7DELBofC1se+Eu
+ BT0uO4AK+x4XPVZcKy3O81HKKXbDwpbgsUZ3mpjOHio+FTqlwUC4LNOcPFDOb5oiKnV3hSDwsb7d5pxn
+ eadwodoPCW8LIGd5pfbvNN4UuvvCW8LI+3DxS+3DxS4VOvvCW8LI+3DxS+3DxS4UOvvCW8LI+3DxS+3D
+ xS4VOvvCW8LI+3DxS+3DxS4VOvvCW8LI+3DxS+3eaXCp194S3hZH27zS+3eaXCp2A8J/UCxft/ml9v8A
+ NLgQ7JeFEkLJGd5qQzR4ocKnTkJbgs37aExzQjwqdTeEvUCyDneah9u80eFLuCwJ94WIM/zUxn+aHAl1
+ y4KIcFknPHimGePFLhS7W8Kte8QqP24eKDbmSERFTTzzMrm8oSVsZd8rFvfJUgippFmqPUxQ7o7EeBTb
+ pC1cZZFb4Vyq+EuFT0WO4LSreFzlOXCuMzo7phip3g8JbwsYZ/ml9vHimcCHa3hMXhY/28eKRzvNDgU6
+ +8JvUCxzneab7d5o8K12hYFIPCwxn+akM/zSMFO5vCW8LFHUB4p/t48U3gU65eE28LIOePFN9uHiiIJd
+ feE+8LH+3DxS+3DxR4EuxvCW8LH+3DxS+3jxS4UOvvCW8LI+3DxS+3DxS4FOvvCW8LI+3DxS+3DxS4VO
+ vvCW8LI+3DxS+3DxS4UuvvCW8LH+3DxS+3DxS4VOxvCW8LH+3DxS+3+aXCl2N4Tbwsb7f5pfb/NHhU7G
+ 8Jbwsj7d5pfbfNLgU7AeFMPCxRm+akM7zQMEuq94hZuSQhuzh4qlflynRiprZIWVc1W78iVRsslTCKGv
+ Y1VyNUd7lXc5HhU2sbldFgOiFy9VsFa+JlbUDFL2mM8QrgcFzNGfA5VwdQHiq8oKLsOeFDcFlHPHim+3
+ DxQ4VjrbglvCyft3ml9u80uFTrbwlvCyft3ml9u80eFTrbwlvCyft3ml9u80uFTrbwlvCyft3ml9u80u
+ FTrbwlvCyft3ml9u80uFTrbwlvCyft3ml9u80uFTrbwlvCyft3ml9u80uFTrbwlvCyft3ml9u80uFTrb
+ wlvCyft3ml9u80uFTrbwlvCyft3ml9u80uFTrbwlvCyft3ml9u80uFTrbwlvCyft3ml9u80uFTrbwlvC
+ yft3ml9u80uFTr7wluCx/t3mn+3DxQ4VOvuCYuCyvtw8U324eKXCuDpOcFSvcEB2aPFVbsuVJEJauYVg
+ 5QWnk3ysm98qSkNJzNUehuqC46o1ToKFKdvD0hdBiuAXL490LWoyoQpT0jHhE3hYbc6O6mM/zTDFTtBw
+ TyFjtzx4qYzh4phip1ZCbcFmfbh4qJzh4pUp1twS3BZP24eKX27zS4VOvuCbcFk/bvNL7d5pcKHX3BLc
+ Fkfbh4pfbvNLhU6+4Jbgsj7d5pfbvNLhU6+4Jbgsj7cPFL7cPFLhQ6+4Jbgsj7cPFL7cPFLhU6+4JtwW
+ T9u80vt3mlwqdbcE+8LI+3eab7d5pcKnY3hIuCx/t/ml9vHilwodYkJpCzBmjxTjNHilSnTBCfcFmfbR
+ 4qJzR4pUp1d4T7wsY53ml9v80eFLs7wkXBY4zx4p/t48UOFLqyFMOCxvt48VMZ48UjFLp2OELEzjoUd+
+ aCOVlZeTKcApxs0crIe3VaWVZKz3GSn0petivUtVStWq3wlSnUx1s4xC56q6FoUZUJUp6WlwVprwsCvN
+ jujjPHimGKna3hNuCx/t48Uvt48U3hQ7G8KJeFk/bx4pjneaXCh1t4S3hY/27zS+3eaPCh2g8KQcFijP
+ 81IZ48UDFTsbgolwWV9vHimOcPFARU6heE28LKOcPFN9t80/hXOvvCW8LI+3eaX23zS4VOvvCW8LI+2+
+ aX23zS4UOvvCW8LI+3eaf7d5pcKnW3hLeFk/bvNL7b5ocKXW3hLeFk/bfNL7d5pcKnW3hLeFk/bvNL7b
+ 5pcKnX3BPuCx/tw8U/28eKXCl19wTFwWV9vHil9uHihwqdMuCjvCzDm+aic3zTuFTsNeFIvCxxneac53
+ mhwpbeQ4QsTLR7syVmZGTKkjFTSvCovCs22yqznKThQihWKBqq5KJW+EeFT0GGYXQYrxC5HGydq16M6O
+ 6jlFL07XhOXhYjOoDxU/t48VDwILq7gluCyft3ml9u80uFa624Jbgsn7d5pfbvNLhU624Jbgsn7d5pfb
+ vNLhU624Jbgsn7d5pfbvNLhU624Jbgsn7d5pfbvNLhU624Jbgsn7d5pfbvNLhU624Jbgsn7d5pfbvNLh
+ U624J9wWR9u80vt3mlwqdfcEtwWR9u80vt3mlwqdfcEtwWR9u80vt3mlwqdfcEtwWR9u80vt3mlwqdfc
+ EtwWR9u80vt3mlwqdfcEtwWR9u80vt3mlwqdfcEtwWR9u80vtw8UuFTr7gmLgsn7cPFI53mlwqdNzghu
+ eFmnOHihnO808RXNy1wWVlGVKzMlUL8iU+lNDKErKtZqtG+yVQsKVKR1s1WvhiIWUwrQx7ISpT1GG6Fr
+ 1PELmcfJhX2Zsd0CEO56gUg8LE+3+am3P80wxS7YcExIWSM4eKc5w8U3hU6ZcE24LLOcPFN9uHijwqdY
+ OCfcFkjOHin+3DxQ4UOruCW4LK+3DxS+3BLhU6u4Jbgsr7cPFL7cPFLhU6u4Jbgsr7cPFL7cPFLhU6u4
+ Jbgsr7cEvtwSpTq7gluCyvtwS+3BKlOruCW4LK+3DxS+3eaVKdXcE+8LI+3DxTfbvNLhQ7G8KJcFk/bv
+ NOM0eKPCh1JCUhZn20JfbAlwqdTeE3qBZRzR4qBzvNHhU7HqBPvCxft/mpDP80uBLs7gmkLJGcPFL7cP
+ FDhS7DXBO5whZLc4eKd2aCOUOFKs12i5fP1JWxlZUhYGXbKlEVOVaNU9TEzzJU6yn8Km9S1aVAWZW+Fb
+ ruhLhU7uOQtOlwXOVZUK9Xmx3TDFT0LHBT3BYjc8eKn9vHiojFTr7gmLgsn7ePFL7cPFLhQ6u4J94WT9
+ t80vtvmjwodbeE28LJOb5pvt3mlwodfeE+4LIGcPFP8Abh4ocKnWLgol4WUc4eKY5w8URFLq7wlvCyft
+ o8UvtvmjwqdbeE+9ZH24eKX23zS4VOvvCW8LI+2+aX24eKXCp194S3hZH24eKX24eKXCp1t4S3hZP24e
+ KX21LhS628J94WT9tCX23zQ4VOtvCW8LJ+2+aX24eKXCp1dwT7gsc5w8Uvt48UuFLsbgmLwskZ3mnOb5
+ o8KnTLwkHhZJzfNMM3zR4VOyXhV73iFQ+3eaBbmz3SEUsMsysXICuX5UrNttlSCKGu9qEWojnSokp3Cp
+ lU3Va2IFksdCvUXQkYqeoxCBC1q3CFy+PmQtBmePFQyil2y8KBeFlfbx4qP24eKYIrXX3hLeFkfbh4pf
+ bvNHhQ6+8Jbwsj7d5pfbvNLhS6+8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNL
+ hU6+8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNLhU6+
+ 8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNLhU6+8Jbwsj7d5pfbvNLhU6+8Jbw
+ sj7d5pfbvNLhQ7AeE+8LHGd5p/tw8UOFcHWLwq1zxConO80CzMnunRilHmumVz+TqVpZORKx7rJKl4VK
+ pGq6Dp5iFzlb4K18TI2ppih7DHeIVncFgU5sDlH+3jxUUoodYuCgXhZRzx4qJzvNIRU6heE3qBZJzvNR
+ +2+adwIdkWBSFgWJ9u804z/NIwU7m8Ji8LGGf5p/t48UOFTrF4Ud4WUc4eKic7zR4VOv6gT+oFj/AG7z
+ TjN80uBTsb0t4WT9t80vtvmlwpdbcEtwWQc4eKb7f5pcKXaDwmLwsb7ePFI548UOBLp2PCzskhBdnT3V
+ W7LlSxippZYlZpbqrd90qmX6qThU3sUarocQgQuYouha2Plwo5BaXpGOCnuCxm5w8VP7d5qOkOsHBS3h
+ Y4zvNP8Abh4ocKnX3hLeFkfbh4pvtw8UuFTsbwlvCyPtw8Uvtw8UuFLr7wm3hZP24eKb7cPFLhQ628Jb
+ wsj7d5pfbvNLhU7G8J9wWOM4eKf7d5pcKnWLgm3BZX27zTfbvNLhU624Jw4LH+3DxTjPHilwpdjcFIOC
+ xxnDxUvtw8UOFTpvcFRyHBAdm+aqXZcp8Qhr5WsrHuart98qhZZKdSkTWarRxRCz2vVym2EaU9FiGFrV
+ vELmqMmFfZmx3TDFTt7go7gsr7cPFL7cPFM4UuruCfcFkfbh4pfbh4pcKnX3BLcFkfbvNL7cPFLhU6+4
+ Jbgsj7cPFL7cPFLhU6+4Jbgsj7cPFL7cPFLhU6+4Jbgsj7d5pfbvNLhU6+4JtwWT9u80vt3mlwqdbcEt
+ wWT9u80vtw8UuFTr7gn3BY/24eKX28eKXCp2N4TOeFj/ALQHimOePFLhU3Mlwhc9m6q5dmyFk5ORKlAQ
+ 59rdUXHEFV32aqdVsFKlPQ4joWvS8LmsfJhaNWWhSnfa8IgcFjNzfNT+3eaYYpdfcEtwWOc8eKX28eKH
+ Cp2C8KBeFknPHionP80RFTr7wkHhY/27zS+3eaPCp2g8KYeFiDP81IZ/mmmKHZLwoFwWV9v80xzh4pcK
+ XV3BSBCyBnDxUxmjxRpTqyFAkLP+2hROaPFABToFwS3BZhzQo/bfNO4VOuHhJzwskZvmnOb5pcKm3c4L
+ KyYUrctZ9+TKeAhqZAVLZqj22yq4fqnUp0MUQugwzELmqLYWrj5MJpCnpq3iEQvCxG5sd1L7ePFRmKXY
+ 3BLcFjjPHipDPHihwqdaQolwWUc8eKic8eKIip1S8Jt4WQc7zTjN80eFDsBwUwQscZvmiDNHigQl1ZCi
+ XBZhzR4qJzh4oUp1dwS3hZH28eKX28eKPCp194S3hZP24eKRzfNLhU6heE28LJOd5qP2/wA0eFDtBwUw
+ 4LDGePFEbnjxTTFLtFwVLJIhVTnjxVa7MkcpRCmjmiZWJa3VaWTfKzLHyVJSGVLdVsYqxa3wVo0XwlSn
+ oschaDHBc9TlwrjM4eKaQl2dwUS4LL+3jxUTnDxTRFTq7gluCyvt3ml9u80eFTq7gluCyvt3ml9u80uF
+ Tq7gluCyvt3ml9u80uFTq7gluCyvt3ml9u80uFTq7gluCyvt3ml9u80uFTq7gluCyvt3ml9u80uFTq7g
+ nDgsn7d5pvt3mlwqdkPCkHhYn28eKkM8eKBip2C4Kva8Kgc8eKDZmz3REVKyncrByzKvZGVKyMi6U8BD
+ VcNVexBqs42aq5jWwUaU9ThQtesiFzeLlALSZmhNkFOsSFHcFmnNHioHO80zhS628Jbwsc53mkM7zR4V
+ OxuCbcFlDOHil9tCXCp1NwS3BZX20eKX23zS4VOruCW4LK+2jxS+2hLhU6u4Jbgsr7b5pfbfNLhU6u4J
+ bgsr7b5pfbfNLhU6u4Jbgsr7b5pfbfNLhU6u4Jbgsr7b5pfbfNLhU64cE5cFkDN805zh4ocKm5e4QsbK
+ KNbmSszIyZUsQpqX8quOUrbUAW6qURS62MtvFcFzNF8LVx8uEyUVPTVvEIu8LEZmwOVI548VEYKdfeEg
+ 8LGOePFIZ/mlwIdreEt4WN9v80vt/mhwIdneE28LH+3+af7d5pcKHX3BNuCyvtw8Uvto8UuFTq7gm3BZ
+ f20eKb7b5pcKnVLwm3BZRzfNN9t80eFTsB4Uw4LGGb5qYzh4oGKnX3BRLgsr7cPFROcPFDhS6+4KO4LK
+ +3DxS+3eaPCl03PCpZDxCrOzfNVLsyVJGKWrm6ysW1mqv5GRKzn2SVJwqTUNgrbxDELBqsgrTx74R4VP
+ SUPCuseFz9WXCtNzfNQyitLtB4SLwsj7d5pHO80zhQ6u8Jbwsn7b5pfbfNLhU628Jbwsn7cPFL7cPFLh
+ U628Jbwsn7b5pfbfNLhU628Jbwsn7b5pfbfNLhU628Jbwsn7b5pfbfNLhS6+8Jt4WT9t80vtvmlwodUv
+ CbeFlfbfNL7b5o8KXW3BOHBZH20eKX24eKHCp1nPCq3PCouz/NV7MyU4RQrJdKxshW7siVnXWyncCkEa
+ q7i8rPL9VYougpcKnqMJy2aniFyuNlQtOvOgcppil3C4KBcFl/bh4qBzh4pgil1d4SDwsk5vmm+2+adw
+ IdkPClvCxhneaf7d5ocKXY3hLeFj/bvNL7d5ocKnY3hLeFj/AG7zS+3eaXCp194S3hZH24eKX24eKXCp
+ 194S3hZH24eKX24eKXCp194S3hZH27zS+3eaPAp194S3hZH27zTfbvNLgU7IeE5eFjDP81L7d5ocCm7k
+ OBCwc0SrduZIWVk3yniKnNvbqoVCCntskoTbIKk4EOziuhbOO9czTfC0qcuEDFT01bwi7wsKvO80X7f5
+ qMwS6pcFHeFlnOHionOHikIqdUvCbeFlfbfNL7YncKnWDwiNeFjDN81IZ3mmmKnaDwnLgsYZ48U/28eK
+ bwqdUuCgXhZhzh4qBzR4pwih1N4Th4WR9t804zfNHhU7AeFLeFjjN81L7b5ocKnW3hLeFkHO80xzx4oc
+ KXZDwnLwsUZ48Uvt/mlwJdV7ws/JcIQHZ3mqt2XKkjFTSzdZWLYNVo5N0rLe/VScKG5iDVdNgECFymPb
+ BW3iZW1MMVPV1vEKReFjMzhHKc5w8VFwapdXeEt4WR9u80vtw8UeFTr7wluCyPt3mn+3eaXCh1t4S3BZ
+ P27zS+3DxS4VOtuCW8LJ+3DxS+2+aXCh1t4S3hZP20eKX24eKXCp1t4T7wsj7d5pfbvNLhU6+8Jb1kfb
+ vNN9u80uFDs7wluCx/t3mnGcPFDhQ7EhOCFkjOHin+3DxQ4Uh1C8Kpe8Qqjs4eKqXZs90+MVyPLdysHK
+ 1V7IyZWXfbKlEUtRzdUegaquXaotT4R4VO9hmFu47xC5bHvhalOZCBip6RjwiB4WGzO80QZ3mojBTtB4
+ S3hY/wBv80vtw8U3hQ7G8Jbwsf7d5pfbh4pcKHY3hLeFkfbvNL7cPFDhQ6+8Jbwsj7cPFL7cPFLhU6+8
+ Jbwsj7cPFN9uHilwqdjeEt4WP9uHil9uHilwpdjeEt4WP9uHil9uHijwpdjeEt4WP9uHin+3DxS4VOvv
+ CfcFj/bvNP8Abh4ocK119wS3hZH24eKX24eKXCp194S3hZH24eKX24eKXCp1t4S3hZH27zS+3eaXCp19
+ 4S3hZH24eKX27zS4UuvvCW8LI+3eaX27zS4VOvvCW8LI+3eaX27zS4VOvvCYuCyft3mm+3DxS4UusHhO
+ XhZH27zSOd5o8Km/c8QsfKepW5khZmRkynUpr3nVVRylbdJQmvkoUp0scLbxAsLGK3cQppCnXpGiPCBS
+ dEeUwpYEJoUiVGUaUukmlKUqUpJKUkCEKTJ0yahSSSSSlJJJJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSk
+ ydMkpSdMnSUuoOU1BySmtYqxVmxVikpmxWmKqxWmJKTBJIJJKUmTpklKTpk6SlJJJJKUkkkkpSSSSSlJ
+ JJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSn//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJS6SSSSlJJJJKUkkkkpSZOmSUpJJJJS6SSSSlJJJJKUnTJ0lMXKvYrDlXsSU1ypMUSpMSU2
+ WIwQWIwSUumTpklKTJ0ySlJJJJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0
+ 5TJykpDYqr1asVV6SmARq0EI1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkkkklKSTpkFKSSSSUpJJJFSkk6
+ ZJSkkkkVKSSSSUpJJJBSkkkkEsgU8qEpSgpclMUkoStK0JwE8JQkpQUgVAlLcnWpIUF4U9yY6o2po3sW
+ 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
+ VpnEKgcI+CVpcdwJU62GVqfYT4KbMKOyFqQ4zStvFEKtTiwtKiqELU3ajojyhMbCJCaliSmlIpkrUvKU
+ poTwhal06aE6BKF0ydMmoUkkkkpSSSSSlJJJJKUkkkkpdJJJJSkkkklKSSSSUpMnTJKUnTJ0lLqDlNQc
+ kprWKsVZsVYpKZsVpiqsVpiSkwSSCSSlJk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKT
+ J0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkp//9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKU
+ kkkkpSSSSSlJk6ZJSkkkklLpJJJKUkkkkpSdMnSUxcq9isOVexJTXKkxRKkxJTZYjBBYjBJS6ZOmSUpM
+ nTJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTlMnKSkNiqvVqxVXpK
+ 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
+ 7iU5gwgpDDC0tgThoQ4lOeMMJ/sQ8FoQE+iXEpzvsQ8E32IeC0tE0BDiU5pwh4JjhDwWmQE0BNtDmfYh
+ 4JxhhaMBPAStTnjDCf7GFfgJ9EbU5xwwmOEPBaOiUBG0ub9hHgkMIeC0oCUBG0ueMIJ/sYV/RLRLiU55
+ xAonEHgtEgJoCPEpz/sY8EvsQ8FoQFKAlxKc77EPBL7EPBaMBKAhxKc77EPBL7EPBaMJQEeJTnfYh4Jf
+ YgtHRKAhaHP+xjwS+xjwWholohanP+xhL7GPBaGiWiFqc/7GE32MeC0NEtELQ5/2MeCQwx4K/okIStTT
+ GGE/2IK8IUtErQ5xwh4KBwh4LT0USAlaHN+xBL7GPBaMBPARtLm/Yh4JfYh4LTgJQEbS5v2IeCcYY8Fo
+ wE2iPEuaH2MeCX2QeCvaJaJWloHDHgonCHgtLRKAlaHM+xDwS+xDwWnASgJWpzhhDwT/AGILRgJQE0lD
+ nfYh4JfYgtGAlATbQ532IeCX2IeC0YCUBK0Od9iHgl9iHgtGAlAQtTnfYgl9iC0YCUBK1Od9iCX2IeC0
+ YCUBK0ud9iHgl9iHgtGAlARtLnfYh4JfYgtGAlARtTnfYh4J/sQ8Fo6JI2hzvsQ8EvsQWjolojaHO+xB
+ L7EPBaOiSVpc77EPBL7EPBaKWiVoc77EPBL7EFowEtErS532IeCX2IeC0dEoS4kud9iHgl9iHgtGAlAS
+ 4lOd9iHgm+xDwWlATQEeJTm/Ywn+yBXyExStTR+yBL7GFdEKYhK0uecMJvsoC0SAoOAQtTTbQAjMYApF
+ IFBSUBOVAFSlC0sSE0KaUIWpjCUKUJkFKSTSkkhdJJMihSSSSSlJJJJKUkkkkpSSSSSl0kkklKSSSSUp
+ JJJJSkydMkpSdMnSUuoOU1BySmtYqxVmxVikpmxWmKqxWmJKTBJIJJKUmTpklKTpk6SlJJJJKUkkkkpS
+ SSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlM
+ kydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSn/1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNcqTFE
+ qTElNliMEFiMElLpk6ZJSkydMkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpdOUycpKQ2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSSSSUpJJJJS6SSSSlkk6ZK0LpJ
+ JJWlSSSSFqWSTpkbUpJJJFSkkkkqUpJJJLhSuklKSHCpiQmU00IcKrXCkCopSmkKtkSmUZTSgq2SYlNK
+ SSrYlIJ4UgEbVbJoU4TBSlOCbYFQUyVAlOVa4UlEFPuTlq6SbcEtySl0k25LckpdJNuS3JKXSTbktySl
+ 0k25LckpdJNuS3JKXSTbktySl0k25LckpdJNuS3JKXSTbktySl0k25LckpdJNuS3JKXSTbktySl0k25L
+ ckpdJNuTyElLJSkSolyKrZbk25QLk25GkjVnKUqMpSlS/hZSlKjKbcktIpnKUqG5SDkllsk6YFPKCrXl
+ PKjuTbkFWzlNKjvS3JLgvKUptyW5JNLylKbcluSQV5STbktyS1dJNuT7kkqSS3JSklSSUpbklUpJKUpS
+ VS6aUxcm3JUghlKZNuTyhSKXSTbki5KlLkqJKYuUS5OpS+5LcoymlLhSlBTyhByluRpVsiU0ptyUoJtI
+ CpAoYcpbkFWyJUSUi5RJSSsSmlPKaUrUzBT7kLclvRpSUuTSob04clSqZgp5UA5PuQpFMpTSm3JtyVIp
+ lKeVHcn3IUheU8qG5LclSGUppTbktyNJXSTbktyVJZJSo7ktyFIZSlKjuS3JUplKUqO5LclSrZSlKjuT
+ 7kuFVspSUdyW5LhX0ylNKbcmLkuFVLynBUNyW5LhQzlMSo7kxcjSLXThR3Jw5KlWkCeVEOTF6VJGrIlQ
+ JUS9R3JwDIIs5UgUMFSBSKCKSSoOKW5QLkAFtqLk4KHKkCnUi0oKkhhyluTKQukm3JbkqUukm3JbkqUu
+ km3JbkqUukm3JbkqUukm3JbkqUukm3JbkqUukm3JbkqUukm3JbkqUukm3JbkqUukm3JbkqUukm3JbkqU
+ ukm3JbkqUukm3JtyVKZJKO5LclSmcpSo7ki5JcFiVElIuQy5OAXJNyfcg7lIORpDMlNKaU0pUpmHKYcg
+ yn3IUhNuSlDD0+5ClMkpTbk25JTOUpUNyW9KkM5TSo70tyVKZSlKhuS3JUpnKUqO5LchSGUpSo7ktyVK
+ ZSlKhuS3JUpnKUqG5LclSmcpSobk+5GkMpSlR3JbkqUzlMSo7ktyFKXSS3JbkKVTIJ5Q96bejSmZKiSo
+ 708o0lScJlIFCkrhPKjKYuRpK8pAqJckHI0pICnlDDlLchSmUqJKRKiXJUpeVIFC3KQclSk0qJKjuTFy
+ FIUSmBUS5OHI0hmEkwcnkIUhSZKUtyVKXlKU0pShSGUpSoyn3JUleU6huS3I0mmaZR3JbkqUySlR3Jbk
+ qQzTKO5PuSpK6Sbcm3IUmmSdQ3JbkKUzTJtyW5KkLpk25LclSLZBSBQw5OHo0jiSJim3ptyVLhJRTJFy
+ bcjS5cFSlD3JbkaXUzJUSVHclKVJplKSYFPKS06KJTSkSokohbbIFOChgqQclSrZylKbcluQpC8pSo7k
+ tyVKZSlKjuS3JUplKUqO5LclSmUpSo7ktyVKZSlKjuS3JUplKUqO5LclSmUpSo7ktyVKZSlKjuS3JUpl
+ KUqO5LclSmUpSo7ktyVKZSlKjuS3JUllKUqO5LclSmUpSo7ktySmUpKO5OHJKZJinlMSgq2JKiSnJUJT
+ gplKaUgnSXUtJTynTJKpkCpByHKcOQQmBTEqIcluQpbaiU0pFyjuSRbOUpUNyfckm2aSjuT7kkrpJtyW
+ 5JS6SbcluSUukm3JbkkWukm3JbkltrpJtyW5JIK6SbcluSXLpSo7kxchSCGUpKO5OHIUimQCkAohyW9K
+ lMkxKiXqJejwqXJUJT7k0o0pcKQUQVIFKk2ySlR3JtyNJtnKcFD3KQclSmaYlNuSJQSsSmlIlQLkaUkD
+ k4cg7lIPSpSWUxKhvS3IUpeUk25LclSGQTqO5LchSFymlMXJtyXChlKcKAcpByHChkkm3JtydSWUpKO5
+ LcjSmSSjuS3IUpknlQ3JbkqUzlJQ3JbkqSzlKVHcluQ4U0ylJR3Jt6XCpnKUqO9NuS4UWylNKbcluS4U
+ cTIFSlQDk+5KlcS8piUxcolyNLgWUpAqG5OHI8K6kgKclDDktyFJpkSoymLlGU6k0zlNuUZTFyVLCaZ7
+ ktyFuThyNItKCnUA5TBTKQpJKUpSpSkkpSlKlKSSlKUqUpJKUpSpSkkpSlKlKSSlKUqUpJKUpSpSkkpS
+ lKlKSSlKUqUpJKUpSpSkkpSlKlKSSlKUqUpJKUpSpSkkpSlKlKTymlNuSpLOVElRL1HejSbZynAUA5Ea
+ UCFKAUk8piUFKlKVAuTb0aRbOUpQ9yW9LhRbMlRJUS5RLkuFDMFSBQw5TDkOFTNJNuS3JUplKUqO9Lcl
+ SmSYlNuTFyVKXlNKjuS3I0llKUqO5LcjSVyVElIuUSUaVa8pSoykCim0gKkCoAqQKBTbJMlKbcgtK8pS
+ mlKUqWqJTSkSolyVKXlOCobk4clSkgKeUMOUg5KlM5TEptyYuQpSiUpTFybcjSmUpwVGU+5KlMwUpQ9y
+ W9CksyVElNuTFyNKXlLcoFybekpMCnlBD0QOSpTKEoTgqUoKYQkpEqJckpUpiVEuTbkaUopAJSpSipcK
+ QUZT7k1S6SbcEtyVKXSTbktyVKXSTbktyVKXSTbktyVKXSTbktySl0k0hLckpdKU25MXJKXJUSUxco7k
+ aUylIKIcpAoqZBSUQUtyalclQJSLlAuTgELypAoQciApUpIClKbcolyFKZFybchF6W5GlJdyUqAcpApE
+ KZSluUdyiXIUpJuS3IO9LejwqSylKHvThyVKZgqQUA5SDkKUzSKjuS3IUpYoZUy5QJTgpaVMFQlOCipI
+ E6iHJ9yapcpiUiVElJSpSlRlKUaUzBTgqAcnDkKUzlPKhuT7kKUzBTkoe9LelSlOQyFPcmlKlLAIjVEE
+ KQcEKUzTFNvTFyVKYuUFMlMnIUEQFDlLclSUsqJKjvS3JUllKUqO5KUqVTOU6huT7kFUyTEptyYuSpVK
+ lKVEuS3I0qmUp5UNyfckhmko7ktyCmSSjuS3JUpkko7ktyVKZJKO5LckpkmlNuS3JKXlOobk+5JLJMSm
+ 3JtySlEppSJTSjSmUpSo7k25GlM5SBUNymClSl9VEqcqLigpgSkCokpg5GkJQVMFDBUpQSylPKhKW5Kl
+ M00qO9NvSpTOU0qO5LclSGUpSo7ktyVKZSlKjuS3JUplKeVDcluSpTNJQ3JbkqUzSUNyW5KlM5SlR3Jb
+ kqUuSokpbk0pUkLgqYKHKkHJUuSSokqO9MXJUhScJpSlKkMwU8qG5LelSmZKYlR3JtyFIXlOCo7ktyFI
+ pICnQ96fehSqZFRIS3pbkqVSgpBR3Jb0qVTIlMSol6jvRpVMimhIOUgUqSsFIFNKiXI0lnuSlCL0g9Gk
+ pUkwKlKCmKUpOKGXIgKSSnlBD1MOSIWlmkm3JbkKRS6Sbcm3JUqmSSjuS3JUqmSSjuS3JUqmSSjuS3JU
+ qmSSjuS3JUpkko7ktyVKZSnUNyQejSmadRDk+5BK8piVEuTbkqUolMnlOElMQpJ0xKSlSluUC5R3o0pL
+ KcIYcphyVKSBJR3pb02lLlRS3JtyVKXSTbktyVKXSTbktyNKXSTbktyVKXSTbktyVKXSTbktyKl0k25L
+ cgpdKU25RLkaUuSokpi5NKNKUnCQKcJKZAqQKhKfcgpnKUqG5LclSmaSjuT7kKUyTqO5LehSl0lHeluR
+ pS6SbcluSUuko7ktyFIZJk25NvRpTKU0qO9LejSmUpKO5PuSpK8pSm3Ji5KlLylKjuTbkaSzlJRBUpQU
+ ulKUpi5JS8pSo7ktyVKtlKUqO5LclSGUpSo7ktyVKZSlKjuS3JUplKaU25LchSF0yUpSlSlJJSlKVKXB
+ ThyGXJbkuFCWUlAOUw5ClKSS3BMXI0llKUoZem3o0lISokqO5KUqSolKUpTI0lkCnBUJT7kqUzlPKhuS
+ 3IUpnKUqG9LehSGcpSh70+9LhWs5SlQ3pbkOFTOUpUNyW5LhUzlKVDcluS4VM5SlQ3JbkuFTOUpUNyW9
+ HhXM5SlQ3J9yVIZylKjuS3JIZJKO5LckplKUqO5LckplKUqO5LckpklKjuTbkqUzlKVDcluSpTOUpUNy
+ W9KlM5SUNycOSSoqJU5USUUsVIFQlSBSUzUHKW5MSgpEQmARYS2oKYhSBShJBLIFOoAqQKapcqJCkmIS
+ UxSTwkkhZOkkihZJOkkpZJOmSUpJJJJSk6ZJJSk6ZJJS6SZJJS6SSSSlJk6ZJSk6SSSl1BymoOSU1rFW
+ Ks2KuUlMmK0xVmK0xJSUJJwkkpZMnSSUsnSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6SSlk
+ kkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//Q
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUk
+ kkkpSZOmSUpJJJJS6SSSSlJJJJKUnTJ0lMXKvYrDlXsSU1ypMUSpMSU2WIwQWIwSUumTpklKTJ0ySlJJ
+ JJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq0EI
+ 1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkkkklLpJJIKUkkkkpSSSSapSSSSClkkkk5Skkkk4KUkkkpApZJ
+ OmKKlSmlMUySmYKeUNSBQKmSSYKQURUtCUKQTgJimG1PCJCYpKYQmLoTPdCq22wkpsm0BDOQFm25MKs7
+ LTwFOwchR9dZAypUhenKdX10vXWX66XroqdX10vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpKdX10
+ vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpK
+ dX10vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpKdX10vXWV66XrpKdX10vtCyvX
+ S9dEBDq+umNyy/XTi5PAWul6qkLFmi9S+0Qivi6YsS9QLM+1BL7UEmwHSNigbVn/AGpMchBjm3/VS9dZ
+ xvUTcg1y6n2hL7Qsr10vXKSnV+0Jeusv1k/rILg6frpeusz1kvWSZA6frp/XWX6yXrJL3T9dP66y/WS9
+ ZBYXU9dL11l+sl66TG6nrpeusv10vXSSHU9dL11l+ul66K91PXS9dZfrpeukl1fXS9dZXrpeugl0zem9
+ dZhvTesnhaXUF6kL1lesn9dOpa6nrpjesz10vXRAU6XrpvWWb6yXrJ1IdL1kvWWd6yXrIUp0fWS9ZZvr
+ JxcgQp0hcpeqs0Wpzcoip0fXS9cLKdkQofak1LtC+VIWrGblIoyUEuobFE2rP+0qJyEglvm1RNqo+smN
+ qlCm96yf11mm1RNyfSXU+0JfaFleun9ZKkOp9oT/AGhZXrJeulSHWF6f11lC9P66aQtdT10vXWZ66XrJ
+ KdP10vXWZ6yb1kaU6nrpeusv1kvWSpTqeul66y/WS9ZClOp66XrrL9ZL1kqQ6nrpeusv1kvWSpaXU9dL
+ 11l+sl6yCQ6nrpeusv1kvWSZg6nrpeusv1k4uSSXT9ZL1lnesl6yTGXQN6ib1nm5RNyS10vXUhesr1lI
+ XI0h1vXUTes71lE3pUvi6JuSFqyjkKQyU6myHXFql6qyRkp/tSVLJOobVE2rM+0pxkSlTAW+bUvWVD1l
+ E3JEKDpeul9oWWbk3rpiXV+0Jeusr10vXSU6vrpeusr10vXSU6vrpeusr10vXSU6vrpeusr10vXSU6vr
+ peusr10vXSU6vrpeusr10vXSU6vrpeusr10vXSU6vrpeusr10vXSU6vrpeusr10vXSU6vrpeusr10vXS
+ U6vrpeusr10vXSU6vrpeusr10vXSU6vrpeusr10vXSU6v2hL7Qsr10vXSU6v2hL11l+ul6yNLg6ZvTeq
+ s4XKQuTlzoCxTD1nC9P9pSU6W9LeFm/agl9qSU6BsUTaqP2iVE3JLW96yXrrPNqgbkKU6f2hP66yvWTi
+ 5KkOp66XrrM9ZP6ySHS9dL11m+sl6ySnS9dL11m+sl6yVKdL10vXWb6yXrJUh0vXS9dZvrJeslSnS9dL
+ 11m+sl6yVKdL10vXWb6yXrJUp0vXS9dZvrJeslSnS9dL11m+sl6ySnS9dP66zPVS9ZNS6nrqJvWb6yY3
+ IKdE3pvXWabkvVRU6YvRBcsoWoguSS6YtT+ss0XJ/XSpToG5Mblnm9N6yNKb5tTesqJtQ3XwjSnTF6mL
+ wsQ5UKTctClO36qY2rLblJzkpUp0DakLVnHISF6NKdP1lE3qh6yg65CkN83phkLMNyj66SnXGQn+0LIF
+ 6f102kOt9oS+0LJ9dL10lOt66kL1ki9SF6SHU9dMb1meumN6SQ6frpeusv103ro0udX10vXWX66XrpUg
+ up66XrrL9dL10kOp66XrrL9dL10Eh1PXS9dZfrpeugudT10vXWX66XrpKdT10vXWX66XroLC6nrpeusv
+ 10/rpMZdT10vXWX66f1kljp/aEvtCy/WTesiyRdX7Ql66yvWT+sizB1PXS9dZZvUftKTKHW9ZOLVkjJU
+ hkornWFql6oWT9qS+1JUxSdQ2qBtWeMmUvWlGmJveql66oG1QNySnS+0JfaFmesl6ySnU9dL11l+sl6y
+ SnU9dL11l+sl6ySnU9dL11l+sl6ySnU9dL11l+sl6ySnU9dN66zPWS9ZJLqeul66y/WS9ZJTp+ul9oWZ
+ 6yXrJKdP7Ql9oWZ6yXrJKdP7Ql9oWZ6yXrJKdP7Ql9oWZ6yXrJKdT10vXWX6yXrJKdT10vXWX6yXrJKd
+ T103rrM9ZL1klOn66cXrL9ZL10lOsMhI3rK9dP66ZSnT9ZIWLNF6kL0lB0w9TDwssZKf7UiyB1N4UTYs
+ 37WPFL7TKSS3zaom5UTfKgbkGMuh66X2hZZuUfXSWF1ftCb11l+sn9ZJa6frpxesz1kvWSSHUF6f11l+
+ ul66TKHU9dL11l+ul66SnU9dL11l+ul66S11PXS9dZfrpeuktLqeul66y/XS9dBY6nrpeusv10vXSXB1
+ PXS9dZfrpeukyup66ib1m+sm9ZJTp+upC9ZfqpxcitdT10xvWb66ibkkOkb03rrN9ZL1kVOmL1IXLLFy
+ kL0VOn6yXrLN9dL10lOl6yXqrNFyf1kaU6PrJeus03whHJhKlOyLwpesFhjL80RuWlS51zahm1Z32pMc
+ hGkuh6qXrLO9dP6ySnR9ZN66zjcom5BTp/aEvtCyjem9dClOt9oT/aFkeun9dJDqHITeusz1kvWSWuqL
+ 1IXrKF6kL0EOob1E3rNN6ib0Uun66X2hZfrJeskp1fXS9dZfrJeskh1PXS9dZfrJeskp1PXS9dZfrJes
+ kvDqeul66y/WS9ZJLqeum+0LM9ZN6ySC6n2hP66yvWT+uktLqeun9dZfrp/XSYy6nrpG9ZfrpG9KkB0j
+ kKP2hZhuTeskyxdT104vWWLlL1kWUOqLk/rLJ+0JxkpUvDq+ql6qzBkpHJSpRdL1UxtWb9pSGRKLBJ0f
+ US9VURcnNqS1vC5P66zTaom9NS6nrpvXWX66f10qU6nrpeusv10vXSU6nrpeusv10vXSU6nrpeusv10v
+ XSU6nrpeusv10vXSU6nrpeusv10vXSU6nrpeusv10vXSU6nrpeusv10vXSU6nrpeusv10vXSU6nrpeus
+ v10vXSS6nrpeusv10vXSU6nrpeusv10vXSU6nrpeusv10vXSU6nrpeusv10vXSU6frpG9Znrpeukl0Te
+ o+ss/wBZMbkVOkL0RuQFjm+E32qECFO59oCY3rFGWpjJlCkOqb03rLNF6XrIodH1kvWWd6yXrJKdA3KP
+ rKh6yb1UUOkLlMXLMFqkLkFOkb1E5CzzchOvSpTp/aE/2hZHrpxekp1vtCXrrKF6f1klOp66b11mesn9
+ ZJLp+ul6yzPWT+skp0vWS9VZ3rJ/WSS6Hqpeqs/1kxvSS6QuT+uFknJUTlJKdj103rrI+1JxkJUtLreu
+ l66yxen9ZJDpm5RN6zvWTG5FTo+ul66zfWTeskp1BepC9ZQuUhcgl1PXTeus31kvWQU6Prpeus31k3rJ
+ KdP10/rrL9dP6ySnS9dL11m+sl6ySnT9ZMblnesmNySnQNyj6yoesm9VJToi5EbcswWqXrQil1RepfaA
+ sc5MKBy02lOycgIZyFjnLTDJlEBTr+unFyym3yii1OU6QuUvWWb6yY3oUp0vXTeusw3pvXSpDqeul66y
+ vXT+ulSnV9dL11leul66VKdX10vXWV66XrpUp1fXS9dZXrpeulSnV9dL11leul66VKdX10vXWV66XrpU
+ l1Deom9ZvrpvWSpTom9L11m+qnFqKnTFykLll+tCicmElOv64SN4WN9r804ypQpTrG5DNyz/ALRKY3Iq
+ dAXqYvWV6ykLklOr66gb1nesmNyVKdD1k4tWcLURtqKnRFql6qoC1MbkFN43KBvVA3KBuRQ3zel66zja
+ l6qKnSF6kLlmC5SFyCnTF6f11mesl6yCnU9dL11l+ul66VKdM3qJuWd66Y3JUp0fXS9dZhvQzkIqdkZA
+ UhkBYf2pSGWhSnb9ZL1VktyZRRfKSm+bEvVVI2qJuRU3/WS9ZZ3rJesgp0vWTG9Z3rJjclSnRN6b11mm
+ 5R9ZKlOp66kL1k+ul66VKdb7Ql9pWT66b10qU632lL7Ssj1yl66FKdj7Ql66yRen9dCkOob03rrN9ZN6
+ ySXU9dOL1li5SFyK4On6yf1lnC5I3IJdH1032gLKdkQhnKSS7PrpeusYZSIMlJDq+sl6yzRel66SnR9Z
+ N66zjco+skh1PtCXrrL9ZL1kkOp66XrrL9ZL1kkOp66XrrL9ZL1klOp66XrrL9ZL1kFOp66XrrL9ZL1k
+ kup66XrrL9ZL1kkup66b11mesl6ySnT9dL11l+sn9ZPpTpeul6yzvVTG5GlOkLlMXrJN8KP2mEKU7Xrh
+ RdeFj/a/NL7VKFKdQ3JC1ZovlTFycp0hapess0XJeshSnRN6ib1nG5QNyVKdL7Ql66zPWS9ZJTqeul66
+ y/WT+skp0/XS9dZnrJeskp0/XS9dZnrJeskh0/XS9dZnrJeskp0/XS9dZnrJeskp0/XS9dZnrJeskp0/
+ XS9dZnrJeskp1PXT+usr10xyEqSHW9cJvtAWQcpROUjS52ftCXrrGGSityEqQ6vrJess0XpG5ClOib03
+ rrNN6b10lOn66f11l+ul6yaUOp66b11mesl6yCnT9dL7Qsv1kvWQQ6v2hL7Qsr1kvXSU6pyFE5Cyzem9
+ dJTqHISF6yvWTi5EKdcXqYvWSLlMXo0l1DcoG5UPWUTcnAJbxuTi5Z/qpvWTqU6rblP1wsf7TCX2tDhU
+ 6zrkI2rO+0yn9eU6lN8XKQvWb6yb1kwoLqeul66y/WS9dNQ6nrpeusv1kvWSU6nrpeusv1kvWSU6nrpe
+ usv1kvWSU6nrpeusv1kvWSU6nrpeusv1kvWRU6nrpjesz1kxuSU6RyEhkLKNyXrJKdgZCn66xxepi9Cl
+ Oob0wuWb6ykLkVOmLVMWhZX2hMclClOsbgoOuCyjlJvtMpUp0Tco+ss/15S9ZFToi9S+0LL9ZMb0qU6n
+ 2hL7Qsr10vXSpTrfaEvXWV66XroKdX10vXWX66b10lOr66XrrK9dL10lOr9oS+0LK9dL10VOr9oS+0LK
+ 9dL10lOr9oS9dZXrpeulSnV9dL7Qsr10vXSpTq+um9ZZgvUhcip0fVS9VUPWUDfCSnTFwUheFjnJTjKQ
+ U6/rJjcswZCf10lOj6yb11n+som5JTp+ul66y/XS9dJTqeum+0LM9ZRN6CnV+0JfaVkm9N66SnY+0p/t
+ CxxepC9JTq+ul66y/XTeuih0zkJjkLMN6b1klOn9oS+0LL9ZL1klOqMhS9dZIuUhckp1PXS9ZZguT+si
+ p0vWS9VZ3rJeukp0xcpesFknJhR+1pKdc3hQN6y/tSb7RKVKdP10vXWZ6yXrJKdT10vXWZ6yXrJKdP10
+ vXWZ6yXrJKdT10vXWX6yf1klOn66XrrM9ZL1kFOn66XrrM9ZL1klOp66b11m+sm9ZJTpG9N6yzvWS9ZE
+ KdMXp/tCy/WTG9KkOqclROSso3lR9dKkur9oTi9ZQuUxciudUWqYtWUMhS+0pUl1PUCXqBZf2tIZSVKd
+ M2KJtVAZEpG5KlN03JvXVA2qBtSpTo+ul66zfWS9ZGkOl66XrrM9ZP6yVIdL10vXWb6yXrJUh0vXS9dZ
+ vrJeslSnS9dL11m+sl6yFKdL10vXWb6yXrJUl0vXS9dZvrJeskl0vXT+usz1kvWQKnU9dP8AaFlesl66
+ YtdX7Qm9dZfrpeugp1PXS9dZfrpeukp1PXS9dZfrpesip1PXS9dZfrJeskp1PXS9dZfrJesip1PXTeus
+ z1kvWSU6nrpfaFl+smN6SXW+0JvtCyfXS9coKdX104vWV66X2hBLsC9TFsrGGSiNyUFOwHyiArMrvlW6
+ 7JSU2VEpAynKCmKcJk4QUzCUqKUoKVKSaUklLpJk6KFJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUukkkkpdQcpqDklNaxVyrFirlJTNitMVVitMSUmCSQSSUpMnTJKUnTJ0lLJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSl0kkklLJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMn
+ TJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkp/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSkkkklLpJJJKUkkkkpSdMnSUxcq9isOVexJTXKkxRKkx
+ JTZYjBBYjBJS6ZOmSUpMnTJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KXTlMnKSkNiqvVqxVXpKYBGrQQjVpKbLVNQappKUkkkkpSSSSSlkkkklKSSSSUukkkipSSSSVKUkkkml
+ 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
+ KamqbVWzSo+imqa2qWqs+il6KSmtqn1Vj0UvRSU1tUtVZ9FL0UVNbVLVWfRS9FJTX1S1Vj0U/ooqa2qW
+ qs+il6KSmsJUwSjeinNSVqa7nkKrZcQrdtZCzrwQgpg7ITtvVJ51TsOqSnUZbKO15Ko0iVerZKSmclMS
+ UYVJ/RSU15KQlH9FSFKCmvqomVb9FMaUlNMgpQVa9FL0ElNXVPqrXoJvQSQ1pKUlWPRS9FJTX1TwVYFK
+ kKElNWCngq2KE/oJKakFKCrfopjSipq6p5KseiompFTXLihPsIVl9SqWsISUgsyIQDlod8hUXOMpKdVm
+ TKt1vJWPQSStjGZKSmwAUiCrTKdE5pStTT1S1Vn0UvRSU1tU+qsein9FJTW1S1Vn0UvRQU1tUtVZ9FL0
+ UlNbVLVWfRT+igpq6paq16Kb0UlNfVLVWPRTeklamvqmIKtein9FK0NMgpoKu+gl6CVpacFMXEK6aEC2
+ khG0tR9xCrvyoUr2kLMvJCVpbhzfNTbmT3WI6wyiVPKVpegryJVllkrIxyStWlhKNqSySmIKsNqUvRSt
+ TUIKbVWzSomlK0NXVPqrPopeilaGtqlqrPopeihaGtqlqrPopeilamtqlqrPopeilamtqlqrPopeilaW
+ tqlqrPopeihaWtqm1Vr0UvRStTV1S1Vn0U3op1LWvqlqrHopeijSmvqlqrHop/RSpTW1S1Vn0UvRSpTW
+ 1S1Vn0UvRSpTX1S1Vj0UvRRpTX1S1Vn0UvRSpTW1TEFWvRS9FKktSClBVv0UjShSmkSQhOsIVyyqFQub
+ CVJYm+FNmQqLzCix+qHCp3ab5WnRZK57HetnGKFKddjpREGrhHATSFMVIJoThCkrpk6iSlSlJJpToEIX
+ SSSTUKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJ0ydJSkydMkpdJJJJS6g5TUHJKa1irlWLFXKSmbF
+ aYqrFaYkpMEkgkkpSZOmSUpOmTpKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWSSSSUpJJJJS
+ 6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/S69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSZOm
+ SUpJJJJS6SSSSlJJJJKUnTJ0lMXKvYrDlXsSU1ypMUSpMSU2WIwQWIwSUumTpklKTJ0ySlJJJJKXSSSS
+ UpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq0EI1aSmy1TU
+ GqaSlJJJJKUkkkkpZJJJJSkkkklLpJJIhSkkkk5SkkkkwqUmTpk1SkkkklKSSSSUpJJJOClJJJIqXlPK
+ imSUylNKZJBS6UJBOmlS0JAJ04SUtCg5qMoOTgpo3hYuYFuXrEzSpAFPPZPKDUJKNknVQo5UwCnYwqpW
+ /RRosnp7eF0mOzRNJSh9BRNC0SxDLEwSQ0fQS9BXtiWxG1NH0EvQV7YlsStTR9BL0Fe2JbErU0fQS9BX
+ tiWxK1NH0EvQV7YlsStTR9BL0Fe2JbErU0fQS9BXtiWxK1NH0EvQV7YlsStTR9BL0Fe2JbErU0fQS9BX
+ tiWxK1NH0EvQV7YlsStTR9BL0Fe2JbErU0fQS9BXtiWxK1NH0EvQV7YlsStTR9BP6Cu7UxalamiaUN9C
+ 0Nqg9qcClw8ilYmXVC6jJZosHMbypLZIvOXMgoICvZA1VUDVBlpPjsWxi1rOxwtrECVsc3QoqV5lKHjt
+ 0V9jUCWuUApUvRVjanhMtLVNKb0VbhLalamn6Kf0Vb2p9qVrw0/QT+grm1Laha9pegl6Ku7UtqVscml6
+ CXoK7tS2pWxNL0EvQVzYlsRtIaXoJegruxLYla5pegl6Cu7EtiVqaXoJegruxLYlaWmKE/oK4GJw1NJU
+ 0vs6b7Or+1LagpofZ0vs6v7EtiSHPNCj6C0CxRLElNH0EvQV7YlsSU55oSFCvlicVpymoKEK6mAtQMVe
+ 9uiQKnmcxkSsLIEFdHnjlc5lHVOS1O6OwKvu1Viso0ls1tV+hkqnUVpYwSpLoY9UrRZRog4rVp1t0TCp
+ qGhDNK0SxDLE1TUFKmKVZDFMMQQ0/QTGhXdqbakhpegn9BXNqcNSQ0/QS9BXg1LYkhoGhN6CvFqjtTrS
+ 0/RS9BXNqW1K1NP0EvQV3altStDS9BL0Fd2pbUrU0vQS9BXdqW1K1paXoJegru1LalaQ0vQS9BXdqW1K
+ 2YNL0E/oK5sUgxC0lo/Z0/oK9sSLErYy0fQS9FXC1R2p1rWp6Kf0VaDVLalaHOspWdkVLdsZos3JanAr
+ 4vPX1Kk9i1sgKhYnAtkNNzEItVl5QSU61kmVTdVrYtcrOp5W3htmErYC6FFKuNoUsZmiutYopSU0TQl6
+ CvFibYm2lpegm9BXtiWxK1NH0EvQV7YlsStTR9BL0Fe2JbErU0fQS9BXtiWxK1NH0EvQV7YlsStTR9BL
+ 0Fe2JbErU0fQS9BXtiWxK1NH0EvQV7YlsStTR9BL0Fe2JbErU0fQS9BXtiWxK1NH0EvQV7YlsStTR9BL
+ 0Fe2JbErU0fQS9BXtiWxK1NH0E/oK7sS2JWhpihMaVd2qJCVrw0H0qlfSth4VK9qcuedyqljZDF0eU1Y
+ mSEkOQ9uqLS3VJ41RaBqkh1MRkwt3GqWThjhdDjNSUkZSp+irDWqRCFIa4pU/RRwFKEENU0qPoq5tTbU
+ lNQUqXoK0GqQaghp+gl6Cu7U21JTT9BL0Fc2pbUKU0/QS9BXNqW1BTT9BL0Fc2pbUlNP0EvQVzan2pKa
+ XoJegrm1Lakpp+gl6KubUtqSmn6KY0q5tTbU4FLTNKXoK5tThidamn6CXoK8GJbELU0fQTegrxYm2o2l
+ pegmNCvbUtiVqc/0ERuOrgYitYgSpzX4+iysymJXS2M0WJnNiUgVPK5bIWa4arVzTqsp7tU+1JKwrdbV
+ VqKvVI2pt01rToqVOgLWx2oWpNXSjChHqYjhiaShomhL0FeLEtiVqaXoJvQV7Ym2JWhpegl6CubU+1K1
+ NP0EvQV3an2oWho+gomhaGxMWJWlz/QS9BX9ibYnWuaPoJegr2xLYlaGj6CXoK/sS2JWhoegn9BXtiWx
+ C0ho+gl6CvbEtiVrmj6Cb0Ff2JbErQ0fQTegr+xLYlaC0DQo/Z1o7EtiVsZaAx1MUK6GKWxC1rS9BRNK
+ vFqiWoiS+LTFKZ1CuhiTmI8TMHEyKVkZFS6TIYsXJangsgcZ9aEWK5YEByfa5qPamY3VFeUzOU62GTex
+ WStzFqWVhjVdDiM0TDJjSsoUzQrjGaKRYoTJLQ9BL0Fd2pbULQ0vQS9BXdqW1K1NL0EvQV3altStTS9B
+ L0Fd2pbUrU0vQS9BXdqW1K1NL0EvQV3altStLS9BL0Fd2pbUrU0vQS9BXdqW1K1NL0EvQV3altStTS9B
+ L0Fd2pbUrU0vQS9BXdqW1K1NL0EvQV3altStTS9BL0Fd2pbUrU0vQS9BXdqW1K1NL0EvQV3amLUrU0jS
+ hupV8tQ3BPBS5VtKzMmpb1rVl5LVJag85kMWbY3VbeSOVlWhK14QVt1WriMWfWNVr4g4StJdfEqWpXSq
+ uG1atbdECWMofRTilWtqQCZawoBSmNKtgJbU20NM0qPoq6WpbUbSGn6CXoK7tS2IWyBpegl6Cu7EtiVq
+ aXoJegruxLYlaC0vQS9BXdifYlawtH0EvQV7YlsSta0fQS9BXtiWxC0hpegl6Cu7EtiVsrS9BOKVc2pb
+ UrQ1PRTGlXNqbahaGl6KXoK7tT7ErQ0PQTGhaGxRLEbU0PQS9BXtiWxG1NE0Jvs60NiWxK0NJuOpHH0V
+ 9lak5mibaXAyqYC5/MZErrMxsBcvn6SngpcK0aqDAp3O1UayjaW3U1X6K1UpWnjhK0tqipaNVKDjtWnU
+ xK1I20KRoVxrFIsTbS55pTeirxYolqVoagpUhSrIapBqVrWp6CY0K9tTbUrQ0fQS9BXtiWxC0NL0EvQV
+ 3Yn2IWppegl6Cu7EtiVqaXoJegruxLYlaml6CXoK7sS2JWppegl6Cu7EtiVrw0vQS9BXdqW1K0tL0EvQ
+ V3YltStBaXoJegru1LYja0tH7Ol9nV8MT7AlbGWgMdP6CvbExalaA0vRTilWi1OGo2yxappVS+nRa5Yq
+ mQzRIFlDzeVUsq1mq3ssLHuGqeCyBp7FEtRiUNxRtBRtar2MxVGnVaGKlbBJ18WqVqV06Kpht4WxUzRN
+ JWtY0KJoV8sUC1MtLS9BL0Fd2pbUrQ0vQS9BXdqW1K0tL0EvQV3alsStTS9BL0Fd2JbErU0vQS9BXdiW
+ xK1NL0EvQV3altStTS9BL0Fd2pbUrU0vQS9BXdqW1K1NL0EvQV3altStTS9BL0Fd2pbUrS0vQS9BXdqW
+ 1K1NL0EvQV3altStTS9BL0Fd2pbUrU0vQS9BXdqW1K1NL0ExoV7Yn2JWkOcaEJ9C1CxAtYjaXByaoWLe
+ 2CujyxErAyeUrS1q26rXxK5hZVXK3cETCVodOmjRH+zo+OzRWfTQJU5px0vQWga02xK0ND0E/oK9sS2J
+ Whoegl6Cv7EtiVoaPoJegr2xLYlamj6CXoK7tS2o2ppihP6CuBqcMQtLT9BMaFe2JbErS55oUfQWjsTb
+ ErU0Ps6Y0LR2JixG0uTZQqF9ULdsYs3JalannclkKgW6rUyws48pWlsYzJW5i1SsjF5XQ4bUbWFsMoRP
+ QVqtmiJsQJWtMUJegrwYlsQtLnmhN6C0CxR2JWpoegpChXdqcMRtTSFCf0FdDE+xNtTR9BMaFf2JixK1
+ ND0EvQV7YlsRtTR9BI0K/sTFiVqc80JvQV8sTbErU0hQiNoVsMRGsQJS0TQqt9MLYcxUslqIKnnclkLK
+ uatvL7rGvOqNqazRqr+MyVSadVpYqNqdXGqlaTKNFWxAtatmiaSpqGhQNC0CxQ2JAqaQoT+gruxPsStD
+ R9BL0Fe2JbELU0fQS9BXtiWxK1NH0EvQV7YlsStTR9BL0Fe2JbErU0fQS9BXtiWxG1NH0EvQV7YlsStL
+ R9BP6Cu7EtiVqafoqLqVe2JnNStTjZFWiwsuuF0+S3Rc/mhK1OFYzVGoZqo2cqxj8o2p08WpalVKqYgW
+ vU1K1I20Kfoq01ilsStTSNKXoq4WJwxK1NL0E/oK6GKWxC1ND0EvQV/Ym2IWpo+gn9BXNifYghpGhRNC
+ vliiWJKaIoUxQrYYphiSml6CiaFobFEsSU5xoS9BXyxLYkppChOaFeDEixJTk20LNyKlvXNWVkhJTz+S
+ xUS3VaeSqB5SU2MZkrexKphY+INV0eE3hJTYbRomdQtBjNEnVpKcz0FMUK76amGJKaQoS9BX9iWxJTR9
+ BP6Cu7EtqSml6Cb0Fe2ptqVKaXoJ/QVzan2pKaXoJvQV7Ym2pwKml6Kf0Vb2pbU60NT0VE0q5tS2pWlo
+ mlIUK6WJBiVrmt6CrX06LW2Krkt0SBS8vmMiVkWN1W9mjlYlvKdalqm6rUx6pWfRytnFCVqbNVEq2zHU
+ 6GK8ytAlTUFCf0Fe2Ji1NtBaXopeirm1Laja1p+il6KubUtqVqafopeirm1Lalamn6KXoq5tS2pWpp+i
+ l6KubUtqVpafopeirm1LalaWn6KXoq5tS2pWppilSFKs7VMNQtDUNKDZStEtQbAhaXEyKlj5LF0OSFh5
+ adaHJc3VW8dklV3HVXcXlK1Oti0ytNlGiBhhazGaJEqaZoTegr5ao7ELU0/RS9FXNqbalamp6KXoq3tT
+ 7UrU0/QS9BXdqWxK1NL0EvQV3YlsStTS9BL0Fd2pbUrU0vQS9BXdqWxK0NL0EvQV3YlsStTS9BL0Fd2J
+ bErU0xQpGhXAxOWIWpybqdFlZNcLob26LFy04JDh3M1VcM1Vu86qu06qRc2aK1r41MrPxlt4rU0qT10I
+ hx1bqZoiFijJU5xx0hQr5YlsStDR9BP6Cu7AltSU0/QS9FXNqW1BDT9FL0Vc2pbUlNP0UvRVvaltSU0/
+ QTegru1NtSU0xQn9BXA1S2pKaPoJegrxao7UbS0/QTegru1Lajamg6hU76dFsuYqWQ3ROCXmcuuFlvbq
+ tvNCx7OU9TOhuq2cWuVlY/K3cQcIqblVKsChEqarAaoytavoJGhXdqYtTFNL0EvQVzaltRU0/QS9BXNq
+ W1JTT9BL0Fc2pbUlNP0EvQVzaltSU0/QS9BXNqW1JTT9BIUK5tS2pKavopGlW9qRCCmiaUwoV0tSDEVN
+ I0IFtC1ixVrmaJKcDIqhZN7IW/khY2Sihztuqt4zJKr91fxRqkp1cSmVqMo0VfCatetmiaSlpGhR9BaL
+ mIRakCpqilP6KtAJ4RU0zQm9BXdqWxNU0vQS9BXdiW1JDS9BL0Fd2pbUktL0EvQV3altRU0vQS9BXdqW
+ 1JTS9BL0Fd2pbUlNL0EvQV3altSU0xQkaFdDU+xK1OPfRosfKqhdNezRYeYEUOBa3VKtuqJdyo1HVJTo
+ Y7FqU1SqGMtjHCSWbKET0FarYi7EFOf6CkKFdLE4YgppegomhX9qiWpKaPoJChXNicMSU0/QS+zq+GJb
+ ElOf9nS+zrQLFEsSQ0RQpChXNifakpqegl6KubUtqKmkaVE0q8WqO1JTT9FRNCv7ExYkpzH0KlfStt7F
+ QyGoqebyqlmPZqtzLCyX8pKSYrNV0GHVMLFxBqukwRwkpuso0TuoVutuik5qbanP9BL0Fc2pbU5TT9BL
+ 0Fc2pbUlNP0EvQV3altQU0/QS9BXNqfakppegl6CubUtoSU0/QS9BXNqW1JTS9BL0Fd2JbEFNL0U4pVv
+ Yn2pIaooUhQrICmGoJaZx1Wuo0WuWqtc0QkFzzWVSsTJqXT5bVhZQRS4r2aolLNVN41RqBqipv4lS28e
+ nRZ2I1buO3RKlM2UonoqwxqntQU0zSomhXtqbakhpegl6CubUtqKGn6CXoK5tT7UkNL0EvQV3altQU0v
+ QS9BXdqW1JTS9BL0Fd2pbUktL0EvQV3altSS0vQTegr21NsSU0fQS9BXtibYnWtaXoJegruxPsS4lNH0
+ EvQV7YlsS4lNH0EvQV3YlsR4lNP0EvQV3Ym2JcSWn6CXoK5sS2JcSmn6CXoq7sS2pcSml6KXoq7tS2Jc
+ SWmKUjQroYnLEOJTkXU6LKyaoXR3V6LIymJ3Ep5+5mqC0aq7e3VVgNUuJTbxgtvEHCx8YLcxAmkqdSlu
+ iPCHVwjKMlKMhMnJUUbUolRJTpQjalpThKE8JpKFJ0kk1CkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkp
+ SdMnSUpMnTJKXSSSSUuoOU1BySmtYq5VixVykpmxWmKqxWmJKTBJIJJKUmTpklKTpk6SlkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61Yakp
+ kmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSU//9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSkkkklLpJJJKUkkkkpSdMnSUxcq9isOVexJTXKkx
+ RKkxJTZYjBBYjBJS6ZOmSUpMnTJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKXTlMnKSkNiqvVqxVXpKYBGrQQjVpKbLVNQappKUkkkkpSSSSSlkkkklKSSSSUukkknBSkkyScpd
+ JJJMKlkkkkxSkkkkFKSSSQUpJJJOClJJJIqUkkkkpZJOmKSlJ5UZTSkpnKcFDlTCSmcqDlMKLgnhTSvW
+ JmrdvCxcxqmiFPN5I1UKBqrOQzVDpbqpwFO90/sulxjouawNIXR450UMwluIZUwUxUCixhMpwkjaGCSm
+ kkpgkppJKYJKaSSmCSmkkpgkppJKYJKaSSmCSmkkpgkppJKYJKaSSmCSmkkpgkppJKYJKaSSmCdSSStT
+ BMQiJiErUihQejkIVnCcCvDnZPCwczut3JOiwcw8p1skXDyOVVHKs5HKqjlC2YN/GK28QrCxluYiVsU3
+ cx+FeYqONwtGsIW1yunUgE8IWpGkpkJQlaGKdShPCVrgxTp0kF6yUKUJQlbHJgkpwlCVsTGEoUoShK0s
+ YShTSStLCEoU4ShK1MIShThKErSwSUiopJVKcJlIJJUkU6RTSUMCoqZUULUsE4CQUgiCpaEgFJOE61Kh
+ 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
+ osYShThKEwlawhKFOEoQtTCEoU0oRtTCEoU00I2pjCUKUJQlamCUKcJQlamCSnCZK1MYTwpAKQCVpWAU
+ iFIBJK1NS4aLHywtq86LHy0OJLh5A1VWNVcyOVU7pcSm3jraxSsTHWzilNtTs1HRFJVeo6I6FqYOKZIp
+ krUyCeFEFSBQ4krwmhPKZOBQpMnTJyF0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSdMnSUpMnTJKXSS
+ SSUuoOU1BySmtYq5VixVykpmxWmKqxWmJKTBJIJJKUmTpklKTpk6SlkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJS6SSSSlkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSU/wD/1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNcqTFEqTElNliMEFiM
+ ElLpk6ZJSkydMkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ
+ 2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSSSSUpJJJJS6SSScFLJJ0k5SkkkkwqWSSSTFKS
+ SSQUpJJJBSkkkk4KUkkkipSSZJJS6YpwnhJTAplMhRISUsFJqaFIIKZpnFKVB5TwVNa8rHyytO9yyMpy
+ miVORkcoFZgol51VYGCpwVO3iWwtyjIAC5Oi0haVWSQgRaXpm5IUvtAWA3KKf7WouBDvfaAm+0BYf2tN
+ 9rS4FO79oCX2gLC+1lL7WUuBTu/aAl9oCwvtZS+1lLgU7v2gJfaAsL7WUvtZS4FO79oCX2gLC+1lL7WU
+ uBTu/aAl9oCwvtZS+1lLgU7v2gJfaAsL7WUvtZS4FO79oCX2gLC+1lL7WUuBTu/aAl9oCwvtZS+1lLgU
+ 7v2gJfaAsL7WUvtZS4FO79oCX2gLC+1lL7WUuBTu/aAl9oCwvtZS+1lLgU7v2gJfaAsL7WUvtZS4FO79
+ oCX2gLC+1pfa0uBTvDICf7QFgjLT/a0uBTtm8INl4WV9rQ35MoiC4NjJuCwsuyZVm68lZeQ8lHgZYlo3
+ u1VadUWwGUKEOBltt471tYlqwKpBWljvIS4GOb1GPcFo13hc1TeQrjMlLgaxd4XhP64WJ9qTHLQ4FO0b
+ wl64WH9rT/akuBTt/aAl9oCxftSb7UlwLg7f2gJ/tAWF9rS+1pcC93ftAS+0BYX2tL7WlwMcnd+0BL7Q
+ Fhfa0/2tLgYnc+0BP9oCwvtaX2tLgS7v2gJfaAsL7Wl9rS4Eu79oCX2gLD+1pvtaXAp3vtATfaAsP7Wm
+ +1pcCXcOQFA3hY32pN9pS4Eu0LwpC8LE+0pxlJcCXc+0BMcgLE+1JjlJhgh2jkBR9cLG+1JfaUOBTtC8
+ KQyAsMZKl9qREFO39oCQyAsP7Um+1p4gp3jkhVb8gQss5ar25Up4xqXzLQVh5DgSrOReSs21xKlEUoyd
+ UVhVfVFYjwpb1RWljvhZDCrlT4QMUvRY9wC0a8gLmqr4VpuVCilBTv8A2kKJyAsM5aicsqIwU74yQn+0
+ hc/9rKf7YU3gQ7/2kJvtAWD9rKf7WUOBDufaAn9cLDGUn+1J4ih2/tAS9cLF+1JjlI8CHb+0BN9oCxDl
+ Jvtab7aXc+0BL7QFh/a0vtaXtKdz7QEvtAWH9rS+1pe2h3PtAS+0BYf2tL7Wl7and+0BL7QFh/a0vtaX
+ trS7n2gJfaAsP7Wl9rKXtpDu/aAl9oCwvtZT/a0vbZg7n2gKJyAsX7Wl9qS9tJdg5ATfaAsf7SmOSj7b
+ GXaGQFIZAWF9qS+1lO9ta74yAifaAudGWVMZaXtodqy8QszJuBVd2VKpX3yne2viiybFl2vR77JVF5JR
+ 9tsBi5yiDqomUwBR4Fsm/ju1W7h2gQucqJC08e2EfbYC9ZReAFaGSFzdWTCP9rTDjU7bsgKP2gLEOWm+
+ 1qP2ku59oCX2gLD+1pfa0vaU7n2gJfaAsP7Wl9rS9pTufaAl9oCw/taX2tL2lO59oCX2gLD+1pfa0vaU
+ 7n2gJfaAsP7Wl9rS9pTufaAl9oCw/taX2tL2lO59oCX2gLD+1pfa0vaU7n2gJfaAsP7Wl9rS9pTufaAl
+ 9oCw/taX2tL2lO59oCX2gLD+1pfa0vaU7n2gJfaAsP7Wl9rS9pTufaAl9oCw/taX2tL2lO59oCX2gLD+
+ 1pvtaXtKd37QEvtAWF9rKf7Wl7SHe+0BMbwsMZaf7WnDGuDqvvCoX3BVXZKq23ypBBKPKtlYuQ9XL3kr
+ Nuko8Kmq92qNS7VAc0olYIS4UO5iWQt7FuC5bHcQtai4hLhU9LXeEX1wsJmSp/ak0wQ7gvCXrhYf2tL7
+ Wm8Cnc9cJvXCxPtaf7UjwIdr1wn+0BYf2pL7UlwKdz7QEvtAWH9rKX2pDgQ7n2gJfaAsP7Wl9rS4FO59
+ oCX2gLD+1pfakOBTufaAl9oCw/tSX2opcCnc+0BL7QFh/a0vtaXtqdz7QEvtAWH9rS+1oe2p3PtAS+0B
+ Yf2pL7Ul7aXc+0BP9oCwvtaX2tL21O79oCkMkLn/ALWnGWl7SXoPtITHJCwvtaRy0vbU7RyAoHICxjlK
+ JykfbU7X2gJxkBYX2pOMpL20u8MgIoyAufGUijKR9pTrW5AhY2bbMpWZKzMm6UfbU5+W6Ssx3Kt5DiVT
+ IMpe2pNUVeqcqDArLDCHtqdaiyFq49wC56uyFdqvhL21PS1XhWBkhc8zJhT+1pe2h3zkhN9pC585hS+2
+ FD21PQ/aQm+0hYAzCn+1lL20O79oCX2gLC+1lP8AakvbU7n2gJvXCxftSX2pD2kO164T/aAsT7UmOUl7
+ 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
+ oCX2gLD+1J/tRS4VO39oCX2gLE+1JfakuFTt/aAl9oCw/tRTfa0eBTu/aAnGQFg/aynGWjwId8XhOLws
+ EZamMtD20uy68KnfeFROUq1uRKIgljlWysTJerl9srMuJKPAuaznao1LtVXIMotYIR4FO1i2QtrHvgLm
+ qHELRqvIS4FPRMyAijICwBlQpDLS4FPQDICX2gLBGWpfa0PbQ7n2gJfaAsP7Wl9rS9tDufaAl9oCw/ta
+ X2tDgQ7n2gJfaAsP7Wl9rS4FO59oCX2gLD+1pfa0uBTufaAl9oCw/taX2tLgS7n2gJfaAsP7Wl9rS4Eu
+ 59oCf7QFhfa0vtaBgp3vtAS+0BYX2tL7WmHGtd37QEvtAWF9rS+1oe2p3ftAS+0BYX2spfa0fbU7n2gJ
+ faAsP7Wm+1o+2p3ftAS+0BYX2spfa0vbU7v2gJfaAsL7Wl9rS9tTufaAl9oCw/taX2spe2p3RkBSGQFg
+ DLUhlpe2l6AZITOyQsH7WmOWUvbU6l+SIWTk3goNuUSs+68lD20qvtlVg/VDseSotJlD21OljuWzilYW
+ OtvFQMFOzSdFYVanhWQmGKWBCaEQqJCHCpgnlIqKXAplKeVBSCPDSGSSSSSFJJJJKUkkkkpZJJJJSkkk
+ klKSSSSUpJJJJSk6ZOkpSZOmSUukkkkpdQcpqDklNaxVyrFirlJTNitMVVitMSUmCSQSSUpMnTJKUnTJ
+ 0lLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklLJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1
+ JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSZOmSUpJJJJS6SSSSlJJJJKUnTJ0lMXK
+ vYrDlXsSU1ypMUSpMSU2WIwQWIwSUumTpklKTJ0ySlJJJJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq0EI1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkkkklL
+ pJJJwUpJJJOUpJJJMKlkkkkxSkkkkFKSSSSUpJJJOClJk6YoqWJTSmKaUFJQVIIbSiBJSioqRUSgVKTh
+ MnCClFCejKDgnhTn3hZeQyVtWMlU7aZUsVPO3Ukqv9nK6B+NKh9jUwU4zKCFZbWQtNuH5IgxE61OZtKU
+ FaRxVH7MnghTnwUoK0PsyX2VLRTnwUoK0PsqX2VLRTnwUoK0PsqX2VLRTnwUoK0PsqX2VLRTnwUoK0Ps
+ qX2VLRTnwUoK0PsqX2VLRTnwUoK0PsqX2VLRTnwUoK0PsqX2VLRTnwUoK0PsqX2VLRTnwUoK0PsqX2VL
+ RTnwUoK0PsqX2VLRTnwUoK0PsqX2VLRTnwUoK0PsqX2VLRTnwUoK0Psqf7MlopzoKWq0Psyb7MiKU0NU
+ xBV/7Mn+zI6LnLewlVbKCVu/ZlE4kpWGSLzb8UlD+yFdKcLyUfsXklozB59mMQrVdBC1xheSI3EQ0Ypu
+ eyshHDSr7cVS+zIWGuXOIKiQVpHGUDjJWFOdBUgCr32ZTGMlopobSmIK0fsyY4yFheHNgpQVo/Zk32ZH
+ Rc58FKCtD7Mn+zJaMcnOgpQVofZkvsyWjG58FKCtD7Ml9mS0S58FKCtD7Ml9mS0S58FKCtD7Ml9mS0S5
+ 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
+ kpSSSSSlJJJJKUkkkkpdJJJJSySSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0
+ ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKf/9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSkkkklLpJJJKUkkkkpSdMnSUxcq9isOVexJTXcpMUXJ2
+ JKbTEYIDEcJKXTJJJKUmSSSUpJJJJSk6ZOkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lLpymTlJSGxVXq1Yqr0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKXSSSRBUpJJJG1KSSST
+ SVLJJ0k1SySdJJSySdMjSlJJJ04BSkxTpk6lMCFGEQhNCFKUEQKACmE0qXhMQpBIphUiKQKTlCULUlBT
+ kKLSiAI2pA5iC6tWyFAtTxJTTNScUqwWpAKQSUiFQU/SRgFKEeNTVNSialbITbUvcU1fSS9JWdqfal7i
+ mr6SXpK1tS2pe4pq+kl6StbUtqXuKavpJekrW1Lal7imr6SXpK1tS2pe4pq+kl6StbUtqXuKavpJekrW
+ 1Lal7imr6SXpK1tS2pe4pq+kl6StbUtqXuKavpJekrW1Lal7imr6SXpK1tS2pe4pq+kl6StbUtqXuKav
+ pJekrW1Lal7imr6SXpK1tTbUvcU1vRTeire1Lal7imp6Cb0Vc2qJaj7iLavpJeirMJQl7jJEtb0Al6Ct
+ QlCPuM1tX0E4pVqE0Ie4xyKAVJ/SRoShN9xgJQ+km9FWAFKEfcU1PRS9JWoTEIe4lr+km9JWIShL3Fwa
+ /pJekrMJbUfcZGt6SXpKztTQl7jHJrekl6SswnhL3GNq+kl6StbUtqXuJDV9JL0la2pbUvcXU1fRS9FW
+ tqW1L3E01fRS9FWtqfal7iqavpJekrO1KE7jU1/STekrMJbUuJDUNSXpK0WptqPEhripSFSPCeEuJSD0
+ 0xrR4TEIcSmsa1E1KyQltTuJTV9FOKFbDFMMSM1NQUJ/RCtbVEhN40tU0qJoVuEtqXuLmoKVIUqztT7U
+ vcU1vSTekrW1NtR40tf0k/pI8JQlxIQekn9JGhOAlxKQ+kn9JHATwm8SGv6SY1K1CYhLiWtM0pvRVwtT
+ bU7jQ1PRT+irW1Lalxpa3opeirO1Lahxqa3opeirO1KEuNTW9JL0lZhLalxoa3opekrMJQlxoLW9JL0l
+ ZhKEONQa/pJekrMJQlxswa3pJjUrUJtqXuJLV9JOKVY2qQal7jGWuKUvRVmEiEPcWtb0k4qRiEoQ40IT
+ UhuqVqFEhHjXxaRpTegrZCQanDK2A1hjogx1ZDUQNSOVZItT0ExoVyFEhN9xhLTNSXpKyQkGo+4pB6SX
+ oqyGp9qPGlq+il6Ks7UtqXGpreil6Ks7UtqXGpreil6Ks7UtqXGpreil6Ks7UtqXGpreil6Ks7UtqXGp
+ reil6Ks7UtqXGpreil6Ks7U+1LjU1fRS9FWtqW1LjU1fRS9FWtqbalxqa3opeirO1Lalxqa3opeirO1L
+ alxqa3opeirO1Lalxqa3opeirO1PtS41NX0kvRVnan2pcamr6Kb0Fc2pbUDkS0/QTeirhamLUPdS1PRS
+ 9BWtqcBL3UNT0EvQVzalCPuqanoJekrRCaEPcQ1/SS9JWITgJe4pqmhN6CuhqW1H3ENL0E/oq2WptqXu
+ Ka3pJekrMJbUvcU1fRS9JWtqUI8aGt6SXpKzCUJcamt6Sb0lahKEuNTV9JL0lahNCXGlrekl6SswlCXG
+ prekl6SswlCXGpreknFSsQkAlxqQipP6SOAnhDjS1TSomlXNqYtS40tT0U4pVnanDUeNTW9FI0q2GpFq
+ HGpomlRNKvFqgWp3Gpp+kpCpWNqcNQ41IBUkaVZDU+1LjU0zQmNCuFqbaj7imn6Cb0Fd2p9iPuKaQoUh
+ QrmxPsQ9xTU9FMaVb2pi1DjU1PRTilWdqUI8aEIqUhUjAKQCbxoQekl6KsgJQhxqahpUTSrhaolqPGpp
+ +in9FWtqW1HjU1vSS9JWdqW1LjU1vSS9FWdqW1LjU1vSS9JWdqW1LjU1vSS9JWdqUIcaQ1vSS9JWYShL
+ 3F7W9JL0lZhKEvcQ1vSS9JWYShD3Fpa3pJekrO1Lal7iwtb0k/oqyGp9qXuLGt6Kb0laIUSEPcXxa3pJ
+ eirACkGpe4zBqGlMaVcLVEtR9xeGp6KXoK1CcNS91dbWFCl6KsQnhD3GKTW9FRNKtwltS91ianop/SVr
+ am2p3uJa3pJekrMJQlxqa3pJekrMJQlxqa/pJekrEJQlxqa/pJekrEJQlxqa/pJekrEJQlxqa3pJekrM
+ JQlxqa3pJekrMJQlxqa3pJekrMJQlxqa3pJekrMJQlxqa3pJekrMJQlxqa3pJekrEJQlxpa/pJekrEJ4
+ S41Nb0kvSVmEoS41Nb0k/pKxCUJcamt6SRqVmEoS41NT0UvRVran2oe6pqein9FWtqW1D3Uhq+il6AVm
+ E4CPusga3oBP6CtAJEJe6gtX0kvTRyEgE33FhQ+komlWgEiEfcWFpGlIUq2WpbUfcWtYVJ/SVmEoS9xc
+ Gt6SXpKzCUJe4yBrekl6SswlCXuKLW9JL0lZhKEfcWtb0kvSVmEoS9xaWt6SXpKzCUJe4ta3pJekrMJQ
+ lxpDW9JL0lZhKEuNla/pJekrEJQlxqa5qUTSrUJbUvcWtM0pvRVwtTbUfcQ1hSpClWA1SAQ9xTW9FMaV
+ bhMWpcamkaVH0ldLVEtR9xTVFSmKUcNUw1LjU1vRSNCuBqW1LjS0TQmOOr21NtR9wpaH2dL0Fe2JbEvc
+ S0xQnFKt7U21L3Etf0kvSViEoQ41Nf0k/pI8J4Q40IPST+kjgJ4S40NU0qJpVyFEtR41paRqS9JWyxR2
+ o+4pAKlIVIwapgIcamv6SXpKzCUJcRU1vSS9FWYShLiKGt6SXpKzCUJcSmt6SXoqzCUJca8Nb0kvRVmE
+ oQ40tb0kvSVmEoS40Frekl6SswlCXGtLV9JIVKzCcBL3GMoBUn9JHASKHGgNc1KBqVkqMJcbLFreim9F
+ WwE+1H3GUNP0UvRVotTQl7jIGt6KXoKzClCPuILV9BI0K3CW1L3GCTS9BL0Fd2pbEvcWtQUp/SVraltS
+ 41NX0kvSVraltS41NX0UvRVraltS40tX0UvRVraltS41NX0UvRVraltS41NX0UvSVraltS41NX0kvSVn
+ altS41Nb0kvSVnan2pcamr6SXpKztS2pcamt6SXpKztS2pcamt6SXpKztS2pcamt6SXpKztS2pcamt6S
+ XpK1tS2pcamr6SXpK1tS2pcamr6SXpK1tS2pcamr6Sj6StlqYtS40hq+kpCpH2qQalxrraxoUDjq9tTb
+ UvcRbRGOpihW9qfal7ira3opjSre1Lahxotpeil6StliiWo+4q2v6SXoqxCkGpcaLavopeire1MWpe4i
+ 2p6Sf0VZ2p9qXuKtqilP6Ss7UoQ41W1/STekrMJQlxptreim9FW4S2o8abanoJeirm1MWpe4q2p6Sb0l
+ aLUxalxptq+kl6Ks7U4al7ira3oJegrYapbUvcTbS9BL0Vd2qJal7i0tT0U/pKztT7UuNDW9JL0lZ2p9
+ qHGpq+il6KtbUtqXGpq+kn9JWdqW1LjU1fSTekrW1NtS9xTV9JP6Ss7UtqXuKa4qS9JWISIQ41NY1pvS
+ VghOGo+4prilS9BWmtU9qXuKaXopvSVstUCEuNLW9NP6SNCkAlxqa/oJegrYapbUuNTS9BN6KulqiWo8
+ amp6KXoq1tS2pcamp6KXoq3tS2pe4pq+in9JWdqW1LjQ1vSTekrW1LalxqavpJekrW1LalxqavpJekrW
+ 1LalxqavpJekrW1LalxqavpJ/SVnaltS41NX0kvSVraltS40tX0k/pKztTQlxqa4qUvSRoTgJcakHoqJ
+ pVsBItS41NI0JClWy1MQjxqa/pJvTVghRIQ41IfTUhUigKYCXGpD6KY0q0AkQhxpanopvRVran2o8amp
+ 6KXoq3tTFqXGhqekm9JWi1NtS40Nb0k4qVjanhLjU1/SS9JWYT7UuNTUNSb0lbLVEtS41Nb0kvSViE8J
+ camv6Sb0Va2p9qXGpqeil6Ct7U+1L3FNP0EvQVzaltS9xTS9BL0Fd2ptiPuKafop/SVrYltQ9xTV9JL0
+ la2ptqXGpr+kl6Ks7U4alxqavop/RVraltS41NX0kvTVghRIQ41IPTS9JHhPCXGprekl6Ss7UtqXGtLX
+ 9JP6SPCcBLiQg9FL0VZAUtqHGkNP0UxqVstUdqXGuavpJeirQan2Jca5p+gl6KtlqYhLiU1fRUhUjwnA
+ S41IBUpekjgJ4S40Nb0k3pK1CaEuNDW9JL0lZhKEuJTX9JL0lYhKEuJDX9JL0lYhKEOJTX9JL0lYhKEu
+ JTX9JN6SswlCPElrekn9JWIShDjU1/STGpWYShESU1DSl6StQmhPElNf0kvTR4ShLiUg9JMaZVmFINS4
+ lNL7Ol6CvbU21LjU1BSl6StbUtqXGprekn9JWNqUJcSmv6SXpKxCeEuJTW9JN6KtbUtqXEpqeil6KtbU
+ tqXEpq+kl6KtbUtqHEpq+kl6StbUtqXEhq+kl6KtbUtqXEpq+il6KtbUtqXEpq+il6KtbUtqXEpq+il6
+ StbUtqPEprClOKVZDU4CaZpDW9FMaVahMQh7i5qGlN6Ktlqbal7qGt6KXoq2Gp9iXuqaRpTekrpaoFqX
+ uoawqUxSjhqIGoe6pq+imNKuFqgQl7imr6SQqVghIBD3FIRUl6SsAJ4S9xTVNKiaVchMWo+4pp+inFSs
+ 7U4al7imuKU/oqyGqW1L3FNM1JjWrZahEJe4lB6af0kUBTAR9xSD0E32dXA1PtR9xLS9BN6KulqgWpe4
+ prekn9JWNqcNTfcWlrekl6StbU21L3ENb0kvSVnalCXuqa3pJekrEJQl7imv6SXpKxCUJe6pr+kl6SsQ
+ lCXuKa/pJekrEJQl7imv6SY1KzCUJe4pq+im9FW9qbaj7qmqKlMVI+1OAh7ikIqT+kjgJ4S9xLVNIUTS
+ FbIUCEvdQ1vRCf0VYSAR9xSD0kxqVmEi1L3FNQ1JeirW1INS91TXFKf0VZDU8Je4pq+il6StQmhD3FNb
+ 0UvSVmEoQ9xTW9JL0lZhKEfcU1vRS9FWYShL3FNb0UvRVmEoS9xTW9JL0lZhKEfcU1vSS9JWYTwl7imr
+ 6SY1K0QokJe4pqmpL0VYhSDUvcU1hQpigKyGqUJe4pq+jCRrVkhDIQ9xSAsUDWrBCQCXuKa3opxQrQap
+ hqXuKagpUvTVgtUSEvcUh9NP6SJCmAh7imsaVE0K7tTFiPuJaPopxUrZam2pe4pAKlIVIwCcBL3FIfSS
+ 9EKwAlCXuKa/pJvSVkhQKXuKQGsJvTRimhL3FIfTS9JHATgI+4pr+in9AKyAnhL3FNX0UvRVqExCXuKa
+ 3pJekrEJQl7imv6SXpKxCUJe4pr+kl6SsQlCXuKa/pJ/SR4ShD3FIPSS9NHhKEvcUg9JL0keEoS9xSD0
+ kvTR4ShL3FIPTTekrEJAJe4pr+kkaVZDU+1O9xDTNKb0lbLVEtS9xLV9JL0lZ2qQYl7iWp6CXoK6GJ9i
+ PuLml6CcUq0WpoS9xSAVJekjgJwEONTWNKj6Cu7UtqPuKafoJ/RVvam2pe4hq+il6KtbUtqXGhq+il6K
+ tbUtqHuIavopeirW1Lal7imr6KXoq3tTbUvcU1fRT+irO1Lal7iWt6KXoqztT7UPcS1fRTeire1NtR9x
+ TV9FL0Va2pbUeNa1fRS9FWtqW1HjU1fRS9FWtqW1LjU1fRS9FWtqW1LjU1fRS9FWtqW1LjU1fRS9FWtq
+ W1LjU1fSS9FWtqW1LjU1hUpCpH2p4Q4koRUn9JFhPCHElAalA1K1CiQlxKahpUfRVshLajxqawqRWshF
+ DU8JpkpiAkVJMm2likApQpAJcSGICcBShIocSVk6ZJC0LpJk6CFJJJJKUkkkkpZJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUukkkkpdQcpqDklNaxVyrFirlJTNitMVVitMSUmCSQSSUpMnTJKUnTJ0lLJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklLJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1
+ qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSkkkklLpJJJKUkkkkpSdMnSUxcq9isOVexJT
+ XcnYmcnYkpssRwgMRwkpSSSSSlkkkklKSSSSUpOmTpKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJS6cpk5SUhsVV6tWKq9JTAI1aCEatJTZapqDVNJSkkkklKSSSSUskkkkpSSSSSl0kkklKSSSS
+ UpJJJAqUkkkmqUkkkipSSSSIUpJJJSBSkkkkVKhNCkEoQUxSBSKaU0qZgpEocpSoypZxUQpFIBNUzaEU
+ IbQiBJSioEKRKiSiFMYSATpKQKXAUlGUpRUuUyUpJqlJJJJUpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSVKUlKZMSkheUyinCNLVQlCeEoSpfFZJIpkKZ2SZ
+ JJJZJSSeEoSYCqU8qJTIUpnKZRThKkqThKEkqXhdJJMlTIukmSSpZJdJMklTGukmSSpIXSTJI0uC6SZJ
+ KkskkySVJXShMnTgtKoSSSTrQsQmTlMUVLJSmSlFC6ZMnCSlQnATgJwErUuApKKUphKlFRKclMm2kLQn
+ hJOlaVQlCSSVpUmhOkngqYwlCdJOtSySUJJKZBOopSghnKShKeUFq6SZJK1KSTJJKXSTJJKXSTJIKXSU
+ U6SF0kySS1dJRToJC6SZJBmC6SZJJJXSCZJBjLJIlMmSWqKSZPCSFKJUoTEJLosEgkQkk2QzBUwUIKQK
+ SySSVElMkkwFZOEoSRClwnTJJy5dJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMnSUukmSSUumSSS
+ UpJJMkpdJMkkpdJMnSUpJJJJS6SZJFS6UqJKaVGVMpTJgpAJtJWhPCeEyVKUkmSRpCkxTpQkpinShMip
+ kCnlDSlKkJJTJgnRpSkkkyVKXSTJIoXSTJJUpdJMkjSl0kySVJUkkkjSlJJJJKUkkkkpdOopSmpZpk0p
+ pSUulKZNKKkgKUocp5SUyKiUpSSStCcBKE6SlwkmSSUopoSSSUpOEyUpKZpKMp5SUpMU6ZJCyZOmSUun
+ CinSQzBTyoSlKSmcqJTSmlBC6SZJFLJJMklSl0kyUpUpdJMkkpdJMkhSQukmSSpeukmSQpC6SZJClpXS
+ TJIUsK6UpkxKVLFyVElMSmlKmSLIKYQgVMFCmUMkxSlJKlyySSSNJXSTSkhTHJkkoylKVMTJJRlJOCV0
+ kyScpdJNKUpKXSTSlKSl0kyeUkqSSlKUlKSSlNKSl0kkklKSTJJKXSTJJKXSTJJKXTJJJKUkmSSSySTJ
+ JKXSTJJKXTJJikVLykFFOFGQpmkUgE5CVJDApBIqKVLwkBTFRBTpUorFIBPCeEqWFSRKeFAo0sKiUpUC
+ kEqWpAnUQpJUkKSTJI0yhdJMkjSiukmSSpaukmSSpaV0kySVLF0kySNLgukmSSplC6SZJKkLpJJIIUkk
+ mSQpPKilKSmcpSoSlKSlymhJOihQCkFFPKKWaShKUpKZJk0ppSXMklFKUkrpkkklKSSSSUpJMkkhknlQ
+ lKUlM0lGU8pLVEJoUkkkMYSTlMUQpUpSmSRUvKUpkklMpSlRSQQvKUpkkGQLylKZJJK8pSmSQQV5SlMk
+ ktK8pSmTIMZZymJUZTSkgKJSCZIJMsWYUlEKSTKFiFGFMpoSXLQnTJJKK6dRSQYJMkkySIQukmSTlLpJ
+ kkVLpJkklLpJkklLpJkklLpJkklLpJkklLpJkkkrpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkk
+ lLpoSToKWhOkmKCWSShKeUlMklGUpSQzCdQBUgUlKIUSFMqBSQsnCZIFJDJMkkkpSdMkkpdMkmSUpJMl
+ KSmUp5Q5SlJKSUlCUpSSyTQknSUtCeE8JJJUApKKUpKXTFKU0pIUkklKKF0k0pIKZJKMp5SUumSlJJKy
+ SSSClQmTpJKUlCSSSloSATp0lMgnlQlNuSUyJUClKSSVoUgEydJTMKSHKeUVMimhKUklLQmKcqJKKlSm
+ lRJTSkpIkogp0kLpJkklLpJpSlJS6SaUpSUukmSSUukmSSUukmSSSumSTFJSlIKKcJKZhJNKRKSlFNCU
+ pBFSxCYhEhMQkpHCkEiFGUlJAU8ocpwUlMk6ZKUlMkxTSlKClimhOkkhZJJJJS6dRTpKUmhOkkpjCUKU
+ JklKTqKUpKZSlKjKUpKZhOEMFSlKlMklGUpSpS6UJSkkpaEykolJSk8qMppSUklJQlKUlLlNCdJJS0Jw
+ E8J0lLQlCdJJaWEJJymSQyBTyhynlKksiUyaUkKXMgpKAKeUaXLkKJCeUkKUxhKE6SVKUE6ZJKlLpk0p
+ JUtZJKKSVKZJKKdKkLpJkkqUukmTJUpkkopJUpkkopIUlkmTJIgKXTJJJ4UqEoTp4SUtCSdRJSUylKUO
+ U4KSkiaEgnSUtCSSZJS6ZJMkpeU6gnCSmSeEwSSUvCaEkklKSSSQQpJJJJSkkkklKSSSSUpJJJFSk6ZO
+ mlK8JoTpKOksYSTlMUqUuE6hKcFKlLlQKkVEoUpQUwhqYKVIZlQKeVElKlLJBJOEKUuE6ZJKlLpkkyNK
+ UkEk6VKXClKhKUo0pcqBCeUkqSxAUwEgE6NKXCUqJKjuRpKRNCiCpBKlLQnTpk0hapJMlKFIUkkmlKlL
+ pJpSlKlLpJpSlKlKSSSSpSk6ZKUqUukmSSpKkkySVIUnCZOjSmQSTSlKVKUVEpyUyVKWTpkkqUyCdRlK
+ UqUukmSSpTIJ1GUpSpS6SZJClLpJkkqUukmSRpS6SinSpK6SZJKlLpJkkaQukmSSpS6iQnSSpS0JwkmS
+ pTMJ5Q5TylSmRUCE8p4SpSOE4ClCUIUpQUlBPKVKZFQITyklSmICkEoSQpTMFMSoymlGksiopSmSpS6c
+ FRSSpTOUpUZSlKlLkqJKYlNKNKXShMpAJUpQCkAkAnSpS6SYpiUqUukoylKVKXSSSSpSkkkkqUpJJJKl
+ KSSSQpSkkkkqUpJJJKlKSSSSpSoTgJBOjSFBOmJUSUaUuVGE8pBKkrAKQCQCdKkrpFNKaUqSohNCUp0a
+ StCeEkikpdKVAlNKSkkpKAKkkhSdMkkhdJMkkhdJMkkpdJMkhSl0kySVJXSTJIUldJMkipdJMknLV0ky
+ SKl0kySSl0kySKl0kySSl0kySSlJ0ySSl0kyaUksklGUpSUyTFRlKUErpQmToKXSTSlKClJkpSSUuFIK
+ KcJql0xSTFJKydMnRQpOmTpIUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS6SSSSl1By
+ moOSU1rFXKsWKuUlM2K0xVWK0xJSYJJBJJSkydMkpSdMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KXSSSSUskkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSn//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkk
+ kpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSSlJ0ydJTFyr2Kw5V7ElNdydiZydiSmyxHCAxHCSlJJJJK
+ WSSSSUpJJJJSk6ZOkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpymTlJSGxVXq1Yqr
+ 0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKXSSSSUpJJJBSkkkkFKSSSQUpJJJFSkkkk4KU
+ kkknhSkkydOUuE6ZJBSxUCpFRKaVLJJ4TgKIqWhSATgKQCYpQCeUlElBSiVGUiUyVqZJJBPCeCpgSmlS
+ IUYTrUyBTqITpymSZJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSk6ZJJSkxSSSQtCkAmUgUVpXhMQnlMSkvixKinJTSkzhcKQCgCpgoLJMoTEJwUpSa5YkKMKZ
+ USgpYBSATJwUlwZQmITymSZAskkkkvUkkkksksnSTJMakkkkVwUkkkkuXTJJJJXSTJIpXCdNKUphK0sk
+ k0pSm8S1dRITpJ4KGBCZSKinWpQUgEwUghalwFJME6YZIWUSU5KgSoZSSukmlOm8aQpOkklxpUkmlKUu
+ NK6dRlPKljJSkoTpKQFS0JoUkydaFkycpkrQpOmSlMMkLp0ySAkhSSSSkBSpJJJFSkkkkFKSSSSQpJJJ
+ JaVJJJIWkKSSSQtmCkkk6VpKoSTpiULYypMlKUoWtXhPCYFPKVoVCYhPKUpWuiwITQppilbOCxhOAknS
+ tElwFKFEFSBQtgKoTEKSiSiCpZJMUlIuXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ0lLpJkpS
+ UumSlNKSl0kySSl0kySSl0kydJSk6ZJJS6SZJJSimSSTSpcBTAUAVIFJLKExSlRJSUopkxKUpIZAKUKI
+ KkCkpaExClKYoqRkJQpJIoUApQmClKSliFEqRKgUVKSTJ0VKSSSRUpJJJJSkkkkVKSSSSSpJJJJSkkkk
+ FLJJJKMqXTqKdC1KTFSTFG1MUkiklalwpBRCkErSumKeVElK1KJTSokpApWpmkmBSStSkkkyVqZJ1GU8
+ pWpdJKUkrQqE0J06VqYwknSStCySSZK1LpkpSlC0KTpkk4JXSTJJ6l0kyUoqXSTJJIXSTJ0FwUkkkgvU
+ kkkkhSSaUkEFkkmCkgxlYqJU1EhBaxKaFOEoSXhiAnClCZBlCk6ZJJepJJMkpSSSdBjkpJPCUIMSySdM
+ nJUkmSRtS6SZJK1LpJkkrUukmSSUukmSSUukmSlK0rpJpSlK1LpJkkrUukmSStS6ZJJK1KSSSStSkkkk
+ rUpJJJJS6SZOlalJJJJWpaFIBMpBNUzASISBTEpLgwKgVJxUCUV4XUgoAqQKSSkAUgFEFSBSYyohDcEQ
+ lQKKwoiE4CRSCK1mAnTAp5SSFimTlMiyhSSSSSlJJJJLVJJJIrSpJJJJYpJJJFcFJJJJMoUkklKaULpJ
+ kpUdoXSSlJK0LEKJUyolK1MU6ScI2pcJ0gnStCyYlIlRJStK8pSoSpBK1MkkkkrXLJ0kkrSpOmTo2pSS
+ SSVqWTJ0xStSyaUimStDKU4KhKcFK1qQFOoAp5StDJNCUpSnBSoShKUpRUpJKUpSUpJPKaUFKShKU8oL
+ wsklKUoWlUJJSlKVoKoShOmlC1pWIUVIlRJQtjKySScJWgLQpAJBSStlioBOmSlK2ULpk0pSlaVJJpSl
+ K0ldKE0pwULYZLpQknRtasmTpJwKlkkk6Klkk6SSlkk6SSlkkkkrUpJJJK1KSSSStSkkkkrUpJJJJKkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4TqKeUrUuVAlSJUCU20qlOFFSCVqXSSTFK0LhTCHKkClaGSY
+ pJilaFkyRTJWpkkmlJK0Lp0ySVqXTJJJWpZMnSStKyZOmStKlIJkkrUyCkFEJ5StLJJNKaUrSumlMSml
+ K1LykmSRtC6SZJK0LpJkpQtS6SaUpStTJJRlOlaV0kkkFKSSTJWpSdMlKVqZJFNKYlK1LEppTEppStTM
+ JwohTCSVJk6iSjalSkCokppStSUFSlCBUgUrUyJUSlKYlK1MSmTlKEbQuFJRCdJS6SZJG1LpJpSlK1Lp
+ JpSlK1LpJkklLpJkklKTpkkkrpJk4SUqE6SSSlJiUxKaUlLypBQlOCipIE6gCnlK1LFQKmSoFK1LKQUV
+ IJKZhMU6iSkpUp1GU4SUyShOEkUMYTKRUSipSSZKUlMwnUQVIJKWhMVJMUFMSopyooqXSSTgJKUknhMU
+ lKlPKhKUpKZynlQlOCkpkmKUpJKYlMpFRKSlJwopwkpmE6iCpBJS6SaUpSUukoylKVIXKiU6ZKkLJJJI
+ 0lSdIJJLlJSmJTSlSWcp0MFSBSpLJMnTFBCySRTI0pdJME6VIUknSQQpMnSSQsknSSUsknSSUsnSSSpK
+ ydJJKkqTJ0kqUsnhJOipSdMnQUoobkQqDklIynCYhOEVJApKAKlKClFJKUkkKhMQpJikpikE6ZJS4Tpk
+ klLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJpTSkpmCnUAVMFClyiolSKgSlSlpTgqMpwUqQyTQ
+ nCSVKWSTwklSlkydMlSFJwkklSl0kpTSlSlJJJJUpSdJJKlLFRJTkqBKNJZgqQQwVMFKlM0imlIlClMC
+ VCVIqKNJZAqYKGFMFKlMkxTSmJQpaV0k0pSlSl0k0pkqUukmlKUqUukmlKUqUukmlKUqUukmlKUqUukm
+ lOlSlJJJ0aUpJOmKFKUmlMSlKNKXSSCdKlLJJ0xSpSydNKUpUpkkmCdKlKTJ0yVKUkkklSlJJJJUpSSS
+ SVKUkkklSlJJJJUpSSZJGlLpJkkqUunUU8oUpdMUpTFKlKSBTJI0pkFMKAUgUCFLwmKlKiUKUxKZOVFG
+ lMgpBQBUgkQpeExUlEoUpikkkEaUpJOklSlkk6SVKUmTpJUpimUkyNKUFIBMpBClLhOmCdCkrFQKkVEo
+ gIWThRThGlMkk0pSlSl0kySVKXSTJJUpdJMkhSl0kySVKXSTJJUpdOop0qUyCeVGUiU0hSiVGUiVGUkM
+ wphQCmEErpinlRJRSsSoykSoykuZgqQQwVMIqZJilKYlJTEpk5SSUuFIKIUkkKSSSSWqSSSSUpJJJBSk
+ kkklKSSSSSpJJJBKkkkySl0kySba1dJMklal0kySVqXSTJSjal0kySVqUkkkjal0kySVqXTJJJWliUxK
+ mQokIWpjKcJQpAIWlQTpwE8IWpiolSIUSlalSkmThNtTJOmSStS6SZOhalkk6ScCpSSSSehSSSSSlJJJ
+ JKWSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklLpJJJKXUHKag5JTWsVcqxYq5SUzYrTFVYrTElJgkkEk
+ lKTJ0ySlJ0ydJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySSSSlJJJJKXThMnCSligWI5QL
+ ElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//R69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSZOmSUpJJJJS6SSSSlJJ
+ JJKUnTJ0lMXKvYrDlXsSU13J2JnJ2JKbLEcIDEcJKUkkkkpZJJJJSkkkklKTpk6SlJJJJKWSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUunKZOUlIbFVerViqvSUwCNWghGrSU2Wqag1TSUpJJJJSkkkklL
+ JJJJKUkkkkpdJJJJSkkkkqUpJJJNKlJJJIKUkkkipSSSScFKSSSTwpSSSSKlJJJIKWTKSZNKloThJIKI
+ qZBSUQUpTVLkqBKclRKFKWKQSThGlMwFOFAFTBTxFTEhRIRCVEp4iphCSkknUpilCkklSmMJQpJJKYwl
+ CkkkpjCUKSSSmMJQpJJKYwlCkkkpjCUKSSSmMJQpJJKYwlCkkkpjCUKSSSmMJQpJJKYwlCkkkpjCUKSS
+ SmMJQpJJUpilCkmSpDFOnUZRpFLymlKUkqXxCyZSShKmYLAJwnSQpjkvKSaUpSpgK6aE6dKk0whJSKZK
+ khUp00pwUqZApJOklS9aEoTpJUskxhJOklTGsknSSpcFkk6ZGlykkkpSpKkk6SVJWSSlKU0xWlSSZKU3
+ hWskkwKeU4RQsQmhSlJGlMQFIJJ5QpS6RTSmJQMVLFRTkpBRHGpQCmAkFMJntpDCExCKolL21yOE0IhT
+ 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
+ QpJJKYwlCkkkpjCUKSdJTCEoU0klLAJ4Tp0lMYTFSKYpKRlKFIpBFSgFIBOFIIEqYwokIqiUrUhIShTK
+ iipcJ0gnCSloShSSQUwhKFJJFTGEoUkklMYShSSSUxSTpJKWTQpJJWpikpJJWpikpJJWpikpJklLJQpJ
+ wlamMJoRISIStTCE4TpJKUkUpSQUxIUYU00I2piAphJOElLqJCkmQUwhOApQpAJWpjCaERMUrUwhKFJJ
+ JK0JQpJJWpgQowiFMUbQwThOkkpcJJAqQQSxIUSERKErUihKESE0I2hhCUKSSVpYwnhOnStTGEoUkklM
+ YShSSStTGEoUkkrUxhKFJJK1MYSUkkkMUxUimTSpiQkApQpAIIYgKYCcBOkliVAqZTIpRkJQiQnDUlyM
+ BShEhMkpgmhSKZJS0J4UgpQkpHCeFIpkkLQlCdJJC0JQnSSQtCUJ0klLQlCdJJS0JQnSQStCUJ0kkrQm
+ hSSSpTGEk6SbS1ZJOkhSlkk6SVKWhJOkjSlkk6SVKYwnTpI0pZMpJJUpaE4CSeUqSqExClKaUKUxhSAT
+ SpApUlcBIhOClKFKYEKJCmSmKFKRwnhShKEKUsmTlRKFKXlSChKcFClM0ySScApSSSSehSSSSSlJJJJK
+ WSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklLpJJJKXUHKag5JTWsVcqxYq5SUzYrTFVYrTElJgkkEklK
+ TJ0ySlJ0ydJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySSSSlJJJJKXThMnCSligWI5QLEl
+ NV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/0uvSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSS
+ lJ0ydJTFyr2Kw5V7ElNdydiZydiSmyxHCAxHCSlJJJJKWSSSSUpJJJJSk6ZOkpSSSSSlkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklLpymTlJSGxVXq1Yqr0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySS
+ SSlJJJJKXSSSRUpJJJFSkkkkwqUkkkgpSSSSKlJJJJKUkkknBSkkkycpSdMkgpdJJJNKlikkUyjKl5Tp
+ k4QUsmKnCiQkpiVHdCTjCA+yE4KT+pCb1lnvvhCOUpAp1fWT+qskZKmMhSAKdL1UvVWb66Xrp1KdL1Uv
+ VWb66XrpUp0vVS9VZvrpeulSnS9VL1Vm+ul66VKdL1UvVWb66XrpUp0vVS9VZvrpeulSnS9VL1Vm+ul6
+ 6VKdL1UvVWb66XrpUp0vVS9VZvrpeulSnS9VL1Vm+ul66VKdL1UvVWb66XrpUp0vVS9VZvrpeulSnS9V
+ L1Vm+ul66VKdL1UvVWb66XrpUp0vVS9VZvrpeulSnS9VL1Vm+un9dKlOibVE2qgb1E3o0p0PVTixZnrp
+ xkJUui6gsT7wswZKl9pSpmp0fUTGxZ5yVE5CFMcnQ9VL1Vm/aEhejTAXUFqf1Fmi9SF6FJdA2KJsVL11
+ E3pUlveqnFqzjem9dGl4dP1UvVWb66XroUvdL1UvVWb66b10qWSdL1UvVWb66XrpUxOl6qXqrN9dL10a
+ SHS9VL1Vm+ul66VL3S9VL1Vm+ul66VJdL1UvVWb66XrpUp0fVS9VZvrpeulSHR9VL1Vm+ul66VIdL1U/
+ rLM9dN66VIdX1UvVWWL1L10qU6XqpvWWb66Y3pcKnS9ZL1ll/aEvXSpTqeqnFizBepi9DhU6YtCmLQsr
+ 7RCb7Um8KQ6/qhMbQsn7Wl9qS4Vzq+qE3qrM+0pfaEeFLpeom9VZ3rpeujwqdD1UvVWd66b10uFTpeql
+ 6qzPXS9dKkOl6qXqrN9dL10aWun6qf1VmC9SF6FIdL1UvVWd66b10KU6PqpvVWcb03rpUp0vVS9VZn2h
+ P66VKdP1U3qrN9dL10lOl6qXqrN9dL10qQ6Xqpeqs3103rpUtdP1UvVWZ66f10qSHS9VP6qzPXS9dKmY
+ Ol6qf1Vmeum+0JUkup6qb1Qsz7Ql9oSpjLp+ol6qzfXT+ulS10vUTG1Z3rpeulSHQ9VIWrON6b7QlS6L
+ qC1P6oWUMlSGSlTYAdT1FA2rPOSoHJSpbIOl6qcWLKGSiMvlGmAuoHpeoqIuTG5Ckt71U3qrON6j9oSp
+ Lp+ql6qzftCX2hKlOl6qXqrN+0JfaEqU6Xqpeqs37Ql9oSpTpeql6qzftCX2hKlOl6qXqrN+0JfaEqU6
+ Xqpeqs37Ql9oSpTpeql6qzftCX2hKlOl6qXqrN+0JfaEqU6Xqpeqs37Ql9oSpTpeql6qzftCX2hKlOl6
+ qXqrN+0JeulSnS9VP6qzPXS9dKlOn6qXqrM9dP66VKdL1UvVWb66XroUp1Bal6izRepeugQkN82JjYqB
+ vUTegl0RYpCwLL+0KQyUkOoHhI2BZv2lMclJToGxQNqzzkqByEkOl6qkLVlfaFIXpKdYWp/VWWL1L7Qk
+ p0Taom1UDeoG9FToeql6qzTel66SnS9VL1Vm+ul66SnS9VL1Vm+ul66SnS9VL1Vm+ul66SnS9VL1Vm+u
+ l66SnS9VP6qzPXS9dJTp+ql6qzPXS9dJLp+ql6qzfXS9dFTo+ql6oWb66Xro0h0vVS9VZvrpeujSnT9Z
+ P6qyvtCf7QhSXT9VL1VmfaEvXSpTpeqmNqzTemN6NKdL1U3qrO9dOLkqU6HqKQsWf6yXrwlSnTFoUvVC
+ yftSb7Wm0p1/VCXqhZIylIZKVKdP1Al6izftKX2hGlOj6qb1Vn+uom9KlOl6qb1lmm9R+0JUh1PWS9ZZ
+ f2hL7QjSHU9VL1Vmeun9dKlOl6oS9VZvrp/XSpTo+ql6qzvXS9dKlOl6qXqrN9dL10qU6Xqpeqs310vX
+ SpTpeql6qzfXS9dKlOl6qXqrN9dL10qXB0vVS9VZvrpeulS90vVS9VZvrpeulSnS9VL1Vm+ul66VLS6J
+ tTG1Z/rpvXRpjLfNqXqrP9ZN6yNLHSFqmLVmC9SF6FLw6PqpjYqPrJeslTMG56icWKgbkvXSpeHRD1IP
+ WcMhTGQhSm8XqBsVI5CE7JSphk6BtS9VZv2hOL06mN0hapC1ZnrpeumkJdP1Ql6oWZ9oS+0JtKdP1UvV
+ WZ9oS+0I0p0/VS9VZn2hL7QlSnT9VL1Qsz7Ql9oSpLp+qEvVCzPtCX2hKlOn6qXqrM+0JfaEqU6fqpeq
+ sz7Ql9oSpTp+ql6qzPtCXrpUp0/VS9VZnrpeulSnT9VL1VmfaEvtCVKdP1UvVWZ9oS+0JUp0/VS9VZn2
+ hL7QlSnT9VL1VmfaE/2hKlOn6qXqrM+0JfaEKU6fqhL1Vmeul66NKdL1UxtWd66Y3o0l0fVSFqzfXSGQ
+ jSQ6gsUt4WYMlP8AaUOFkDpbwmNgWacpMclLhUXRNqibVnnIUTejTGXS9VOLVl+upC9KlhdP1E/qLOF6
+ l6yVIb3qJvUVE3KPrJUkOj6qXqrO9dN66VMgdL1UvVWb66XrpUp0vVS9VZvrpeulSHS9VL1Vm+ul66VL
+ C6Xqpeqs310vXSpa6Xqpeqs310vXSpcHS9VL1Vm+ul66VMjpeql6qzfXS9dClOj6qXqrO9dL10qWul6q
+ cWrM9dL10KQ6nqpeqFl/aE/2hKlOn6oS9VZvrpvXSpTpeqm9VZpvTeulSHS9VL1FnC9SFyNJdEWBSFoW
+ Z68JjkwhSXW9UJjaFk/a0vtSFJdX1Qm9VZgyU/2hGkul6qb1Vn+um9dKkuh6qXqrON6b10aU6Xqpeqsz
+ 10vXQpDqeqn9VZgvTi9KkOl6iXqLO9dL10qWuh6qXqrNN6b7QlSnS9VP6qzPXUhejSnR9QJeoFneul66
+ VKdH1EvUWd66XrpUh0fUS9RZ3rpeulSnR9RL1Fneul66FLw6PqJeos710vXSpLo+ol6izvXS9dJBdH1E
+ vUWd66f10qWl0fUS9QLPF6XrpUxl0PUSFqzjem+0JUgOoLQl6qzPtCf7QhTLF0DaomxUDeom9GmUOh6i
+ cWBZn2hOMlGl7qh4T7ws0ZCc5KFIIdH1Am9QLMOSm+0pcLCXV9RN6qzRkp/XSpa6BtTeqs43qPrpUp0v
+ VT+qsz10vXSpTp+ql6qzPXS9dKlOn6qXqrM9dL10qU6fqpeqs310vXSpTpeql6qzfXS9dKlOl6qXqrN9
+ dL10qU6Xqpeqs3103rpUp0/VS9VZnrpeulSXT9VL1Vmeul66VKdP1UvVWb66XrpKdL1UvVWb66b10qU6
+ fqpeqsz10vXSpTp+ql6qzPXS9dKlOn6qb1Vm+ul66VKdP1UvVWb66XrpUl0vVT+os0Xp/XSpLpeqE/qh
+ ZZyVA5aFKdf1gl6oWOMtEbkylSHU9RR9VZ/rpjelSHR9UJ/VCzPXS9dGlOl6qY2hZ3rpjkJUh0fVCXqr
+ M+0JfaEqU6nqpeqswZCf10qU6XqpvVWd66ib0qU6Xqpeqsz10vtCNKdT1U/qrK+0J/tCFJdT1U3qrN+0
+ JeulSnRNqb1Vneum9dGlOl6qcWrM9dL7QlS51RapeqFkjJT/AGpClOqbQmNoWX9pS+0pUgun6oT+qsv7
+ QpC9KkOl6qXqrO9dL10qU6HqhL1Qs710xvSpTo+qn9VZnrpfaEqU6fqp/VCzPtCXrpUp0/VS9VZvrpvX
+ QpTpeqm9VZvrpvXRpTp+ql6qzPXTi9KlOn6icWhZovT+uhSnS9VL1VmfaEvtCVJdP1UvUWb66XrpUp0v
+ UCXqBZv2hMclKlOl6oTG0LMOUm+0o0p0/VCQtWZ9oT+ujSnUFoT+qFlfaE/2hClOn6qXqrM+0J/XSpDp
+ eqEvVWb66XrpUp0fVS9VZvrpeulSnS9VL1Vm+ul66VKdP1UvVWZ66XrpUp0/VS9VZnrp/XSpTo+qn9UL
+ M9dP66VJdL1U3qrN9dMchKlOmblE2rNOQm9dGlOl6qmLFli9SGQlSnUFgSNgWZ9pTfaUKU6JtUDaqByF
+ E3o0p0RapC1ZYvUxejSnT9VMbVneuoG9Ckul6yQtWX9oUhejSHUFqkLVmC9S9dNIU6Xqpeqsz7Ql9oTU
+ OkbU3qhZv2hL10lOibU3qrO9dMb0lOl6qXrLMN6b7Qkp1PWT+qsr7QnGQkp1PVT+qswXp/XSU6YtCkLQ
+ sv7Qm+0pKdb1gl6oWR9qT/a0FOt6gUTYFmjJT/aEVN42BR9VUjehm9JTpC1EFqyRepjISU63qpjas0ZC
+ RyEFN82qBtCoHIUDkIqdIWqQtWUMhSGQkp1PVTG1Zvrpeukp0PVS9VZ/rpC9BDpi1S9VZgvT+ukp0Tao
+ m1Z5vUTekl0vVS9VZf2hOL0kun6ib1FQF6RvSXN/1E4tCzHZEKH2pJTsC0JzaFkDKUvtKCnSNoUDas85
+ Cj66KnTFqkLVli9P66C10/VS9VZvrpvXSQ6fqpeqsz10vXSU6fqpeqsz10vXSQ6fqpeqsz10/rpJdL1U
+ vVWb66XrpKdL1UvVWb66XrpJdL1U4tWZ66cXpKdT1UxtWb66RvQU6BtTeqs43qPrpKdUWojbQscZKmMp
+ JTseqFB1oWZ9rTHKQU3nWqPqrPORKb10VOkLVIWrMF6f10FOn6qXrLM+0JjkJKdP1gl6qy/tCQyElOp6
+ oT+qswXpeukp0/VS9VZnrpfaElOn6qXqrM9dL10lOn6qXqrM9dL10kOn6qXqrM+0JfaElOn6qXqrM+0J
+ eukp0vVS9VZvrpeukp0xapCwLLGQpDIRCQ6fqBI2hZhyVA5SeudQ2hRNoWX9qTjISU6XqJeos/10vXRQ
+ 6ItT+qsz10vXSU6nqqJtWb66b10qU6Xqpeqs310vXRQ6fqpeqs310vXSU6BtTess43qByElOsLgpC0LI
+ GQpjIQU6vqhRNoWachROQlSnU9VP6gWWMhTF6SXR9RN6qz/XTG9JTo+qnFoWZ66cZCVJdUWhS9QLKGSl
+ 9qQpTpm0IZtCzzlKByUQp0vVSFqzfXTi9Fa6XqpeqFm+ul66CnS9UJeqFm+ul66SnS9UJeqFm+ul66Sn
+ S9UJeqFm+ul66SnS9UJeqFm+ul66SnS9UJeqFm+un9dJTo+qn9ULN9dL10lOl6qXqrM9dL7QlSnS9VN6
+ qzftCf10VOj6icWLO9dL10lOkLQpeqFlHJTfakKU63rBRNoWV9qS+1JUp0zam9QLO+0JvXRU6Xqpxasz
+ 10vXSU6nqpeqsz10/rpUp0vVS9ULN9dL10FOl6oS9ULN9dL10lOl6oS9ULN9dL10lOj6oS9ULN9dL10V
+ Ol6oS9ULN9dL10lOl6oS9ULN9dP66SnR9UJeqFneul66SnR9VL1Vneul66SnR9VOLQs310xyYSU6vqhM
+ bQsn7Ul9qQpTqm0JvVWZ9pS+0IqdP1U/qrM9dP66SnS9RL1Fneul66CnQ9VL1VnG9N66KnT9VL1Qsz10
+ 4vQU6YsUhYs0Xp/XSQ6Pqpjas45CgchKlOl6qXrLLOQl9oRU6vrJeqsr7Qn+0JUp0zaExtWb9oTeulSn
+ S9VL1Vmeul66KnUFqkLQsoXp/tCFKdYWhL1Qsr7Sl9qQpTqG0JvVCzPtSX2hGlOl6oS9ULN9dL10qU6X
+ qhL1Qs310vXSpTpeqEvVCzfXS9dKlOl6oS9ULN9dP66SnR9UJeqFneul66SnR9UJeqFm+ul66SnT9VN6
+ oWd66b10FOibU3qrO9dL10EOmLApCwLMF6l66CnR9UJjas45CichJLpeqnFqy/XUheil1BYFL1AssZCc
+ 5KC50zaFA2hZhy0M5aKnUNoTC1ZX2pIZKSnXFoU/VCyBkKYyElOmbVH1VnfaE3rpIdL1UvVWb66XrpId
+ L1Ql6qzfXS9dJDpeql6qzfXS9dJTpeqEvVCzfXS9dJTpeql6qzfXS9dBLpeql6oWb66XrpJdL1Ql6qzf
+ XS9dJTpeqm9VZvrpeugtdL1U/qrM9dL10lOn6oS9ULM9dL10VOl6qXqrN9dL10VOl6qXqrN9dL10lOl6
+ qXqrN9dL10lOl6qf1Vmeul66SnS9VL1Vm+um9dJLp+ql6qzPXUhegp0fVS9VZ/rpjkIJdL1U4tWV9pU2
+ 5CSnUD5UwVnsulWWPlBTYSTAqSCmBUSplQKClk4TKQSUuE6YJ0lKSSSRQpJJJJSkkkklLJJJJKUkkkkp
+ SSSSSlJJJJKUnTJ0lKTJ0ySl0kkklLqDlNQckprWKuVYsVcpKZsVpiqsVpiSkwSSCSSlJk6ZJSk6ZOkp
+ ZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKb
+ NasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUmTpklKSSSSUukkkkpSSSSSlJ0ydJTFyr2K
+ w5V7ElNdydiZydiSmyxHCAxHCSlJJJJKWSSSSUpJJJJSk6ZOkpSSSSSlkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklLpymTlJSGxVXq1Yqr0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKXSSS
+ TgpSSSSNKUkkkmkKUkkkmKUkkkkpSSSSFqUkkkngqUmTpkbUpMnTIWpcJ0gnQtSyaFJMmFSgFIBMpBJS
+ oUHIiG9OAU17TCz77IVy8rJynwpBFTWuyIVU5KBkW6qp6hJUogp1WXyjttlZlJJWhWwlP4aUm9RLeUhW
+ U/pphNKW3lLeU/plL0yhalt6W9P6ZS9Mo2pbelvT+mUvTKVqW3pb0/plL0ylalt6W9P6ZS9MpWpbelvT
+ +mUvTKVqW3pb0/plL0ylalt6W9P6ZS9MpWpbelvT+mUvTKVqW3pb0/plL0ylalt6W9P6ZS9MpWpbelvT
+ +mUvTKVqW3pb0/plL0ylalt6W9P6ZS9NC1Lbypb03plP6ZRtSjYoGxSLChuYUbTTE2qBvhQsEKq90JWy
+ RDc+0pfalluthD9dK2cB2ftKkL5WQy6VZreSlbFMOgLZUxYq1YJVhrChbWISB6l6iiKylsKVqpl6iY2J
+ tqWwoWlW9NvT7Cl6ZRteFt5S3lP6aXppWuW3pt5UvTS9NK1kmO8pbypeml6aVsTHeUt6l6aXpo2kFjvS
+ 3lS9NL00rXWx3pb1L00vTStVrb0t5T+mUvTRtVsd5Tb1I1ptiFpW3lPuKcVqQqStSMuKjvKKalE1FC0M
+ Q8qW8pCsqQqKHEpgXlRLyimtQNaPEphvKcPKf004rTgULhxTl8KQrUHshOASjfdCC7JhQuMKhZZCPClv
+ /alMZKx/VRGWpcKXXGQiC5ZjHyrDDKXClvC1S3oDBKKGJp0Uy3lRLypitL00y1I95S3lT9JN6aHEhjvK
+ feU/pp/TQ4kLB5Th6Xpp9iNoVvTF6fYm2JWhYvUd5Utib00rStvKW8p/TS9NC1LbylvKf00vTRtS28pb
+ yn9NL00kLbylvKf00vTKK0rbylvKf00vTSSFt5S3lP6af00mYMd5TF5UvTTGsopLH1Cl6hSNZS9MosZX
+ FhT+omFZS2FJav6hT+oo7Cn2FKlqjYhutUnMKr2AhGmSLM3pDIVN5IQy8pU2A6ByUN2SqJsQnWlLhWyd
+ JuQrVV0rEZZqtCh0pU1y6zbEnPQ6xIUyxAhSJzyobypurUfTTFyt5S3lL0yl6ZSUreUt5S9MpemUlK3l
+ LeUvTKXplJSt5S3lL0yl6ZSUreUt5S9MpemUlK3lLeUvTKXplJSt5S3pemUvTKSlb0t6XplL0ykpW9Le
+ l6ZS9MpKVvS3pemUvTKSlb0t5S9Mp/TKSlt6fel6ZS9MpKVvKW8p/TKXplJS28p95S9Mp/TKSFB5UvUU
+ diYsTgLXBc2oZtSc1AfojwJSG+FE5MKpY6FWfbCXAh0/tSb7Usc3p23Shwqdj7RKcXSs1j5VpklLhU2h
+ YpiwobGEogrKXChkLE/qqOwptpS4VM/VTGxR2lLYUOFS+9LeUtif00qUtvKW9S9NN6ZSpS29Len9NL00
+ qUtvS3p/TKXpoUpbeUt5T+ml6aVJW3lLeU/ppemlSlt5S3p/TS9NClLb0t5T+mkWI0pbeUt5S2JwxOCF
+ bymLypitMa0VIy9L1CnNajsSUyDyn3lMK1L00lMd5Tbypeml6aSVg8qYcUhWiCtJTAvQn2wjOZCpX6IK
+ YvyIQ/tSpXWQqxuSU7LclEbkLGZarLHpKdQXogtVBjpVhmqSmz6ibeVENUwxFDAvKYvKma0xrSUw3lLe
+ VL0yl6aSFB5Th5TitP6aSlt5S3lS9NL00kMd6W8p9iWxDZS28pb0vTS9MpvEpW9Lel6aXppcSlb0vUKX
+ ppemlxKVvKW8peml6ZR4lwV6hS9Qpeml6ZS4l6vUKXqFL0yl6aNqVvKW8peml6aVrVb0vUS2FMWFK1hV
+ 6ib1ExYU2wo2sZCxSFiHsKcMKVrwmFif1FAMKctKVsoWdbCCb4TWAhUrHkJMgboyVL7Usk2kJvXKSXVd
+ lIRylmOvKiLSUmGbqtyJRm2ysupxKvVAlJhbXqJi8pBhT+mgVy28pbyn9MpemmqW3pb0vTS9NJSt6W9L
+ 00vTSUr1ClvKXpp/TKSlt5S3lP6ZS9MpKW3lLeUvTKXplJSt5S3lL0yl6ZSUrelvS9NL00lK3pb0vTS9
+ NJKt5S9QpemUvTKSleoUvUKXplL00lK3pbyn9MpemkpbeU+8pemU/plJS28pbyn9NL00lLbylvKf0yn9
+ MpBTHeUxsUjWVAsKkCmJtUTdCi9pCrvMJLg2TkwonKWe+yFXffCS8Ot9rTjJlYovR67ZSSXXF0qfqKlU
+ SVaYwlJjLPepB5TCspxWULWFmLFL1FDYnDErWst6YvS2FLYhaQxL028qfppvTStlC29Len9NL00rUtvK
+ W8p/TS9NDiWrbylvKf00vTQ4lpW3lLeU/ppemUuJYtvKW8p/TS9MpcS4LbylvKf00vTKXEyrb029S9NN
+ sStC29PvSDFIVpyGO9MXlENaga0EMfUKcPKbYnFaSl95SLyn9NL00VMd5S3lP6ZTiooIUHFS3JxUnNaK
+ UL7IVd+RCJcIWZe+ElBsnKTjKWQ65Oy5Jc7bchEF6ymWyrNb5SS6AtUt6rM1R2tSUy3pi8qWxI1pKR7y
+ lvKka03pooUHlOHphWU4YkpfelvS2JFiS1iXlN6hTlhUSwpIXFhUhYoBhUgwoFTL1EvUUdhS2FC1MvUS
+ 9RR2FLYUrUy9RL1E2wpbClal/US9RR2FLYUF4Zeol6ijsKWwpJZeom9RNsKWwpIK/qJ/UUdhT7CitLL1
+ EvUTbCkWFJjKxsTeqUiwqGwooDP1SnFiHsKkGFGmWLP1FB1ilsKE9pCVMoYuuhR+0IFpIVYvhGmQOmMl
+ I5KyxamNpRpRdE5SYZKyzaUSt5KVNeTrMulGFio1SVbYwpELWZem3lS9NN6ajKlt5S3lP6ZS9MoKW3lL
+ eU/plL0ykpbeUt5T+mUvTKSlt5S3lP6ZS9MpKW3lLeU/plL0ykpbeUt5T+mUvTKSlt5S3lP6ZS9NJS28
+ pbyn9NL00lLbylvKf00vTSUtvKW8p/TKXplJS28pbyn9MpemUlLbylvKf0yl6ZSStvKW8p/TKXplJTHe
+ Ut5UvTKXplJS28pb0/ppemikK3lI2JFiG5qK5i+6FWfkwldoqFrykputyVZrvlYzHmVfoJKSKdNtkpF5
+ UK2yFMsSRTHeU4eU2xOK0kUovKiXqRYolhSUx3pbylsSFZSQuHqW9MKyn2FJKt5TF5UvTTemkpgXlNvK
+ maymNaSmO8p95S9Mpemkqlw8p95SFakK0krbimLyiekomtJNIi9QNsKb2KvYISSyN8JvtKp2OhB9RJTp
+ jIlEFsrNrdKuVglJaWyLCpCxRawqQYUVrIPS3lIMT7EFLF5US8qRYmNaSmO8pbyn2JthSSvvKW8pbCn9
+ NBSt5S3lP6aXppKY7ym3lS9NN6aSlt5T70/plP6aSlbym9Qp9ibYkpb1CkHlLYU4rSSuHpGxP6ag9sJK
+ YuuhCdkIdphUrHwipunJTi+VmeojVOlJTpNtlED1XqBKsisoqYl5S9QqRrKj6ZSQuLCpbyohhUtiapW8
+ peoUtiWxJSvUKXqFLYlsRUr1Cl6hS2JbElK9QpeoUtiWxJSvUKW8pbEtiSleoUt5S2JbEkrbymLyn2JG
+ spKY7ylvKl6ZT+mUlMDZCg6+FJ7IVK50JKTnJTjIlZbrdVNlkpKdUXSn9RVazKsNbKSmYeph5URWpitF
+ SxeVAvKIa1A1pKR7ypteU3pqYrSUyD0+8pBiWxAqYl5TeoU5YolibSFeoU4eUwYpBiVKVvKReVIVpGtK
+ lIy8qBeUU1qBrSpTHeVIPKj6amK0qUuHlPvKcVpFiVKYGxDdcpPYq9gISpS5yIUftKqWEhB3lKlOszIl
+ HbbKyanyr9OqVKbW9RLypBkpGtKlI95TiwpzWU3plKlMhYU/qFRDCn2FKlMTYVAvKmayomspUpYPKmHl
+ RFZUxWUqUr1ClvKf002xKlK3pw9IMUgxKkKD0+8pbE/poUpgXlQLyiGtRNaVJYbynDyn9IpxWlS5kHlJ
+ z1IVodjYCVJQWXQqzshK8ws979UqU6LclGbfKyGPVyoylSm+LZUg8oTGyjtrSpS28pbyp+kmNaVIY7yl
+ vKf00vTKVLVt5S3lP6ZT+mUqUx3lLeVL0yl6ZSpTHeUt5T+ml6ZQpS28pbyn9Mp/TKVJY7ylvKf0yl6Z
+ SpK28pw8pemU/ppUpW8p96bYpemncKmBeVEvRDWhvYlwqRm2FA5EKNghUrXwlwKb32pSGRKyPVR6nylw
+ KdQWyph5VekSrba0uFTHeU28qZrUTWlwqYl5TbypGspvTKHChbeUg8p/TKf00eFSt5S3lP6aXppcKlt5
+ S3lP6aXpocKlt5S3lP6ZS9MpcKlt5S3lP6ZS9MpcKlt5S3lP6ZS9MpcKlt5S3lP6ZS9MpcKFt5S3lSFa
+ XplLhUx9RMboScyFWsMJcKQldkIRyVUsfCAbElzpC+UdlsrLrdKvUiUlNwPTlxTMZKJ6aSkReU28ohrU
+ TWihjvKbeVL00vTSUx3lLeVL003poqVvS3pbE+xJCMvKgXlFNaga0lMQ8ogsKiKipispKWNhUTYVM1qJ
+ rKSlB5RA9QFamGJJXL1EvKkWKJYkpbeUxshPsQ3thJKzr4UDkqta6FUdakp0xkyiC6VlV2SrtWqCm2LF
+ IPUGsRBWkhW8peoU/ppvTSQtvKW8p/TKXplJS28pbyn9MpemUlLbylvT+mUvTKSlt6W8p/TS9NJSt5S3
+ lL00/ppKW3lLeU/ppGtJTHeU3qFS9NN6aKlbypB5TCsqYrSUrcVB1kIprQbGwkpE+6EF2QoWmFTe9JTd
+ +0qbb5WWHlWK3Skp0m2yiB5VWoSrTWJKVvKbeVL00vTSUtvKfeU/ppemkpbeUt5T+ml6aapbeUt5T+ml
+ 6aSlt5S3lP6aXplJS28pbyn9NL00VLbylvKf00vTSUtvKW8p/TS9NFS28pbyn9NL0ykpbeU+8pxWn9NJ
+ SN1iA+6EaxsKhcYSUzOSkMhZz36p2PlJTqtulFFio1aq4xsoKSh5T7ykK0+xJSt5T7ym2JwxJSxeVEvK
+ nsUTWgpjvKkHlN6akK0lMg9L1ClsTFiSFjYomxOWJixFTEvTb1L003plJS28p95S9MpemUlK9Qpbyn9N
+ P6aKlt5S3lTFRSNRSUw3lRNsKTq0CwQkpd18IZyVVtdCqm1JTqtyJR2Wysip8rQpEpKbYeU+8pNrKc1l
+ JTHeUvUKXplL0ykpXqFL1Cl6ZS9MpKV6hS3lL0ylsKSlbylvKWwpbCgpW8pbyl6ZS9MpKVvKbeU/plL0
+ ykpbeUg8p/TSFaVKXD1LeUwYn2FLhQxLyobyplij6ZSpKt5T+on9MqLmQjSVG6EJ2RCHZoqVtkJcKW07
+ KQ/tSzX3KLbZR4Uus2+UZtpWbUZV6tspcKmyLCpCwqDaypispUplvKW8pCtP6aVIW3lLeU/ppemlSFt5
+ S3lP6aXpoUhbeUt6f00vTSpS29LeU/ppemlSlt6W9P6aXppUlbelvT+ml6aFJW3pb0/ppemlSlt6beVL
+ 00vTSpax3lLeVL00vTSpTHeUt5UvTS9NLhUx3lLeVL00vTR4VMd5S3lS9NL00eFTHeUt5UvTS9NLhUx3
+ lPvT+ml6aXCpjvKYvKka1E1lDhSsLFMWKGwqQYUuFTI2ILroUnthVLTCHClKchTZkLMc9Srs1Q4VO9Td
+ K0KXysHHetbHchwqdRhRVXrKOECFKKinKSFKWhOAknS4UqSSSQpCkkkkEKSSSSUpJJJJSySSSSlJJJJK
+ UkkkkpSSSSSlJ0ydJSkydMkpdJJJJS6g5TUHJKa1irlWLFXKSmbFaYqrFaYkpMEkgkkpSZOmSUpOmTpK
+ WSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSm
+ zWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6ZJSkkkklLpkkklKSSSSUpJ
+ JJJSkkkklKSSSSUumSSSUpJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSSSSUpJJOkpZJJPCSl
+ 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
+ WLiDVdNgsmElNhlGic460a6tFJ1QTbU5PoJegtL0gl6ScpzfQS9BaXpJekkpzfQS9BaXpJekgpzfQS9B
+ aXpJekkpzfQS9BaXpJemElOb6CXoLS9JL0klOb6CXoLR9JL0kQVOeKEvQWh6aXpo2hz/AEEhjrR9IJxU
+ ErXOd9nQbKYWyagq11eiQKXnshkLHydF0GWyFg5YTkuY92qlUZKG/lFoGqcp0sZsrYoplZ+Gxb2NXokp
+ iyhEFCvMqCJ6QTCVOf6CXoLR9IJemhxIc70EvQWh6aXpI2hz/QS9BaPpJekhaHO9BL0Fo+kl6SVqc70E
+ vQWj6SXpJWpzvQS9BaPpJeklaXO9BL0Fo+kl6SVpc70EvQWj6SXpJWpzvQS9BaPpJekla1zvQS9BaPpp
+ emErU53oJegtH00vTStTnegl6C0fTTemlanP9BL0Foekl6SNpc/0EvQWh6SXpJWpz/QS9BaHpJeklanO
+ NCiaFp+kmNQStLmfZ1L0FoioKXpJWpxraYCzMhkLo7qtFj5bIRtTh2CCosOqLeIKCzlK1OljFbOMsXGK
+ 2sVNtTp1DRWAEGrhHTSUsSkkSmlBSkk6UJKWSTwlCBQpJJJMQpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJ
+ JJKUnTJ0lKTJ0ySl0kydJS6g5TUHJKa1irlWLFXKSmbFaYqrFarSUmCSQSSUpMnTJKUnTJ0lLJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklLJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1q
+ w1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJAqUkkkm2lSSSSVqUkkkjalJJJIqUkkknIUkkkkpSSSSSl0kgnSUsVEqRUCkpUpApk4QUyClCiFJB
+ SioFTKgUlKThMnCKlJiU5USkpUqQUQpBFS6ZOmKdSlJ1GUpRpS5TJSlCaVLSlKeEoTVKlKUyUpKXlJNK
+ QSUyCdME6cFKTJ0yNKUnTJSgpdOmlKU0qZQlCUpSmEqWKiVIqJQtTElNKchNCNqUCpBMApAIgqXCdIJK
+ QKWUSpFRKNKWlIFMnATCpkFJRAUkFLJkiVGUVMkk0p0VLJiU8JiEVKlOCoqQSUyCdIJFKlLFKUxKaUlK
+ KBYjFAegpA5OxMU7EFNliOEBiOElLpk6ZJSkydMklSSSSKlJJJJKXSSTJKUkkkghSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpdOUycpKQ2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSSSSUpJJJJS6
+ SSSKlJJJI2pSSSSClJJJJUpSSSSFIUkkklSlJJJIKUkkmQUpOEycIKZBOmCRKSlioykSoyklmFIBQBRA
+ ipRQnopQnpwU0rwsXMC27ljZgTwUuDedU1B1T5A1UaBqn8SnosDsujxxouc6f2XSY/CBKU6GUVQITAhg
+ kpQlCKGKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKSlC
+ UJKYpKUJQkpikpQlCSGKSlCUJKWTpQlCSlig2BGIQrBoiFW5eSFgZnddDlDRc/mDlOZIlwsg6qpOqt5A
+ 1VUN1QZwW3jcrdw1i4zdVu4bUlpdzG4WnWVm4w0WlWEGMhKmKcBPCDGURCSmQoEIrLVKdNCkAkuBUknA
+ TwgvDFJShKEksYShShKErRQYwlClCUJWghimU4TQha2mKSlCaErUsknhKErUtCeE4ClCVqYQlKkQhlJS
+ 5coymhKElwZAqYKgApAIrqZJk4CeElpDApgpEJgEUMoVbIGitgKveNEAVPOZ45XN5XK6fPHK5vKbqniS
+ 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
+ hikpQlCSmKSlCUJKYpKUJQkpinTwlCFqWSTwlCVqYpQpQmhFLFJPCUJKpSkE0KQCRUuVWv4VohVb+EIq
+ cTM7rnstdFmBc9lhSBTkv5RqBqoPGqNQNUbU7WEF0GMNFg4QW/jDRK1N5iIoMCmAmFS6ZShKEFMUlKEo
+ SUslCeE8JWhjCUKUJQlamKSlCUIWpikpQlCVqYpKUJQharYpKUJQlarYpJ4ShFDFJShKEVMUlKEoSUxS
+ UoShJTFJShKElMUlKEoSUxhJShKEksVEohCiQlalgiAKDQiAIEqa140WHmhb1/Cws1K1ODkHVVmnVWMn
+ lVmjVDiU6OMVuYqw8ULdxBwhxKdarhFKhUNEUhC1IiUwKTgooWpIFMBCBRA5LiUzhRIT7kxKVqYlMnKZ
+ FS6SZOkpSSSSSlkkkklKSSSSUpJJJJSkkkklKTpkklLpkkklKSSSSUuouUlFySmtYq5R7FXKSkjFarVR
+ it1pKTBJIJJKUmTpJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJOkpZJOkkpSZOmSUpJJJJSkkkklLpwm
+ ThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9br0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJAqUkkkmUlSSSSNKUkkkjSlJJJJylJ0ySKFJJJIqUkkkg
+ pSUpJpSUuSolJPCCloTgJwE8IKUlKSZJSpShJOElLQnTpiipZJOkkpaEk6ZFS6YppSTrUsSmlOVFG1Mg
+ pAKIUgmEqZQmISlMSmqWKiVJKErUxhSAUg1PtRUxCdIqJKeFMpTFNKSKl0ydNCClSlKZMmlTMFPKgnUZ
+ Cl5STSnBTaUvCW1OFOEVI4ShTKiiFKSTJKUKWKZShNCcVLQnASTgqIqXhMU6YpKYFRUyE0IqUFIJAKQC
+ KloTEKSiSipaE6iSkCipmEiVEFOkpiUlKEoQUxKC9GIQXoKa7k7Ezk7EFNliOEBiOEFLpk6ZJSkydMkl
+ SSSScpSSSSSl0ydMkpSSSSCFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq
+ 0EI1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkkkklLpJJJKUkkkipSSSSSlJJJJKUkkkkhSSSSSlJJJJpUp
+ MnSQUsnSSQUvKYlJRKCmJKipFMAipkEUKDQiAIpUUF6OQgPTgpp3FZGWtW8rHyynBLjXjVQp0KledUKt
+ 0FOS9DgviF0OPaIXJYtsLYpyYCNKd/1QomwLJ+1qJzEuFDseoE3qBY/2xL7Ylwodj1Al6gWP9sS+2JcK
+ nY9QJeoFj/bEvtiXCp2PUCXqBY/2xL7Ylwqdj1Al6gWP9sS+2JcKnY9QJeoFj/bPNL7Z5pcKnY9QJeoF
+ j/bPNL7Z5pcKnY9QJeoFj/bPNL7Z5pcKnY9QJeoFj/bPNL7Z5pcKnY9QJeoFj/bEvtiXCh2PUCXqBY/2
+ xL7Ylwqdj1Al6gWP9sS+2JcKnY9QJeoFj/bEvtiXCp2PUCXqBY/2xL7Z5pcKnY9QJGwLH+2JjmJcKnWN
+ gQrLAsw5ig/LTuFCXJeFhZZGquX5ErIybZR4Svi0L+VWA1RLXygB2qXC2A6OOtvEIXP0PhauNdCXCgvT
+ Y7wtBjwuepyYVxmWhwrC7QsCl6gWQMtP9rTeBik6heFAvCzDlqJy0eFjdT1AnFgWR9rS+2JcK4OyLAn9
+ QLG+2JfbEuBkDs+oEvUCxvtif7Z5pcBS7HqBLeFj/bEvtiHAUux6gS9QLH+2J/tiXAVpdf1Al6gWP9sS
+ +2JcC12PUCb1Asj7Yl9sS4FOv6gS9QLI+2JfbEOAqdf1An9ULH+2Jfa0uBDrG0KBsCyzlpvtaPCh1Q8J
+ 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
+ EvtiHAp1/UCY2BZP2tN9rR4Uur6gS9QLJ+1pvtaPCl2BYFIWBY4y1IZaHCh2DYFUvsEKmctVrspERUjy
+ 3jVYOU5XcnIlY+RbKdSEDjqj0HVUXP1RarNUqU9HiOC3MawQuVxroWvRkwlSnomWBEFgWKzLRBlppip2
+ PUCXqBZH2xL7Yhwqdf1Al6gWR9sS+2JcKnY9QJeoFj/bEvtiXCp2PUCXqBY/2xL7Ylwqdj1Al6gWP9sS
+ +2IcKnY9QJeoFj/bEvtiHCp2PUCXqBY/2xL7Yhwodj1Al6gWP9sS+2I8KnX9QJeoFkfbEvtidwqdf1Al
+ 6gWP9sS+2JcCnY9QJeoFj/bEvtiPAp2PUCXqBY/2xL7YlwKdj1Al6gWP9sS+2JcCnY9QJeoFj/bEvtiX
+ Ap2PUCXqBY/2xL7YhwJdj1AmLwskZicZaXAp1Q8KXqBZQykjlJcCm3faIWJmPlHuydFk5N8pvApp3mSg
+ MGqVj5Kas6ocCnTxQt3ECwsVbmKUOFTsVcIxCr1O0RpTeFSN4QiEVygQhwqYSnDkiEoQ4VMg5SlQAUgE
+ aUySSSRUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXUXKSi5JTVsVcqxYq5SUz
+ YrdaqMVutJSYJJBJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSS
+ Sl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//X69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJNSpOmSSUpJJJOUpJJJFSkkkkkKSSSSUum
+ SSQUpRTlMgpcKQCYKYCClQmKmUMlJSiUyaU4QUunSTIqXTJpToqUmSTEoqXlMmlJFS6SQTgIKWhNCnCU
+ IKYwknTFNKliU0pFKEFMgiAKDQitRUuAkQpApiU4KROQiiuQyE8KWCkFEBSCcpkmSlKUFLJQknQKloSh
+ ShIhRlTApApFRlNUlaVOUIFSlFS5KgSmJUJRCkgKkEIFEBUoUzhMQnCRSUwKaUioqMqZgqSgFIFJS8JQ
+ mSlFTJJRlKUVKJUCU5KiUVMSUgUoSASUzCkFEBSCSmSUJpTykpg5V7FYcq9iCkBTsTFOxNU2WI4QGI4S
+ UumTpkFKTJ0yKVJJJJKUnTJ0VKSSSSUskkkkhSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ2
+ Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSSSSUpJJJJS6SSSSlJJJJKUkkkipSSSSSlJJJJI
+ UkkkgpSSSSSlJJk4QUpOkE6CmKYqRTFBTCE4CdOEVMgEQBQBUwUUrOCBYEclBeE4Kc68LIyWrcuZKzr6
+ ZTkvO3sMoDWGVs240oIxUUtemQrzHkBMzGhHFBTwpGbChm0qyaCoHHKlAWoPVKXqlH+zlL7OUaUg9Upe
+ qUf7OUvs5SpSD1Sl6pR/s5S+zlKlIPVKXqlH+zlL7OUqUg9UpeqUf7OUvs5SpSD1Sl6pR/s5S+zlKlIP
+ VKXqlH+zlL7OUqUg9UpeqUf7OUvs5SpSD1Sl6pR/s5S+zlKkIPVKXqlH+zlL7OUqUg9UpeqUf7OUvs5S
+ pSD1Sl6pR/s5S+zlKlIPVKXqlH+zlL7OUqUg9Up/UKN9nKX2cpUFIPVKY2lWDjlQOOUaQh9UpF5RfQKk
+ Mco0FrTeSVStaStk4xKE/DlGgyReefUShikrfdg+SiMHyRpnDk11kK7UCFcbhR2Rm4kIUooWOIRxYVMY
+ 8J/QKVLCx9UpeqVL0Sn9EpUGKTD1Som0ovoFMaClQYkJsKb1SjegUvs5SpcEPqlL1SjfZyl9nKVBlCH1
+ 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
+ KJ6BS9ApUph6pS9QoooKf7OUqUh9QpeoUb7OUvs5SpSH1Cl6hRvs5S+zlKlIfUKXqFG+zlL7OUqUh9Qp
+ eoUb7OUvs5QpSH1Cl6hRvs5S+zlKlIfUKXqFG+zlL7OUKQh9QpeoUb7OUvs5RpSD1Cl6hR/s5TfZynUF
+ IfVKXqFG+zlL7OUaCkPqlL1SjfZyl9nKVBSH1Sl6pRvs5S+zlKgpD6pS9Uo32cpfZylQUh9UpeoUb7OU
+ vs5SoKQ+oUvUKN9nKX2cpUEohaVMWlT+zlOKClQUsLSnNpT+iUvSKVBTXseSqVslaTqSUF2NKBAU5JYS
+ iVVmVf8AsqLXiptBTHHZC18cQq1VEK/UyE0hTcqKOHIDBCKFEQlkSmTJIUpeE4CZSBQpSoShPKZNIUpJ
+ JJNQpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXUXKSi5JTVsVcqxYq5SUzYrda
+ qMVutJSYJJBJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04
+ TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//Q69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJKkqTpkkqUpJJJJSkkkkVKSSSSQpJJJBSk6ZJC
+ 1KTJ0kLUoIgQwpShamRKE4qRKGUlKlTCGFMJKZpinTFFDFOmSTlKJUSU5TIgKUnASAUgEaUoJ0kpTSle
+ U0qJKYlNtTKUyjKUpqmUJ4SCkkpZPuhMUNxRCku9NvQC5MHJwUnmU0KLSiAJ4UtCZSIUSnKVKaUydKlL
+ hSAUQphAqZAJEJwnKYQpA4KEIzghkIUpYKSYBOlSmBUUQhRhEBSwRAogKQTwpkCkSmlMSjSlFMkkEwhC
+ 4CkAmAUwEKUxhNCJCYhGlMEykQolGlLJJJBFKoTgJwE8JKWhJShMkpZJJOgpiVXerBVd6CkDk7Ezk7E1
+ TZYjhArRwgpdMnTJKUkkkklZJJJFSk6ZJJS6SSZFSkkkkkKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ LpymTlJSGxVXq1Yqr0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKXSSSSUpJJJJSkkkklKS
+ SSRUpJJJJCkkkklKSSSQUsnTJ0FLhOoylKCl0yUpJKWSTpklLgqQchkppTkpdyi7VRlKU4KRPbKrvqlX
+ CFEtTqS5zseVD7MtP00vTSS54x1MUK7sT7E4FTT9BN9nCvbEtidxrWj9nCX2cK9sS2Jcamj9nCX2cK9s
+ S2Jcamj9nCX2cK9sS2Jcamj9nCX2cK9sS2Jcamj9nCX2cK9sS2Jcaml9nCX2cK7sS2Jcaml9nCX2cK7s
+ S2Jcaml9nCX2cK7sS2Jcaml9nCb7OFe2JbEuNTR+zhL7OFe2JbEuNDR+zhL7OFe2JbEuNTR+zhL7OFe2
+ JbEuNTR+zhL7OFe2JbEuNTR+zhP9nCu7EtiXGponHCicZaGxL00eNBc77MnGOtD00/ppca1ofZwmOMFo
+ bExYlxskXNOMEvswWhsS2I+4zhoDGCf7OFe2JbUvcQWj6ATGhXtiWxLjWFoegnGOrwrUhWl7jEXP+zpj
+ QtE1qJrS9xjaHoJxjq7sUgxHjXBpfZwl9nCvbE+xDjZA0Ps4S+zhX9iWxLjXND7OEvs4V/Ym2JcaWj9n
+ Cf7OFd2JbEuNYWl9nCXoBXdiWxLjWtL0Al6AV3YlsS41NL7OEvQCu7EtiXGlpegEvQV3YlsS41paJoTf
+ Z1f2JBiXGhpDHUvs6uhilsTeNeHOdjoRx1qGtQNacJr3OGOpDHV8VqQrR9xYXP8As6X2daPppvTQ9xDR
+ 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
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJNUpJJJBSk6SdBSyiSpFDJQUvKaEwKm0JKWhOFO
+ ExCSlAp1CU4KcELkKJUpTFOCmKcBJOE8KXATwmlPKKlFRKclMo5KYpQpAJ4UaUZCaVMhDKCmYKmCggqT
+ SkpIVEtUxqpbZRCmsWJg1WixRLFIFI2hECjEJwU+lM4USEgU6SmBCaESFEhG1LJwU0JkVJAU5KFKeUwq
+ XJUSnTQgpaU8piEySmSUJBSASUtCUKcJiE4KYFMVIhNCcpZOE+1PtTChQUwoQnCCmaYppTEoqWJUCU5U
+ SipUpwmAUg1FLIJ0g1PCSlkxKchQKClSlKinQUooD0coL0FNdydiZydiapssRwgVo4QUumTpklKSSSSU
+ skkkkpSSSSKl0ydMkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq
+ 0EI1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJIqUkkkkhSSSSSlJJJJKUm
+ TpimqWlKUimSUyBTqIUgkpeExCkmKSmBCipkJoRCVgnCcBOAnBSyUKUJinJWSTEqJKKWSShKcI0pmFKF
+ AKQUZWrwlCSSGqlQlCSSOqlQlCSSWqlQlCSSWqlQlCSSWqlQlCSSSlQlCSSSlQlCSSSlQlCSSSlQlCSS
+ WqFQlCSSWqlQlCSSWqlQlCSSWqlQmhOmSUvCcBMlKSCyhMlKaUliiokJ0oRZIsYTQpwmhJnDGEk8JoSQ
+ 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
+ VKIUCFMqJRCmEJQpJIFaWMJQpJIIYwlCkkkpjCUKSSSmMJQpJJKYwlCkkkpjCUKSSSmMJ4TpJJUAnhRl
+ PKSl4USE8pikpiQnCSQSUyClCiFJFTEhRIUyokJKYwknhMkpcBOAoqQSUvCeEydJSoTQnSSUtCUJ0kVL
+ QnhJJJS0JQnSSUtCUJ0klLQlCdJJS0J4SSSStCiQplQIRQxhTCjCkElJAmITApEoUlYhRhOUyKFwnCin
+ SUyTJpSlJS6SjKdJTJKE0pIJXhKEydJC0Jk6YoqVCcKKUoKSJKEp5SSyKiU0ppRQuUyaUklMklFPKSV0
+ ySZJS6aEk6KFQlCdJJKoShOkgpUJQnSSQtCaFJMkpaEoTpJKWhKE6dJS0JQnSQUtCSSZMKVJ4UU8pmqm
+ YTqAKUo6qZFQKclRR1QtCUJ04COqlAJ4ShJJSxCaE5TIqXCeFGU8oqXhNCdOkpjCUKSSKmMJQpJJKYwl
+ CkkkpjCUKSSSmMJQpJJIYwlCkmSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0kVLQlCdJJTGEoUkklMYTwnSSU
+ tCUJ06CWMJlIqBSUpOoJwkpmAnhMFJBS0JiE5TFBSxUU5TIKXCkFBSCCmYTqAKlKCliFAhElMUFI4ThP
+ CSIUpOkknKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLqLlJRckpq2KuVYsVcp
+ KZsVutVGK3WkpMEkgkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJ
+ JJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/S69JJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJOUpJJJJSkkkklKSSSQUpJJJBSkkkk
+ FKSSSQUuFJRTygpZyE5FJQikpYIzAhBGakhnCi4KYUXBOAUhJhQ3pWGFWfZCeAptB6kDKpNsVhjpRpSZ
+ MXJiUF74TwFJS9N6iqOuUBcn8KnQDpUwqldkq0wqOQUkTEqDnwguuUVKTkqBCE22UZuqVKYQnCLtUHCE
+ KUzaUUOCpOs2oZygE4BTpbgoOcFn/bAmOWCniKm256GbFTdkoLslSiKnSFqm20LH+1KTcxEwU7QeE+4L
+ KbmBFGWEwxS3iVEuVI5QUTkhIRU3tykCqAyAjMulAhDcATwhsfKJuUdJYEKKd70B1sJAITgogKo+uAn+
+ 0hGlN6UxKp/aQm+0hGktyUgqf2kKQyQjSm6AngKmMoJ/tITaQ2CoygeuCl6spAKTylKEHqQcjSmSaEpT
+ boSpTMBEAVf1QE32gBApbcBIqp9qCb7UEKU2SoFA+0AqYsBTqUyhPCcaqUIKREID1ZcFWsQUgKdiYp2J
+ qmzWjhArRwgpSSdMkpSSSSSlkkkklKSSSSUumTpklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UunKZOUlIbFVerViqvSUwCNWghGrSU2Wqag1TSUpJJJJSkkkklLJJJJKUkkkkpdJJJBSkkkklKSSSSUp
+ JJJFSkkkkUKSSSSUpJJJJSkydJBTGEoUoShBSwCkEkklLymlNKaUVLpQmUgilcBOAmCeUUqIUHFJz4Ve
+ y6E4KSOcobgqdmSAhfawnJdIEKYKzG5gRBlhGlOhKW9ZxywonLCPCh096W9Zn2sJfbAlwIdPelvWZ9sC
+ X2wJcCnT3pb1mfbAl9sCXAp096W9Zn2wJfbAlwKdPelvWZ9sCX2wJcCnT3pb1mfawl9rCXAp096W9Zn2
+ sJfawlwKdPelvWZ9rCX2sJcCnT3pb1mfawl9rCXAp096W9Zn2sJfawlwIdPelvWZ9rCX2sJcCnT3pb1m
+ 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
+ EuBTpbgluWb9rCX2sJcCnS3Jblm/awl9rCXCp0tyW4LN+1hL7WEuFTpbktyzftYS+2BLhQ6W5Lcs37YE
+ vtgS4VOluCW4LN+1hL7WEuFTpbgluCzftgS+2BLhU6O5Lcs77YEvtgS4VOjuT7lm/bAl9sCXCp0tyW5Z
+ v2wJfbAlwpdEuTErP+1hL7WEuFTfUgqAywpDLCBCnQEJEhUDmBQOaE2lOgXBR3BZ32wKTcoFO4VN+U8K
+ qy8FHa+U0hTOEykCmKFKWlKUxTJUpnKUqKSHCplKSZOhSl0kydBSkkkklKSSSSUskkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpdRcpKLklNWxVyrFirlJTNit1qoxW60lJgkkEklKSSSSUpMnTJKUkkkkpS
+ SSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9
+ asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJOUpJOmSUpJJJJSkkkkFKSTpIKWSSSQUpJJOgpZPKZJJSxUSpwmhJTEKYKjCUpUhOCk5Da
+ VInRPAU1LzCzrbIKvZJWPe/VPCmxXbqr9LpWNU/VamO6UaU3HHRU7nwrZ4VO8J8VNJ9ig23VNaEJvKlp
+ Tp0vV5jtFmUFaDOFFIKWuthZ9mRqj5JhZF1mqipTpU3yVqY7pXO49mq3cR0oUp0NqFaICsDhAyOEApys
+ m3asm7LhXc08rAyHmU8BTaOafFSblkrLbJKt1Vkp4Cm59oKG68pvSKE9kKYBSnZBCH9qKE9pQthTqU32
+ ZZR25RWaxhVhrChwqbn2opvtJVf0ynFZQpTbZeVcpuJWfXUVeprKikp0qrFY36KrUyER+gUamNtsKlZe
+ lfZCzrLdUlNo5CicgqoCSphhKKkxySl9pKCail6RTwFJxkFP9pKCKin9IpEKSfaikMsoBpKE5hCYQp0W
+ ZSsMvlYgeQrVNqSnbZZKMHKhQ+VbB0RUlL4QH2wo2PhUrbUaUmsyIVV+UUF75QSCUqUmOWUhllV/SJTe
+ kQhSm/Xkkq7VfKxWyFbpshKku9U+UcFZdNqusslAhSV6q2KwTKA9NU1ynYmcnYmlTZrRwgMRwgpdMnTJ
+ KUkkkgpZJJJJSkkk6KlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpymTlJSGxVXq1Yq
+ r0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKXSSSQUpJJJJSkkkklKSSSRUpJJJFCkkkklK
+ SSSSUpJJJJSk6ZJBS6YlMSmlJSkkk4CSlJwlCeE5KiUNz1JyA8oqR22ws6/IhWbisnKKclBflwqhzT4o
+ GQ4yqcklOS6rcwowyysyphKvV45KcFJvtJTfaSkMYpfZinArVfaSl9pKX2YpfZijalfaSl9pKX2YpfZi
+ lalfaSl9pKX2YpfZilalfaSl9pKX2YpfZilalfaSl9pKX2YpfZilalfaSl9pKX2YpfZilalfaSl9pKX2
+ YpfZilalfaSl9pKX2YpfZilalfaSl9pKX2YpfZilalfaSl9pKX2YpfZilaFfaSl9pKX2YpfZilalfaSl
+ 9pKX2YpfZilalfaSl9pKX2YpfZilalfaSl9pKX2YpfZilalfaSn+0lN9mKX2YoWhX2kpjlFI4xUHYxQt
+ ay+2FIZxHdVX1EKrZLUmSLq/tDzSPUPNYL7iEP7QUGcPQHP80vtpPdYTLSVZrlySC6oyyVIZRVOuolWG
+ 45RtYUwySl9pKiMYpfZihbFJf7UUvtRUTjFN9mKVsbP7UU/2kqH2YpxjlK1wZ/aSl9pKj9nKf7OUrZAv
+ 9pKb7SU32cpfZila5X2kpfaSl9nKb7MUeJK/2kpvtJS+zFN9nKXEsK/2kpfaSm+zlL7OUuJav9pKf7QV
+ H7OUvs5S4lMvtJS+0lN9mKX2YocSl/tJS+1FN9mKb7MUrQkGUU/2ooX2cp/s5QtDI5JUDklP9mKb7MUr
+ Xhb7SVIZJTfZSn+zFG16/wBpKb7SU/2YpjjFG1hWOUU32opjjFR+zFK0M/tRS+1lR+zFQdjkI2pL9tI7
+ p/t/ms+1paqj7CElB3Pt/ml9v81gesVIWkoM0XcOcfFN9tPiscPJR2AlFe6YyypDKKqV1Eqy3GKFrUn2
+ kpfaSm+zFL7OUrWlf7SUvtJTfZil9mKFsRV9pKickpzjFROMUrWqOUUhlFROMU32coWuSjLKf7UUIY5U
+ vs5StLI5JTfaSm+zlL7MUbQr7SUvtJS+zFL7MUeIKV9pKX2kpfZim+zFLiClfaSl9pKX2YpfZilxKCvt
+ JS+0lL7MUvsxQ4l4V9pKX2kpfZil9mKXElX2kpfaSl9mKX2YpcS1f7SUvtJTfZil9mKVrSy+1FN9qKj9
+ nKX2YpWxlf7SU32kp/sxS+ylG0hX2kpfaSn+ylP9lKVswW+0lL7WQmdjEKvZUQlbIE/20+Kf7cfFZrwQ
+ gl5CLIHXOd5qBzz4rIdYUI2lJZJ2vtx8U4zCe6xWvJVuoFyNtcumMoqQySgV0Eo4xigSpf7SUvtJTfZi
+ l9nKbal/tJS+0lN9mKX2YpWpf7SUvtJTfZil9mKVpX+0lL7SU32YpfZilal/tJT/AGkqP2YpfZilamX2
+ kpfaSm+zFL7MUrSv9pKX2kpvsxS+zFK1L/aSl9pKb7MU32YpWpl9pKX2kqP2YpfZilamX2kpfaSo/Zil
+ 9mKVqZfaSl9pKj9mKX2YpWpl9pKX2kqP2YpfZilaGX2kpfaSo/Zil9mKVqZfaSl9pKj9mKX2YpWpl9pK
+ X2kqP2cpfZylaF/tJTHJKX2YpjjFK1LHKKb7WUzsYoD6CErUn+2nxS+3nxWdY0tVV9hCTNF2/wBo+aX7
+ Q81zpvKk24lJlehGcT3UhmErHqJcr1VRKS0t0ZRUvtJQm4xU/sxStiLL7SU32kpvs5S+zFK2EshklP8A
+ aSofZyl9nKVrWRySonJKY45THHKNrwv9pKX2kqP2cpfZylbIGX2kpfaSo/Zyl9nKVpZfaSl9pKj9mKX2
+ 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
+ 6iUrQ2ftJS+0lRGOU/2YpcQQv9pKf7SVEYxUhjFK1L/aSl9pKX2Yp/sxStKvtJS+0lL7MUvsxQtS32kp
+ vtJT/Zim+zFK1K+0lL7SU32YpfZilalfaSn+0lN9mKX2YpWpmMkp/tJUPs5TjHKVqZfaSonIKf7MUjjF
+ K1MPtBTjIKRxikMYpWpmMkpzllQ+zlCspISSzdmkd1D7efFU7WkKm8kJIdkZ58VMZxPdYIeVYrJKSXYG
+ YSl9pKqVVkq03GJSUo5JUftJUzilROMUbUr7SUvtJTfZil9mKFqX+0lL7SU32YpfZilamX2kpvtJTfZy
+ l9mKVoX+0lL7SU32YpfZilaF/tJS+0lN9mKX2YpWpf7SUvtJTfZil9mKVqX+0lL7SU32Yp/sxStKvtJS
+ +0lL7MU32YpWpl9pKX2oqP2YpjjFK0sjllQOaR3QrKSFRuBalaW+c8+KQzj4rFc8ypMcSlanaGaT3Uxl
+ lZ1TCVaZQSjamwMoqX2koTccogxila1c5JUTklSOMVA4xStC/wBqKkMooX2cpxQUrQm+1FROSVD0Cl9n
+ KFpC5ySm+0lL7MUvsxStK4ySpjJKgMYqQxylamf2kpfaSmGOU/2YpWpickpvtJUjjFQOMUrUr7SUvtRU
+ fsxS+zlG1MvtRUTlFL7MUxxilalfail9rKG7HIQX1kJWpsnNPim+3HxWc+Qg7ilanZbmnxRRlkrHrkq9
+ VUSklufaimOSVEY5THHKSlzklN9pKj9nKcY5StDIZJT/AGkqIxyn+zlC1K+0lN9pKf7MU32YpWpcZJTj
+ JKh9mKf7OUrUk+0lL7SVD7OU/wBnKVpZ/ail9qKh9nKY45QtaWRyim+0lQOOUvQKVoSDJKf7QVAUFS+z
+ lK0rHJKj9pKc45UfsxRtK/2opfaym+zFDfQQlaUhzSO6ic8+Ko2tLVUe8hK0ux9vPinGaT3WK15Ks1gl
+ K1OoMslP9pKq11Eo4xyUrUyOSVH7SU/2YqJxila0r/aSl9pKb7MUvsxRtC/2kpfaSm+zFL7MULQv9pKX
+ 2kpvsxS+zFK1MvtJS+0lR+zFL7MUrUy+0lL7SU32YpfZilaV/tJS+0lN9mKb7MULUy+0lP8AaSo/ZinG
+ MUgUr/aSn+0FMMYqX2Yp4KlfaSmOWUxxihvoIRUzOYfFROcfFVbKyFVfIQ0U6f28+KkM0+KxN5RqySkp
+ 2Rlkp/tRVGphKsiglJTM5JUftJS+zlN9mKNqX+0lSGSVD7MU4xilamf2kpHJKj9mKX2YoKUckpvtJSOM
+ U32Yo2pf7SUvtJTfZil9mKVqX+0lL7SU32YpfZilaF/tJS+0lN9mKX2YpWpf7SUvtJTfZil9mKVqX+0l
+ L7SU32Yp/sxStSvtJS+0lIYxT/ZSlalvtRCb7YQovxyFUtYQgkNw5x8U328+KyXuIQw8oLnbGaT3Uxlk
+ rIrkq7VUSkpu/aimOSVFuOSnOMULUt9pKf7SVH7MU/2YpWhf7SUvtJTfZil9mKVoX+0lL7UVH7MUvsxQ
+ tDP7UUvtRUPsxS+zlC1MjlFN9qKj9mKb7MUbUzGUVIZJQxjlOMcpWpmcoqJyil9nKb7MUrUv9qKcZRUP
+ sxS+zlG0pftRS+1FD+zlP9nKVpZ/aionLKiccob6CEksnZhHdDOcfFVLWEKo4kI2p1xnHxUxmnxWMwkq
+ 3UwlJTofayn+0lAZSSijHKNrSy+0lL7SU32YpfZilaF/tJTfaSl9mKX2YpWpX2kpfaSl9mKX2YpWpX2k
+ pfaSl9mKX2YpWpX2kp/tJTfZil9mKVqX+0lL7SU32YpfZilaV/tJTHJKX2YpjjFG1K+0lL7SUxxim+zF
+ K1JBlFSGUUIYxUxjFC1MvtRTHLKY4xQ30EJWFMjmFR+3HxVWyshVXkhJTqjO80/20+KxfUKMwkpKdT7W
+ Sl9qKq11FystxiUrCmX2opxklR+ylP8AZijYUyGSU/2kqIxin+zFAlSvtJS+0lN9mKb7MU0lTL7SUvtJ
+ UfsxS+zFC1MvtJS+0lR+zFL7MUrUv9pKf7SVH7OUvs5RtTL7SUvtJUfs5S+zFK1L/aSl9pKb7MUvsxSt
+ S/2kpfaSm+zFL7MUbUyGSVIZJUBjFP8AZilamRyihOzCO6Z9BCpXMISS2TnHxSGcfFZTyQma4pWh2Rmn
+ xRBllZdYJVplRKVpbf2oqJyioCglP9mKFqX+1FL7UVH7MU4xSlaGQySn+0lR+zFP9mKVqZDJKf7SVAY5
+ UvsxStTL7SUxyim+zFROMUrUucspjlFQOOU32cpWpn9qKX2kqIxinGMUrUy+0lP9pKYYxT/ZilalfaSm
+ +0lP9mKb7MUbUr7SUvtJTfZikcYpWpl9qKX2soZoKE+ohK1Nj7afFMc7zWdZIVY2FK1O19tPinGWSsit
+ xKu1VlyVqbf2kpfaSmbjEpzjFK1K+0lP9pKj9mKX2YpWpl9pKX2kpvs5S+zFK1L/AGkpfaSm+zFL7MUL
+ Uv8AaSl9pKj9mKX2YpWpl9pKX2kqP2YpfZilamX2kpfaSo/Zin+zFK1MvtJTjJKh9nKX2cpWlJ9pKX2k
+ qHoFP6BRUuckpvtJS+zlL7MUbUr7SUxyikcYoT6CErCmRzCO6gc8juqtrCFRtcQkp1T1A+KQzz4rBNpU
+ mWEoqd8ZpPdEGWSsiqSr1dRKSG19pKf7QVFuOVL7MUrClfaCl9pKX2YpvsxSsKX+0lL7SU32YpfZilYU
+ v9pKX2kpvsxS+zFKwpf7SUvtJTfZil9mKVhS/wBpKX2kpvsxS+zFKwpf7SUvtJTfZil9mKVhS/2kpfaS
+ m+zFL7MUrCF/tJS+0lN9mKX2coEhS/2kpfaSm+zlL7OUy1L/AGkpfaSo/Zyn+zlK1L/aSl9pKj9nKf7O
+ UrUv9pKX2kqP2YpfZyjamX2kpfaSo/Zyl9nKVqZfaSl9pKj9nKf7OUrUv9pKX2kqP2Yp/sxStK/2kp/t
+ JUPs5TGgpWpKMopfaygigqQxyhambssoLs0+KT8cqnbUQham2M0+KPVmT3WIZBRanmULU9NRkytGm2Vz
+ mM9bWM6ULU6rDKIg1I4QtTEhNCkU0pWpaE8JJ0LUtCSdJNJUpJJJBSkkkklKSSSSUskkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpdRcpKLklNWxVyrNirFJTNit1qoxW60lJgkkEklKSSSSUpMnTJKUkkkk
+ pSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Ya
+ q9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSRUpJJJJSkkkklKSSSQUpJJJJSkkkkFKSSSSUpJJOkhUJ4SToqYEKBCNCiWoqYtUidE4a
+ mfwnBTQyjosTIdqtjKKwsk6qQBSqnwVq41oWA18FXKb4T6U9D6ohV7rAVQ+1aIFmWnxipNa4IAeJVWzJ
+ QvXUtKduiwK+20QudqyIVxuVoopBTbybAVkXO1Rrb5VNzpKjpTaxjqt/DKwMYardxE0hTsNOiDfwiMOi
+ Ffwohulwc0crBubJW9m91h3HVTxCFqapK1KKBCz6HarTpfopKUyfUAqlrFastVOy2VJEKRGqU4x5U2GV
+ aYAn0prtx0ZtCMICfcEKUjFCI3HU2uCsMhMKmFeOrdVEKVYVlgUElMRXCDeICuFUsk6KMKcfKes4ukq3
+ luVAHVFTdoZuWnVjyFSxBK3MdmiSmr9lUfsq1digWIiSnPGMpjFVzaptCRKnPdiKlkY8Lec0Qs/LbokF
+ POXN2lKl2qJlDVV6jqip3MUyr44WbiFabRIQU1LyqFhWncxZ1rE4KQgSrFVUoA0VulyKkzcYFQsxwFcY
+ 8QhXvEJtJcuxm1Qa6CpX2Ku10lFDpUvWjU5ZeOJWpS1NKmyCoPUwFB6alruSak5JiapssRwgMRwgpSSS
+ SClJJJJKWSTpklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpymTlJSGxVXq1Y
+ qr0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKXSSSQUpJJJJSkkkklKSSSRUpJJJFCkkkkl
+ KSSSSUpJJJJSkikkUFMSmTkJoSUuFMBQCmCkpkmKaUxKcEsXIL0VxQXIhTVtCysoLWtWVlFOCXEvbqg1
+ 1SUe86pqOU5LoYmNK2qcIEcKpgAaLoKGiEiaU0vsI8Exwh4LX2hQLQmCSHK+xBL7EPBau0JtoR4kOX9i
+ Hgl9iHgtTaEtoS4lOX9iHgl9iHgtTaEtoS4lOX9iHgl9iHgtTaEtoS4lOX9iHgl9iHgtTaEtoS4lOX9i
+ CX2ILU2hLaEuJTl/Ygl9iC1NoS2hLiU5f2IJfYgtTaEtoS4lOX9iCX2ILU2hLaEuJTl/Ygl9iC1NoS2h
+ LiQ5f2IJfYgtTaEtoS4lOX9iCX2ILU2hLaEuJTl/Ygl9iC1NoS2hLiU5f2IJfYgtXaEtoS4lOV9iCf7E
+ PBagaE+0IcSnK+wjwQn4I8FtQEN7QiCh5rIw4WLlUQutyWhYGa3lG18Xmb2QVXhaGQ3VVA3VK2cJaGSt
+ jFx5VDGat3DYlai2qMSVeZhDwRcZohaLGhC1hc4YQ8E/2ILU2hPtCFsRcn7CPBN9hHgtbaEtoStjcn7C
+ PBL7EFrbQmLQha4OV9iCX2ILU2hLaELXhzPsQS+xBam0JbQla5y/sQS+xBam0JbQhaXK+xBL7EFq7Qlt
+ CHEtLk/Ygl9iC1doS2hLiKxyvsQ8EvsQ8Fq7An2BLiKnK+xDwT/YgtXYEtgQ4ipyfsI8EvsIWvsCbYEb
+ Q5P2IJfYh4LV2BLaEbU5Ywh4J/sI8FqBoTwEbXhy/sI8E32ILUgJQErXOZ9iCY4Q8FqQEoCNrS5BwR4J
+ hgjwWuWhIMCNrXK+wDwQLsGBwugDAq+QwQlxJeOy8bbKw8hkFdZnt5XNZQ1RtAc2NUZjZUSNUesJWzRT
+ VVytCiiVWpC1cYJWvbWPiStFmEEsUBabAIQtYXPOEPBROGFqkBQICFrXOGEFL7EFoABTACVsZcs4QUDh
+ BaxATEBC0OScEeCb7CPBa20JbQla4OT9hHgn+xBa2wJbAhanK+xBL7EPBau0JtoQ4kOX9iHgl9iHgtTa
+ EtoS4ihy/sQS+xBam0J9oS4lOV9iCX2ILV2hLaErU5X2IJfYgtTaEtoSteHL+xBL7EFqbQltCNpcv7EE
+ vsQWptCW0JWtLl/Yh4JvsQ8Fq7Qn2hG1hcj7D5JxgjwWttCfaEbWFyhgjwT/AGEeC1ICUBK0hy/sI8E/
+ 2EeC04CeAlbMHHfhBZ+RiQuksAhZmS0JwLIHmL6IVCyqFt5LVmWhOtkDnvYgFquvCrkao2skqmuStjEx
+ 5WdQNVvYI4Strlv4+HIV1uCPBGxWiFfa0JsipyjhDwTfYh4LWLQm2hMtTlfYh4JfYh4LV2hLaErU5X2I
+ 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
+ WVlYkLq7WiFjZjQhanlrqYKCxkFaOSNVTA1QtTcxgtvFCx8YLaxQhanVqGiNCHUNEYhC1IioqbgoQhal
+ 5TgqKcIWpkkmSTgVLpJJJylJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySl0kkklLqLlJR
+ ckprWKuVYsVcpKZsVpiqsVpiSkwSSCSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpS
+ ZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklP/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkkEKTpBOipZKUiokoqZgqSECpByKkiHYpShvKICnPyRKxsiuVvWtlULaZUwU4ZqKm1
+ hC0vs0qQxU9TmOkKtYStl+KqduMpIlTlOJTCVcdjpNx1IpFXKstlFrxlbZiqKSmgWkphUVp/ZUvs8KNS
+ HHrhbONoqVdcK7VogQp0WO0ULjooseo2O0UVapcjNCwrxqt/LErGtZJUsUIKuVeY4gKvXWrba9FKFIbb
+ CqTrdVcuYs+xpBTwpsVWq9XYslhhWmWJym+bVA2qsXptyCm6y1W6rFlsKuVFNKnVrerTHLOqKu1FQSU2
+ Z0VPJGiugaKtkN0USnncoaqiBqtTLas8DVJTo4YW9j8LCxAtzH4SU2lBykolAJYFOClCcBFSidFQyuFf
+ cFQyUQhwckaqvWNVbyRqgVjVOU6WIFrM4WXjBabDokpjaNFm36LQufCysmxOU1nvgqVd6pWv1TVvKKnb
+ ZfohXXaKvW4wmtkhJTWuskpqjJQ7AZU6BqmqdnFbK1qmaLLxCtao6JpUkIQLFYJVexNU13J2JnJ2IFTZ
+ YjhAYjhNSpJOmQUpJJJJSkydMkpSSSSKlJJJIKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdO
+ UycpKQ2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSSSSUpJJJJS6SSSClJJJIKUkkkipSSSS
+ KlJJJIoUkkkkpSSSSSlJJJJKUkmSlBSkoTpJKYp0imSUqUkycBFKxCG4I8KDmpymhcFk5a2rgsfLCcEu
+ HfylRypXjVNQNU5Lv4HZdBRwsDB7LfoOiaVNglDJUyUMlNCFSlKZKUaQvKUppSlKlLylKaUpSpS8pSml
+ KUqUvKUppSlKlLylKZJJS8pSmSSUvKUqMpSkplKUqMpSkplKUqMpSkhlKUqMpSkplKUqMpSkplKUqMpS
+ kplKUqMp5SUylLcoymJSpTLchvckShWOTgENTJcsLLPK18lyxMtydwr4uRkcqqBqrF7tVWB1S4WwG/jr
+ axCsPHK2cRyHCgu9jnRX2OWZjuWgwoELCn3J9yGCnlNpiky3JbkMlNuRpjS7k25D3J5QpcGcpSoynlCm
+ QMpTyoSlKVLmcpSoylKFKZSmlNKUoUtK8pSoylKVLGUp5UZSlKks5SlRlKUKUylKVGU0pwigspSlRlKU
+ qQylLcoykSlS8KLlEuSJUZRpeyDlIOQwpBGlhZypAqEpwUKQllV7zojSquQ7RIBTh555XN5XK6HOdyud
+ yjqn8Kg0TyjVoJOqNWUuFli3aVqYxWVUVp4xS4V7uYxWmx2iysYrSrOiFLaTEoZKlKgUKWlkCpBygFJC
+ mMrlyaUimQpavKcFRlOClS4M5SlRlPKVJUSmlKUkKWqlKUkkqQqUpSSSpCpSlJJKkhUpSkklTIFSlKSS
+ NKVKUpJJUtKpTgpkpRpaWcpSoSluSpjLKUxcoymlGkhfcpbkMFSlKmYMXuWdklX3lZ2SU4BkDkZJWZat
+ LJKy7Sn8LIGu9VzyjPKATqjwrJNmjlbuF2WHRytzC7JU1y9BjHRX2lZ+MdFdaVHIKZkppTEppTKSylNK
+ aU0pUplKUqMpSlSmcpSoSlKVKZymlRlKUqUylKVGUpSpLKUpUZSlKlMpSlRlKUqUylKVGUpSpTKUpUZS
+ lKlM5SlQlKUqUylPKhKUpUhlKUqMpSlSmUpSoylKVKZylKjKaUqUyLlAuTkqBKcApZzlTvcrLyqdxTqU
+ HKyysLKW1lFYuSUuFmi5lg1RKBqoP5U6eUuFkdzCPC6PEdoubwzwuhxSlwrC6zHqRcgsKnKbSwsw5SlQ
+ CeUKYSzlKVGUpSpaylKVGU0oUvDOUpUJTyjS8MpSlRlKUKSylKVGUpSpLKUpUZSlKmMspSlRlKUKQylK
+ VGUpSpLKUpUZSlKlMpSlRlKUqQylKVGU8pUkLymLklElGl4UXJblEpI0osw5PKiE6FLCyBUwUKVMFIqW
+ sdosTOdyte12ixM13KcAh57NOqyX8rTzDqst51R4UhJWr1Ko1q7UUuFmDqY5WxjFY2OVr4xSpLr1O0Rw
+ VUqKsAppC0sy5DLk5KgUKWFfcphyGnBSpjKbcmLlCUxKVKDLcnDkKU4clwrku5IlQ3JShSlyU0ppTSlS
+ mUpSmlKUqUvKUqMp5SpC8pSmlNKVLgylKVGUpSpeylKVGUpSpDKUpUZSlGlpZSnlQlKUqWFIClKgCnlK
+ liiUMuUiVAo0vDMOTkqLVIpMwaWQVi5RWzklYeUU4BkDm2lVnFGtKrOKdwrkT09Z1UHlPWdUeFhk7WEV
+ 0eGdFzWEV0eIdE0hjdVh0TuKgw6KRUdKYymlJJKlKlKUkkqUvKUpkkqUvKUpkkqUvKUpk6VKVKUpJJUp
+ UpSkklSlSlKZJKlLylKZJKlLylKZJKlLylKZJKlLylKZJKlLylKZJKlLylKZJKlLylKZJKlKLlAuSJQ3
+ FPAUitcsrKK0LXLLyXKSkhxsrusi0arVySsq06oU2IsaxqtfC7LIrOq1sM8JUkvTYRWzU7RYWG5bFTtE
+ 0hYW1uS3KEpSmUxFJKaVGU0pUxFnKaVCUpSpQZSlKaUkl4XlKUySS8LylKZJJK8pSmSQQV5Tyop0li8p
+ SmSSUvKUpkklLgqQcoSlKSUm5MSobkpSpS8ppSlJKlKlNuSJUSUaQyDlIPQpTgo0pLuS3KEppQpSUOSe
+ 7RQBUXu0SrVc0Mx2i5rOPK6HLdouczTyn0pxbeVGtPbymYjwrm/QtXHKyaStPHKXCl2McrSqcsqgrRqc
+ hSm81ynKCwokphClyVElKUxQQtKcFMlKNLWYKlKHKeUKWlnKYlQ3JbkqUylNKjKUpUplKUqMpShSmUpS
+ oylKVLgylKVGUpSpcylKVGUpSpaWUpSoylKVIZSlKjKUo0llKcFQlKUqUlDk+5B3Jb0qWFKXKBcoF6Yu
+ RAWstyk1yAXKbXI0kJ9yrXnRGlVsg6IAMkXHyysW86rWzHLFvdqniLZihKG5IuUHOTuFUmbTqtHFKymu
+ 1WhiuS4WpN6TDdwtep2iw8N3C2KnaJpCwNklRlNKaVHS5eUpTSmlFLKUpUZSlJTKUpUZSlJTKUpUZSlJ
+ TKUpUZSlJTKUpUZSlJTKUpUZTykplKaU0pSkpeU8qMpSkpeUpTSlKSV5SlNKUpKXlKU0pSkpeUpTSlKS
+ l5SlNKSSmQKlKGCnlClwZEoFrlMuQLXIgLnLzDyueyTqt/MK5/J5R4VIqeVv4HZYFPK3sDshSHosc6Kw
+ Sq1B0RiUKUvKkChSpApUhmSoEpyUMlKkMtykCgypgpUpKClKhKW5ClMpTEqO5NKNKZSlKjKYlKlLlyYu
+ TEqBKNKZ7kg5QlOCjSUwKRKiCnJQpSKwrNyjotCwrMyjoiAlw8srMJ1WhllZpOqdwqdLD5XSYfC5vD5X
+ S4fATCFpdJnCclOzhIplLWIKkCop0aUylLcmSSpKtyW5MmSpS+5NKSZKlLylKZJKlLynBTJwlSmQKeVG
+ UiUaUy3JtygSmlGlJNymChAqbSgQlk4qlkFXHFUckpAKcbLPKxbytfLdysW86qQRUiadVpYiy2HVaeIU
+ TFT0OIVqMdosnEK1GHRRkJZuch7lJyGUQpmHKUoYKlKFIZSlKjKUoUhlKUqMpSlSGUpSoylKVKZSnlQl
+ KUqUzlKVCU8pUplKUqEpSlSmcp5UJSlKlzMFOShgpEpUlq5J0XOZxXQZLtFzmcU7hU49nKtYvKp2HVWs
+ U6pcKnosNa1RWPhla9RQpTYBT7lEFKUqQy3JwUNSBSpakBSlMCkSghRKYlMXJpRpIZSnBUAU4KFLmcqJ
+ KUpiUKUvKcOUJSlGkJNyiXKMpiUaUvuSlRlSCVJZgqLinCg9JTVvcsnJctS9ZOSjSHIyCqYOqt5Cp90u
+ FTo4hXRYbuFzeKV0GGeEuFTt1nRTJQa3aIhKaQlUpSmlNKVKXJTSmJUZSpCQOUpQwVKUqSolQJUiVElK
+ lKBUgVCVIFKlM5SJUZSJSpaViVGUiU0o0hkCpgoYKkClSWUpAqJKYFKkpS5VMl2iOXKpkO0SAXOFmnlY
+ V3K28w8rGtGqdwqWp5WxiFZFQ1WtipcKnbxitKsrLxytCtyBCmzKiSo7kxKaAgrylKjKUo0tZSlKjKUp
+ UhlKUqMpSlSmUpSoylKVKZSlKjKUpUllKUqMpSlSmcptyjKUpUllKkChgqYKRCmRKBaUYlBtKAU5uSVg
+ 5ZW5knlYOYU5TnOOqu4h1Wc46q9iHVJT0uEVr1nRY2EVsMOiRUkJTSmLlDchSme5MXKMppSpTLcn3KEp
+ AoqSSlKiClKFKZSlKjKUpUpnKUqEpSlSGcpSoSnlKlMpSlRlKUqUylKVGUpSpSQFSJQwVIlNpTWyDosP
+ LK2cg6LDyyngJDkXnVBbyiXnVBYdU/hXOljFbeKeFhYxW3ilClOvU7RF3KvUdEWUwhS5cm3JiU0pUhfc
+ luUZTSlSGYcpByFKeUqQlDk+5C3J9yFKZlybcobktyNKSAqQKECpgoEKZykSoymJQpK5cobkxcoynUpK
+ CnlQBTyglTis/Jdorrys/JOicAlw813KxLTqtfNPKx7OU/hUloOq3cQ8LCxxqt3E7JcKnZoKuMKp0K41
+ MIWlICmJThMUELSlKSSSlSlKSSSlSlKSSSlSlKSSSlSlKSSSVSlKSSSlpSlJMkplKkChqQKSmZcqt7kd
+ xVS9yQCnLyncrEyStjJKxshFTS7q/iHVUe6vYvKSnosJy2anaLDwytip2iBCmwXIZKRKjKACmUppTSki
+ pUppSSQpSpSlJJClKlKUkkqUqU8pkkaUvKaUkkqUqUpSSSpKpSlJJGlMgVOUIKcoUpr5B0WBnHlbmQdF
+ gZx5TqQ4d51UKjqnvOqhVyjwqdnEK3MYrCxFuYxQpTqVlFlBrOiISm0lRckHKBKYFGlJdyeUMFSlClLy
+ mlIlRJSpTPcnlDlOClSmZKiSmlMSlSlSluUZSlKkM9yW5RlJKlMtyaUySVKZByYuSlRcUaSjscs7IKvW
+ FZ2QUaQ42WeVkP5WplnlZTzqlwqbmJyukwTwuaxOV0uD2SpTtVnRSJUK+FMpqWEp5UU6NKXlKUydKlKl
+ KUkyFKXlKUySVIXlKUySVKXlKUySVJXlKUyUpwUqUpTSnCSmQKmCoBOCgVMy5Vr3aI5KqXHRKIU5WWVg
+ ZS28tywsop6HPeNUWnlBedUWk6pKdrEK3cY6LAxCtzGKSnTY5EBQayjBNKl5SlJJBSpSlJJJSpSlJJJS
+ pSlJJJSpSlJJBSpSlJJBSpSlJJJCpSlJJJSpSlNKaUqUylKVGUpSpTOU0ppSlKlLylKjKUo0plKUqMpS
+ lSmUp5UJSlKlMpTyoSnlKkrkqJKUppSpS7SjAoIKnKVKY3O0WLmOWrc7RY2WUuFTjZB1VUcqxkHVVRyh
+ wqdDGW1ilYeOVtYpQ4VOzUdEdVaTorAKbwqWcFCFMqKXCpjCSkmQ4VKSSSRpS6SSSKlJJJJKUkkkkpZJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySl0kkklLqLlJRckprWKuVYsVcpKZsVpiqsVpiSkwSSCSSlJk6
+ ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSmq9
+ RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9br0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJFSkkkklKSSSSUpJJJJCkkkklLpJkkVLlRIUk8IqRwpA
+ KUJQipZRcpKLinBTXsVZ0I1zoVF9sFShTYYAUdtYKo12q9U+UClZ9QVG6oLSedFQvKkggue+sJNrCk92
+ qTHaqx0Q2aagr1dIVWhyvsOirzK4MHVAKu9oCtWPhULbUyKmQKKxypCyUet0p6G+xyTzohNKdztEylNP
+ I1WbY3VaN7lRedU4KVUxW216KvUQrtZCfamrdTKzraFuPAKqWVhOBU4/pQphkK46sIZACepBtUwxS0U2
+ wgVMq61cqrQ6gFeqAUZUzqrV2piHWArTIUEipmBoq2TwrU6KllO0UYU4uWVng6q3lu1WeHaoqdfEK3Mc
+ aLn8N63sZ4hJTchRLVIPCiXhNCWMJwFEvCcPCKmTgs/KGivF4WflvEIhDiZJ1Ves6qeU/VAqdqnqdrGW
+ gDAWdiK87hJTWvsWXc6SruQVQIkpwU1zUXFHqxirFVYKv1VBFTWrx0n0LSawBM9oTbU4VmOosZtK1LWB
+ U3gBFSah+1aVNqxWugq7Q9NKnXD5UXodRlEcmKa7kmJ3pmoKbLEcIDEcJql0ydMklSSSSClJk6ZJSkkk
+ kVKSSSSUpJJJNUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunKZOUlIbFVerViqvSUwCNWghGrSU2Wq
+ ag1TSUpJJJJSkkkklLJJJJKUkkkkpdJJJBSkkkkFKSSSRUpJJJFSkkkkUKSSSSUpJJJJSkydJJSyZOkk
+ pQUlEKQQUqE0J08JKYQpAJ4ThFKoUHqZKE8oqal5WPlla15WNllOS4951UKXQU9/KCwwU5L0GFZC3qLd
+ FymLbC2aL9ElO16qgXqiL0/rILW7vTb1T9ZN6ySm7vS3ql6yXrJKbu9LeqXrJeskpu70t6pesl6ySm7v
+ S3ql6yXrJKbu9LeqXrJeskpu70vUVL1kvWSU3d6W9UvWS9ZJTd3pb1S9ZL1klN3elvVL1kvWSQ3d6W9U
+ vWS9ZJTd3pb1S9ZL1klN3elvVL1kvWSU3d6W9UvWS9ZJTd3pF6pC5P6yIU2i9BsehG1CstUgCkGS9YmU
+ 5ad75WRkmU5fFy7zqq4OqsWhADdUmcNugrZxXLGoC1cYwkou9jvV9j1kUPV1lqaVhb4en3qoLUvVTaYp
+ NkvUd6rG1N6qVMba3pw9VPVS9VJcG7vS3qn6yXrILw3N6feqXrJesgubu9LeqXrJeskpu7029U/WTesg
+ tLd3peoqXrJvWQWt71EvUVH1kvWSU3/US9RUPWS9dJLf9RN6io+sl6yIWlvb0+9URcpC5FDe3pb1SFyX
+ rJUyBtl6juVY3JvVRXNsOUg9UhapeslS0tzekHqn6yb1kqQ3jYql9miiblVvt0RAU52a/lc/knVbGW+V
+ i36lOQ1Z1RqygxqjMCTNFuVFaeOVl1K/Q6El7uYzlpVvWLRYr7LU0ha6G9RL1V9ZN6yFLS3Q5PuVIXJ/
+ WQpiLbL029VDcm9ZKlrc3pb1S9ZL1kl4bu9L1FS9ZN6ySm/6iXqKj66Xrpq0t71EvUVH10vXSQ3vUS9R
+ UfXS9dJTe9RL1FR9dL10lBveol6io+ul66LIG96iXqKj66XrpUpveolvVH10vXSpa3t6Y2Kl66Y3o0tL
+ d9RN6io+sl6yNMZb3qJ96oi5OLkaSG6HqW9URcpeslTNFPY9Z2Q9FfaqV9kpwDIGhkOWZaVevdKz7U8M
+ gazyhzqiOCgBqisk2aOVuYZ4WJRytfFdCTXL0GO7RXQ9ZVNsBWRco5RU2y9NvVM3JvWTKS3d6W9UvWS9
+ ZKlN3elvVL1kvWSpTd3pb1S9ZL1kqU3d6W9UvWS9ZKlN3elvVL1kvWSpLd3pb1S9ZL1kqU3d6W9UvWS9
+ ZKlN3elvVL1kvWSpTd3pb1S9ZL1kqU3d6W9UvWS9ZKlN3elvVL1kvWSpDd9RL1FS9ZL1kqU3d6W9UvWS
+ 9ZKlN31EvUVL1kvWSpTd3qJeqvrJjciApM96pXvU32qnbYngKDSyXLGyCtPIdKy79UWaLQfyiU8qLm6o
+ lQ1SZXXxDwt7FcufxjC2cd8ILC7LHou5UGWonqppDGW4Hp96p+smNyFMJbm9N6ipm5N6yFLW76iXqKj6
+ yXrJUvDe9RL1FS9ZL1kl4bvqJeoqXrJvWQXN/wBRL1FR9dL10lFu+ol6io+sl6yCwt71EvUVH1kvWSWt
+ /wBRL1FR9ZL1kkt71E3qKl66b10FN71EvUVH1kvWTkN8WJ96oC9SF6VJDe3pi9U/XTeulS8NsvSD1T9Z
+ OLkaUW6Hp96pC5P6yVLC3N6feqPrJ/WSpCe1+ixc1/Ku22rKy3ynAKcXLOqzXHVaGTqqDhqikM6yrtRV
+ OsK3WkzB06CtXHcsakrRoekl2qnqy16zK7UcXJpC1ul6iXqqblE3IUsk296cPVL1k/rJUxlu71EvVT1l
+ E3IUoNs2JvUVI3JvWRXOgLE/qKgLk4uQKm9vS3ql6yf1k1Tc3pb1S9ZL1klN3elvVL1kvWSQ3d6W9UvW
+ S9ZFcG7vS3ql6yXrIr27vS3ql6yXrJIbu9LeqXrJeslS0twvTeoqZuTesjSwt4WKQes8XKYuSpY3S9RL
+ lW9ZN6qNMkW61ycuVNtyd1yXCyhhkuWHluWlkWysfJdKcAyBz7SqzijWoDk9cicVOo6qBCnWEmGTr4ZX
+ Q4jtFzeKYW5jWQECGN22PTl6pNuTG9RGKm5vS3qj66XrpUpu70t6peul66VKbu9LeqXrpeulSm7vT71R
+ 9dL10qU3t6W9UfXS9dKlN7elvVH10vXSpTe3pb1R9dL10qU3t6beqXrpeulSm7vS3ql66b10KU3t6W9U
+ fXS9dKlN7elvVH10vXSpTe3pb1R9dL10qU3t6W9UfXS9dKlN7en3qh66f10qU3t6beqXrpeslSm2XoTn
+ IJtUHWqQBTG5yy8lyu2vWbkOlFIcvJKy7StO/VZ1jUmxFhXytTEKzWNWjjaIJL0OI9a9T1g4z4WpVagx
+ l0g9OHqkLU/rJrHJub0xeqvrKJuSYS296W9Uzcm9ZBQbwen9RUPXT+ugyBveol6io+ul66C5vb0vUVH1
+ 0vXQS3t6W9UfXS9dJBb3qJ/UVD10vXSWt/1EvUVD10vXSU396XqKh66XroKb5sUTYqXrpjenBLd9RIWK
+ j6ycXKSlN8PT71RFyf1kKU3S9RL1U9ZN6yNIbe9PvVP1UvVRpTc3pF6qeqm9ZKkt0PUHvVYWqL7UqSgy
+ 3rnsw8rZyXysPKMp9Kcq3lRYVOwaqLAkuDcpK0qHLMqV6kopdih60anrGper1dqaQp1mPRQ9ZzLkQXJh
+ Cm7vTb1U9ZL1kOFDa3pb1U9ZN6yNLS3N6b1FTNyY3JUgtw2KPqKkbk3rpUtb4sTixZ4uUxcmlLe9RLeq
+ XrJesgpu70vUVL1kvWSXhu70t6pesl6ySW7vS9RUvWS9ZJaW7vS3ql6yXrIobu9LeqXrJeskkN3emL1T
+ 9ZN6yKW4bFH1FUNqb1UWItz1Ei9U/VT+qihtb1Jr1S9VTbakkN/eq179FH1VXut0Qpki5uW5Y151WplO
+ lZNyeGzFrEqBKmQoEJypKadVfxiqDQr2Poi1Ju/iO4WxU9YOM+Fp12ppCwOlvTb1U9ZR9ZQFe3d6W9Uv
+ WS9ZJTd3pb1S9ZL1klN3elvVL1kvWSU3N6W9U/WS9ZJTc3pb1T9ZL1klNzelvVP1kvWSU3N6feqXrJes
+ kpu70t6pesl6ySW7vS3ql6yXrJKbu9LeqXrJeskpu70t6pesl6ySm7vS3ql6yXrJKbu9LeqXrJeskpu7
+ 0t6pesn9ZBTc3pGxUvWTG5OC4Ns2IFliAbkF9qcAvQZb1h5B1Wnk2Ssi92qcpao6rcwXcLAqOq18SyEE
+ PTUv0RTYsyq7RFN6bSG56ikLFneupC9KkOgbEM2Kob1A3JUpueopixZ4uUxckpv+omNipesmNyFKbvqJ
+ eoqHrJ/WRpDe9RLeqXrJesjSW4XqJeqnrJesjSm3vTh6p+qnFqVKb4ekXqmLk5uQpKWx6zMl6sWWrPyH
+ yiAlyctyzp1V7JMqiRqnKdLDOq6XDfouWxTBW7i3Qo5LC77bNEnWLPbkJG9MWt31E/qLP9dP66Km/wCo
+ l6ioeul66SW/6ibeqPrpeukpvb0t6o+ul66Sm9vT71Q9dP66Km9vT71R9dL10qU3t6Y2Kl66Y3JUptmx
+ IPVI3JC5OpToB6IHrOFyIL0OFLcc9Ucl6d16p32yiIqc7Lfysa92q0sl0rLt5UgUjYdVp4rllt5WhjGE
+ Sp6LEctWt+iwsWyFpst0TDFLdLkMuQTchm5NEVNnelvVQ3KPrIEIbu9LeqXrJeskhvb0t6pesl6ySG7v
+ S3ql6yXrJKbm9LeqfrJeslSm7vS3ql6yXrJUpu70t6pesl6yVKbu9PvVH1k/rJUubu9M56p+smdclSVs
+ l+i57NetXItkLEy3SnKcyw6q1jO1VR/KPjmCkp6PDetep65/FfC1KrUFOoHp96pC5P6yFIbW9SD1S9ZL
+ 1kqQ3t6ibFTN6gb0qQ3TYl6io+skLkaUHQD04eqIuT+um0ub29MXql66Y3pUpu70t6o+sn9ZFDd3pt6p
+ +sl6yVKbgepB6pC5SFyVJbu5Rc5VvWUXXJUpVzllZJVu21Z1705Dm5CpzqrV5VQ8pKb2MVu4j+Fz1Bhb
+ GNZCSnoK7NEX1Fm13InrJpCW56iW9UvXTeslSm4Xpt6pm5N6yVKb4epB6zxcpC5KlN4vUS9Uzeo+uhSm
+ 7vTh6o+un9dGlN/emL1S9dN66FLS3C9NvVM3JvWTqQ3g9PvVEXJ/WSpLcNib1FTN6j66VLm8bFVvfohm
+ 5V7rZCICWhluWTbytDJfKzrDqiperlamMVlVnVaFDoRU7VD1frsWNTYrjLUKU6XqJi9UvWS9ZNpBbu9L
+ eqXrJesjS1u+ol6ipesl6yFKbvqJeoqPrJeslSm7vT+oqPrJ/WSpDc3p/UVL1kvWSpLd3pb1S9ZL1kqU
+ 3d6W9UvWT+slSW6HqYeqAuUxcmFTdL0C16Cb0Cy5KlIcl+iwcty1Mi2VjZLpRU0HHVXcR2qou5VrGMFJ
+ T0uE9a9dmi5/FshaTLtElOgbFH1FTNyb1klN71Et6pesl6ySm7vS3qn6yXrJKbu9PvVH1kvWSU3t6W9U
+ fWS9ZJDe3pb1R9ZL1klN7elvVH1kvWSU3t6W9UfWT+skpu70t6pesl6ySm+HqRes8XqRvQUyyH6LEy3q
+ /fbKycl8p4SHNudqhMOqlbyht5Uq508Zy2cZ6waHLVx7ITSp3Kno29Z1dqL6yYQptl6beqhuTeslSG5v
+ Ud6qesmNyVIbm9N6ip+sm9ZKkN31EvUVH1kvWSpTd9RP6ioesl6yVKdEWKYsWcL1IXoUp0fUUTYqPrpG
+ 9Kkts2JvUVM3JvWRpToB6lvVAXKQuSpLae9Z+S5Edcqd9kogUlyss8rJfytPJMrNfynqS0crbxDwsWnl
+ a2M6ElO3S5W2vWXXbCML1FJaXRFiY2Kj66b10xDe3pb1R9dL10lN7elvVH10vXSU3t6W9UfXS9dJTe3p
+ b1R9dL10lN7elvVH10vXRU3t6W9UfXS9dJLe3pt6pesl6ySm5vTixUTckLklN11iqXPUDcgW2pKamS5Z
+ N5Wje6Vm3JKa3dXMYqp3Vqgwip3cRy1qrNFhYz4Wgy1JTpeoo71TNyb10FN7en3qiL0vWSU3d6beqfrp
+ vXRU3d6W9UvWS9ZKkt3elvVL1kvWSpTd3pb1S9dL10aU3d6W9UvXS9dKlN31EvUVH1k/rJUpu+olvVL1
+ kvXSpTeD05eqAuUjclSmWQ/RYOa5ad1uixsp0pynKuOqjUdU9vKavlFDr4pW1jOWBjOha1FkJtKdut+i
+ IXrPZcpm5CktkvSD1TNyb1kqU3w9PvVEXJ/XSpTd3pi9UvXTG9ClNzen9RUfWS9ZGlN71E3qKl6yXrJU
+ pu70g9UvWUhckhuh6W9Uxcn9ZKlNzelvVP1kvWSpLb3qLnqt6yg65KlJLHrPyHotlqpXvlOQ5mW5Zjzq
+ tDJMrPcNUlNvEOq6TCdwuZxjBW7iWRCFKehrfopF6oMu0UjehSW1vT71S9ZL1kqU3d6W9UvWS9ZKlN3e
+ lvVL1kvXSpTd3pb1S9dL10qQ3d6W9UvXS9ZKkt3elvVL1kvWQpTd3pt6p+sm9ZGlN3enD1R9ZSF6NKb2
+ 9OHqj66f102lNxz1Tvs0UXXKrdaiApp5T1h5Llp5L5WReUUNNx1RaTqgu5RauUlOziOW5jO0XP4xhbGP
+ ZCSnarcjB6zmWovrJpCm7vTb1TN6ib0KU3t6W9UPXS9dJTf9RLeqHrpeugpv+ol6ioeul66Sm/vS3qh6
+ 6Xrpqm/6iW9UPXS9dJTf9RL1FQ9dL10EN/em3qj66XrohTd3pt6pesl6yeFN3el6ipesl6yKm7vS3ql6
+ yXrJUpu70t6pesl6yNKbu9LeqXrJeslSm7vS9RUvWS9ZKlN3elvVL1kvWSpLd3pb1S9ZP6yVKbgep71R
+ Fyn6yVKZ3P0WRlFXrbdFmZDpSU5l/KrAaqzbqUIN1QU2cdbGMVlUBauOEFOtSVZBVSpWQgpkSmSSSUpJ
+ MkgpdJMnTSpSSSSClJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySl0kkklLqLlJRckprWK
+ uVYsVcpKZsVpiqsVpiSkwSSCSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSZOmSUp
+ JJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A
+ /9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJOipZJJJFSkkk
+ kkKSSSSUpJJJJSkkkklMgpKAKeUlMiVAlIlQJRUouUHuSKG9EKamQ9ZdtuqvZJWRc7VSAqbNVuq06HrB
+ qfqtSi1FTpOdoqN7kY26Knc+U+JpTUsdqosfqo2FDB1UnEh1KLFfZZosel8K42zRRnVKe61ZttuqJfas
+ +yzVDZTarfJV+hZVDpK1sdK1NscIdjoROyrWlC1NW56ovfqrNuqqPYUrUyZbCt13rPDCiNBCNqdH10N9
+ qrglM6U8FSn2qs+5KyVWeCncSknrKbblTgqbQUOJTpV3q7VkLGYCrVcphKncryFbrulYtRKvUkqEqdMW
+ SFVyTIU2HRDu4TQpw8scrNOhWrlDlZbxqjam5jWQtmjIgLn6jCvV2EBJTt/alE5SyvWKj6xThFTrfaUh
+ kLK9UpeqU6lOo7JVDJyJQHXFVbbCUFIL3yUqBqhOMlWMcapIdnEC0C2QqWIFptEhJLl5FazntgreuqlZ
+ d9UJwKmsy3arDMuFQtBCBucErU7gzEzspY7XuUi8oKb78iUAv3KsCSjVtJSUkY2VeoYoUUytGqqE0lSS
+ psKblMNhQemlSB6ZqTkmoWpssRggsRgm2pkmSSSUpJJJBKkkkklKTJJIqUkkkkpSSSSClJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq0EI1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkk
+ kklLpJJIKUkkkgpSSSSKlJJJIqUkkkihSSSSSlJJJJKUkkkkpZJJMUFKlOCokppQUlBThQBUwkpdJOmK
+ KWLigvKK5Bcipp3LLyWytixsqldVKcl52+vVVxWQVtW48qv9mRtLXpBC0K3kITKIRhWQipKLUvWQywqJ
+ aUlqb10vWQNpS2lJSf1kvWQNpS2lJSf1kvWQNpS2lJSf1kvWQNpS2lJSf1kvWQNpS2lJSf1kvWQNpS2l
+ JSf1kvWQNpS2lJSf1kvWQdpS2lJSb1kvWQdpS2lJCb1kvWQdpS2lJSb1kvWQdpS2lJSb1kvWQdpS2lJS
+ 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
+ 2FBSb1kvWQdhT7CgpL6yf1kLYUtpSUm9ZL10HaUxaUVJ/XS9dV4KaCkps+umNyAGlPtKSmTrVXsdKNsK
+ gaiUVOdcJVRzFrOxyUI4xSU06hC0qHwhNxyEZlRCSm225SN6rhhT7CkpL6yf1kHYUthSUm9ZL1kHYUth
+ SUm9ZN6yFsKWwoKS+sl6yFsKbYUlJvWS9ZB2FPsKSk3rJesg7ClsKCk3rJvWQthTFhSSm9dN66CWlRLS
+ jamz9oTi9VIKcNKSm0b0Ky2VENKRrJSQ07jKz7WkrXfSSqz8YlBTkFhRK2K8cUqbcUpKY0aLQqfCCygh
+ WG1EJKTi6FL11X2lNBSU2Dem9dA2lLYUlJvXS9dB2FLaUFJvXS9ZB2lLaUlJvXS9dB2lLaUFJvXKXroO
+ 0pbSgpN6yXroO0pbSlSk3rpeug7SlsKFITeul6yDsKW0pAKT+sl6yBtKW0p4Un9ZL1kDaUtpRUn9ZL1k
+ DaUtpRUn9ZL1kDaUtpSUn9ZL1kDaUtpSUn9ZL1kDaU+0oqTesl6yBtKfaUkpvWTeuglpUS0pKbIvUxeq
+ QBRACgpsPulVLXyi7ShurJQU03iUzW6qyaSpsoSUqlq06GqvVUr9NcIKbVQVkIVbUYBBSkk6ZBSySSSV
+ KUnSSTSpSSSSapSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpdJJJJS6i5SUXJKa1irlW
+ LFXKSmbFaYqrFaYkpMEkgkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSS
+ SUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/Q
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpJklKSSSRUpJJJJC
+ kkkklKTpk6SllElSUSElKlKVEhMkpIClCiCiApKY7UKxqsobwnBTkZLVj3sMroL2Ssy6iU4FTltBBVyl
+ 5CX2dEZSQnAoTB+iE8yjCop/RJT7U57mSoitaBoS9BG1NZjYRp0RBSnNSVqaNxKpOBladlMoBx9U0lTD
+ HbqtjHGip0UQtOmuAmkqZHhVrBKuFqC5iFqaRqlL7NKvMqlWmUBK1OP9kS+yLc9AJjQEbS4wxkxxlsei
+ FE0hG1OG/FVd2IugdQEM44TwUOB9jU24a2vswUxjhK1OQzDVhmItNtARW1BMJU57MaFarohWxWFMMCjJ
+ UhDICBcNFfLVWuYmqcLJas17NVuX1SqTqNUVNKutW2VlFZQrLKUQppmsqJYVomlQNKlCmhsKW0q6aE4o
+ RJU0CwoD6itf7OoPxkwqcQ1FWKGQVbdjKdePBQU2sYLTZwqdFcK8wIqWe2VTtplaBCgWShaXEsxJQDhe
+ S6A1AqPoBG1OCMI+Cc4i3fQCY0BG1OGMRWKsaFp+gFIVAIKQVUwrbGQnayFMBNKmJCA9WHKvYmqa7k7E
+ zk7ECpssRggsRgmqXSSSSUpJJJBKkydJJSySdMipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKXTlMnKSkNiqvVqxVXpKYBGrQQjVpKbLVNQappKUkkkkpSSSSSlkkkklKSSSSUukkkgpSSSSClJJ
+ JIqUkkkipSSSSKFJJJJKUkkkkpSSSSSlJipJEIKRFMpkKEIKZBECGFMJKSJilKYlFLEqBCmU0IqRFkoT
+ 6ZVsBPtRS5b8aUI4q1zWompFLkjGUvs60/STekipzDjKP2Za3pBL0gktcn7Ml9mWt6QS9IIqcn7Ml9mW
+ t6QS9IJKcn7Ml9mWt6QS9IJKcn7Ml9mWt6QS9IJKcn7Ml9mWt6QS9IJKcn7Ml9mWt6QS9IJKcn7Ml9mW
+ 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
+ /Zlr+kEvRCVsUnI+zJfZlr+iEvRCVsRcn7Mn+zLV9EJ/SCSg5X2VL7KtX0gn9IIMgcn7Kl9lWt6QS9IJ
+ LnJ+ypfZVrekEvSCSXJ+ypfZVq+kEvSCSC5X2VL7KtX0gl6QSWOV9lS+yrV9MJemElOT9lS+yrW9MJem
+ ElOT9lT/AGZavphL0gjaXK+zJfZlrekEvSCVpcg4yicZbBqCiagjanI+zJxjLW9EJxSErU5QxU/2Zavo
+ hP6QQ4lOT9mS+zLV9IJekEeJTmDGUxjrQFQUhWEOJLmnGQ3YkrX2BRNYS4kuMcPyTjC8lr+kE/pBLiSH
+ IGH5J/si1/TCXpBLiS5H2VL7Ktb0wm9MJcSnK+zJvsy1fSCXpBHiU5P2ZL7Mtf0Ql6IS4kFyfsyf7Mtb
+ 0Ql6IQtDk/Zkvsy1/SCb0gla0uR9mS+yrW9IJekErQ5P2VL7Mtb0gl6QStTlfZkvsy1fSCXpBK0uV9mS
+ +zLV9IJekErXByvsyX2ZavpBL0gla5yvsyX2ZavpBL0glawuV9mS+zLV9IJekErU5X2ZL7MtX0gl6QSt
+ LlfZUvsy1fSCXpBK1Fy/syX2danphRNYStjLlnHUTjLV9IJekEbWuT9mT/Zlq+iEvRCNpDk/Z0/2dahp
+ CXpBK2QOX9mT/ZFqCoJ/TCVs8S5P2RL7ItX0wnFYStROjlfY0/2RawqCf0ghxNaTk/Zkvsy1TUE3pBLi
+ Why/syb7MtX0gl6QTSVzlfZkvsy1fSCXpBJTlfZkvsy1fSCXpBJTlfZkvsy1fSCXpBJTlfZkvsy1fSCX
+ pBJTlfZkvsy1fSCXpBJTlfZkvsy1fSCXpBJLlfZk/wBmWp6QT+kElOV9mS+zLV9IJekElOV9mS+zLV9I
+ JekElOV9mS+zLV9IJekElOV9mS+zLV9IJekElOV9mS+zLV9IJekElOV9mS+zLV9IJekElOV9mS+zLV9I
+ JekElOV9mTfZlrekEvSCVrg5X2ZL7KtX0gn9II2ucc4koRwvJbvohI0hK1OB9i8lMYkLaNITeiErWuUM
+ ZP8AZlq+kE/pBK1OQcVROMtg1BRNQStDkjGUxjLSFQUxUErU5n2VN9mWt6QSNQQtDk/Zk/2ZanpBL0wj
+ anK+zJjjLW9IJvSCVock4yb7Mtf0gm9IJWlyfsyf7KtX0gn9II2lyvsqcYy1fSCf0ghanKGMn+zLT9IJ
+ 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
+ hanK+zJfZlq+kEvTCVqcr7Km+yrX9IJekErU45xVA4q2vRCY0hG1OL9lTjFWv6ASFIStTljGU/sq0xUF
+ L0ghanJOIoHDWz6QUTUErU432LyTjC8lr+kE4qCNocsYif7KtYVhI1BC0uOcZQ+zLYNQUfSCNocoYykM
+ VagqCcVBK1OV9lS+yrW9IJemELU5P2VL7Ktb0wl6QSU5P2VL7Ktb0gl6QSU5P2VL7Ktb0gl6QSU5P2VL
+ 7Ktb0gl6QSU5P2VL7Ktb0gl6YQQ5P2VL7Ktb0gl6QRU5H2ZL7Mtb0gl6QRtTk/Zkvsy1vSCXpBK1OT9m
+ S+zLW9IJvSCVqcr7Ml9mWr6QS9II2lyvsyX2ZavpBL0glaHK+zJfZlq+kEvSCVqcr7Ml9mWr6QS9IJWl
+ yjjKJxVr+kEvRCVqccYqmMVavohOKghanM+zJjirV9MJGoJWpyPsqk3GWn6QS9NK1NNlEKwyuEUMUwEC
+ VKa1SSCSbalFRJTlRKNqVKUpk8JWpUp0oSTSpdJJJNUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSZOmSUukkkkpdRcpKLklNaxVyrFirlJTNitMVVitMSUmCSQSSUpMnTJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMn
+ TJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkp/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJOkpZJ
+ JJJSkkkkVKSSSSUpJJJFCkkkklKSSSSUpJJJBSk8JBOgpgQoEI0Ji1BSIKQKctTQkpluTEymTJWpG9ko
+ LqJVwCVIMRtDmnFTjGWl6abYE61NEY6kMdXA1S2p1qaJoUDQtAtUCxHiU0fRTGlXC1NtStTROPKiMVaQ
+ YpipC1NGvHhWW1QjhkJEQmEqa7mIRYrLlCELUwYxW2NQmhGalaWcKBCnKgUQVMCFEhTITQngoYFqiWIs
+ JQjaUOxKEUhRhG0MQnBShKE0lTIOUw5ChOEwlSaUN7ZSBTkptqallUquaFfIlNsRU1G0IoqVkMUwxOBU
+ 1PSUTUrhYolqkBS1fSUhSjwpAJWpAKUjQrITwm2ponHSGPCvbUtqVoa7K4RgE8JJJUQmKdMQkpaU0pEK
+ JCKmUpKKcIqZQkkE8JqlJJkkFLOQLEcoD0FNdydiZydiaVNliMEGtGCapdJJJJSkkkkkqSSSStSySSSV
+ qUkkkipSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6SmARq0EI1aSmy1TU
+ GqaSlJJJJKUkkkkpZJJJJSkkkklLpJJIKUkkkgpSSSSKlJJJIqUkkkihSSSSSlJJJJKWTpk6SmQSTAp5
+ TVMSFGFNMkpYBOEkklLylKZJJKkk8JQipQUgVBKUQlJKSHKkCileEoSCSKlkySZBavKUpkklLylKZJJS
+ 8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklMpSlQSSUzlNKikkplKUqKSSGUpSopJKZSlKikkplKUqK
+ SSmUp5UEkrUylOoJ5QJQWSSjKYlN4lrOU0qEpkLXxZEppTJkeJnDKVIFDThLiUlCdDBUgUuJYWUJoSlN
+ KPExSXCkoSnlK2O2SiSlKiUbXBRKaUxTI2vDKUpUUkrXMpSlRSRtLOUpUUklpZylKikistnKZMmSVbJN
+ KaUySlyUlFJNJRbJSCiApAJvEi1JJJkrZAyBUgUMFPKVr0iiU0pFG1hYlQUyokI2ttaU4KjCSVqtnKUq
+ MJQlaQWcpSopJWyxZJJkkrXLylKiUkrUyTqIThC1hZJ1FPKVsRZJKMpShaGSZNKRStcolNKYpkgUspSl
+ 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
+ KiUlM9yW5DSCSku5PKGE6SmcpiVFJJS8pwoJ5SUlBTyhSnlBTIlNKjKZNJUzlKVBJK1M5SlQSStTOUpU
+ EkbSzlKVBJJTOUpUEkVM5SlQSSUzlKVBPCSl5TymhMiplKeUNOgpmopJQlalkgnhNCVoZAp5UEpStLMl
+ RKaUkrQuFIKIThK1M1ElKUxQtS0pwVFOhamcpSoSlKVqZymlQlKUbUzSUQU4StS6ZOmStSpSlMVFFLPc
+ n3IaSSkhKYlRTJKZSlKinSUylKVFJJTKUpUUkLQvKUqKSVqZSlKiklamUpSopJWplKeVBOhamYKkChJ5
+ StKRJRBSlG1LwmSlNKNqXSlRlNKSGRKiXJiolK1MtycFQhOAipKCnlDCdJTIqKRKZFS6eVFJJTKUpUUk
+ lMpSlRSSUylKVFJJTKUpUUklMpSlRSSUylKVFJJDKUpUUklMpSlMmTCVMpSUUkLUySUUkbUySTJI2pdJ
+ Mklal0lFJK1MklFJK0skkySVqZJpSUSlamUpShpwhamSZPCUJWpjKUpEJoQtS8p5UQpBC1Lpk6SFqWhO
+ AmlPKHEpeEyUpSnAqUmTpkVLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySl0kkklLqLlJ
+ RckprWKuVYsVYpKSMVpiqMVtiSkwSSCRSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkkl
+ KTJ0ySlJJJJKUkkkkpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkp//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukmSQtSkkkkbUpJJJG1KS
+ SSRQpJJJJSkkkkqUpJJJKlKSlJJClMgVIBQCmChSlEKJCnKiSlSkZCZSKilSGQRAUIFSBSpSSVElR3Ji
+ UVMpTyhynlFTMlRJTEqMoqUUgE41UwElLAIgKjEKJdCapmXITnKJemmUFLpwEgFMBKlLDROHJioFyVKS
+ 7kpQQ5TBRpTNOogpSipkkmlKUrSpNCdIo2haE0JEqO5C1MoTQmBTppUxlNKkVGEFKBUwogIgCKmTVNDl
+ PuRUyKGU5cokpwSxJTSnKiU61Mw5SDkJOCgVJgUpUAVJBSyaU8JiipcFOoSnBSUyhRIUgUxStSMhOEim
+ lG1JAnUAVMFBSxCZSTIKYlV7EdxVd5QUgcpMUSpMTVNmtGCDWjhClLpk6ZClKSSSSpKkkydKlLJJ0ySl
+ JJJIqUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOUycpKQ2Kq9WrFVekpgEatBCNWkpstU1Bq
+ mkpSSSSSlJJJJKWSSSSUpJJJJS6SSSClJJJIKUkkkipSSSSKlJJJkUKSSTJKXTqKdJS6ZJOkpaUpSSQp
+ S8pJk6ClJJJJKUkEkgklkE6aUpRUsVAqZUCilZSBUU4RVbMFPKiE8oqtRTJ0ybaFJJJIWpSSSSNqUkkk
+ lalJJJJWpSSSSVqUkkklalJJJJWpZJJJK1KSSSStS6SZJK0LpJkkrUukmSStS6SZOlalJJJJWpSZJJAq
+ WlNKdMm0tpSdKEkqXR0VCUJ0kqZQWMJKSZGlEqClKZJKlpK6aUkkaYyFSnlRTpUs4V5STJ0aXALJQnSS
+ XBjCUJ0klyySdJJSydJJFBUnSSStbSySSSNqpZJOklaqWThJJMKKZBOoynlClUpRKclMjS4LSnlMklS5
+ lKUqKdGlpXShJJGkUtCaFJJKlUtCUJ0kaVSoSSSSpkBUkkklS62JTKSZCkWoJ0ydCkFdKUySVMZC8p5U
+ UkKRTKUlGU6FJpSZJJJKkk6ZPBUpJJOjalkk6SVopZJOmQtIUknSStcFkk6SClkk6SSFkk6SC0haExUk
+ xSpbTFSBTQnSpQDKUxKSSVMoWKSSSVLrUokKaiQlS4SYwptCaE4QpBLMJFNKRKVMRYkJk5TI0hdJJJFK
+ kkkklKSSSSUpJJJJSkkkkkqSSSQUpJJJJSkkkkaUukmSSUukmTpKUkkkkpSSSSSFJJkklLpJk6SlJJJk
+ lMgnlRlJBS5USnSQUxhSASThFeCqEoTylKSbYkJoUkyCbUE4TJJLSWUpiUkyLGQsUydMktpSdMkiuAXS
+ TJJLwukmSSTa6SZJFVrpJkklpXSTJJIXSTJJJXTJJJKWThMnTaQuE6ZJKlKJUU5TI0uC4KeVFOlSmUp5
+ UUkVq6SSSSlkkkkkUukmSlJIXSTSlKLICpRKeUyCbWThJJJFsgnlRTyktK8piUkkKY6WTpk6VJpSdJJC
+ krJJJJUpSSZJFS6SZJJS6SZJJS6SZJJIXSTJIrrXSTJJIXSTJJIK6SZPKSwhdJNKUoLaUVGU5UUqXgLg
+ qSiE6FMgKiolSTFKl4kxhOAlCcJUniXAUgmCeUqYybXTJSmlKlik6ZOkpSSSSKlJJJJKWShOkkpaEk6S
+ SloShOkkpaEkkklKSSSSUqEkkkFKSSSSUpJJJJSkkkklKSSTpKWSTpJKWSTpIKWSTpkVLpiUkychZOEy
+ cI2kMgnUQU8pWyArqJTymKSrYFRUiE0IWolcFPKaE6SwrynlRSSYyF5STJ0rUAunTJ0rXAKShJJG1yky
+ dMlaVJJJI2oqSSSStZSyUJ0krUtCUJ0yNqpSSdJNKVwpBQTyo6SyUSlKYpUpiU0pymhGlKlOCmSRpTMF
+ SCgE8pUpkkoylKKl0yaUpSSukmlPKSbUmKdMkm1kkkklWpOmToUq15SlMklSLXlKUySFIXSTJJUhkkml
+ KUKQukmlJOCl0kyScldJMkguBXSTJJJtdJMkktK6SZJKkLpJkkKSukmSSpK6SZPKVMZC6RTSmJSpFKJS
+ lMUkKTTIFOohOjS8LFQKmVEpUyAsYTwnhJGkmSgpBMkhTBLVkkmSSpaAumTpIrlkk6SSlkk6SSlkk6SS
+ lkkkklKTpkklLpJkkkrpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkkClSYp0ybS
+ rWTSnTQlSlSpBNCcJUpdOmSSpC6dRTyhSFJinlMlSlkkkkqUpSCZJKlMgnUZTylSKXUSnlRKVJWKSRSR
+ pS4UgoJwUlM0k0pSklRCYhPKaUksSEoTpkVKTpkk4IXSTJIoUkkkkpSSSSCVJ0ySSl0kydJS6ZJJClKS
+ SSSpSkxTymKVKYlIFOU0JUpmCphDCkChSmRUSnlMSlSmJCaE6SNKXATwmCdKlKSSlNKVJZSlKiklSl5S
+ TJkkMklGUpSQySUZSlJS6SaUklLpJkkkLpJkkkrpJkklKSSSSSqE0J06SWMKQCSdJKoShJJJS0JoUkyS
+ Fk0qSiQipaU8poTgJIXClCYJ0kKTFOkgVMUk8JQmpXCdMnSUoqJUlEpKYlMpQlCKlgpBNCdJS6SSSKlJ
+ k6SClpSSSSUxKSeEoRtSgFMBRCkEFLwmKeUxSUxKZOUoSUsnlNCdBSpSlJJJS0pSlCUJKVKeU0JJIXTS
+ kkkhUp0ySSV0kkkksSmUkySVJ0kkVKSCScJKXAUoUQU6SliolSKiUUKSSSSQpJJJBS6SZJJC6SZJKkrp
+ 0ySVKXlJMklSl5SlMklSV0kySeFLpQkkkpaE0KSZJSykFFSCVqZgJEJgU8oKYkKBCmSolFTFJOkkpSdM
+ nSUukkkkpSSSSSlJk6SSFJJkklLpkkklKSSSSUpJJJJSgpBME4SSF4SISlKU1cxhNCkmSQsknSSUsmTp
+ QgpQUgmSQpC6ZOmSpCkk6SVKWKiVIpoSpSydKEkqUpOkklSlJBJJGksgnhMCnSSxKgVMqJCKmCQTwnhJ
+ S4UgohSSSohRKkmSWlinSSSQpJJJJSkkkklKSSSSUpJJJJSkkkkVKTJ0kksUpTwlCSlJ0oTpKWIUSFJK
+ ElMISAUoShJSgFKEwTpKVCaE6ZJSyZSTQkpZJKE4CSlJ4SAUk1TGEoUkklMYShSTJKWhKE6SKloShSTJ
+ KWShOkklaEk8JJKWAUgEk6SlQmITymKSmJSCdJJS4TwmCeUkKhRIUpTFJTFMpQmhJSk6UJJKXSSSSUpJ
+ MkgpSSSSSlFRJTlMUlMZSlPCUJKXCkFEJwkpmkoynlFSiop0klLQknSSUpJJJJSkkkklKSSSSUpJJJJS
+ oTQnSQUtCUJJJKVCSdJJSoSSSSUsU0p1FJLIFPKikkplKaUkyKFSkkkipSUJ0klLQnhJOkpSSUppRUol
+ MkkjalwnTBSQtSkkkkrUpJJJK1KSSSStSoShJJK1KhJJJFSySdMkhUJQknQKlkkkkwqUkkkgpZOkkipS
+ SeEoRUsknhJJSySSSSlJJJJJUnTJ0lKUSnTJKYqQTJwkpmEoTAp5QpSxCjClKZClLQnSSSpS6iU8pkKU
+ xJTSnITQlSlwU4KiApBGlLp0ydFSkkySSl0kySSlJJJJKUkknSUskkkkpSSSZJS6SSSSlJk6ZJS6QTKQ
+ SUpRcpqLklNWwKuQrTwgEJKUxWmKu0I7ElJwkogp0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk
+ 6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJT//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQKlJJJJilJJJJKU
+ kkknhSkkkk4KUkkknIUkkkipSSSSKlJJJIKUE4KZOkpeUxKSYoKWKiU5KiSgheUpUCU0oKSbk0qEppSU
+ klPKHKUoqZkqO5RJUSUkp2uRA9VN6cWIIbLnoTnKG+UplBSpUgVGE6IUlaVLcgbkxenKSuchFyiXqMoq
+ ZgogKCFMFJSXcluQ5SBTSpMCnCGCpgpqmUpiUxchucmqU5yHuTEqKSkociByrgqW5FSYlRlDLlHeipsA
+ qW5Vg9PvRUnL1AvQi9NuRUm3J9yCCnBSUmlNKgCnlJS6UppTSilICpByDuS3pJT7lEuQt6YvSUzLkg9B
+ LktySmwHpy5Vw5PvQUlLlHchFybckpOHKYcqwcnD0lNnclKAHqQckpk4qu9GJQXoKQlTYoFTYkptVo4Q
+ K0cJKUmTlMgpZJJJBSk6ZJJS6SSSSlJkk6SlkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpymT
+ lJSGxVXq1Yqr0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKXSSSQKlJkkk1SkkydFS6SZOn
+ KUknSRUxTKSUIqYp0oTwkpSUJ0klLJk5TJKUkkkgpSSSSClJ0ySSl5SlMkipSSSSKlQkkkihSUpJJFSk
+ kklEUqSSSQUpJJJFSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklLpJkklLpJkklLpJkklLpJkkl
+ KSSSSUpJJMipdJMknKXSTJIqXSTJJKXSTJJKXSTJIqXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJIKXS
+ TJIKXSTJIKXSTJJKXSTJIKXSTJIqXSTJJyV0kySKF0ydMkpSSSSKl0kySKl0kySKl0kySSl0pTJJKXlJ
+ MkkpdJMkkpSSSSCl0kySCl0kySCl0ySSCVJ0ySSF0kkk1SkkkklKSSSSUumSSSUpOmSRUumSSSUpJJJF
+ Sk6ZJJS6SZJJS6SZJJSkkkkVLpJkklKSSSSUpJMkkpeUpTJJKXTJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSdMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdNKSZBS8p1FKUFMkp
+ UZSlJTKUpUUpSUylKVGU8oKXlKUySSl5SlMlKSl0k0pSkpSSSSSlJJJJKUkkkipSSSSSlJJJIqUkkkkp
+ SSSSSlJJJIqUkkkipSSZJFS6SSSClJJJJKUlKSZJS8pSmSSUvKSSSSFSlKSZJKpTSkmSQvKdMkkldJMk
+ kpdOmSSUukmTpKXSTJJKXSTJ0VKTJ0xTSpZJJMmKXSTJJKXSTJIqXSSSSUpJJJFSkkkklKSTJIqXSSSS
+ UukmSSUpJJOkpZJOkipZJJOkq1kk6SSrUlKSZJS8pJkklLpJJJpUukmSQUukmSSUukmSSUukmSSUukmS
+ SUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUumSSSUpJJJJSkkkklKSlJJFS
+ pSSSQUpMnSSUsnSSSUsknSSUsnSTIKXSTJIqXlKUySSl5SlJJJSpSTJIqXSTJIqXSTJJKXSTJJKXSSSR
+ UpKUkkVKlJJJBSkydJJSySdJJSyUpJJKVKUpJJKWSShJJSk6UJQkhdJJJJSkkkkkqSSSSUpJJJJSkkkk
+ lKSSSSUpJJJFSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpOmSSUumSSSUpJJJJSkkkk
+ lKSSSSVakkkkFWpJJJFSkkkkCpdJJJNKl0ySSClJJJJKUkkkkpSZJJJSkkkklKSSSSUpJMkkpdJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSQpJOkkpZJOmSSpJJJJSk6ZJJS6ZJJJSkk6SSl
+ kk6ZJSpSlJJJSpSSSSUpJOkkpZJOmQUqU6ZJJS6ZJJJSkkkkFKSSSTwpZJOkipZJOkkpZJOkkpZJOkkp
+ ZOmSSUukmSSUukmSSUukkkkpSUJJJKUlKSSSlSkkkkpSSSSSlJSkkkpSSSSSlJJJJKWSTpkFKSSSQUuk
+ mSRUukmToKUmTpIqWSTpJKWSTpJKWTpJJKXSTJ0lKSSTJKXlKUySKl0kySSl0kkklKSSSSUpJJJJSpTq
+ KdNKl0kySYpdJMkkpdJMkkpSSSSSl0kySSl0kySSl0kySSl0kySSl0lGUpSUySlRSSUylKVFJJS6dRSl
+ JS6dRlKUlLp1GUpSUyTJpTpKUmSSRUpJJJFSkkkklLpJkklKSSSSUpJJJJS6SZJJS6UpkklLpkkkVKSS
+ SSUpJJJJSk6ZJJS6SSSKlJJkklLpJkklLpJkklLpJkkFLpJkklLpJkklLpJkklLylKZJJS6SZJJS6ZJJ
+ JSk6ZOkpSSSSSlJJJJKUnTJIqXSTJJKXSTJJKXSTJJKXTJJJKXSTJIKXSTJIKXSTJJKXSTJJKXSTJIqX
+ STJJKXSTJIqXSTJJKXSTJJKXSTJJKXSTJIKXSTJJKXSlMkkpdJMkgpeEoSSSUpJMkkpeUySZJS6SSZJS
+ 6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SSSSlJJkklLpJk6SlJJJJKUlKZJJS8pJkklMkyZOkpS
+ SSSKl0k0pSkhdJNKUpKXSTSlKSl0k0pSkldJNKUoKXSTSlKSV0k0pSkpdKU0pSkpeUpTJJKXSTJJKXSl
+ MkiheUpTJJKXSTJJKXSTJJIXSTJSkpdNKSZJS6SZMkldJJJJSkkkklKSSSSUukopIKZJJkklLpJkklLp
+ JkklLpJkklLpJkklLpJkklLpJkkVLpJkklLpJkklLpKKSSl0kkkFKSSSSUpJJJFSkkkkVKSSSSUpJJJJ
+ SkkkklKSSSQUulKSSCl5STJJKUkkkkpSSZOkpdJMkipdJMkipdMkknKUnTJIFS6SZJMKl0pTJJKXSTSl
+ KSl0k0pSkpdJNKUpKXSTSlKKl0k0pSkpeUpTJklLykmSSUpOmSSUulKZJFS8pJkklLpJkklLpkkklKSS
+ SSUpOmSQKl0kySClJJJklLpJk6Sl0kydJSkkkklKSSTJKUkkmSUulKZJJS8pkySSmQUgoKQSUyUXJSoO
+ KSkb0IhTeUOUlMmhGaEJqOwJKZAJ4UgE8JKYgJ4TwkkpimUiolJSkkydJSkkkklKSSSSUpJJJJSk6ZOk
+ pSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61YakpkmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSU//9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkk2lKSSSRpSk
+ kkk5Skkkk5CkkkkVKSSSStSkkkkbUpJJMhal06ilKFqXlMSlKiSlaliVElOSoFBSiVGUxKiSkplKUqIU
+ giheUpSTJKVKYlJMUaUxJUZUiEtqVKXaUVqEAiAoUpImISBSlGlMCokIiaElI4UgFKEkVKATppSlJSim
+ lOmKFKXDlLegkqBehSmwXqJdKCHqQKFKZpQnClCFKYQmUyFAoKWKZOlCSmKeUkkVKTpJ0VKThMnTqUvK
+ eVFPKNKZSmJTSokpq5clRLkiVFK1MpSlRhSASUskpwlCSmKaVIhNCVqYpKUJQkpaU0pyFEhBS4KI0oSm
+ 1JSUKD1MKD0lISpMUSpMSU2q0YILEYIKXKZOmSUskkkkpSSSSSl0kkkFLJJJJKUkkkipSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpdOUycpKQ2Kq9WrFVekpgEatBCNWkpstU1BqmkpSSSSSlJJJJKWSSSSUpJJ
+ JJS6SSdAqWhMpJk1SySdMipSdJJOUukkkipSZJMipeU0pJklMpSlRTpKXTJJ0FLJJ0kFLJJ0kFLJJ0kl
+ LJJ0kVLJJ0kVLJJ0kULJJ0klLJJ0kKSsknSQpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSyS
+ dJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJGlLJJ0oQpTFJShNCClklKEoSUxSUoShFTFJPCU
+ JKWSTwnhFTFJShKElMUoUoShJTGEk8JJKWSTpJKWSTpJKWSTpIKWSTpIKWSTpJKWSTpJKWSTpJKWTpJ0
+ LUsknhKEuJSySeEoR4lLJJ0oS4lLJJ4ShHiUsknhJLiUsknSR4lLJJ0kuJSySdJLiUsknSS4lLJJ0kOJ
+ SySeEoS4lLJJ4ShDiUsknShLiUsknhKEOJSySeEkrUsknSRUsknSSUsknSSUsknSSUsknSSUpJJJFSyS
+ dJJSySdJJSySSSKlJJJJKUkkkkpSSSSSlJJJJKWSTpJKWSTpJKWSTpJKWSTpIWpZJOklalkk6SVqWSTp
+ JWpZJOklalkk6SVqWSTpJWpZOkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpZMpJoS
+ UsknhKElLJJ4ShJSyUJ4TwkpikpQkgpZJPCUJKWSTwlCSlkk8JQkpZOlCdJS0JJ0klLJJ0klLJJ0kVLJ
+ J0klLJJ0kVLJJ0klLJJ0klMYSUoTQhalkk8JQlxKWhJShKEuJTFJShKEuJTFJShKEOJTFKFKEoS4lMYS
+ hShKEuJTGEoUoShLiUwhKFKEoS4lMYShShKEuJTGEoUoShLiUxTwnhKEuJS0JQpQlCPEpinTwklxKWST
+ pJcSlkykmhK1MUlKEoQUxSUoShJTFJShKEVMUlKEoSUxSUoShJTFJShKEVMUlKEoSUtCUJ4SSUtCUJ0k
+ VLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLQlCdJJSySdJAqWSTpIKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJ
+ KWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKW
+ STpIKWSTpJKWSTpJKWSTpJKWhKE8J4SUxhKFKEoRUxShShKElMYSUoShFTGEoUoShJTFJShKEVMUoUoS
+ hJTGE6eEkLUtCUJ0kOJSyUJ0kuJSySdJLiUsknSS4lLJoUkkOJTGEoUoSS4lMYShSShLiUxhPCdJLiUq
+ EoTpJcSloSTpJcSlkk6SXEpZJOkjxKWTQpJJcSmMJQpJJcSmMJQpJJcSmMJQnSS4lLQknSQ4lLJJ0keJ
+ SySdJLiUslCdJLiUtCUJ0kuJS0JQnSS4lLQlCdJHiUtCUJ0kuJS0JQnSS4lLQlCdJLiUtCUJ0kuJS0JQ
+ nSQ4lLQlCdJLiUtCUJ0kuJS0JJ0kuJSySdJJSySdJJSySdJJSySdJJTFJPCUJKWSTwlCSlkk8JQkpaEo
+ TpQkpaEoUoShJTGEoUoShJTGEoUoShJTGEoUoShJTGEoUoShJTGEoUoShJTGEoUoShJS0JJ4SSUtCUJ0
+ kkLJJ0klLQlCdJJK0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJ
+ BS0JQnSSUtCUJ0klLQlCdJJS0JJ0yVqWSTpJcSlkk6SXEpZJOklxKWSTpJcSlkk6SXEpZJOklxKWSTpJ
+ cSlJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJLiUxhKE6SHEpZJOklxKWST
+ pJcSlkk6SXEpZJOkjxKWSTpJcSlkk6SXEpZJOklxKUkkklxKUkkklxKUkkklxKUkkklxKUkkkjxKUkkk
+ lxKUkkkhxKUkkkjdqUkkkjSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJk6SVKWSTwlCVKWSTw
+ lCVKWSTwlCVKWSTwlCVKWSTwlCVKWSTwlCVKWSTwlCVKWSTwkgpZJOkgpZJOkkpZJOkkpZJOkkpZJOkk
+ pZJOkkpZJOkipSSSdJSySdJJSySdJJSySdJFSySdJJSySdJJS0JQnSSUtCSdJJSySdJBSySdJJSySdJJ
+ SySdJJSySdJJSySdJJSySdJJSySdJJSySSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0FLJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJ0lLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klL
+ JJ0klLJJ0klLJlJKElMUk8JQihZJPCUJKWSTwlCSlkk8JQklZJPCUIKWSTwlCSVkk8JQkpZOlCeElLJJ
+ 0klLJJ0klLJJ0kkLJJ0klLJJ0kVLJJ0kkLJJ0klLJlKEoSUxhJPCUJJWSTwlCSlkk8JQkpZJPCUIKWhK
+ E8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWShPCUJKWhJPCUJKWSTwlCSlkk8JQipZJPCUJKWhKE8JQ
+ kpZOkkgpSSSSClJJJIqUkkkipSSSSKlJJJJKUkkkkpSSSSClJk6SClkk6SClkk6SSlkk6SSlkk6SKlkk
+ 6ScpZOkkipZJOkkVLJJ0oTCpZJPCUIKWSTwlCKlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCSKlkk6SS
+ lkk6SSlkk6SSlkk6SSlkk6SSlkk6SKlkk6SSlkk6SClkk6SClkkkklKSSTpKWTpJ0lLJJ0klLJJ0ySlk
+ ykmSUsknhKElMU8KUJbUlLJKUJiElMSUNxU3BBekpG9yHuSeoSkpsMKssKpsKssKSmyCkSoApiUlMy5R
+ 3IZKaUlJJToYKmElLpJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFi
+ OUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Xr0kkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6ZBSkk6ZJSkkkk5SkkkkUKSSSSUpJJJJSkkkklKTJ0kFMU6e
+ EoQUxTFThRISUjKiUQhQISUjKgplQKKlwpgKARAiheExCkolGlMYSSlKUaUqEoTpIpYppUiFAhJS+5OH
+ KEJAIKShyeUIKSCmRKiXJiolJS+9IOQymBRU2AU6E0ogKSmDghFHIlQLUVIgiNS2KQagpIFKVEBOmlSi
+ UMlSKgU0qVKeVCU4KCmSSZOipUpSmKZEKZSnlRTp4UvKUpoShEqVKSZOAmFKoShSAUoQUwAUgE8JJKVC
+ dNKaUlKKZKUpSUqEoTp0lMCFEhTKiUlLQptCiERqSmQUHoiG9JSAqTFEqTElNpiMEFiMEFLlMkUySlJJ
+ JJKUkkkkpdMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl05TJykpDYqr1asVV6Sm
+ ARq0EI1aSmy1TUGqaSlJJJJKUkkkkpZJJJJSkkkklLpSmSlAqXlJRlOmqXSTJ0VKTpJSipdJNKUpwUpM
+ mlLcipeEoUdyfckpeEoS3JSkpeEyRKjKCmSSjKUoKZJKMpSgpkkoylKSmSSjKUpKZJKMpSnKZJKMpSip
+ kkoylKSmSSjKUoqZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSj
+ KUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUoFTNJRlKUxTJJRlKUlMklGUpSUySUZSl
+ JTJJRlKUVMklGUpSUySUZSlJS6SjKUpKXSTSlKSl0lGUpSUySUZSlBTJJRlKUlMklGUpSUySUZSlJTJJ
+ RlKUlM0lGUpTSpkkoylKCmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSipkkoylKSmSSjKUpKZJKMp
+ SkpkkoylKSmSSjKUoKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkkoylKcFMklGUpRUySUZSlJTJJRlKUl
+ MklGUpSUySUZSlJTJJRlKUVMklGUpSUukoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkko
+ ylKSmSSjKUpKZJKMpSgpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpknUJTykpkkoylK
+ SmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSipkkoylKSmSSjKUpKZJ
+ KMpSgpkkoynlJS6SaUpSUukmlKUlLpKMpSkpkkoylKSmSSjKUpKZJKMpSipkkoylKSmSSjKUoqZJKMpS
+ kpkkoylKRUySUZS3KMqZJKMpbkFMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGUpS
+ UySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMpSlR3JbklMklHcmlOCmaShKUoqZpKEpSipmkoSlK
+ SmaShKUpKZpKEpSkpmkoSlKSmaShKUpKZplGUpRUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMk
+ lGUpSUySUZSlJTJJRlKUFMklGUpQUySUZSlFTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZS
+ lJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlM
+ klGUpSUySUZSlBTJJRlKUlMklGUpSUyTyoSlKSmaSjKUpKZJKMpSkpkkoylKSmSSjKUoqZJKMpSipkko
+ ylKSmSSjKUpKZJKMppQKmaUqEpSmKZylKhKUpKZpKEpSgpmkoSlKSmaShKUpKZpKEpSkpmkoylKSmUp5
+ UJSlJTOUpUJSlJTOUpUJSlJTOUpUJSlJTOUpUJSlJTOUpUJSlJTOUlCUpSUzSUJSlJTOU0qMpSkpkkoy
+ lKSmUpSoylKSmUpSoylKSmUpSoylKSmUpSoylKSmUpKEpSipmkoSlKSmaShKUpKZpKEpSkpmkoSlKSma
+ ShKUpKZpKEpSkpmkoSlKSmaShKUpKZpKEp5SUySUZSlPUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRl
+ KUlMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGUpSU
+ ySUZSlBTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGU0pKZpKEpSkpmkoSlKSmaShKUpKZpKEp5SUySU
+ ZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklCUpTSpkkoylKCmSSjKUpKZJKMpSkpkkoylKSmSSjKU
+ pKZJKMpSkpkkoylKSmaShKeUlMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGU0pKZ
+ pKEpSkpmkoSlKCmaShKUpKZpSoSlKSmSSjKUoqZJKMpSkpkkoylKSmSSjKUpKZpKEp5SUySUZTSkpmko
+ SlKSmaShKUpKZpKMpSjSmSSjKUpUpkkoSnlBTJMoylKeFMklGUpUlqZJKMpSlamSSjKUpWpkkoylKVqZ
+ JKMpSlamSSjKUpWpkkoylKVqZJ1CU8pWpkkoylKVqZJKMpSlamSSjKUpWpkkoylKVqZJKMpSlamSSjKU
+ pWpkkoylKVqZJlGUpTCpkkoylKapkkoylKKmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpmkoSlu
+ SUzSUNyUpKZpKEpSipmkoSlKSmaShKeUlMklGUpSUySUZSlJTJJRlNKSmaSjKUoKZJKMpSkpkkoylKSm
+ SSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpdJRlKUVMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZ
+ SlJTJJRlKUlMklGUpSUylKVGUpSUylJRlKUlMklGUpSUySUZSlJTJJRlKUlMkpUZSlJTKUpUZSlJTKUp
+ UZSlJTKUpUZSlJTKUpUZSlJTJJRlKUlMklGUpSUySUZSlJTJKVGUpSUylKVGUpSUzSUJS3JKZpKG5Lck
+ pmkobktySmaShuS3JKZpKG5LckpmkobktySmaShuS3JKZpKG5LckpmkobktySmaShuS3JKZpKG5Lckpm
+ kobktySmaShuS3JKZpKG5LckpmkobktySmaShuS3JKZpKMpSkhkkoylKSmSSjKUpKZJKMpSklkkoylKS
+ mSSjKUpJZJKMpSkpkkoyluSUySUNyW5JTNJQ3JbklM0lDcluSQzSUNyW5JTNJQ3JbklM0lDcluSQzSUN
+ yW5JTNKVDcluSUzSUNyW5JLNJQ3JbklM0lDcluSUzSUNyW5JTNJQ3JbklM0lDcluSUzSUNyW5JTNJQ3J
+ bklM0lDcluSUzSUNyW5JTNJQ3JbklM0lDcluSUzSUNyW5JTNJQ3JbklM0lDcluSUzlMo7kpQUylKVGUp
+ SUylJRlKUVMkpUZSlFTKUpUZSlFTKUpUZSlJTKUlGUpSUylJRlKUFMklGUpTVMklGUpSUySUZSlJTJJR
+ lKUlMklGUpRUySUZSlFTJJRlKUVMklGUpSKmaShKeU1TJJRlKUFMklGUpSUySUZSlJTJJRlKUVMklGUp
+ SUySUZSlJTJJRlNKSmSSjKUpKZJKMpSipkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpk
+ koylKCmSSjKUpKZJKMpSkpknUJTykpkkoylKSmSSjKaUlMkyjKUpKSBSAQw5TDklM4ShR3p96Sl4TEJb
+ kiUlI3BBeEclCekpqPCHCO9CSUyYFZYEBisMSUlATEJwkUlIyFGEUhNtSUwARAmhOkpdJJJJSkkkklKS
+ SSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUunCZOElLFAsRygWJKar1Fqk9Rakps1qw1V61Yakpk
+ mTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSU//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSRpSkkkklKSSSSUpJJJFSkkkkFKSSSQtCkkkkLUpOmSlC1MklGUtyVqXTFKUxKVqYlQKmSoFOCkTk
+ MlEchFPCmQKI1DaEZoTgpUqBKKQhuCeApHKcFKEgE6kLynlNCQCaQlkE+1IIgTSlHsUdiPCiQoyUIoSh
+ TKjKbalQmLUpTylakZaoFqPymLUbUiCkCn2pQngqZBPCYKYTlLbU+1SSlNUxhJIlMSmlTEqBCmmhREqR
+ wnAU9qQam2lYBShOAnhG1IyE0IhCaE4FDEBShKEpU0SpUJQlKUolSoTgJBSATClcBOkmJQUsVAlSJQyk
+ pYuTbkxTJKZAqQKgApgJKZSlKSSSliVElSKgUlLgojSggojSkpMFB6mFB6SkDk7Ezk7ElNqtGCAxGCSl
+ ymTpklKSSSSUpOmTpKUmTpklLJ0ydJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpymTlJSGx
+ VXq1Yqr0lMAjVoIRq0lNlqmoNU0lKSSSSUpJJJJSySSSSlJJJJKUmTpQgpZJPCUIKUkkkipUpSmKiSip
+ cuUS9QLkNzkVJC9RNiAXqBsSU2fUT+qqZsTeokpveqn9VUfVTi1JTd9RLeqYtT+qgpt70t6q+ol6qCm1
+ vS3qr6qXqoKbW9Leqvqpeqkptb0t6q+ql6qKm1vS3qr6qXqoqbW9Leqvqpeqiptb0t6q+ql6qKm1vS3q
+ r6iXqpKbW9Leqvqpeqkptb0t6q+ql6qSm1vS3qr6qXqpKbW9Leqvqpeqkptb0t6q+ql6qSm1vS3qr6qX
+ qpKbW9Leqvqpeqkptb0t6q+ql6qSm1vS3qr6qXqpKbW9Leqvqpeqkptb0t6q+ql6qSm1vS3qr6qXqpKb
+ W9Leqvqpeqkptb0t6q+ql6iKm1vS3qr6iXqJpU296beqvqpeoo7U2t6feqnqpeqham3vS3qp6qXqo2pt
+ 70t6qeql6qVqbe9Leqnqpeqlam3vS3qp6qXqo2pt70t6qeql6qVqbe9Leqnqpeolam3vS3qr6iXqJWpt
+ b029VvUS9RK1NnelvVb1EvUStTZ3pb1W9RL1ErU2d6W9VvUS9RC1Nnen3qr6iXqJWps70t6reol6iVqb
+ W9LeqvqJvVRCm3vS3qp6qXqp1Kbe9LeqnqpeqlSm3vS3qp6qXqoUpt70t6qeql6qVKbe9Leqnqpeqkpt
+ 70t6qeql6qSm3vS3qp6qXqpKbe9Leqnqpeqkpt70t6qeql6qSm3vS3qp6qXqpKbe9Leqnqpeqkpt70t6
+ qeql6qVKbe9LeqnqpeqjSm3vS3qp6qXqpUpt70t6qeql6iVKbW9Leqvqpeqgptb0t6q+ql6qSm1vS3qr
+ 6qXqpKbW9Leqvqpeqkptb0t6q+ql6qSm1vS3qr6qXqpKbW9Leqvqpeqkptb0t6q+ql6qSm1vS3qp6qXq
+ pKbe9Leqnqpeqkpt70t6qeql6qSm3vS3qp6qXqJKbW9LeqvqJeoiptb0t6q+ol6iSm1vS3qr6iXqJKbW
+ 9PvVT1E/qIKbW9LeqvqJeogptb0t6q+ol6iSm1vS3qr6iXqJKbW9LeqvqJeokptb0t6q+ol6iSm1vS3q
+ r6iXqJKbW9LeqvqJeokptb0t6q+ol6iSm1vS3qr6iXqJKbW9LeqvqJeokptb0t6q+ol6iSm1vS3qr6iX
+ qJKbW9LeqvqJeokptb0t6q+ol6iSm1vS3qr6iXqJKbW9LeqvqJeoiFNrelvVX1EvURU2t6W9VfUS9RJT
+ a3pb1V9RL1ElNren3qp6iXqIKbe9LeqnqJeokpt70t6qeol6iSm3vS3qr6iXqJKbW9NvVX1EvUSU2t6W
+ 9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RFTa3pb1V9RL1ElNrelvVX1EvURU2t6W9VfU
+ S9RBTa3pb1V9RL1EFNrelvVX1EvUSU2t6W9VfUS9RKlNrelvVX1EvUSpTa3pb1V9RL1EqU2t6W9VfUS9
+ RKlNrelvVX1EvUSpTa3pb1V9RL1EqU2t6W9VfUS9RKlNrelvVX1EvUSpTa3pb1V9RL1EqU2t6W9VfUS9
+ RKlNrelvVX1E3qJKbW9LeqvqJeokptb0t6q+ol6iSm1vS3qr6iXqJKbW9LeqvqJeokptb0t6q+ol6iSm
+ 1vS3qr6iXqIqbW9LeqvqJeokptb0t6q+ol6iSm1vS3qr6iXqJKbW9LeqvqJeokptb0t6q+ol6iSm1vS3
+ qt6iXqJKbO9Leq3qJeokps70t6reol6iSmzvS3qt6iXqJKbO9Leq3qJeokps70t6reol6iSmzvS3qt6i
+ XqJKbO9PvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1El
+ NrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1ElNrel
+ vVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2d6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1
+ EvUSU2t6W9VfUS9RBTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1ElNvelvVX1EvUS
+ U2t6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RFTa3pb1V9RL1ElNrelvVX1EvUSU2t6
+ beq3qJvUSU2t6W9VfUS9RBTa3pb1V9RL1ElNrelvVX1EvUSU2t6feqnqJeokpt70t6qeol6iVKbe9Leq
+ nqJeolSm3vS3qp6iXqJKbe9LeqnqJ/USU2t6W9VfVS9VJTa3pb1V9VL1ElNrelvVX1EvUSU2t6W9VfUS
+ 9VJTa3pb1V9VL1UlNrelvVX1UvVSU2t6W9VfVS9VJTa3pb1V9RL1EqU2t6W9VfUS9RKlNrelvVX1EvUS
+ pTa3pb1V9RL1ElNrelvVX1EvUSpTa3pb1V9RL1EqU2t6W9VfUS9RKlNrelvVX1EvUSU2t6W9VfUS9RFT
+ a3pb1V9RL1ElNrelvVX1EvUSpTa3pb1V9RL1EqU2t6W9VfUS9RKlNrelvVX1EvUSpTa3pb1V9RL1EqU2
+ t6W9VfUS9RKlNrelvVX1EvVSU2t6W9VfVS9VJTa3pb1V9VL1UlNrelvVX1UvUSU2t6W9VfUS9RJTb3pb
+ 1V9VL1UlNrelvVX1UvVSU2t6W9VfVS9VJTa3pb1U9VL1UlNvelvVT1UvVSU296W9VPVS9VJTb3pb1U9V
+ L1UlNvelvVT1UvVSU296W9VPVS9VJTb3pb1U9VL1UlNvem3qr6qXqIKbW9LeqvqJeoham1vS3qr6iXqJ
+ Wptb0t6q+ol6iVqbW9LeqvqJeoham1vS3qr6iXqJWptb0t6q+ol6iVqbW9LeqvqJeolam1vS3qr6iXqJ
+ Wptb0t6q+ol6iVqbW9LeqvqJeolam1vS3qr6iXqJWptb0t6q+ol6iVqbW9LeqvqJeolam1vS3qr6iXqJ
+ Wptb0t6q+ol6iVqbW9NvVb1EvURU2d6W9VvUS9RGlNnelvVb1EvUSpTZ3pb1W9RL1EqU2d6W9VvUS9RK
+ lNnelvVb1EvUSpTZ3pb1W9RL1EqU2d6W9VvUS9RKlNrelvVX1EvUSpTa3pb1V9RL1EqU2t6W9VfUS9RK
+ lNrelvVX1EvUSpTa3pb1V9RL1EqU2t6W9VfUS9RKlNrelvVX1EvUSpTa3pb1V9RL1EqU2d6W9VvUS9RK
+ lNnelvVb1EvUSpTZ3pb1W9RL1EqU2d6W9VvUS9RKlNnelvVb1EvUSpTZ3pb1W9RL1EqU2d6W9VvUS9RK
+ lNnen3qr6iXqJUptb0t6q+ol6iVKbW9LeqvqJeojSm1vS3qr6iXqJUptb0t6q+ol6iVKbW9LeqvqJeol
+ Sm1vS3qr6iXqJUptb0t6q+ol6iVKbW9LeqvqJeogVNrem3qr6iXqIWptb0t6q+ol6iVqbW9LeqvqJeol
+ am1vS3qr6iXqJWptb0t6q+ol6iVqbW9LeqvqJeolam1vS3qr6iXqJWptb0t6q+ol6iVqbW9Leqnqpeql
+ am3vS3qp6qXqpWpt70t6qeql6qVqbe9Leqnqpeqlam3vS3qp6qXqpWpt70t6qeql6qVqbfqJb1U9VL1U
+ rU296W9VfUS9RC1NrelvVX1UvVStTa3pb1V9VL1UrU2t6W9VfVS9VK1NvelvVT1EvUStTb3pb1U9RL1E
+ rU296W9VPUS9RK1NvelvVT1EvUStTa3pb1V9RL1UbU2t6W9VfVS9VK1NrelvVX1UvVStTa3pb1V9VL1U
+ rU2t6W9VfVS9VK1NrelvVX1UvVStTa3pb1V9VL1UrU2t6feqnqpeqlam3vS3qp6if1ULU2t6W9VfVS9V
+ K1NrelvVX1UvVStTa3pb1V9VL1UrU2t6W9VfVS9VK1NrelvVX1UvVStTa3pb1V9VL1UrU2t6W9VfVTeq
+ lam1vS3qr6ib1ErU296W9VPUS9RK1NvelvVT1EvUStTb3pb1U9RL1ErU296W9VPUS9RK1NvelvVT1EvU
+ StTb3pb1U9VL1UrU296W9VfUS9RFTa3pb1V9RL1EVNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1ElN
+ relvVX1EvUSU2t6W9VfUS9RJTb3pb1U9RL1ElNvelvVT1EvUSU296W9VPUS9RJTa3pb1V9RL1ElNrelv
+ VX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RFTa3pb1V9RN6iSm3vS3qp6i
+ XqJKbe9LeqnqJeokpt70t6qeol6iSm3vS3qp6iXqJKbe9LeqnqJeokpt70t6qeol6iSm3vS3qp6iXqJK
+ be9LeqnqJeokpt70t6qeol6iSm3vS3qp6iXqJKbe9LeqnqJeokpt70t6qeol6iSm3vS3qp6iXqJKbe9L
+ eqnqJeokpt70t6qeol6iSm3vS3qp6if1EkNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1EktrelvVX1
+ EvUSU2t6W9VfUS9RJLa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VPUS9RJTb3pb1U9RL1ElNvelvVT1EvUS
+ Q296W9VPUS9RJTb3pb1U9RL1ElNvelvVT1EvUSQ296W9VPUS9RJTb3pb1U9RL1ElNvelvVT1EvUSS296
+ W9VPUS9RJTb3pb1U9RL1ElNvelvVT1EvUSU296W9VPUS9RJTb3pb1U9RL1ElNvelvVT1EvUSU296W9VP
+ US9RJTb3pb1U9RL1ElNvelvVT1EvUSU296W9VPUS9RJTb3pb1U9RL1ElNvelvVT1EvUSU296W9VPUS9R
+ JTb3pb1U9RL1ElNvelvVX1EvUQU2t6W9VfUS9RBTa3pb1V9RL1EVNrelvVX1EvURU2t6W9VfUS9RFTa3
+ pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1E1Ta3pb1V9RL1ElNrelvVX1EvUQU2t6W9V
+ fUS9RJTa3pb1V9RL1EVNrelvVX1EvURU2t6W9VfUS9RFTa3pb1V9RL1ElNrelvVX1EvUTVNrelvVX1Ev
+ USU2t6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1EVNrelvVX1EvUSU2
+ t6W9VfUS9RJTa3pb1V9RL1ElNrelvVX1EvUSU2t6W9VfUS9RJTa3pb1V9RL1EVNrelvVX1EvUSU2t6W9
+ VfUS9RJTa3p96qeon9RBTa3pb1V9VN6qSm1vS3qr6iXqJKbW9LeqvqJeokpt70t6q+ol6iSm1vS3qr6i
+ XqJKbW9LeqvqJeokps70t6q+ol6iSm1vS9VUzYomxJTe9ZL1VQ9ROLElOgLU/qKgLFMWJKbheoOcg70x
+ ekpT3IZcouchlySmyxysMcqLXKwxySm4HKUqu1ymHJKTJKAKmCkpUJk6ZJSkkkklKSSSSUpJJJJSkkkk
+ lKTpk6SlJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJT//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSRUpJ
+ JJJSkkkklKSSSQUpJJJBSkkkkEKSTpkFLFRJUimIQUwlPKW1KElKlKUoUSipclQJTEoTnJ4Cl3OQi5Df
+ Yq7rk8BTea9Ha8LKbeityE8BTpF4QnPCpOyVXflqQRU6XqBIWBZBzE321P4VOwbAmNoWT9s81E5iBgVO
+ wLgpi8LD+2J25iYcZS7wuCXqSshmVKssulRSxlDdLlAlRa6UimcCli9R9RDe6EIvS4CputfKMNVRrsVp
+ j0eAqSkKBMJF6r2WwpIwKkpfCb1lQsyIQDkp/tlTri5L1VktyUVt8oe2VOibE29UfWUhamHGVN0OUwVU
+ bYjteoZQKk0JKIcmc5M4CpkSluQHWQh+qjwFTblIlAbZKlvThAqZF0KBehvfCrPthTxxlTa9VSFizfXR
+ a7ZTzjKnSa6USVVrfKNuUJilkXKO9Ce9D9RNpTamUxCGx0o4EpUpEWpbUbamhKlIwE6c6KBfCVKZSnlB
+ 9RSa+UqUkhRIUwZSISUhU2KJCkxBScKL1Jqi9JSByTUnJNSU2WIwQWIwSUpJJJJSkkkklKTpk6SlJk6Z
+ JSydMkkpdJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6cpk5SUhsVV6tWKq9JTAI1aCEatJTZap
+ qDVNJSkkkklKSSSSUskkkkpSSSSSl06ZOgpUJJJJKWTJ0klMSoFTKiQipC5CcrBahliKmq5DKtGtDNaS
+ msUysGpN6SSkCdG9JL0kFIZTyi+mm9NBSOSlKJ6aXpoKRylKJ6aXppKRylKJ6aXppKRylKJ6aXpoqRyl
+ KJ6aXpoqRylKJ6aXpoqRylKJ6aXpoqYSlKJ6af00LUilKUX00vTStSKUpRfTS9NK1IpSlF9NL00rUilK
+ UX00vTStSKUpRfTS9NK1IpSlF9NL00rUilKUX00vTStSKUpRfTS9NK1IpSlF9NL00rUilKUX00vTStSK
+ UpRfTS9NK1IpSlF9NL00rUilKUX00vTStSKUpRfTS9NK1IpSlF9NL00CpDKUo3pJekm0pDKUo3pJemhw
+ qQylKN6aXpo8KkUpSi+ml6aXCpFKaUb00vTS4VIZSlG9NL00aUhlKUb00vTSpSKUpRfTS9NKlIpSlF9N
+ L00qUilKUX00vTS4VIpSlF9NL00uFSKUpRfTS9NLhUilKUX00vTS4VIpTyieml6aXCpHKUonppemhwqR
+ SmlG9NN6acApFKUovppemnKRSlKL6aXpoKRSlKL6aXppKRSlKL6aXpoKRSlKL6aXppKRSlKL6aXpoKRS
+ lKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXpoqRSlKL6aXppKRSlKL6aXpoqRSlKL
+ 6aXpoqRSlKL6aXppKRSlKJ6aXppikcpSieml6aSkcpSieml6aSkcpSieml6aSkcpSieml6aSkcpSieml
+ 6aSkcpSieml6aSkcpSieml6aSkcpSieml6aSkcpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aS
+ kUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkcpSieml6aCkcpSieml6aSkcpSieml6aSkcpSieml6aSkcp
+ Sieml6aSkcpSieml6aSkcpSieml6aSkcpSiemn9NJSKUpRfTS9NJSKUpRfTS9NJSKUpRfTS9NJSKUpRf
+ TS9NJSKUpRfTS9NJSKUpRfTS9NJSKUpRfTS9NJSKUpRfTS9NOCkUpSi+ml6aKkUlKSi+ml6aCkUlKUX0
+ 0/pJKQyUpKN6SXpJKQyUpKN6SXpIKQyU8ovppemkpFJSkovpJekkpFKaUb0k3ppKRSlKL6aXppKRSlKL
+ 6aXppKRSlKL6aXppKRSlKL6aXpoqRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKN6SXpJKQylKN6SX
+ pJKQylKN6SXpJKQylKN6SXpJKQylKN6SXpJKQylKN6SXpI0pDKUo3pJeklSkMpSjekl6SVKRSlKL6SXp
+ JUpFKUovpJeklSkMpSjekl6SVKQylKN6SXpIKQylKN6SXpJKQylKN6SXpJKQylKN6SXpJKQylKN6SXpJ
+ KQpI3pJekkpCkjekl6SSkKSN6SXpJKQpI3pJekkpCkjekl6SCkKSN6SXpJKQpI3pJekkpClKL6aXppKR
+ SlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXpoqRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlK
+ L6aXppKRSlKL6aXpoKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6a
+ XppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXppKRSlKL6aXpp
+ KRSlKL6aXppKRSlKL6aXpoqRSlKL6aXppKRSlKL6aXppKRSlKL6aXpoKRSlKL6aXppKRSlKL6aXppKRS
+ lKL6aXppKRSlKL6aXpJKRSlKN6SXpIKQylKN6SXpJKQylKN6SXpIqQylKN6SXpJKQylKN6SXpJKQylKN
+ 6SXpIqQylKN6SXpJKQylKN6Sb00lIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlF9JL00lIpKUlG9N
+ L00aUhkpSUb003ppUpFJSkovppemlSkUlKUX00/ppUpFKUovppemlSkUpSi+ml6aVKRSlKL6aXppUpDK
+ Uo3ppemgpDKUovppemkpFKUovppemkpFKUovppemkpHKUovppemkpFKUovppemkpFKUovppemkpFKUov
+ ppemkpFKUovppemkpFKUovppemkpFKUovppemkpFKUovppemkpFKUovppemipFKUovppemkpFKUovppe
+ mkpFKUovppemipFKUovppemkpFKUovppemkpFKUovppemkpFKUovppemkpFKUovppvTTVI5SlE9NL00l
+ I5SlE9NL00lI5KUonppemkpHKUovppemkpFKUovppemkpFKUovppemkpFKUovppemkpFKUonppemkpHK
+ UonppemkpHKUonppemkpHKUonppemkpHKUonppemkpHKUonppemkpHKUonppemkpHKUovppemhSkUpSi
+ +ml6aXCpFKUovppemlSkUpSi+ml6aVKRSlKL6aXpoUpFKUovppemlSkUpSi+ml6aVKRSlKL6aXppUpFK
+ UovppemlSkUpSi+ml6aVKRSlKL6aXppUpFKUovppemlwqRSlKL6aXpo0pFKUovppemlwqRSlKL6aXppc
+ KkUpSi+ml6aXCpFKUovppemjSkUpSi+kl6SKkUpSi+kl6SCkUpSi+kl6SSkUpSi+kl6SSkUpSi+kl6SS
+ kUpSi+kl6SSkUpSi+kl6SSkUpSi+kl6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUp
+ Si+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aVKRSlKL6aXppUpFKUovppekkpFKUo
+ vpJekkpFKUovpJekjSkUpSi+ml6aVKRSlKL6aXppUpFKUonppemkpHKUonppemkpFKUovppemipFKUov
+ ppemkpFKUovppemkpFKUovppemkpFKeUT00vTSUilKUX00vTTSFIpSlF9NL00ylIpSlF9NP6aVKQylKN
+ 6aXppUpDKUo3ppeklSkMpSjekl6SVKQylKN6SXpJUpDKUo3pJeklSkMpSjekm9JKlIZSlG9JL0kqUhlK
+ Ub0kvSSpSGUpRvSS9JKlIZSlG9NL00qUhlKUb00vTSpSGUkb00vTSpSFKUb00vTSpSKUpRfTS9NGlIpS
+ lF9NL00uFSKUpRfTS9NLhUilKUX00vTS4VIpSlF9NL00uFSKUpRfTS9NLhUilKUX00vTS4VIpSlF9NL0
+ 0uFSKU0ovppemjSkUpSi+ml6aVKRSlKL6aXppUpFKUovppemlSkUpSi+ml6aVKRSlKL6aXppUpFKUovp
+ pemlSkUpSi+ml6aVKRylKL6SXpoUpFKUovppemlwqRSlKL6aXppcKkUpSi+ml6aXCpFKUovppemlwqRS
+ lKL6aXppcKkUpSi+ml6aXCpFKUovppeklSkMpSi+kl6SVKRSlKL6SXpJUpFKUovpJeklSkUpSi+kl6SV
+ KRSlKL6SXpJUpFKUovpJemlSkUpSi+kl6SVKRSnlE9NP6SNKRSnlF9JL0kVIpSlF9JL0kFIpSlF9JL0k
+ lIpSlF9JL0klIpSlF9JL0klIpSlF9JL0klIpSlF9JL0klIpSlF9JL0klIpSlF9JL0klIpSlF9JL0klIp
+ SlF9JL0klIpSlF9JL0klIpSlF9JL0klIpSlF9JL0klIpSlF9JL0klIZSlG9JL0kVIZSlG9JL0klIZSlG
+ 9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL
+ 0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0kk
+ IZSlG9JL0klIZSlG9JL0klIZSlG9JL0kkoZSlG9JL0klIZSlG9JL0kkoZSlG9JL0klIZSlG9JL0klIZS
+ lG9JL0klIZSlG9JL0klIZSlG9JL0kkIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JL0kkIZSlG9
+ JL0klIZSlG9NL00koZSlG9NL00lIZSlG9NL00lIZSlG9NL0klIZSlG9NL00lIZSlG9NL00lIZSlG9NL0
+ 0lIZSlG9NL00lIZSlG9NL00lIZSlG9NL00lIZSlG9NL00lIZSlG9JL00lIZSlG9NL00lIZSlG9NL00lI
+ ZSlG9NL0klIZSlG9JL00FIZKUlG9NL00FIZKUlG9NL00VIZKUlG9NL00VIZKUlG9NL00VIZKUlG9NL00
+ lIZKUlG9NL00lIZKUlG9NL0klIZSlF9JL001SKUpRfTS9NJSKUpRfTS9NBSKUpRfTS9NJSKUpRfTS9NF
+ SKUpRfTS9NJSKUpRfTS9NOUilKUX00vSSUilKUb0kvSTVIZSlG9JL0klIZSlG9JL0klIZSlG9JL0klIZ
+ SlG9JL0klIZSlG9JL0klIZSlG9JL0klIZSlG9JN6SKkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi
+ +ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml6aSkUpSi+ml
+ 6SSkUp5RPST+mkpFKUovppemkpFKaUb003ppKRSmlG9NN6aSkUpIwqT+kkprpAKx6Sf0klIQEQIgqUxW
+ kpGExR/TUSxJTVchlWHsQi1JSzUdhQ2tR2NSUzaUQFMGqYakpkCpgqICmAkpdJKEklKSSSSUpJJJJSkk
+ kklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJ
+ k6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklP8A/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ FSkkkk5Skkk6ClkkkklKSSSQUpJJJNUpOmSTVKSSSQUpPCZOkhUJiFKU0oqYkIbgilDcE4KQOQHqy4IL
+ wpApo2lU3kq/a1U3tUoUhDipB5SDFMVqUBSF9hVO20q8+tU7alKApqutKb1SpOqTCpPAUr1Sl6pT+kl6
+ SkACmHqlTbaU3pKTakeEIbVNhWjS5Z9Va0KmwoZxCm/W5Sc7RBaYUbHwFDwqYW2Qqbr4KhkWws2y/VHh
+ CnYryFcryFzdeQVcryClQU7TshVbb1TN5QnWypYRUzstlALyn5UhXKl4QpZjyrLHlCFcIgEIcIUlDkRp
+ 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
+ hKElIPTS9NHhKElIPTS9NHhKElIPTS9JHhKElNf0kvTViEoSU1/TS9NWITQkpB6aXpo8JQipB6aXpqxC
+ UJKa/ppemrEJQkpr+ml6asQlCSmv6aXpqxCUJKa/pp/SR4ShJSD0k3pKxCaElIPSS9JHhKElIPSS9JHh
+ KElIfSS9JHhKElIPSS9JWIShJTX9JL0keEoSU1/STekrEJQkpB6af00aEoSUi9NP6aLCeElIhWn2IoCS
+ SkRYhuajlBeUlNd4QiEV5QpSUya1WGNQWKyxJTINUg1SATpKWATwklKSlJkpSSUsnSSSUpJJJJSkkkkl
+ KSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6Z
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklP/0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTp
+ k5Skk6ZJSkkkkFKSSSQUpJJJNUpJJJBSkkkkFKTpk6SlkpSKiU8BC6RCQUk4BSFwVawwrVioXOhSAKa9
+ r1Ue8KVz1Tc9TRiptNcEZsKgx6tMephFSR7QqtjArJcq1hUgiprFgTBgUnOUN6kEVMtoS2hDNiXqJ4CG
+ ewIjWBCD0VjkaQ2K2qywKswqwwqGQUnCFaNEZolM9khQKcXJBWZY0yt3IqWa+rVEBTUrYVdrYU9VKuMq
+ 0SpTVLSoQrj61XLYU8QpnW2VZawKvWYVlr04hKiAEMuhO96qvsSAU2A9HY9ZgtRmWoEIt1WOVmsrNqsV
+ 6pyrTCrbgVe/hHadEG4aKKlORklUw+CruS1ZzgQU6lOjj3Qr7bxCwq3kKwLjCcIqt0LbwqNloKA+4qs6
+ 1WYRVbcD1YqshZYsR2WKSQVbssuhRtv0VBtpULLSVSnFcFXWygsdJQ3klEpbqouFLp4y1quFmYzVqVjR
+ ClJCVVt1VgoZbKVKcq9pKyshhXR2USs3Jx0KU4JkFW8d2qjbVBUqWwUKU7eK5aTDosnFWrWm0pnCkwJw
+ FNoQpTMBRepob0FIHJNTOTtQU2a0UILEYIKXTJ0kFKSSToKUkmSSUumTpklLJJ0ySl0kySKl0kydJSkk
+ k6Slkk6ZJSkkkklKSSSSUpJJJJS6cpk5SUhsVV6tvVV6SkYRq0EIzElNlqmhtU0lLpJJJKUkkmSUpJJJ
+ JSkkk6SlJJJJKUmTpIKWSTpIqUE4TJIqZgp5UJTykplKZNKaUlLpkpSQUskkkgpiUkkkEqShOE6CmKSc
+ pklKSSThJSoShSAShOUwhJSKiiFKSSSTgpZPKZJEqZAp1EJ1GULpJkkFLpJkkqUukmSSpS6SZJKlLpJk
+ kqUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSRClJJJJ9qXTJ0
+ krUskkmStS6SinCVqXTpBOjalkykolK1KSTJ0rUpJOmStSkkkkrUpJJJK1KSSTpWpZJOmStSkkk6VqUk
+ kklalkk6SVqWShOklamKScpkLQpJMnStSkoThOhaWMJKSYoWpiknTIWlUpSmSCVqZJ4SClCVqYQkpFMl
+ alkk4TwlamKaU5UUrUunSCeEbQsknhJK1KhKFIBShG1I4ShEIUSEeJDCElJMlaloShSSQSxhKFJJKlMY
+ ShShPCSmEJQpwlCSmMJQpQlCFKYwlCkklSmMJQpJIKYwmhThNCSmKSlCZJSkoTp0lMYShSTIqWSTqJSp
+ SpSlMlKNKZJ1EFSCVKUknTJUpZJMklSl0kk6VKWSTpIUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWS
+ TpkqUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSSpS6ZOknAKWSTpIqWTSnKiUqUvKUpk6
+ FKVKUpkpSpTJOmClCFKYpJyopUpdOmCcIUpSSdRSpSkkkkqUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSS
+ SUumTpihaFSlKiUkrUyTpgpAJWpZJShMUrSxSSKZK1KlKUySNpZSkmThK1LpQpBIpWpgknUUrUvKSZOl
+ alJJ4TEJWhUpSmKZC1MpTqIThK1LpJ0krQskkkhalJJJI2pSSSSNJUkkkkpSSSSClJJJJKUkkkkpSSSS
+ SlJJJIKWSTpklKSTJ0lLpQnCeElMYTKRUCipUp1GU4SUukkmRUunhIKcJUpgQmlSIUCkpeU6GCpgpKXS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJNKSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUp
+ KXSTSlKSl0k0pSlSl0ySSNKUkkklSlSkmTJUplKUqKSFKZJ1EKSVKUknSKFKYpJFJKlLpkk6ClkkkySl
+ 0kydJSkkkklKSSSSUpJJJJSkkkklKSSTIqXTpk6SlJ0ydC0LJpSKYo2peUlGVIJWpdMnTFK0rSlKRUUb
+ UylJMFIBK0qSTpJWpZJJOlalJk6YpWpUppTFNKVqZSlKiklaGUp5UU6FqXTpk6VqUkkklaFJJJJWpSSS
+ ZK0qTpk6VqUmTpJWpZJOklalkk6SVqWTpJJWpZJOklalJk6SVqWSSTJWpdJMnCVqUnSSRtSySRSStSkl
+ IBIhG1MUkimStS6dIJ0rUxSTlMlalJJJ0FKTJ0klLJJ0klLJJ0klKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSlJSk0pyolFS6SZOEbSpJSTJWpZJJJC1KSSTJWpUp1FOErUy
+ TJ0krUskkU0pWpdNKZJK1MkkydK0KSSTJWpdJNKZG1MkkydK1KSSSRtSkkkyVqXSSSStSkkkyaSpdJMk
+ hal0kkkrUpJJJK1KSTJSlal00ppSlK1LynUZSStTJJMklal06ZJK1Lpk6YpWpUppTFNKVqZylKgCpBK1
+ MkkkkrUpJJJK1KSTpFK1MUpSKZK1LpJJ0rUsknTJWpSSSSVqUkkklalJJJJWpSSSSVqUkknStSkydMla
+ lSnUVIJWpUJQpJFG1MU0pEqBKVqZylKhKkClamSScJ4StTFJOklalk0pFMUrUvKUqKeUrUySTSlKSF06
+ YFOlSlJJ0xSpSyUpkkkrpJkkqSukmSSpS6SaU4KKlJQnCdBTBNKkVApKXlJMnCSlJJ4TJIXShOE6SmKZ
+ TKgUlKlKVFOlSGSSQTpUpZJIpkUrp4TBTCVqYwkpJilamKaUimlK1LynUZUglal0k4SStSyZOVGUrUun
+ TBPCVqUknTJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkmQtS6UppTSlamUpKMpwU
+ rUyShIFOlamKSRKaUrUvKUqMppStTKU8qEpwlamSSQTpWpZJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkk
+ kyVqXSTJIWpdJMlKNqXSTSnSpSkpSKiSlSl5SlRlOChSmSdME4QpSkk6SSlkydMgpSSSSSlSmlIqMpKZ
+ SnUAVIJKXSSSSUpKUkxRUqUpUSU0pKSSnUAVMI0pUJJ0xRpSySaUpSpSkkkkKUsknSSpSySdJKlLJJ0k
+ qUsknSSpSySdJKlLJJ0kqUsknSSpSkkkklLJJJJKUkkkkpSSZOkpSSdJJSyUpFRSUylJRCmElKhPCkAn
+ hJTBMpFRSQpOmSQUpOmSRUpOmSSSpOmSRUukmSSSukmTpKUmlJMUlKlKVFJJTNOohTCVKWSUoTFJDGU0
+ pFRlBTKU8qAUgkpkmSSSQpJMnSUpJJMUlKlOmThBKkk6SSlk0pymRUqUpSSSUpJJOipSSSSSlJQnTpUp
+ jCSkmSpSySSSVKUkkklSlJJJJKUkkkgpSSdJJSySdJJSySdMgpSSSZBS6SSdJSySdJFSkk4To0pjCZST
+ FGlLJJJBGlLwlCcJ0FMUk6ZJSkkkkKUpJJJClKSSSQUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJ
+ JKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkklKTJ0klLJSkmSUunTBSCSloShTTFJTFJIppSUpOmlOkpSZO
+ mKSlSkmlIJKXTpk6SlJk6SSlk6SSSlkk6SSlJJk6SlJJJklLpJkklLpkkklLJJ0klLJ5TJJKZSlKaUgk
+ pYoTwjwoPakppPCCrNgQCElM2K1WqrFbrSUmCdIJykpimKcpikpZOmTpKUkkkkpSSSSSlJJJJKUkkkkp
+ SdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKf//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkk
+ klKSSSQUpJJJBSkkkkFKSSSQUpJJJJSk6ZJJSiolSSTwpYJ5TJiU8IYWFUbhKuOQHtlSxU5NzFTdWtiy
+ pVX1KeKmk1isMEKWyE8QpQpYqvYUdxVa0qWKms9yrueiWlVHlSBTI2phagEpwCnILabarFdioNlHrKNh
+ a6dbpVysrOpctCoqCam4xSdwoMKT3aKv1U1b1nWRKuXvWbbYnBSZjwFYbaswWIzXlOU2n2SqznpEkqBB
+ U0VMw+FMWoEFNBTzSkr7JQHOlOQVGEtFLBGYhgI7AgSFNqoq/SVRqCvVBVplTdYUzxITMUioVNC+qVQf
+ Qth4lV3VgpwU5nopGorS9EJGhPBU476ygOrK2X0KrZSp4FTnhqMxqIa0SutSE6KUxhKkaSrlVUo5o0VO
+ a8OOaUWquCrj6oTMZBUSW1jthX2DRUqdFcaUCpkUgElIBBTFzdFn5LQtN3CzcooKcW8aoVfKJkHVCrOq
+ BU62KtSrhZeKtSvhNUnCI1CBRGlNUkQXoqE9NU13J2pOSagpssRwgMRwgpdJJJBSkkkkFLJJJJKUnTJ0
+ FLJinTFJSySSScpdOmTpKUnTJ0lKTJ0ySlJJJJKUkkkkpSSSSSlwnKYJykpE9VXq09VXpKRhGYghGYkp
+ sNU1BqmkpdJJJJSkydMkpSSSSSlJ0ydJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJBSkkkkFKSSSSUsm
+ Tpk1LIJ1EJ0lLFRUiopKUFIKKcIqZykSoymJRUolRlMSmTgpmCpBDBRAnBKoShSCdIqYQkpEJkwrVkkk
+ 6Clkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKT
+ J0ySlJ0ySKmSSYJ0lKhRIU0xSUxhJOmSUuE8pkpSUuSolOmSUpOmTpKXSSSSUsknTJKUkkkkpSSdJJSy
+ SdJFSydJJJSkkkklKSSSSUpJMmlBC5TJJ4QUtCSeEklKSlMU0oJZSkoynCCl4TQpAJ4SSjhNCIQmIQUs
+ FKVFKUlLkppUSUgkpmFJRCkkpiQowppAJKUApQkE6KGBCZSJUJRUzBUpQwU+5FTMlQJTSmlJC8pJkklL
+ p0ySeldJMkkpeU8qKSSmUpSopJKZSlKikgpkkoylKSmSSaU0oKZJJpTpKUmTpiUlLSlKiSokpKZynlDl
+ OElM0yQToqYlMpFMUVLKQKinBSUzlIqIKdFSxSTwmhBSpTpkkVLpJkklLpJkklLpJkklLpJkklLpJkkl
+ LpJkklLpJkklLpJkkFLpJkklLpJkklLpJkklLpJkklLpJkklLpkkklKlPKilKcpnKdQBTgpKUU0KSSSm
+ ICeE4ToKYEJlMhRhJS4UlEJ0lLFRUiooKXCmFAKQSUuVFOmQUsnSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSKlJikkoyhZIBPCcBBSgFMJoSRUumKRKiSklRTQnSCKloTwpAJQkljCcJJkVMpTEqMpiUlLkp
+ pTJklMgVMIYRAgpkAmIUgkUkIyFGEQqBSUspBRTygplKYlNKYlJC8p5UJUggpkkmSTgpeU0pJlIleU8q
+ KSSmUpSopIKZSlKikkplKUqKSCmUpSopJKXlKUySSmSUJBSCSmMJlMqJSUoFSlQlPKSlyUMqRUSipYKQ
+ TBSSUpMkU0oqZgqYKECpgpKXKEUQqBCSmKkE0J4SUvKUpJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUmSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSpSlMkipkkmCkEVLQlCklCCmEJQpwmhJS
+ wCcJJIKXTFOolJSxSSKZBTJJMnQUpMnShJSySeEklLJJ0klLJJ0klLJJ0klLJJ0klLJJ4ShFSydJMmlC
+ 8p1FSCapRUSFNKEFI4UgnhJFSkikkklaE0KcJwEVMAFKFKEikliVElO4oZKKl5UgUMFSCSmaYpwnhJTC
+ EoU4ShBSOE8KcJ4SQjhPClCRQUxSSKYlJS8pSoylKSGUpSop0lLpJkklKTpkkUrykmToKVKeUySSl0ky
+ SSl0ySSSlJJJklLykmThJS8JQpAJ4SUjITKRUCipeU8qEp5SUvKcKKkElMwE5CQSKKkZUVJygipmCpoY
+ KmCkpRUVNMQipiknITIqVKSZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSUpJklLpoTpwEErQnCdMUEqlRJSJUZSUupBQCkEkLpiFJKElME4TwmQUvKUpiVGUl
+ MpTJkklLpAJ06SloTp0kkLKJUlFFSySSUJKXUgmAUgipSSdJFTFMpFRKSlJ0ySSl0kk8JpUsknhPCapi
+ nTwlCSlkydMkpZMnTJKWSSSSUpOEkgkpdJOkkpZIFPCaElMk8JgnSUxIUYRCmSUwhOnSSUpNKYpklL7k
+ 4KgkkpKCkoAqQKSl4TQnSSUsnTJJKUkkkkpSSSSSlkk6SSlkk6SKlJJJJKUnTJJKXTJJ0lLQnCdMkpeU
+ xKYlMSkpYlQKkU0JKWCI1RARAElMgkkmJSUolNKYlRlJTJMkE4CSloShThNCcFMUpTkKKcheVIFQSlJT
+ OUpUZSlJS6ZOnhJK0J04CdJLFMpJikpilKRTJKZgp5Q5TykpkSoFKU4SSoBTASAUwErQwIUSEUhDKCFB
+ PKhKeUVLlQKclJJS0JwE4CkAkhYBJShMUlMSoqSZApXCkCoJ5QUylMSoylKClFNCkE8JKYQpBPCZJTIJ
+ EqMpEpKWJTJiUgkpmApgKLVMJKWhMnKiUlKSTSnlJSkkpSlJSkkpSlJSkkpSlJSkkpSlJSkkpSSUpOmS
+ lJSkxTpiUlLJk6cBJTFOpQokJKVuS3IZKQKSkkpJgnhJSyUJ04CSloTwpQmKClkpTEppSUylJNKdJSkk
+ kySl0kySSl0kySSl0kySSl0ySSSlJJk6SlSkmSRClwpBRCcJ6l1EhTTQkphCcBShKEFKCdMlKSl5TEpi
+ UxKCl5SlRlKU1TJOmCdJSxCiQiQmhJTCE4TwkkpUpJpSlJTJKEgpQnKRkKMIpCiQipiFMFRSlJTOVElN
+ KaUVLykmTpKUnSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTFJSpSlMU0pKZJ4TBTASUxhKFJ
+ MUlMUk5TJKXSTJ0lLEJiFNNCSmEKQTwmSUzBTyhynlJS5KZJMghdJMkkpdJMkipdJMkkldJMkkpdJMki
+ ldKUySSl00J04CSmEJQiQmISUxCkColNKSkkpiVDcnlJCiowpp4QUwAUgE8J0lMUikUxSQpOFFOEFLpi
+ nSSUxUgmhOkldJMlKSlFMlKUoqVCeEgnCSlQlCdIpKYpJFMipeU8qCUpKZylKjKSSl0kkySl0ySSSlJS
+ kkgpdJMkkpeUpTJJKXlNKZJJS8pSmSQUvKaUySCmUp5UUkFLylKZJOCmQKlKGnlFTKUxTSkipSQSSRUy
+ BTyoymJQUuXKMqJKZJSQFPKgFIIKXlKUkyCl5SlMkmqXlKUySSl5SlMkkpeUpTJIqXlKUySKl5SlMkkp
+ eUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXTpk6SlQmhSTFJTFSBUUpSUzlMSoy
+ mJSUuSoykmSUyBTgqIUggpdMU6SSmKcJQnSUpOmSSUukmSSUukkkkpSSSSSlkk6ZJSkkkklKSSSSUpJM
+ kkpdJJJJSkydMkpScJk4SUzCi4KQUXJKatqrOVm1VnJKZMVutVGK3WkpOE5TBOUlLFRKkVEpKWTpk6Sl
+ JJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlN
+ mtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSQtSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkydMkpdOmCkAnhTEqBRShOKeFMC
+ huCnKYqQKazwqlitWmFnXWwpYoU5yGXoDrU2+VMFJHPVexym4qu9ylCkNmqrObKtHVIVyn2pqiuURtKs
+ iqFMNATTJaWr6ScMhWtsp/SUZyIY1aK9U5Vm1wjs0UUpqbzHJrDooVmVNzZCj4lObkOWbYdVqZFazn16
+ o8SmNbZV6qiUPHqWtRTojxqaf2dRNC1HVgIDmhSRmpo+gmNCvBoUiwJ/Gpy3VQgObC1LK1UsrQ41NNFr
+ Kf0kRlRTTNTZpWhUFRqbCvVGFDKam00JnGEwcoWFR8SkT3oe9Qscgh2qPEpusdKLCq1FWmp4kpG9qqWt
+ V16qWKeMlNQtRKgmIRKwnmSm5UEc8INQRXcKE6rw17ECdUW1V51QAS26nK2xyz6yrdZQIU2gUVqA0ozS
+ oyld/CzMtaTzosvLKQQ4uRyhV8ot/KHVygp1sVadfCzMValY0TSpIiNUQFNoTVJAhPRUJ6apA5JiTkmI
+ KbLEcIDEcIKXSSSTVKSSSSUskkkkpSdMnQUsmKdMUlLJJJJyl06ZOkpSdMnSUpMnTJKUkkkkpSSSSSlJ
+ JJJKXCcpgnKSkT1VerT1VekpGEZiCEZiSmw1TUGqaSl0kkklKTJ0ySlJJJJKUnTJ0lKSSSSUpJJJFSkk
+ kklKSSSSUpJJJJSkkkkFKSSSQUpIpJFJLEppTlMmqXCkogKcJJWhNCkmKSlkkpTSipdMUpThOCmBCaEU
+ NT7E4KQqQKkWJtqcpcFPKaE4CSl5TJ4TwhSGKSlCUIUhikpQlCVJYpKUJQlSmKSlCUJUpikpQlCVKYpK
+ UJQlSmKSlCUJUpikpbUtqNKYpKW1LalSmKSltS2pUpikpbUtqVKYpKW1LalSmKSltS2pUpikpbUtqVKY
+ plPaltQpCNJE2ptqCmEp5TlqaElKlNKUJQkpUpJ4S2pKWSUtqfagpgkp7UtqSmCdS2pbUlMUlKEtqSmK
+ SntS2oKYJKe1LaipgnUtqW1JTFJS2pbUlMUlLaltRUxSUtqW1JTFJT2pbUFI1FFLU21FDAKQCkGqQakp
+ jCiQi7UxakpCVEopaoliVKYKQUgxSDUqSsE6falCVJWKiVOEtqVJRFMjbE2xKlIoTgImxLalSmICdShN
+ CVKYpSnhLalSFSkSltT7UqUjJUCUUsUfTSpDAFSlSFafYlSGCcKexOGJUpiAnhTDU+1JSKE0Ipam2pyU
+ aUKe1PtSUwhJT2pQkpglCnCW1JTCElPaltQUwSUtqW1JTFKFLan2pKYJKe1RISUxJTEpyE0JKYFNCKGJ
+ wxGlIgFIBEFakGIKRgJ0TYolqKmCiUQhR2oqYJKe1LaipiFIJQpAIKWShThKEEo4ShE2pbUkI4ShE2pb
+ UlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlMIShT2pbUlMIShT2pb
+ UlMIShT2pbUlMIShT2pbUlMIShT2pbUlMIShT2pbUlMIShT2pbUlIiE0Iu1NsRUjTqexLajaWEpSnLU0
+ JIXBTymATwgpRTJ4ShJSwTpwFLagpgQowi7U21JSMBSUtqW1JTFJShKElMUlKEoQUxShS2pbUlMYShS2
+ pbUlMYShS2pbUlMYShS2pbUlMYSUtqW1JTFMVOEtqSkaSntS2ptIYhSCfalCVIWSUoTQlSWBTKe1LajS
+ WCdS2poSpSpTymhKEaSolRKnCWxKko00IuxPsSpSKEoRtibalSkYCkE+1IBKlLgpiVKExalSGBKgSiFi
+ bYhSEcpSp+mn9NKkMJTIvpptiFKYBSAT7FINSpCoShTAShEBKIhKEQtTbU5LCEoU9qW1JTBJT2pbUlME
+ oU9qW1BTBJT2pbUlMElPaltSUwhKETaltQUwCeU5CiQkpRKYlKE4ajSmKcKYYpBiSkUJoRtiiWpKRp1L
+ amhOUwKiUQtTbUlMQpApwxOGpKUknhPCCWMJQpwltSQwSU9qW1JTBJE2pbUlI0kTaltSUjSRNqW1JSNJ
+ E2pbUlI0kTaltSUjSRNqW1JSOEoRNqW1JSOEoRNqW1JSOEoRNqW1JSOEoRNqW1JSOEoRNqW1JSOEoRNq
+ W1JSOEoRNqW1JSOEoRNqbakpHCZF2JtiVqRp5TlqaEUrylKaEkULykmToKUknhPCCmKSlCW1JTCE0Im1
+ LakpGnCltT7UFMU8KUJQkpjCSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpilClCUJKYJiETaltQpC
+ JOFPYm2oUhQTpAKQCVJYpiibVEtSpTBJPtS2o0lQUgmhPCVJXlRJTpiEaUjcVAopal6aVJQgIgCl6akG
+ pUpYJJ4ShKlLSlKUJoSpS8pSlCW1KkLSmJU9qWxCkIiUyL6ab00qQiTqfpp9iFKYAKQCkGpw1KkMYShT
+ 2pbUaSwhNCJtS2pUlHCeFPaltSpSOEkTam2pUpgnUtqfahSmEJQp7UtqVKYQmhE2pbUqUjhOAp7UtqVK
+ WCclKExCVKYkoZRYTbEaUjhPCIGKWxKlIoUgp7EtqNKWBSJTwokJUpgSoIhCbanUpYKYKiGqQCVKZBJI
+ BShNSwITQiQm2pIYQlCntS2oqYQlCntS2pKYQlCntS2pKYQlCntS2pKYQlCntS2pKYQlCntS2pKYQlCn
+ tS2pKYQlCntS2pKYQlCntS2pKYQlCntS2pKYQlCntS2pKYQlCntS2pKYQlCntS2pKYQlCJtS2oKRwnUt
+ qYhJLElRJUiE21BLApkTYnFaCmACkFPYn2JKYpKW1NCCmJTKUJbUlIyoopam2JIRhSAUgxSDElMUlPam
+ LUlMJSlS2pw1JDBKETYn2IqRQnhF2JbElIwE6ntS2oqYJKUKMIqYlMVOE21JTBJT2pbEVLBSCQapbUFL
+ JlKE8JUpgkp7U21KlMEip7U21KlIymRNqbalSmCSltT7UqUwTqW1PtSpTFOpbU4alSmMJQpwmIQpTBKU
+ 5CiQjSlSmlPtS2JUpjKUqWxIMSpTFPCmGKYalSkO1Laj7UxagpDCaUUtUS1GlMZSlPsS2JUpaUk+1PtS
+ pTFJS2p9qVKYpKW1LalSlkyntS2pUpgkp7UtqVKYJKW1LalSmCSntTbUqUxTgp9qfalSlkxKntTFqVKR
+ pwFLapBqVKYQltRg1MWoKRQpBShLaipiSoEopaoliKkJKYFENaQrSpSwRAmDFMBClKhIhSShBSMhQIRi
+ 1RLEbWokyIWJbErSwThTDE+xK1ME6ltS2pWlaU8poShC0qTFSAT7UrSiKYopYmLErUhSRdiXppWpGnCn
+ sS2pWpdqmCogJ0lLkoZKmVAhJDAlMpFqW1G0MZThPtThqFoXCmEwaphqNqYlRKIWqJalakaSntT7EFIo
+ SKLsTFiSUJSlTLU21JSgphMGqYakpiVEoham2pKYJiibEtiSkJSCKa02xJSwKmCo7U8JKUSokqUJbUFM
+ E6faltSUskn2pbUlLJJ9qW1JSySfaltSUskn2pbUlLJJ9qW1JSyaVLaltSUxlNKlsS2IqYhTCcMUg1JS
+ 0KLgjBqYtSU1iEwCOWJtiSmICeFIBIhBTBOE8JQkpUqLipQmLUlIiUwKmWJwxJSwUk4YpbUlI0lPaltQ
+ UwSU9qW1JTBJT2pbUlMElPaltSUwSU9qW1JTBMibU21JTBOp7U+xEKRwpBS2JbU9KySlCUJKYplOFEhJ
+ DGU0qUJtqVKYkplPalsQUjThT2JwxBTEKSkGJwxJSwSUg1PtSUjKiUUtTFiSkJSRCxNsSUsCpAptqcBF
+ TJRKlCaEVMCoEohCjtRUwTqW1OGoqYp0+1PtQUsnhOAnhJTFJThKEFMElOEoSUwSU4ShJTBJThKElMEl
+ OEoSUwShThKElMITEIkJtqSkRCYBF2JBiSmIUwnDEoSUsolSITQkpiUyntS2pKYJ0+1LakpQTpAKQCSm
+ EJiEXam2JKRFMjbE2xJTAJ4UtqW1BDGElLaltSUwhKETam2oqYQlCntShJLBJT2pbUlMElPaltSSwShT
+ 2pbUlMFIJ4ShJSkxTpoSUwKgUUtUS1FSOVIFPsThqSFBTCYNUoSUsmJUoTEIKYEplPalsQQwSRNiWxJT
+ EJ0+1OGpKYwlCnCUJJRlMUTam2JKRSkibEtiKmEp5T7EtiSlpTyltS2oqWlJS2pbUlME8Ke1PtSUwhKF
+ PaltQUxShT2pbUlI4ShE2ptqSmEJQp7UtqSmEJKe1LakphCZE2ptqSmEJQp7UtqCmEJkTaltSUjSUyE0
+ JUpinhPCkAhSmEJQihqW1FSKEyKWqJaipgkpbUoTlLJ1INT7UEsExCJtS2pKQwltRtifYgpEAnhE2ptq
+ SGMJoRNqW1JSOEoRNqW1NUjhKETaltSpSOEoRNqW1KlI4ShE2pbUlI4ShE2pbUVI4ShE2pbUlI4ShE2p
+ bUlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlI4ShE2pbUlI4Tqe1NtSUwlMSp7E
+ tiSkaSJsS2JKYQlCntTwkpHCW1EhKElMITwnhMkpSSSSSlkk6aElLJJQkgpdJJJBSk6ZJJS6SSSSlJk6
+ SSlk6SZJSkkkySlJJJJKXSTJ0lKTJ0ySlJwmThJTJM5Omckpq2qs5WbVWckpkxW61UYrdaSk4TlME5SU
+ sVEqRUSkpZOmTpKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKXThMnCSligWI5
+ QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1OvSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSTVKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKTJ0oSUoKYUE
+ tycFMnFAeVMulDcJTwpjKYlI6IT3wngqa+Q5Y2Q9aWQ+VlXNlSgoa++Sjs1QRWVYrbClElKcFWeFdLUF
+ 1cqUSUgYyVaZUlXUrldaRklqOrhBdotN9Uqq+hMMlpa7NVaYyUEMhGa6FGVrIsUQISNiiHSVGVNupWg2
+ QqdRVoP0QU1r61nvr1WhfYqD36pKTUMhadQgLMpctGt2iSmdhVKxytWKhapApmLEQWKgXwm9ZOU3XuBQ
+ SJQPWUm2oKTtqBRBUAhMtRPVCBUyiE7XwhGyUwKhkpuNepOcq7CpOdATaUjsKCDqo22wqvr6o0p1ayrL
+ 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
+ PIWMOoDxT/tAeKVIdgkKJcFknPHionPHihSnWLwl6gWMc7zTfbvNKkO36gS9QLF+3eaX27zRpLtbwlvC
+ xvt3ml9u80aS7O8Jbwsb7d5pfbvNKlOzvCW8LG+3eaX27zQpTs7wl6gWN9u80vt3mkp2fUCXqBY327zS
+ +3eaSnZ9QJeoFjfbvNL7d5pKdn1Al6gWN9u80vt3mgp1zYFEvCyftvmm+2IqdYPCmHhYwzFIZqSnbDwp
+ bwsP7f5pv2j5pUp3C8KJeFi/tHzTfb/NKlOyXhNvCyBneamMyU6lOqCE4Wc3KBRRkhClN2UxcFTOSEJ2
+ WEqS6G8Jbwso5gUTmp3Cp2N4S3hY323zS+3eaaQh2t4S3hYv27zS+3eaFKdreEt4WL9u80vt3mlSna3h
+ LeFi/bvNL7d5pUp2t4S3hYv27zS+3eaVKdreEt4WL9u80vt3mlSna3hLeFi/bvNL7d5pUp2t4S3hYv27
+ zS+3eaVKdreEt4WN9u80vt3mlSnZ3hLeFjfbvNL7d5pUp2d4S3hY327zS+3eaVKdneEt4WN9u80vt3ml
+ SnZ3hLeFjfbvNL7d5pUp2d4S3hY327zS+3eaVKdneEt4WN9u80vt3mlSnZ3hLeFjfbvNMc/zSpTteoEi
+ 8LDPUPNMOo+aPCl2y8Ji4LIGfPdTGZKPCp0twTbln/agl9pCdSHQ3pw8LO+0hIZQQpTph4T7wsv7Wouz
+ YQpTq+oE/qBYpzvNMM/zSpTuh4S3BYoz/NTGd5oUp1twS3hZX21ROalSnX3hL1AsY5vmm+3eaFKdr1Al
+ 6gWL9u80vt3mlSna9QJeoFi/bvNL7d5pKdr1Al6gWL9u80vt3mkp2vUCXqBYv27zS+3eaSna9QJeoFi/
+ bvNL7d5pKdr1Am9QLG+3eaX25JTtCwKQeFiDO81MZvmlSnY3BRLwso53mhuzvNClrr+oFIWBYf2/zUhn
+ eaVJdzeExeFjjO80vt3mjSnX3hNvCyPtvmn+2o0l1t4TGwLJOaonNSpLr+oEt4WP9tTjNRpLsh4Uw4LF
+ Gd5ogzx4oEKdfcFEvCy/twPdL7YChwqdEvTb1nHKUTlJ1KdLeE+8LKOWm+2JUp1w8KQeFjfbfNIZ/mhS
+ HcDgn3BYg6gPFP8AtAeKHCh2pCYuCx/2gPFN+0B4oUh2C4KJeFkHP81E5/mlSnY3hN6gWMc7zTfbkqQ7
+ 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
+ FTseoE/qBYZz/NN+0PNLhU7nqBLeFiDP80/27zQpDtbwlvCxvt3mm+3eaVKdr1Al6gWL9u80vt3mhSna
+ 9QJeoFi/bvNL7d5pKdr1Al6gWL9u80vt3mkp2vUCXqBYv27zS+3eaSna9QJeoFi/bvNL7d5pKdr1Al6g
+ WN9u80vt3mlSnZ3hLeFi/bvNL7d5pUp2t4S3hYv27zS+3eaVKdreEt4WL9u80vt3mlSna3hLeFi/bvNL
+ 7d5pUp2vUCXqBY327zS+3eaSnZ9QJeoFjfbvNL7d5pKdn1Al6gWN9u80vt3mkp2fUCW8LFOd5pj1DzSU
+ 7geE+4LCHUR4qbeoeaVKdvcFEvCyRneaRzfNClOoXhLeFlfbERuTKKnR3J5VNt0ozXykpKSoEpSmKClS
+ pAqMJwkpkE8JBJJS0JlJMgVLJJJIKUkkkkpdJJJJSkkkklKTJ0ySlJk6ZJSkkkklKTpk6SlJk6ZJSk4T
+ JwkpkmcnTOSU1bVWcrNqrOSUyYrdaqMVutJScJymCcpKWKiVIqJSUsnTJ0lKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUkkkkpSZOmSUpJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklP/1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6ClkkkkEqT
+ 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
+ 0FJSJ1xQXXFWDQSm+ykpKa3rOTi5ysjDKmMI+CKmqLnJ/XKsnDKG/GITgpH9pITjLKDZWWqq9xCKnTGY
+ U/2srH9UqTbCUqU6hyiUN2QVWZJR20lyKmBvcm9dysDEJUhhHwQUgFzlMXFHGGVL7IUFNf1im9Yqz9kK
+ X2QoKa3rOS9Yqz9kKX2QoKa3rFL1irP2QpfZCgpresUvWKs/ZCl9kKCmt6xS9Yqz9kKX2QpKa3rFL1ir
+ P2QpfZCkpresU/rFWPshS+yFFTW9YpesVZ+yFL7IUVNb1il6xVn7IUvshSU1vWKXrFWfshS+yFBTW9Yp
+ esVZ+yFL7IUlNb1il6xVn7IUvshSU1vWKXrFWfshS+yFJTX9YpesVY+yFL7IUlNY3FBde5XjiFDdhFBT
+ S+0ORWXuRvsJ8ERuEfBJSMZDk/2kopxSFXfUQkpIMkqxVklZpBCLU5JTuU3Sr9T5WJQ9alDklOi0qUIb
+ CipKYwnCYp5SUulKaVElJTKUlGU4TSpdJJJNUpJJJJS6SSSSlJJJJKUmSSSUpJJJJSySdMkpdJJJJSky
+ dMkpScJk4SUyTOTpnJKatqrOVm1VnJKZMVutVGK3WkpOE5TBOUlLFRKkVEpKWTpk6SlJJJJKUkkkkpSS
+ SSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMk
+ ydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSn//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJB
+ SkkkkEqTpk6SlkkkkVKSSSRUpJJJFCkkkklKTpk6SmJUCVMoZSUyCmAoNRWpKWLUF+islAeErUgKhtlE
+ ISARtSP00tiPCYhO4lINqbajEKJR4lMAxSDE4UwncSkexRLUeFEhHjUhhOplqaEuNDHbKb0gVNSBQ40U
+ jFIT+mAiSmJS4lIyxQLEUlRKXEpF6QKXohFBUwjxKQClTFcI4CfalxKRBqltUiIUS6EOJTE1gqBoBRQ5
+ SBS4lNU44S9AK3CRCXEpqigJ/RCMSo7kuJSE1BIVI41Ug1DiUhaxFFamGp+ErUjNIKgccI+5MXI2prGg
+ KPohWC5RlOtSH0Al6AVgKUI8Smp6ATihWoTQlxKa/oBMccK0E+iBkuaJxgmGPCvEJbU3iU121Qp7YRYU
+ SlxKRlNKcqKFqZAqQUQEQBC1MdqRaiAJiE21I4TgJymBQtTNqKEEFFaULUyKC9GKC9C1NdydqZydqSmy
+ xHCAxHCCl0kkkVKSSSSUskkklSlJJJI0pSYp0xQUskkkkpdOmTpKUnTJ0lKTJ0ySlJJJJKUkkkkpSSSS
+ SlwnKYJykpE9VXq09VXpKRhGYghGYkpsNU1BqmkpdJJJJSkydMkpSSSSSlJ0ydJSkkkkVKSSSSQpJJJJ
+ SkkkkkqSSSSUpJJJBSkkkkFKSSSQSuklKUoKYlQKmVEpJYynBTQnARUkCmFBqIAnBSxCA8KyQg2BPCnP
+ uWTlLXvCxstPCnJu5UK2yUrjqlQdU9Lq4lMrYpxgQqGCJW9Q3RAlSD7KFE4oWltUC1N4lpc/7KEvsoV/
+ altS4kND7KEvsoV/altS4lND7KEvsoV/altS4lND7KEvsoV/altS4lND7KEvsoV/altS4lND7KEvsoV/
+ altS4lND7KEvsoV/altS4lND7KEvsoV/altR4lND7KEvsoV/altS4lND7KEvsoV/altS4lND7KEvsoV/
+ altS4lND7KEvsoV/altS4lND7KEvsoV/altS4lND7KE32ULQ2ptqXEppDFCIMQK0ApppKWn9kCDZjALR
+ JVe0p0SVOJk0gLEymwuiylgZg5U4khxrjBQQ7VFvGqA0apcSm9QZWtjMlZWMFt4jUOJToUUSrrMUFRx2
+ rQY1NMlNUYgT/ZArwCeAo+JLnHECicULSLQm2I8anO+yhOMULQ2J9iXGhofZQn+yhX9qW1DiS5/2UJfZ
+ Qr+1LalxIaH2UJfZQtDam2pcSmh9lCX2UK/tS2pcSmh9lCX2UK/tS2pcSmh9lCX2UK/tS2pcSmh9lCX2
+ UK/tS2pcSWh9lCf7IFfDU+1AyWlz/sgS+yBaG0JQEOJDn/ZAkcQLQ2pbUuJLmHECj9lC0y1DLU4FTRGM
+ FMYwVsNUgEeJLT+yhL7KFehIBDiXNE4oVe7GAC1yFUvGidGSnnMqkBY17YW/m6SufyXap9qaxMFTY5Vy
+ 7VEYUrU3a9VepZKoVLTxwlam/RTKv14wQsZq0q26JpKmuMUJfZAr4CUJnEhpDECcYgVwKQQMkNP7IE32
+ QK8lCHEhoHECX2QK8QmR4kNMYoT/AGUK4E6FqaRxQm+yhXSmStc0/soS+yhW06Vpaf2UJfZQriSVoaf2
+ UJvsoV1JK1NL7KEvsoV1JJTS+yhL7KFdSSU0vsoT/ZQriSSml9lCicUK+mhJTnnFCQxQr+1LakpqDFCm
+ MQKyFIFIlLWGIExxArgKRKFqcy3FCzsjHAW7Ys3JCkCHnsiqFm2iFt5LVlXMTwFNB5QpVh7EHbqnUpPQ
+ 2StnEqlZeO3Vb2E3hAqdCjGBV1uKFLHborrWqOUktE4oTfZQrxCaEy0NL7KEvsoV2EoRtTS+yhL7KFdh
+ KErU0vsoS+yhXYShK1NL7KEvsoV2EoStTS+yhL7KFdhKErU0vsoS+yhXYShK1NL7KEvsoV2EoStTS+yh
+ L7KFdhKErU0vsoS+yhXYShK1NL7KEvsoV2EoStTS+yhL7KFdhKErU0vsoS+yhXYShK1NL7KEvsoV2EoS
+ tTS+yhL7KFehKELU0/soTHFCuKJKIKWg/GCo30ALXeVQyFIEPP5LIWTfotvLCxcgJ1KaJdqj0mVXcNVY
+ oGqCnVxmytnHplZeG3hdBisQUlrxgUYYoVipqOAmEqaYxAmOIFfASITeJLmHFCj9mC0i1R2I2hoDGCIM
+ YK2GpwElNT7KEvsoVxKELU0/soS+yhXIShJTT+yhL7KFchKElNP7KEvsoVyEoSU0/soS+yhXIShJTT+y
+ hL7KFchKElNP7KEhihXITgJKaf2UJHFCvAJQlxIc84gUfsgWjCbajxIc/wCyBMcQLS2pixLiS5ZxQmGM
+ FolqhtTrS1BjBS+zBWgFMBLiS0vsoUxihXAFMNTTJLmWYwCzMqkBdBaNFi5piU8FTz2S0BZzzqr+Y9ZT
+ 36p1qTMKs1iVTrMq9SErU3KWStGmiVUx2rWx2pWpJXjAqy3FCLU1WmtTDJTS+yBL7IFoQmhN4kND7IE/
+ 2QK4klaGp9lCY4oVxMUrQ0/swS+zBW0kbQ1fswS+zBWwnQtLT+yhL7KFchOhaWl9lCX2UK6kkppfZQl9
+ lCupJKaX2UJfZQrqSSml9lCX2UK6kkppfZQl9lCupJKaX2UJfZQrqSCmicUKBxgtCE21FTQGMFMYoVza
+ nhJTUGKE/wBkCtpSlamr9kCg/FCvgqL0gUuNfjALKyKoXQZAWPkhSBDi2iFVeVeuCpPCdSkDnKVeqg4I
+ lQ1RpTpYtcraxseVl4Y4XQ4jdECVJGYoRPsoVtjVMhRGSWh9lCX2UK7CUIWhpfZQl9lCuwlCVqaX2UJf
+ ZQrsJQlaml9lCX2UK7CUJWppfZQl9lCuwlCVqaX2UJfZQrsJQlaml9lCX2UK7CUJWppfZQl9lCuQlCVq
+ af2UJfZQrkJQlamn9lCX2UK5CUJWpp/ZQl9lCuQlCVqaf2UJfZQrkJQlamn9lCX2UK5CUJWpp/ZQm+yh
+ XYShK1NL7KFMYoVqFIJWpqfZAhvxQrxKE9yIS5N+OAsnJrhb16x8oKUIcK8Qs+wrTyQsywI0pas6rUxm
+ ysyoarYxG8IKdbFqladeMCq+Gxa9TdE0qawxApDECvAJwEziU0vsgUDihaMJi1LiU5hxQkMYLQLU21K1
+ NQYoUvsoVsBOlamn9lCX2UK4khamn9lCX2UK4kkpp/ZQl9lCuJJKaf2UJfZQriSSmn9lCX2UK4kkpp/Z
+ Ql9lCuJJKaf2UJ/soVxPCVoaJxQoHFC0YTbUeJDnfZApDECvbU4alxJaP2UJjihaEKJCXEpo/ZQpDFCu
+ QnAR4ktQYoT/AGUK4AnhN4lzS+yhDfihaIChY3RISU4OTQAsTKYAukzBAXNZrolTWpy7TCG1yhc/VDY9
+ K1OhWZV6lsrOpK08cJWpvU1Sr9WOCgY4WnS1K1MGYoRRiBWmNRQFGZIaP2QJfZAr0JihxKaP2QJ/sgVx
+ JK1rT+yhP9lCtp0rU0/soTfZQriSVoaf2YJvsoVxJG1waX2UJfZQrsJQlxJaX2UJ/soVyE8JcSGj9lCX
+ 2UK9CaEuJTS+yhL7KFdhPCXEpo/ZQn+yhXYShLiU0vsoS+yhXYShC1NL7KEjihXYShK1NA4oUfsoWjtT
+ bEbU0BihSGKFc2pJWprDECmMQKwCiNKaSlpuxAql+MAthyp3jRGJU85k0wsm5kLfywsW8KUFDnuQyUZ7
+ UItRtS7NVfx2SqNY1WnihG1OpjUStOvGCr4jeFrVNTJSU1/soTfZQr8KMKO7U0vsoS+yhXYShK1NL7KE
+ vsoV2EoStTS+yhL7KFdhKErU0vsoS+yhXYShK1NL7KEvsoV2EoStTS+yhL7KFdhKErU0vsoS+yhXYShK
+ 1NL7KEvsoV2EoStTS+yhL7KFdhKErU0vsoS+yhXYShK1NL7KEvsoV2EoStTS+yhL7KFdhKErU0vsoS+y
+ hXYShK1NL7KEvsoV2EoStTS+yhI4oV0BOQlaQ5zsYKvZjgLWcFUuCeJLnEyKgFmWsErYytFi3v1TuJS1
+ bBK08akFZVT9VtYRmEuJDo04wIVgYoRccaK2GqOUktD7KE32ULQLUxCHEpzjihROKFoEKJCcJIaH2UJx
+ ihXtqcNS4lNMYoUxihW4SlNMlNT7KExxQrZKaUrU0/soTfZQrqeEeJDQ+yBMcQLQhLajxKc44gTfZAtL
+ alsS41Od9kCRxQtIMTFiXGpyX40KlfTC3LGLNyWqQTQ4GQ2FSI1V/KWeTqn8SG5jslbONjgrJxDquhxA
+ mEpSMxApfZQrrApEKPiU0RihS+yhXQE8IcSWl9lCX2UK9CaEuJTR+yhL7KFehKEuJTS+yhL7KFehKEOJ
+ TR+yhN9lCvwlCXEpzzihL7KFeIShHiQ0fswTHGCv7UxajxKaH2YJxihXC1IBLiU124oRBihWAiBMJS0X
+ 4oVO/GAWw9UshOiVPPZFICzba4WzlLIuOqfaEAZqrdFcqo06q/jJWp0MeiVo1YwQMULVqagSpAMUJ/so
+ VwBJM4ktI4oUfsoV+E0I8Smh9lCX2UK/tTbUuJDR+yhN9lCv7UtqXEpofZQl9lCv7UtqXEpofZQl9lCv
+ 7UtqPEpo/ZQl9lCvbUoQ4lNH7KEvsoV6EoS4lNIYoUhiBXAFIBAyS0fsgQ34gWnCG8JCSnDvxwFk5FcL
+ oskaLBzNFJaHMcNUSpslAe7VHodqlanUoqBWhVjAqrirWpCVqYNxAiDECtNCKAmGSWgcQKJxQtAhQISE
+ lNH7MEvs4VwhNCdxIan2YJ/soVwNUg1DiU0fsgS+yBaAaltQ4kOccQJvsoWiWqJajxKaAxQpjFCtgKYC
+ Bkpp/ZQkcUK9CRCHEuc/7KEvsoV+EoS4lNH7KExxgtDaoOCIklybccLPvpAW3cFlZKfanHuYAq20SrOQ
+ 5U9+qVqb1DAVr41AKx8Vy38PWErU2mYwRPsoVqoaIm1RmSnP+yhROKFoEKJCPEhofZgl9mCuwnDUeJDS
+ GKE4xQrwanAQ4lNH7IE/2QK9CUIcSHPOKExxAtCE21HiU5/2QJfZQtDam2o8SQ5/2UJfZgrxCaEeJLS+
+ zBOMUK7tUgEOJTSGKE4xQrsJwEOJTSOKFVuxgAtghU8gaIxkp57JqAWbYwStfMMSsa1+qfxIZMaJWhRW
+ Csyp+q1MZyXEp0KaAVcZjBDx1o1hNMlNX7KExxQtDamLU3iS5/2UJfZQr+1LalxKaH2UJfZQr+1LalxI
+ aH2UJfZQr+1LalxKaH2UJfZQr+1LalxKaH2UJfZQr+1LalxKaH2UJfZQr+1LalxKaH2UJfZQr+1KEuJL
+ Q+yBL7IFehKEuJTQOKEJ+MFpkILwnCSnGuoAWVk1gLeyOFh5ZUnEhzXDVWccSVTe7VW8Q6hLiU7eLVK0
+ WY4VbCErWY3RNMlNX7ME4xQrm1SaFGZJaf2QJjiBaAATEBDiU5pxAo/ZQtAhNCdxKaP2UJfZQr4an2pc
+ anP+yhL7KFf2p9qXGpz/ALKEvsoWhtS2pcaHP+yhL7KFobUtqXGpz/soT/ZQr+1LalxqaH2UJfZQr+1L
+ alxqaQxQnOIFfa1SLdE3jS4l+MAFi5VULqMlui57NCkBtDhWt1UWN1RLuU1XKdSm9j1StbHolUMULbxm
+ ppUlrxgifZgrNbUXamGSWh9lCcYoV2EoQtDT+zBL7MFcTJWpqjFCkMUKwCpAoKa32QJvsgVyUpQU0/sg
+ T/ZArcp5CCmn9kCY4gV2UxKKmicUKJxQrxUUVNL7IE4xAricBG1NMYgSOKFeATEIWpzX4wVG+iFtvaqG
+ Q3RSDVTzuRXCz3t1WtliFk2HVOpTOpmq08eqVnUalbWK3hGlNqnHVxmME9LVcaFGVNcYoTHFCuhMUy1N
+ L7MEvswVyEoRU0/swS+zBXIShJTT+zBL7MFchKElNP7MEvswVyEoSU0/swS+zBXISStTT+zBOMUK2kkp
+ qjFCl9kCsynlC1NX7KE32UK3KcJWloOxQqtuOAthwVS5qNocG+qFm3MhbWSFkZCKmkRqrNDJVadVdxuU
+ lOnjUStOvGEKtiBa9bdEFNb7KFH7KFfIUCkCpp/ZQl9lCtykkpqfZQn+zBW08IIaf2YJfZgrkJJKaf2Y
+ JfZgriSSmn9mCX2YK2lCKWp9mCX2YK2klamp9mCX2YK2kjaWp9mCX2YK2klamp9mCRxgrgCltQ4lORdj
+ wFlZNULo72aLEzBCdanDtbBQ2t1RbzqhMOqKm9RXK06KJVDGWxjBAoT14wRhihGrCOAmkqaJxQm+yhXS
+ mSU1BihOMUK0nlBDW+zBL7KFZlPKSmr9lCkMUKyCnlBTVOMFA4wVwlRJRS0zihN9lCuJBJTUGIFL7IFb
+ CdJTT+yBL7IFdT6JWpofZAouxQtGFBwStTk2YwCo30wtyxqzclqeFPPZLYWa7la2YFkvGqNKbWM2Sugw
+ 6AYWDicrpsHskpvV4ohSOKFar4UyEy9UtD7KEvsoVyEoRtTU+yhL7KFchKELQ0/soS+yhXEkrU0/soS+
+ yhXEkFNP7KE4xQricIKan2UJjihXUoSU5rsYIJxlrFkoZrSU5gxkRuKFe9NSDYRU1W4gUxihWgnBSS03
+ YoVO/HAWs4qlfwnRQ4GTVCyLxC3MtYeSVJSmm46olWqruOqNSdUqU6mOyVrUUArOxAt3GalSkteKEYYg
+ VisI4hREpaP2QKJxQtAqBCQKml9lCX2UK5CeErQ0vsoS+yhXYShC1NL7KEvsoV2EoSU0vsoS+yhXYShB
+ TS+yhL7KFdhKElNL7KEvsoV2EoSU0vsoS+yhXYShFTS+yhL7KFdhKElNL7KEvsoV2EoSU0vsoS+yhXYS
+ hJTS+yhL7KFdhKElNL7KEvsoV2EoSU0vsoS+yhXYShJTS+yhL7KFdhKElNL7KEvsgV2E6CmkMMKf2MK6
+ FKELU5VuMAFl5NQC6C8aLEyyipxrRBQ2nVSvdqq7X6pKdWhy1ccrExnLZxSkp1K0VDqGiPCSkZTKRCZJ
+ SySdKElLJwnhKE0qXSSSTVKSSSSUpMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lLJk6ikpdOEycJKZJnJ
+ 0zklNW1VnKzaqzklMmK3WqjFbrSUnCcpgnKSliolSKiUlLJ0ydJSkkkklKSSSSUpJJJJSkkkklKTpk6S
+ lJJJJKUmTpklKSSSSUpJJJJS6cJk4SUsUCxHKBYkpqvUWqT1FqSmzWrDVXrVhqSmSZOmSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJT/AP/X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJNSpJJJJSk
+ kkk5SkkkkVKSSSRQpJJJJSkkkkFLFRIU00JKYhTBUU0pqkpKG5NKRKSkZCZSKgUlLgqUoYKkCkpRUCiF
+ DKSmMqQcoFNKKk4KdBDkQFFS5USpSoFBDElNKSZJSpSlNCSIUvKScBOAnKYqQTwlCKkjSpyhAqW5JSnF
+ BcUQlQIQUxBUwVCE4QUlDkiUOU8oKWJUVKEoSUppRQUJOHJKTSokqIcnTlMSVAlTIUCEVMZUgU0JwEVM
+ wVIFQCeUVMpUS5IlDcUlMt6cPQCU7SmlLaaZU4QmFGlBTAoZKI5CKSmBSCScIKXCIFAKQKCmcqJKaVEl
+ BSxKaUxKZBSRpRmoDUZqSkiC9FQnpKQOSak5JqSmyxHCAxHCSl0ydMipdJJJFSySSSKlJJJJKUmKdMUl
+ LJJJJql06ZOkpSdMnSUpMnTJKUkkkkpSSSSSlJJJJKXCcpgnKSkT1VerT1VekpGEZiCEZiSmw1TUGqaS
+ l0kkklKTJ0ySlJJJJKUnTJ0lKSSSRQpJJJJSkkkklKSSSSSpJJJJSkkkkFKSSSTVKSSSSSpMkkgpUJQp
+ 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
+ 5AWg9UMgJ4Q4OWFkPGq2ssLIeNU5SfFGq6XB7LncUaro8IcIFTsV8KZUKxopkKM7pYJSlCeEVKSShKEF
+ KTSnhNCKFSlKUJQkpeU8qKkgpdOCop0FMkkyaUkqKiSkSolEKXlIFRU2hFSxVW8aK9tVe5miQKnAyxys
+ LKC6LLasDLClBQ5T+Uag6oTxqi0DVOU7eGt7G4WDhhb+MNECp0GFEBQWIgUJSylMklCClJJQlCSlJJ4S
+ hJSySeEoSQsknhKElLJJ4ShJSySdJJSySdJJSySdJJSySdJJSySeEoSUsknhKElLJJ4SSUsknSSUpJJJ
+ JSkkkoSUyaURQaEUBMKmreNFhZoXQXt0WFmtRBU89k8qs06q3kt1VUN1TlN/GK3cTssPFC3cQcIKdaoa
+ I8IVXCKUCpG5RlO5QTlMgVIKAUwkpeEoThJMKlkydMmqUmTpklKTJ0ySlJJJJKUkkkkpdJMnSUpOmTpK
+ UkkkkpZRUlFJS6cJk4SUyTOTpnJKatqrOVm1VnJKZMVutVGK3WkpOE5TBOUlLFRKkVEpKWTpk6SlJJJJ
+ KUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWG
+ qvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSQUpJJJJSkkkkVKSSSSUpJJJFSkkkklKSSSQUpJJMkpYqJUkoSUxTpQkgpiVAhETEJKRQ
+ nCnCaElLKJCmolFSMhRhFIUYSUwAUwlCSSmUpiknRUxhKFJJGlMIShTTJKWAUgEkpRUpMnlMkpSSSZJS
+ 6ZJKUlLQlCdJBTFOAnSSUuEkpSlJSxUVJJJSgpKKUoqXKZKUklLJ0kkbUpJJJK1LFRIUkkrUhITtCJCU
+ IWpkxFlBBTyhamZKGU8pJKYp0kklLpSmSlBSpTFJJJSySdJClLhFaUIIjUqUklCeVNDelSkLk7FEqTEq
+ U2WI4Qa0cJUpSSdMipSZJJJSkkySSl0kydFSkydJBSySdJBSydJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUuE5TBIpKRPVV6tPVV6SmAR2IAR2JKTtU1FqkkpSdMkkpdMnSSUsknTJKUkkmQUunUU6Kl0kySKl0ky
+ SBKl0kySFqXSTJJWpdJMnQtSkkkyKl0kySNKXShJKUqUulKiSmlKksiUyaU4QVakgFKE8JWq2JUHFTIQ
+ nJwKra1yx8sLXtWTlqQFVuDeNVCkaouQdUKp4BUoVbv4A4XQ4/C5jDuAW7RkgBCQVbqJiqn2oJjlBRUp
+ tpKn9qCX2oI0huJKn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUpuJ
+ Kn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUpuJKn
+ 9qCX2oJUpuJ1S+1BL7UEKU3ExVT7UEjlhGlNkhDeEH7UFF2SE4BLXym6Lns0crbyLwQsLMsBlPpQDh5A
+ 1VUcq1kO1VUHVKl9Ohi8roMILncZ0Ldw7QEKRT0mMNFfYFkY+QAFdblBNIWtshMQq5ygonKCbS1sKQVP
+ 7UEvtQRpFt4J1R+1hP8AawhS4N1JUvtQS+1BDhXU3UlS+1BL7UEeFDdSVL7UEvtQS4VN1Mqf2oJfaglw
+ rSW4kqf2oJfaglSLbiSp/agl9qCXCuDcSVP7UEvtQSpdTdSVP7UEvtQQpFNohRhVzlBR+0hGkU2wFMKk
+ MkJ/tQQpNN2UxKpnKCj9qCXCpupQqYygn+1BGlNohIBVTlBMMoJUpvKvfwofaggXZIhIBLm5vdc9lcrY
+ zLwZWDkWyVIFNY8otar79UZjk5TdqWnjlZNb4V+i0BBL0GMVpVrCx8gBaNeUE0hTowolqrDKCRygo6Q2
+ QFIBU/tQTjKCVIbwSKpjLCRywhSG0SmVI5YTDLCNLC6AAShUhlhS+1hCktkhRhVzlBROUEQF4bUJQqn2
+ oJ/tQRpRbUJQqv2oJfaglSwltwlCqfagl9qCVIttwlCqfagl9qCVLrbcJQqn2oJfaglS5twlCqfagl9q
+ CFJbaUKp9qCX2oJUgtqEyrfaQm+0hGlttpOFT+1BOMoJUq26AnhUhlhS+1hClwTWBZ+Q1GflBUb8kFPi
+ upoZIWXcFfvuBWbbYCpQnhatirHlHscqxdqjaKbdHK3sLsudofBW3h3AQgSh6fG4V9qx8fJACuDKChkF
+ NwplTOWE32sJvCtbqZU/tYS+1hKlNxJU/tYS+1hGlNxJU/tYS+1hKlNxJU/tYS+1hKlNxJU/tYS+1hKl
+ NxJU/tYS+1hKlNxJU/tYS+1hKlNxJU/tYS+1hKlNxJU/tYS+1hKlNxJU/tYS+1hKlNxJU/tYS+1hKlNx
+ JU/tYS+1hKlNxJU/tYS+1hKlN1JUvtYS+1hClNwqBVU5YUTlhOAS2XBVbxokcoKtdkhPGiXNzAsDKWzl
+ 3ArDyXynWkBoPGqPQNUBx1R6HapWnhdzDHC6HFXNYtoC3MbIAQWkO2xEhUGZQRPtYUZCG3CSq/agl9qC
+ FLbbSeFUGSE/2oJUq23CSqfagl9qCVLg20lT+1BP9qCVJbiSp/agl9qCFIbiSp/agl9qCVItuJKn9qCX
+ 2oJUttuJKn9qCX2oJUq24kqf2oJfaglS8NxKFT+1BOMoJUptwmIVb7UExyQlSKbEJwqhyQm+1BGlU3wV
+ KVQ+1BL7WEOFTdJUdFSOWEvtQR4Ut2EoVP7UEjlhKlNwKYKz/tYUhlhAxU2rDosXO7q5ZlCFk5mQDKeI
+ pcTMGqynjVaGXaCs5z9VJSktQV+lZ9bldqelSXWx1q0FYlNoC0acgBKlO3WVYasqvKCstygo5RU3oUYV
+ b7UEvtQTKU2YSAVb7UE32oI0tbiSp/agl9rCFLW4loqf2sJvtYS4UN1JUvtYS+1hKlNyEoVT7UEvtQRp
+ NtuEoVT7UEvtQSpVtuEoVT7UEvtQSpVtuEoVT7UEvtQQpIbcJKp9qCX2oJUubcJQqn2oJfaglSG3CUKp
+ 9qCX2oJUhtQmVX7UEvtQRpBLaThU/tQT/aglS3ibkJ4VMZYT/awhS4FuQoOVf7WFB+UEgGQBhkLGyQr9
+ +QCsvIuBUwC7haFwVN4Vq14VR7k9PAgcFOoaqDnJ63wUVhFO3hDhdHicLl8S4Bb2LkgBRyCx3WcJyqTM
+ sJzlhQ8Oqm0kqf2sJvtYSpVtxJU/tQS+1hGlW3ElT+1hL7WEKU3ElT+1hL7WEqU3ElT+1hL7WEqU3ElT
+ +1hL7WEaU3UlS+1hL7WEKU3ElT+1BL7UEaU3ElT+1BL7UEqU3ElT+1hL7WEqS3ElT+1hL7WEqU3ElT+1
+ hL7WEqU3ElT+1hL7WEqU3ElT+1hL7UEqU3ElT+1BI5YSpTaKG5VjlhROUE4RUytCysoK5ZkhZuTeCpoh
+ Tj5Q5WRcNVq5NgKyrTqiuAY1crZwuyxazqtbEsiEFU9ThLWr4WBiXgLTZlCEyQWugUgqf2sJDLCjpFt0
+ BShUxlBSGSEKRbahKFV+0hMcoIUoFtJKocoJvtYRpc3ElT+1BL7UEqS3ElT+1BL7UEqQ3ElT+1BL7UEq
+ W23ElT+1BL7UEqRbcSVP7UEvtQSpILcSVP7UE32oJUubqdUhlBP9qCVKbiiVV+1BMcoIIptJwqf2oJxl
+ BJDcSVT7UE32oI0pup1RGUFIZQSpLbITQq32oJjlBCk23Wp3HRUhlhM7KCXCbVaLMOi5jP7rby8kELnc
+ y4GVKIqtybhqoVjVPa+Soscn8KnQoC1cYLIpfC0qLQEuFLuY60qliUZAC0KsoJpCnVapKi3LCn9rChMU
+ tkhRKrnKCicoIgLS2k4VL7UEvtQSpDfCdUftYS+1hNpDdKiQqn2oJfagkhtwlCqfagl9qCK4NuEoVX7U
+ EvtQSpLbhKFU+1BL7UEqU20lU+1hL7UEqQ20lU+1hL7WEqXANtJU/tYT/aglSabaaFU+1hL7UEaRTbTg
+ Kn9qCQyglS0t0JKp9qCRyghS22yUyqnKCj9qCdwotuQpAKkMoKYyggQV4bTlSyDondlBU78kFOjFfTQy
+ 1j3rRybgVl2vlSiK7hazkMhTLlAlOpRiuwarSxQs1jloY1gCVMR0egxBwteoLDxbwFp15IUUgi3QSVT7
+ UE32sKOk23Eyqfawm+1hKkW3ElT+1hL7WEqVbcSVP7WEvtYSpVtxJU/tYS+1hKlW3ElT+1hL7WEqVbcS
+ VP7UEvtQSpNtxJU/tQS+1BKlW3UlS+1BL7UEqVbdTKn9qCX2oJUq25oloqf2oJfaglSm5oloqf2oJfag
+ lSm4kqf2sJfawlSm4kqf2sJfawlSm4kqf2sJfawlSm6E6pfawl9rCHCm27KDZwq/2sIVmUE4RTbWzO65
+ 3KGq2MvIBWFk2glPpFsKhqt7A7LnarRK2sK8CEKVb1NB0ViVlUZQhH+1BNMVW2yUoVL7UFIZQQpFtyE0
+ Kr9qCY5QSpVtpOqf2oJfaglSrboTwqQygpDKCFKttpKp9qCY5QSpVtyQnlUftYS+1BLhU3SVEqp9qCRy
+ gjSmyU0Kt9pCb7SEaS3AE6qDKCRyghSaTPWfk8Ir8oLPyMgFSRCqc3LWYeVbyrgVnGzVScKKdPE5XQ4n
+ ZcvjXALdxckBNIQ7zFIqizKCl9qCjMVN0J1SGUFL7UE2kttMqn2oJfaglSm0nVP7UE/2oI0puBOqf2oJ
+ /tQQpTbSVT7UExyglSm0UyqHLCb7UEaU3UiqgygkcoJUpsFMFWOSE32kI0huhGYs4ZQRW5YTSEt4qjk8
+ KRywqWTkgoRCnMzO6w7+Vp5d4MrItsBKlAQxY3VamI1ZbHiVpY1oCJCno8MLWr4WDjZAC0WZYURCW+UM
+ qqcsIZywgIqbqUKn9rCX2oI0tbiSqfagm+1BKlW3E6p/awl9rCVKtuJKn9rCX2sJUq24kqf2sJfawlSW
+ 2kqf2oJfaglSm4kqf2oJfaglSm2lCqfagn+1BKlNsBSVMZQSOWEKUvk8Lnc5a2RlAhYObeCpAFOXbyjY
+ 3KqWWao2PZBRpT0mGtilc/iXgLWpyQgQp0wFKVTGSExygmUluEpSqBywnGWEeFDdhJU/tYSOWEqS2ymV
+ P7UE4yglSG4ApgKkMoKYyggQptQmIVc5QUDlBClNmE4VP7UE4ygnUpuJlV+0hN9pCFJbakFS+1BP9qCV
+ Kb4SKpDLCRygm8KmdyyMkK3bkhZmTkBSAKtzclUDyrGTcCqJt1RVbqYhXRYR4XLY10LexMgCEqVb0dZ0
+ Uis+vKEKZywozHVTaKUKn9rCX2sI0puBOqf2oJfaghSm6olVPtQS+1BKkNghRhVzkhN9pCdSm0ApBU/t
+ IT/aglSm4mhVftQS+0hClNmEoVb7SEvtIRpLaATwqn2kJ/tQQpTZISAVb7UEhlBKlN2FWyDooHKCq35Q
+ hIRQ5mb3WFcNVqZd4KyLbNVIIoZ0jVbGKFi1PErVx7gEuFTv460GLEoyQFeZlhNMVOkolVBlhMcoJnCl
+ tpKp9qCb7UEaQ3ElT+1BL7UEqVbcSVP7UEvtQSpVttJU/tQS+1BKlW3ElT+1BL7UEuFVtxJU/tQS+1BL
+ hVbcTFVPtQTfaglSW1CkAqf2oKQygjSm5CDYhHKCFZkhABLWyVg5i1sm8ELCy7QU9DRcdVfwzqFlOs1V
+ 3EugpKeuwjotZnC57CyAAtVmUITSFN1ygqxygo/aQgAltwnAVT7SE/2oJUpuJKn9qCX2oJUptpKp9qCX
+ 2oJUptpKp9qCX2oJUhuJKn9qCX2oJUpuJKn9qCX2oJUpuJKn9qCX2oJUluJKn9qCX2oJUpvNUiqIywnO
+ WE3hUvkjRYOYFp35IIWPlXAqWIU5NzdUNg1RLniUJtglTKp1MZbWMuex7gFr42QAmFTvVlEWfXkiET7U
+ FEYpbacKl9qCcZQQpDchNCq/agm+1BKkNyE4Cp/agnGUEKRbcTEKr9qCY5QSpVtkplVOUFE5QRpVt0FO
+ CqH2sJxlhClW6CRCojLCl9rCFJtskKBQDlBQOSE4BTaTgKn9pCkMoI0ltkKrkDRI5QVW/JEIxCnIzhys
+ G0arYzbgZWLY/VTKbWKNV0OEOFzeNYAVu4l4EJKp6CoKwAs2vJCOMoKGQU3ICRCqfagkcoJlKbSSqfag
+ l9qCNKbaSqfagl9qCVKbaSqfagl9qCVKbaSqfagl9qCVKbaSqfagl9qCVKbaSqfagmOUEqU2ymVM5QTf
+ agjwqbsKQCpDKCmMoIEKbZVa5ROUFWtyQiApp5XdYuSFp5F4Kyb7AU+kNSNVexRqqBeJVvGtAKSnpsJb
+ FfC57EyAFrV5QhRkJbxCGQgnKCE7KCACm1KUqicoJDLCdwqb6dURlBS+1BCkNxJU/tQS+1BKlNxKFT+1
+ BL7UEqU24ShVPtQS+1BKktuEoVT7UEvtQSpTbhKFU+1BL7UEqU20oVT7UEvtQSpVtwBTVEZQU/tQQIUy
+ yOFz2cOVrX5IhYeZeCngKca8apqRqo3WCU1Vmqeh3MQLdxgucxbgFtY+QAmlTtMCkQqbMoQpHKCjpKVw
+ TBVnZIUftITqQ3gnVEZQUhlBClNxJVPtQS+1hClNuE0Kp9rCX2oI0ptwmhVftQS+1BKlNuElU+1BL7UE
+ qU20xVQ5QTfaglSm2lCqfagpDJCNKbYCRCrDJCRyQm0lI8LPyEazJCz78gKQIc3LWQ/laGVcCst9mqcp
+ vYnK6TB7Llsa0AroMPIAhBT0VfCmVQZliFM5YUZGqWynhU/tQT/aglSm3CSq/agm+1BKlNuE0Kr9qCb7
+ UEqU2oSVT7UEvtQRpDcThUvtQT/aghSm6kqf2oJ/tQSpTbTFVftQTHKCVItsFMqpyQm+0hOpVtwBFaFQ
+ GSEVuUE0hILdhV7hoonKCrXZIhCIS5+Z3XP5YWxl3grDybJUoU0Ht1RqGaoLnaqxQ8SnWp2sNq3cduiw
+ MS0BbNGQAElOm0KSqDJCf7UFHSW4E6p/agl9qCFIbiSp/awl9rCFItuJKn9rCX2sJUhuJKn9rCX2sJUp
+ uJKn9rCX2sJUq24kqf2sJfawlSW4kqf2sJfawlSW4kqf2sJfawlSG4kqf2sJvtYS4VW3UlS+1hL7WEuF
+ Vt1JU/tYS+1hLhQ3ElT+1BL7WEqU3ElT+1hL7WEqS3ElT+1hL7WEqU3ElT+1BL7UEqU3U4Co/awpDLCF
+ Kb7QpKi3Map/bGppCU13Cw81XrssELIysgFOAU5eSNVUDdVYusBKC0yU6kN3GC2sVY+OtnGQKXWq4RSg
+ VHRHTSpG4KEIpCjCVqYgKQTJ5QtTJMSmlNKCl5STJJUhSSSSVKUmTpJKWSTpIKWSTpJKWTpJJKUkkkkp
+ SSSZJSkydMkpdOEydJTIKLk6i5JTXsVYqxYq5SUzYrVaqsVutJSYJymCSKlkydJJSySSSClJJJJKUkkk
+ kpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSySdJJSySSSSl04TJ0lLFAsRygWJKar1Fqd6ZqSmzWrDVXrVhq
+ SmSZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklP//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJSySSSSlkk6SSmKSdMkpaExUoTQkphCaF
+ OE0JKYwmhShKElMITQpwkQkpgknIUSiFLylKiknKZSmlMkgpeUkySSl00pJklLylKZJJS8pkkklKTymS
+ SUvKUpkklLymSSSUvKUpkklLymSSSUqUpSSSUpJJJJSkkkklKlKUySSl5STJ0FKSShPCSlJJQlCSlJJ0
+ klLJk8JQkpZJPCeElLJJ4TwkpiEQKICmAkpdDeioT0lICpMTFSYkps1o4QK0cJKXTJ0ySlkydMkpSSSS
+ SlJ0ydJSkkkklKSSSTVKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklLhIpBIpKRPVV6tPVV6SmAR2IAR2
+ JKbDVJRapJKUkkkkpdJJJJSkydMkpSZOmQUpOmTohSkkkkVKSSSTSpSSSSapSSSSSlJJJJKUkkknhSkk
+ 6ZOUqUxKSZJSpTJ4TwgpYKYTJSmFTMJ1CU4ckpcoTgiEqJCIU0rgsnLC3LGSs3JplSBTy+SDKpBxBW3k
+ 4pKzn4hlTBTKi8tWjXmEBZrMchHbS5OKnQ+2lMc0qn6Tk3pOTFN37aUvtp8VS9FyXpOSU3ftp8Uvtp8V
+ S9JyXpOSU3ftp8Uvtp8VS9JyXpOSU3ftp8Uvtp8VS9JyXpOSU3ftp8Uvtp8VS9JyXpOSU3ftp8Uvtp8V
+ S9JyXpOSU3ftp8Uvtp8VS9JyXpOSU3Ptp8Uvtp8VT9JyXpOSU3Ptp8Uvtp8VT9JyXpOSU3Ptp8Uvtp8V
+ T9JyXpOSU3Ptp8Uvtp8VT9JyXpOSU3Ptp8Uvtp8VT9JyXpOSU3Ptp8Uvtp8VT9JyXpOSU3Ptp8U/20+K
+ pek5L0nJKbn20+KY5pVT0XJvQckpufbT4pHNKp+g5P6DkVJbcolZ19hcrZoKE7GJTrXByLQShBhWscMl
+ IYJ8EGRpUghaNFpambhkIoxiErWlt15RCMM4+KoilwS9JyCwt45x8U320qj6Tk/ouQWFu/bSm+2nxVP0
+ XJjU5Fa3ftpT/bSqHpOUhU5JeG99tKX20qn6LkvRckvbn20+KX20qn6LkvRckpufbSl9tKp+i5L0XJLW
+ 59tKX20qn6TkvScktLc+2lL7aVT9JyXpOSWtz7aUvtpVP0XJei5FfFufbSl9tKp+i5L0XJL259tKf7af
+ FUvScm9JyaVN05p8UvtpVE1OTek5BTfGaVL7aVnitykKnJKbpzSm+2lVPScm9JyKG59tKX20qn6Lkxqc
+ kpuHOPikM4+KompyQqckp0hmlRsyyQqjanKZpJRU1ci4lZlpJK1n4xKAcIlK0uY1pR2NKvNwT4Iowila
+ Wi2QjMsIVk4hUfsxCVqSVZBCstzCFTFBCf0ikpvfbj4pjnHxVE1uUTW5BTofbj4pDOPis703KQqcgtLo
+ jOPikc0+Koipyc1OQWlsnNPio/bj4qqaXKPoOSWlvDPPipjPPis4UuUhS5JQb/24+KX20qj6Tk/pORXh
+ ufbSl9tKp+k5L0nIpLd+2lL7afFUvScl6TkGIt37afFL7afFUvScl6TkkBu/bSl9tKpek5L0nJLw3Ptp
+ 8Uvtp8VS9JyXpOSXhvfbj4pfbj4qj6Tk/pOSS3ftx8UvtpVL0nJek5JBb320pfbCqPpuT+m5FjLcOYU3
+ 20qp6Tkxpcipt/bj4pfbz4qkaXKJqcguDcdnHxVezMJQTS5QNDkWQLPvJQHPJR/sxKkMQpy9ouBKC5pW
+ v9jKgcI+CVoLmskFaFFpal9iKKzEIStYW7VlkI320qmMdwSNLkDSGyc0+Kb7cfFUzS5N6Lk1Dd+2lL7a
+ VS9FyXouSU3ftpS+2lUvRcl6LklN37aUvtpVL0XJei5JTd+2lL7aVS9FyXouSU3ftpS+2lUvRcl6LklN
+ 37aUvtpVL0XJei5JTd+2lP8AbSqPouT+i5JTd+3FL7cVS9FyXouSU3ftxS+3FUvRcl6LklN37cUvtxVL
+ 0XJei5JTd+3FL7cVS9FyXouSU3ftxS+3FUvRcl6LklN37cUvtxVL0XJei5JTd+2nxS+2nxVL0nJei5JT
+ cOaU320qp6LkvQckpt/bChvyiUH0HJjQ5G1wQ33ErOtJK03YxKEcMlFeHJLSiVghaP2E+CkMI+CFrkVV
+ hCvV5JCCMQhS+zuCVsZbbc0hT+3HxVH0HJei5JYW+M0qQzSqIpcpei5JaW79tPil9tKomtyiWOSQG/8A
+ bT4pfbSqHpuT+k5JkDe+2lL7aVR9JyXpOSXN77afFL7afFUfScl6Tklpb320+KX20+Kpek5L0nJLS3ft
+ p8Uvtp8VS9JyXpOSWFu/bT4p/tp8VR9JyXpOSQG99uPil9uPiqPpOS9JyDKG99uPinGaVQ9JycVOSS3x
+ mnxSOafFUvScmNTk1TcOaU320qkanJvSclam99tKX20qkKnJ/ScihtnNKX20qp6Lk3ouTlNz7aVE5x8V
+ UNLlA1OSU3Ptx8VNucfFZvpORG1ORU33ZhKpX3kqYpKg/GJRS5d7iVWglar8MlRGCfBG0tGsFWWEhWm4
+ RRBiEJWuRMsIR2ZBCj9mKXoFK1NluWQiDNPiqXouTek5AqdD7cfFP9uPis703Jem5NpDo/bj4pfbSqAq
+ cnFTkFpb320pvtpVP0nJei5BaW2c0qJzj4qqaXKBpclaG59uPipDOPiqHouTilySnQGafFL7aVRFTk/p
+ OSU3ftp8Uvtp8VS9JyXpOSQ3ftp8Uvtp8VS9JyXpOSU3ftp8Uvtp8VS9JyXpOSXBu/bT4pfbT4ql6Tkv
+ Sckvbv20+KX20+Kpek5L0nJIbv20pfbSqXpOS9JySG79tKX20qj6TkvScisLe+2lN9tKpem5L0nIrG79
+ uPil9uPiqPouS9FyTJFvjOPikc0lURS5S9FyTMEz8olVbLiUQ0FQOOU5kDWc4lBdKv8A2UpHEKNrnJeC
+ oAkLUfhFCOEUbYZI6biFpU5ZCpNxCEdlDggxOiM0pznHxVH0XJek5MKm59tKX20ql6LkvScmqbv20pfb
+ SqXouS9FySm79tKX20ql6LkvRckpu/bSl9tKpei5L0XJKbv20pfbSqXouS9FySm79tKX20+Kpei5L0XJ
+ Kbv20+KX20+Kpei5L0XJJbv20+KX20ql6LkvRckpu/bSl9tKpei5L0XJKbv20+KX20+Kpei5L0XJKbv2
+ 0+KX20+Kpei5L0XJKbv20+KX20+Kpei5L0XJKbv20+KX20+Kpei5L0XJKbv20+KX20+Kpei5L0nJKbv2
+ 0+KY5p8VT9JyXouRCm0c0pjmlVfQcl6DlIKUndlkqtbeSkaHKJxyU6wkNO1xKpvaStY4hKicEnshbIHJ
+ a0q5S4hWhgHwRG4RCFqKSnILVZGYQq4xiEjQ5C2Mtg5p8U4zT4qkaHKTaHJq0ug3NKIM0qg2lyf0nILW
+ 6c0qJzT4qka3KPpuQSG6c0+Kb7aVT9JyXouSZA3PtpS+2lU/Rcl6LklNz7afFL7afFU/Rcl6LkkNz7af
+ FL7aVT9FyXouSWFufbSl9tKp+i5L0XJLW59tKX20+Kp+i5L0XJJDc+2lL7aVT9Fyb0XIsrdGaVIZpVH0
+ XJ/ScmlTd+2lMc0qn6Tkxqcmobn20qQzSqHpOTipySG/9tKY5pVP0nJek5OCG59tKf7aVS9Jyb0nJym8
+ c4+Kic4+KpGpyganIgKdEZx8VI5hKzm1ORRU5O0UyvySVk5FhK030Eqq/EJTrCXHdJUmNK0fsJPZFZgH
+ wR4glpskKwywhWRhEJjiEJcQSuzJIVhmYQqv2YhL0XIEqdBucfFTGcfFZwqcnFTkw0p0PtpTfbSqXpOS
+ 9Jyagtz7aUvtpVP0nJvScgUN37aU/wBtKo+k5L0nJqG99tKf7aVRFTk/pOQQ3PtpTfbT4qmanJjU5ELg
+ 3ftx8Uvtx8VR9JyXpORS3vtxS+3FUfScl6TklN77cUvtxVH0nJek5JDe+3HxS+3HxVH0nJek5JeG99uP
+ il9uPiqPpOS9JyK5vfbj4pfbT4qj6TkvScktLe+2nxTjNPiqHouTipyKwugM0p/thVAVuT+mUWMtw5hU
+ ftpVQ1OTek5FAbgzSpDNKoei5SFLkmSLdOYSg2ZRKGKXJjQU4UyhBbaSqr3Eq67GJUfshTrZA0CCoEFa
+ YxCmOGUbQXMEhGqsIVg4ZTDEIStrybFOSQrjcwhUG47giClyBpa3ftp8U320+Kp+k5N6LlEUt37afFL7
+ aVS9FyXouQU3ftpS+2lUvRcl6LklN37aUvtpVL0XJei5JTd+2lL7aVS9FyXouSU3ftpS+2lUvRcl6Lkl
+ N37afFL7afFUvScl6TklN37afFL7afFUvScl6LklN37afFL7afFUvRcl6LklN37afFL7aVS9FyXouSU3
+ ftpS+2nxVL0XJei5JLd+2nxS+2lUvRcl6LklN37aUvtpVL0XJei5JTd+2lL7aVS9FyXouSU3ftp8U320
+ +Kp+i5L0XJKbv20+KX20ql6LkvRckpu/bSouyyVVFTk/ouRXMb8glZl1hK0n4xKrPwyUbQ0GPIK0ca8h
+ CGEUavGIStTo15ZARTmFUm0kJzU5JDZOaUvtx8VTNTlE1OSQ3xnHxT/bSs8VOUxU5BTd+2lN9tPiqnpO
+ UTU5JTeGaVIZpVAVOUxU5NU3ftpUTmlVfScompySm39tKcZpVH0nJxU5K0t77YU32wqn6Tk/pOSS2jml
+ N9tKqGpyianIpbv24+KX20+Ko+k5L0nJyW27MJVe3JJUPRcmOOSnBTUusJVUkytI4hKicIp1palVhC0K
+ ckhBGGQpDGcE0laW83NKmM0qiKXKQpcmobwzSn+2lUhS5P6LkFNz7afFN9tKqei5N6LklNv7afFL7aVU
+ 9FyXouSU3PtpT/bT4ql6LkvSckpu/bT4pjmnxVP0nJjU5JTbOaUvtp8VSNLkvRckpvDNKl9tKoipykKn
+ JKbhzCm+1lVvRcmNLklNr7aVIZx8VSNLkwqcgp0ftx8UC3LJVcVOSNJKSmtfcSqL3ErSdikoRwinWpot
+ cQrdNpCl9iKk3FIStTbqyiFZGaVQFDgpek5JTcOcfFQ+3HxVQ1OUfRckpvDNKl9tPiqApcpei5NQ3ftp
+ 8U320+Kp+i5N6TkkN37afFL7afFUvScl6TklN37afFL7afFUvRcn9FySm59tPil9tPiqXouT+i5JLc+2
+ nxS+2nxVP0XJei5JTc+2lP8AbSqXouS9FySm79tPim+3HxVI0uUTU5JTf+3nxT/bj4rN9NykK3JKbVmW
+ SFnX2lys+iSoOxCUbU5TiZRanEK4cEp24RCVqSUXEK8zKIVNuMQiCkhJLd+2FMcwqp6TkvRckpOcwqP2
+ 0quaXIZpckpu/bj4pfbj4rP9JykKnJKb/wBtKcZpVIVOT+i5JTeGaVIZx8Vn+k5P6Tk1TeOcfFROcVSN
+ Tk3pOSU3vtpUhmlUBU5TFTkVN37YUjmFVPScmNTklNo5pTfbSqZqcompySnQGafFP9tPis8VuUxU5JTY
+ flkqldkEohpcUJ2MSkpo22EqtJlaRwyUwwSlamvS8halF5CrswyFYbjkJWpuDMITOzj4qqanITqnJKbf
+ 24+KcZx8VnmpycVOSU6IzSpDNKzxU5EFTklN37aUvtpVP0nKJqckpufbSl9tKpek5L0nJKbv20pfbSqf
+ pOS9JySm79tKQzSqXpOTipyCm8Mwp/thVMVOT+i5C1Nk5hUTnHxVV1TkI1ORU3vtx8UhnHxWf6Tk4qci
+ p0ftx8UGzLJVcVOSNLinBCC64uVNxJWicUlQOEUbU0mEhW67iFIYZCl9lIStSZmUQjNzSqfoEJxS5BTf
+ GafFP9tKoCpyl6TkFN37aUvtpVP0XJvScghufbSl9tKp+i5L0nIKbn20pfbSqXpOS9FySm59tKX20qn6
+ LkvRcipufbSl9tKp+i5L0XJKbn20+KX20qn6LkvRcipufbSm+2lVPRcl6Lkktv7aU4zSqXouS9JyCW99
+ tPimdmEqn6Tk/pOQUvbkErNveStA45KE7DJRtTjuBlHocQrpwD4KTcIhK1NjHyC1XRmFUG45Cn6TklNs
+ 5pTfbSqhqcm9FySm79tKX20ql6TkvSckpu/bSl9tKo+k5L0nJKb320pfbSqXpOS9JyKm79tKX20ql6Tk
+ vSckpu/bSl9tKpek5L0nJKbv20pfbT4ql6TkvSckpufbT4pfbT4qn6TkvSckpufbT4pfbT4qn6TkvSck
+ pujNPin+3HxVH0nJek5JTafmEqnbeSpei4pfZiUQlo2OJQdxWi7DKEcMp1pQ1WkK/TkkKuMQhGZjkJEq
+ brcshOc0qr6LlE1OTUNr7afFOM0+KompyQqcghv/AG0+KX20+Ko+k5L0nJqG99tKf7afFUfScn9JyCG9
+ 9tKY5pVH0nJjU5JTdOafFMc0qn6TkvSckpt/bCn+2FU/Rcn9FySm4M0qX20+Ko+k5L0nJKb320pjmFUx
+ U5P6LkUtr7aU320+KqGlyganJyW/9uPihWZZIVUVuS9FxRCUF9xcqDySVqOxSUM4J8E60tSpxC0qLyEJ
+ uGQitxyErU3W5ZCl9tKp+kUvScmFDc+2nxS+2lUvRcl6Lk1Dd+2lL7aVS9FyXouRU3ftpS+2lUvRcl6L
+ klN37aUvtpVL0XJei5JTd+2lL7aVS9FyXouSU3PtpT/bSqXouS9FySm79tKb7aVT9FyXouSU3PthTfbC
+ qvouTGlyKm39tKcZxVE1OSFTkFN/7aVB+WSqwqcpegUVMLbyVRtsJV52MSgvxCUrU5pcZR6rSEU4ZTtx
+ CErU3KMkhXm5pAWczHIRfScgpunOPihnNPiqZqco+k5JTc+2FIZhVQUuUvRciptjMKf7afFU/Rcm9FyC
+ m79tKX20ql6LkvRcgpu/bSl9tPiqXouS9FySm79tPil9tPiqXouS9FySm79tPil9tPiqXouS9FyCm79t
+ Pil9tPiqXouS9FySm79tKX20+Kp+k5N6LkVN4Zp8VL7afFUPScn9JySmzZmEhZt95cjmlxQnYxKcpzbH
+ ElJhMq6cIlSbhFK1LU2kLQqyiFVbikIgoISU325pCRzj4qh6TkvSchSm4c0pfbCqfpOTipySm59sKX20
+ qp6TlE1uQU3DmlMc4+Komtyb0nIKb324+Kf7afFURU5P6LklN37aUvtx8VT9Jyj6TkVN77afFL7aVR9J
+ ycVOSU3ftpS+2FUxU5P6LklNz7YU/wBtKp+i5N6TklN77cfFMc4+Ko+k5L0nJKbbswlVrMklQ9JyY45K
+ cpqXWEqo6VpnEJUDhFK1NOp5C0aMktQhhkKYxyErU325pUvtp8VQFLk/pOSU3vtp8U4zSqPpOT+k5BTe
+ +2lL7aVS9JyXpOSU3PtpS+2lU/Scl6LkFNv7aUvtpVP0XJei5JTc+2lP9tKp+i5L0XJKbn20p/tpVP0X
+ Jei5JTc+2lI5pVP0nJvSciFpbZzCm+2FVfRcl6LkUNsZpUxnHxVD0nJCpyCQ6X24+KG/LJVMVuT+k4pU
+ uYXXkrOtcStI4xKE7DJRtc5BlErcQrxwSmGEQlamVNxCv15ZCpNxiEUUuCNqbv2wpHNKp+k5L0XJKbf2
+ 0pfbSqfouS9FyC1ufbSl9tKp+i5L0XJIbn20pfbT4qn6Lk3ouSQ3ftp8Uvtp8VS9FyXouSU3ftpS+2lU
+ /Rcl6LkFNz7aUvtpVL0XJei5JLd+2lL7aVS9Fyf0XIJbn20pfbSqfouTei5FTd+2nxTfbT4qn6LkvRci
+ hufbT4pfbT4qn6LkvRckhu/bSl9tKpei5L0XIWpu/bSl9tKpei5L0XJWpu/bT4pfbSqXouS9FyFpbv20
+ pfbT4ql6LkvRcjam79tPil9tKpei5P6LkFNs5p8VE558VUNLkM0uSS3x1A+KIOoHxWWKXIjaXJJb780l
+ U7cklP6DkN2OUVNd9hJU6iSU/wBmKPVjlBTaxgtrGWbj0wtbHZCBU6FSOECsQjSmFKiVAlOSolAhSxKa
+ U5CaE2lKlOCmhOAiELp0kkUKSSSSUpJJJBSkkkklKSSSQUpJJJJSkkkklLJJJJKUmTpklLp0ydJS6i5S
+ UXJKa1irlWLFXKSmbFbYqjFbYipMEkgkkpZJJJJSkydMgpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkkl
+ KSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klP/0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJOkpZJOkkpZJOmSUslCdMkpaE0KUJQkpjCaFKEoSUwhKFKE0JKYwlClCUJKYEK
+ JCJCaEQpFCUIu1LaipFCUIu1LakpFCUIm1LakpHCaEXaltSUihKEXaltSUihKEXam2pKRwlCJtS2pKRw
+ lCLtS2pKRQlCLtS2pKRQlCLtS2pKRQlCLtS2pKRQlCLtS2pKRQlCLtS2pKRQlCJtS2pKRwlCJtS2pKRw
+ lCLtS2oKRwnhE2pbUlI4ShE2p9qSkcJQiQlCSkUJQiQlCSmEJQpwnhJSOE8KcJ4SUjAUwE8JwElMSEJ6
+ MQg2JKa5UmKJUmJKbVaOECtHCSl0ydMkpZMpJklLJJJJKUnTJ0lKSSSSUpJJJNUpJJJFSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUuEikEikpE9VXq09VXpKYBHYgBHYkpsNUlFqkkpSSSSSl0kkklKTJ0ySlJk6ZBSk
+ 6ZOnBSkkkk5SkkkkwqUkkkmqUkkkkpSSSSClJJJJ4UpJJJFSkoSTykpUJQnCSapiUxUiFEhNKmMp5ShK
+ EFLgpwownRBUotlBsplHlPyngqcu3ElVXYHkt3YComsKYFThDA8lMYHktn0wnDAjanHGB5J/sHktkMCm
+ GBNJU4f2DyS+weS3PTCXphDiU4f2DyS+weS3PTCXphG1OH9g8kvsHktz0wl6YStTh/YPJL7B5Lc9MJem
+ ErU4f2DyS+weS3PTCXphK1OH9g8kvsHktz0wl6YStTh/YPJL7B5Lc9MJemErU4f2DyS+weS3PTCXphK1
+ OH9g8kvsHktz0wl6YStTh/YPJL7B5Lc9MJemErU4f2DyS+weS3PTCXphK1OH9g8kvsHktz0wl6YStTh/
+ YPJL7B5Lc9MJemErU4f2DyS+weS3PTCXphK1OH9g8k/7P8lt7Am2hC1ON+zx4JjgeS2SAmgI2lxjg+Sg
+ cDyW3sCXphG1wcT7APBIYA8Ft+mEvTCVr3F+weSX2DyW36YS9MJWtLifYPJN9g8lu+kEvTCHEsLhjp/k
+ pfYPJbXphLYErWFxDgeSicDyW7sCb0wlaHC+weSkMDyW36QTisJWuDijA8k/2DyW1sCWwJWvcT7B5JfY
+ PJbewJbAlanE+weSX2DyW3sCWwJWhxPsHkl9g8lt7AlsCXEsLifYPJL7B5Lb2BLYEuJa4n2DyS+weS29
+ gS2BLiXhxPsHkl9g8lt7AlsCXEvcT7B5JjgeS3PTCb0whanCOB5JvsHkt30gm9IIWpwxgeSkMHyW16QT
+ +mEbQ4v2HyT/AGDyWz6YThgStDi/YPJL9n+S3BWFIVhLiS4B6f5Jv2f5LoPSCY1BLiU4YwPJT+w+S2PT
+ CbaEeJLjnA8k37PHgtnaEtoStTkDAHgpfYR4LV2hLaELS5BwR4KBwfJbW0KJYEbS4hwfJROD5Lc9MJek
+ ErQ4RwPJN9g8lvekE/pBC1OCMDyUhgeS3PSCXphK0OKMDyT/AGDyWzsCfYELWlxfsHkl+z/JbYYE4YEL
+ WuJ+zvJL9n+S3dgS2BK1Bwv2f5Jv2f5LdLAm2BOteHD+weSX2DyW5sCXphK1Fw/2f5Jfs/yW56YS9MJW
+ xFw/2f5Jfs/yW56YS9MJWpw/sHkl9g8lubAlsCVrw4f7P8kv2f5Lc2BLYErXBw/2f5Jfs/yW5sCWwJWl
+ w/sHkmOB5Ld2BN6YStRcL7B5JDB8luekEvSCNsZcUYPkl9g8ltbAlsCVocT7B5Jv2f5Lc2BOGBK14cE9
+ O8kx6d5LoPTCY1hLiXhwB0/yUxgeS2zWE2wI8S+3IGCPBL7APBa+0JbQlai5H7PHgpDp48FrhoThoQMl
+ hcj7B5KJwPJbUBLaELWlwjgeSj+z/Jb3phN6YStDh/s/yS/Z/ktz0wl6YStTh/s/yS/Z/ktz0wl6YStT
+ h/s/yS/Z/ktz0wl6YStTh/s/yS/Z/ktz0wl6YStTh/s/yS/Z/ktz0wl6YStTh/s/yS/Z/ktz0wl6YStT
+ h/s/yS/Z/ktz0wl6YStTh/s/yS/Z/kt30wl6YStThfs/yS/Z/kt30wl6YStThfs/yS/Z/kt30wl6YStT
+ hfs/yS/Z/kt30wl6YStThfs/yS/Z/kt30wl6YStThfs/yS/Z/kt30wl6YStThfs/yS/Z/ktz0wn9MJWp
+ xB0/yT/s/wAlthgT7AhanD/Z/konA8lulgUSwIiS4OH9g8k/7P8AJbWwJ9gR4l4cUdPHgn/Z48Fs7An2
+ hK1W4v7PHgmPT/Jbe0JbAha0uF+z/JL9neS3dgS2BLiWlxB0/wAkxwPJbmwJiwJWsLgOwfJQOD5LoDUC
+ o+iEbQ4QwPJEGB5LZFQUhWErZA4v2DyS+weS29gS2BK1zifYPJL7B5Lb9MJemErWuJ9g8kvsHktv0wl6
+ YStaXE+weSX2DyW56YS9MJWsLh/YPJL7B5Lc9MJemEuJTh/YPJL7B5Lc9MJemErZA4f2DyTjA8lt+mE4
+ YELXOL9g8kxwPJbnphL0whaHBOB5JvsHkt/0gm9IIWpwhgeSf7B5Lb9IJemEbQ4n2DyS+weS3PTCcVhH
+ iU4R6f5KB6d5LoPTCRqCPEp539neScYHkt81BR9II8SnGGD5KX2DyWvsCcNCXEucY9PHgl+zx4La2hLY
+ EOJLjfYB4JfYR4LX2hLYEbS4xwfJMcHyW1sCXphLiU4ZwPJN9g8lvekEvSCXEhwPsHkn+weS3vSCXpBL
+ iU4QwPJSGB5Lb9IJvTCFrXG+weSf7B5LY2BPsCba0uL9g8k37P8AJbewJ9gStDh/s/yS/Z/ktzYE/phK
+ 1OF9g8kvsHkt30wl6YStThfYPJL7B5Ld9MJemEbU4X2DyS+weS3fTCXphC0OF9g8kvsHkt30wl6YRtcH
+ C+weSX2DyW76YS9MJWvcL7B5JfYPJbvphL0wlaHD+weSX2DyW56YS9MJWhwTgeSicDyW/wCmEvSCVrC4
+ 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
+ 1pcT7B5JfYPJbewJtgR4kOGcDyTfYPJbvphL0glxJDhDA8lMYPktn0wlsCXEuckYPkn+wDwWttCeAha5
+ xj08eCienjwW3tCbYErU4f7P8kvsHktvYEvTCdxKcT7B5JfYPJbfphP6YQ4kOH+z/JL9n+S3fTCXphLi
+ Q4X7P8kv2f5Ld9MJemEuJDhfs/yS/Z/kt30wl6YS4lOF+z/JL9n+S3fTCXphLiU4X7P8kv2f5Ld9MJem
+ ELU4X7P8kv2f5Ld9MJemErU4X7P8kv2f5Ld9MJemErS4X7P8kv2f5Ld9MJemELU4X7P8kv2f5Ld9MJ/T
+ CHEhwf2f5Jfs/wAlvemEvTCXEhwf2f5Jfs/yW96YS9MJcSXB/Z/kl+z/ACW96YS9MIcSnB/Z/kl+z/Jb
+ 3phL0wjanB/Z/kl+z/Jb3phL0wjanB/Z/kl+z/Jb3phN6YRtThfs/wAlE9O8lv8AphL0wlxJcAdN8lMd
+ O8lubAn2BK0uIen+SG7A8lvlgUDWEgVPPnA8lJuHHZbRqCXpBPtTn148K3XXCMK1INhAlSwEKUplElBK
+ 5KSjKQKVKZgKQaogqYKaQpbamIU5UShSGKZOmSQukkkgpSSSSSlJJJJKUkkkgpSSSSSlJJJJKWSSSSUp
+ MnTJKXTpk6Sl1FykouSU1rFXKsWKuUlM2K2xVGK2xFSYJJBJJSySSSSlJk6ZBSkkkklKSSSSUpJJJJSk
+ kkklKTpk6SlJJJJKUkkkkpSSSSSlkkkklLp0ydJSxQLEcoFiSmo9M1O9M1JTZrVhqr1qw1JS6SSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKf/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOkkkpSSSSSlJJJJKUmTpklKSSSSUsknSSUxShOkkpZMpJkl
+ KhKE8JwEVMYShTSRUwhKFNJJTCEoU0ySmMJQpJJKYwmhTShJTCEoU4SSUwhKFNJJTGEoUk6SmEJQppkl
+ MYShSSSUxhKFJJJTGE0KaSSmEJQppJKYQlCmkkphCUKSSSmMJ4TpIKWhKFJJJTGEoUkklMYShSTJKWhK
+ E6SSmMJQpJklKhKE6SSlk8JJ0lMHID1YcgPSU1ypMUSpMSU2WI4QGIwSUyTJJJKUmTpklLJJ0ySlJJJJ
+ KXSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SKQSKSkT1VerT1VekpgEdiAEdiSmw1SU
+ WqSSlJJJJKXSSSSUpMnTJKUmTpkFKTpk6cFKSTpk5SkkkkwqUkkkmqUkkkkpSSSSClJJJJ4UpJJJFSyS
+ eEoQUoKUpoSQKlSkokppTCpmnhQBUgUFKIUSpqJCIUwlIFIhOAnhTIFOkApEKQKRkppTkKKepmCpgoYU
+ gmlTOU0ppSlBS8pSmSRpS8pSmSSpS8pSmSSpS8pSmSSpS8pSmSSpS8pSmSSpS8pSmSSpS8pSmSSpS8pS
+ mSSpS8pSmSSpS8pSmSSpS8pSmSSpS8p5UZSQUuShOcplQIRCkZeUg5OWpBqclmCpgqACkgVwXlKU0ppS
+ peylSBQwVIFAhBZpJBOmsZYkqBciEIZCcFpUHKQKgFMJLWSYlOolBeFbk25MUyK9nuS3KKSSGW5LcopJ
+ IZbktyikksK+5LcmSSWstyW5RSSZAy3JblFJJey3JSoylKBQzlOogqQQUpMSnTFFDGUtyYqMooShymHI
+ AcphyBCk0pEqAckXJtJWcUMuUnFDKeAlfcn3KICkAipW5LclCaEly+5PKikkplKcFQlIFBSQFSQwVOUF
+ LqJKkmKC1gSmlSIUYSWrgpw5MAnSWr7k+5RTSkpluS3KEpSivDPcluUJSlJRZ7ktyhKUpMZZ7ktyhKUp
+ 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
+ KUpkklLylKZJBSiVAuUioEIpVvUg5RAUgEEspTSnhMUlKlIFMkEUMwU8qMpSghlKaU0ppSpTKUpUJTyj
+ SGUpSmBTpKXSSSQUsSmlIlQJRCmUqQKHKcFKlJJS3KEppSpLMuTSoynlKlLp5TSnSSvuTF6SaEEsS5Rl
+ E2pbUFMQVMFNCSKGe5NuUZSlKkMtyW5RlKUlMtyW5RlKUlMtyW5RlKUqUy3JblGUpSpTLcluUZSlKlMt
+ yUqMpSlSl5SBTSlKSmYKlKHKfchSmRKiXJpTFGlMS5RJUyE21FTEFSBThqUJKXBT7lFNKSkkp5QwU4KF
+ KZylKYFIoKVKbcmKaU5TLcluUZSlKlMtyW5RlKUqUy3JblGUpSpTLcluUZSlBTLcluUZSlJTKUpUZSlG
+ lMpSlRlNKVKZSlKjKdJS+5MXJQkQkpbckCmISRUzBT7kOUpQpSTcokqMp0qUqVIJgFMBAqUFIJJiUFMp
+ S3IZKbclSkhcokqO5KUaUvKUppTpKVKeUyYlJS+5LcoEqJcjSkm5PKFuTgo0pJKUqIKdBSxKiXKZCiWp
+ KWDlMFRhOkplKUppTJKXlLcopJKX3JblGUkVM9yW5QTyhSmW5LcopJUpluS3KKaUqUz3JblCUgUqUkDk
+ 8qAKeUqWlcuUdyiSoykhKHKQKECpgpLgyJUSVKVEoBLAuTb05UYTkrh6kHKICmAgleUpTwkkpUpblEpp
+ SpTPcluUZSlKlrLcluUZSlKkMpS3KMpSlSmW5LcoylKVKZbkpUZSlJTKU8qEpSkpnKUqEpSglnuS3KEp
+ SkpnuT7lCUpQpDPcluUJSlKlM9yW5QlKUqUz3JblCUpSpTPcluUJSlKlM9yUqEpSjSmcpSoSlKVKZFyY
+ uTSmRpK+5LcopJUlnuSlQTgpJZJ4TAp5QUqExTymJSUwKgVMqJCNoYJBPCcBDiUoKYKQCkGocSVklKEx
+ CVoYpJJkkLpJJJKUkkkgpSSSSSlJJJIKUkkkkpSSSSSlkkkklKTJ0ySl06ZOkpdRcpKLklNaxVyrFirl
+ JTNitsVRitsRUmCSQSSUskkkkpSZOmQUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJ
+ JJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//U69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKTpkklLpJkklLpJk6SlJJJJKUmTpklKTJ0klLJJ0klKSSSRUukmSSUukmSSUumSTJKXSTJJK
+ XSTJ0lKSTJJKXSTJJKXSlMkkpeUkySSl0kySSl0kySSl0ySSSlJJJJKUkkkkpSSZJJS8pSmTJKZSlKZJ
+ JS8pSmSSUukkmSUumSSSUpJJJJSk6SSSlJ0k6SmJVexWCgWJKa5TsTOTsSU2WIwQWIwSUukkkkpSZOkk
+ pZJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SKQSKSkT1VerT1VekpgEd
+ iAEdiSmw1SUWqSSlJJJJKXSSSSUpMnTJKUmTpkFKTpk6eFKSSSTlKSSSTCpSSSSapSSSSClJJJIKUkkn
+ TgpZJOmTlKTqJKaU1TNMUgVKE0qRFRRS1R2phUxCIEwCkAgpcBKFKEiiFIyE0wncYVd9kJ4Un3wom0Kk
+ /IhAdkqUKdE2hR9VZxyUhenqdIWqQtWYL1L10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10l
+ Oj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9d
+ L10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qib
+ Qs83qByElOl6oS9ULLOQkMhFLrC0J/UWWMhEGQkuDob025UxepeuivbW5SD1SN6ib0EF0Ral6wWYchRO
+ Sm0sLqG4KBtCzftCb7QksLpeqFIXBZXrpfaElrresmNqyxkpxkJLw6XqpvUWf66XrpL3Q9RL1Vn+ul66
+ SnQ9RL1Fn+ul66S0uh6iXqLP9dL10lhdD1UvVWf66XrpLXQ9VL1Vn+ul66TJF0fUTeos/wBdL10l7oeq
+ l6qz/WS9ZBDoi1SFyzPXTfaEEOr6wUTcFmfaExyEUOibVE2rPN6j66KnR9VSFyzPWT+skp1Bcn9dZfrp
+ euil0zcl6qzfXT+ukl0hYFMWBZX2mFIZSSnU3hNvCzhlJ/tKS5v70xeqP2hMb0lNw2JvUVI3JvWQU3xa
+ pC5ZvrJeukp1PWS9YLL+0J/tCC10/VCb1Qsz7Ql9oQQ6fqhI3BZf2hMchJa6ZuCb1ll/aEhekp1fVS9V
+ ZovUhekvDoeql6qoeum9dJRdD1UvVWf66XrJMRdD1UvVWf6yXrJIdD1UvVWf66Xrorw6Hqp/VWd66Xro
+ Lw6PqJeos710vXRS6HqpjaqHrpeskgt71U4tVD1UvVRYy6QtT+qFmeumOQkoOr6wTeuFknJTfaUqXB1j
+ eFE3LK+0p/tCcAvDp+qn9RZgyFMZCLIHRD1MPCzhkJ/tKVILo7womwLOOUoHJQpYXRNoTeqFm/aEvXSW
+ un6qXqrO9dL101Do+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvX
+ S9dJTo+ql6qzvXS9dJTo+qn9VZvrp/XSU6Pqpeqs710vXSU6Pqpeqs710vXSU6Pqpeqs710vXSU6Pqpe
+ qs710vXSU6Pqpeqs710vXSU6Pqpeqs710vXSU6Pqpeqs710vXSU6HqpesFmm9RN6IU6frBOLllfaE4yE
+ VwdYWp/UWWMlEGSkvDo7029UftCY5CS5v+ol6oWaclDOSgsLreuExvCyDlJfaUFhdU3BRNqzRepesisL
+ f9VSFqzvWS9dJTpeqn9VZgvT+ugvDpeql6qzvXS9dJc6Pqpeqs710vXSQXR9VL1Vneul66C10fVT+qs3
+ 10vXSWF0vVS9VZvrpeukoOl6qXqrN9dL10mQOl6qY2rO9dL10kt82pC1Z5uTesgh0xcpC4LK9dP9oSQ6
+ vrBRNqzftCb10VOibVH1Vn+um9ZFTo+qn9ZZ3rJvWRU6XrJjcs310vXRU6PqqQsWb6ycXwkl1RYFPeFl
+ DJUxlIUl0tyiXKkMlL10qXNwvUfUVQ3qBuRU3vVS9VZ5uTeskh0vWT+ssz103roKdT1gl6oWX9oS+0IL
+ S6nqhN6oWX9oS+0ILXU9UJesFlfaEvtKCHV9YJeqFlfaE4vSU6fqpvVWf66XropdH1UvVWd66XrpIdH1
+ UvVWd66XroIdH1UvVWd66XrpLg6Pqpeqs710vXSXuj6qXqrO9dL10lOj6qXqrO9dL10VpdD1UxuVD11E
+ 3IrC6PrJess03JvXSWOn6ycXBZXrpfaEWSLrC4KQtCyBkKYyEmUOr6gTb1nDIT/aEl4b+5NuVL10/rpy
+ 9vB6l6izjkKJyUKYpOl6oTG0LMOSo/aUKYnT9UJeqsz7Qn9dJTpeql6qzvXS9dJTo+ql6qzvXS9dJTo+
+ ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJLo+ql6qzvXS9d
+ JTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzvXS9dJTo+ql6qzv
+ XS9dJTo+ql6qzvXTG9JTo+qEvWCzDemOQgp1PWCcWrJ+0KQyUlwdUWJ96zRkqYyEGQOhvTeoqByFE5CS
+ i6PqhL1wss5KGclJjLr+uFE3BZP2lOMhJaXTNqcWrNFyl6yCx0hcl6yzvXS9dFcHR9VN6qz/AF0vXSZA
+ 6Hqpeqs/10vXRU6Hqpeqs/10vXRQXQ9VL1Vn+ul66Kwuh6qXqrP9dL10lpdD1UvVWf66XropDoeql6qz
+ /XS9dJlDoeqo+qqPrJvWSUW+LVMWrN9ZIXoFa6otT+sFljIT/aEKQ6RtUDas/wC0Jjeghvm1L1VnG9L1
+ klOkLk/rrM9dN66SnUN6b1VmeunF6CnUFqILAskZCcZUIJdf1AkXhZYy04ykkujvCXqBZ/2lROSkl0Ta
+ FE2rOOQonISU6JuUfWWcb0vWRU6Pqpxas3104vRQ6gtUhaFlfaE/2hJDq+sExtCy/tCX2hKkOibVE2rP
+ 9dL1k5Df9RP6qzvWT+ukl0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeugvDo+
+ ql6qzvXS9dJLo+ql6qzvXS9dBDo+ql6qzvXTeuktLoG1N6yzzcm9ZJjLpC5P6yy/XS9dJAdX1gl6wWT9
+ oTjISZYusLgn9ULKGQn+0JMgdX1QomxZv2lP9pSXgOgXpt6ofaEvtCSS6IsT+qFmHJUTkpMEnV9YJesF
+ k/aUhkpLHV9UJ/VWYL1IXoqdH1UvVWd66XrpKdD1Ql6oWf66XrpKdD1Ql6oWf66XrpKdD1Ql6oWd66Xr
+ pKdH1Ql6oWd66XrpJdH1UvVCzvXT+ukp0PVCXqrP9dN66SnQ9VL1Vn+um9dFTo+ql6qzvXS9dJTo+ql6
+ qzvXS9dBTo+ql6qzvXS9dJTo+ql6qz/XS9dFToeql6qz/XS9dJToeql6qz/XS9dJToeqm9VZ/rpjegkO
+ h6qXqrO9dN66C91BaFMWhZIyFIZKSnW9UJG0LK+1JfaUqQ6TrUI2qiciUxuRQ3fVUhcs71U3rIqdI3KJ
+ tWf66b1kEOkLUQXLKFykMhBDq+som5Zv2hL10FOkLVMXLK9dOMhBTresl6oWX9oS+0JKdM2hRNqzvtCX
+ roqb/qpeqs/1kvWRS3/VS9VZ/rJvXTkuj6qcWLN9dP8AaEqS6YsCfeFmDJT/AGlKlOj6gTG1Z32lMchK
+ kF0fVTeqs/10vXSQ6HqJeos/1k/rJKb/AKqf1Vnesl66SnR9VL1Vneum9dBTo+ql6qzvXTeugp0vVS9V
+ Zvrp/XSU6Xqp/VWb66f10lOl6qibVneumN6Sm+bVH1VQNyb1klOkLlL11leul9oSU6nrpxasn7QptyEV
+ OuLFPeFltyFP7Qgpvl4UTYFROShnJRU6BtUTas45Cb10VOl6yXrLN9ZP6ySnSFql6qzPXT+umodL1UvV
+ Wb66XrpIdL1UvVWb66XrpKdL1UvVWb66XrpKdL1UvVWZ66f10kul6qXqrN9dL10lOl6qXqrN9dL10lOj
+ 6qY3LON6ib0lOn6ycXLJ+0JxkJKdgWhS9QLJbkKYyUlOnvCYvCz/ALSonJSS6BtCY2hZhyVE5KSnU9ZN
+ 6qy/tCkL0lOj6qf1lnesmN6SnTFyf1llfaE4vSU6fqpvVWf66RuRCnQ9VP6yzfXS9dFTpi5P6yy/XT+u
+ hSnSNyibVn+um9ZFToeqn9VZ3rJeukp0xan9ZZfrpfaEKU6huTG5Zf2hL7QlSnT9VOLVmeunGQip1RaE
+ /qBZQyVL7UhSnRNgQjYFROSom+UlN8WqYuWZ6yf10VOkblE3LO9dL1klOj6qcWrNFyl6ySnR9VL1Vneu
+ m9dJTqC0Jessv7Ql9oQpTpm1QNqz/XTG5FToeql6qzvWT+smFTo+qpC1ZouT+ugp1Bcn9cLK+0JjkpKd
+ N16Gblnm9N6ycFN/1VMWrM9ZSF6cp1BYFIPCzBkKQyUFOlvCibAs85KiclJTeNqj6qoG9R9ZJTpC1TFq
+ zBcpC9JDo+ql6qz/AF03roKdH1EvUWd66XroKdH1EvUWd66XroKdH1Ql6izvXS9dFTo+ol6izvXS9dFT
+ o+ql6qzvXT+ukh0fVTG1Z/rpvXSS3zal6yzzcom5JLpi5TFwWR66cZKSnZFoTGwLKGSpDJQU6JeFHeqP
+ 2lROQip0PVS9ZZhyE32hJTp+spC1ZYvTi9JTqeql6wWZ66Y5CSnT9ZL1Qsv7QnGQkp0/VT+qs0Xp/XSU
+ 6Pqpeqs710vXSU6Pqpeqs710vXSU6Pqpeqs710vXSU6Pqpeqs710vXQU6Pqpeqs710vXSU6Pqpeqs710
+ vXSU6HqJbws/10vtCKQ6IeFL1Asz7Sl9qSS6fqhRNoWb9pS+0JUp0Dam9VZ/rqPrpyHT9VL1Vmeun9dB
+ Do+qm9VZ/rpvXRQ6PqpC1Zvrp/XSU6YuT+sFl+ul9oSQ6vrJessv7Qn+0IJdI2qBtWeb1E3pIdD1U/rL
+ MN6f10Uun6qXqrOFyl6ySm/6qXrLPNygb0kuoLlMXBY/2hTbkoJdcWBTDwstuQiDIQpLobwmNgWeclDO
+ ShSnRNoUTas77Sm9dJDo+ql6qz/XS9dFDoeql6qz/XS9dJToeql6qz/XS9dJToeql6qz/XS9dJToeql6
+ qz/XS9dJToeql6qz/XS9dJToeql6qz/XTeukp0fVS9ZZpvTHISU6XrJessv104vSU6guUhassXqYvSU6
+ XqBSDwsz7Ql9pSU6fqBMbAs37Um+0oKdA2qBtVE3yom5FTf9ZSFyyzcnF6SnWFyf1VlDIUvtCSnRNqb1
+ VnG9N66cp0fVT+qs310vXSU6Xqpeqs310vXSU6Xqpeqs310vXQU6Xqpeqs310vXQU6Xqpeqs310vXSU6
+ Xqpeqs310/roqdH1U3qrO9dN66KnSFqmLAssXqQyEqU6oeEi8LNGSnOShSW8bAoG1UTkIZvRpDoG1N6q
+ zvXSFyKnSFqkLVmi5S9dBTpi1SFwWV9oS+0ppU6puCibll/aU/roKdA2pvVWf6yXrIqdD1U4tWb6yXro
+ qdMWp/VWWL1IXpKdP1UxtWd66XrpKbxtUDaqRuUDcipv+qnFqzvWSFySnVFqmLVki9EGQkp1RYE+8LMG
+ Sn+0ptKdAvCibAqByVA5CNKdD1UvVWb66XroqdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKd
+ H1UvVWd66XrpKdH1UvVWd66XrpKdD1UvVWf66XrpKdL1UvVWb66XroLS6BtUPVVH1kvVQQ3xapi5ZnrJ
+ /XSS6nrJeqFl/aE4yEVzp+oEg8LOGQnGQkl0g8KXqBZn2lL7Ugl0vVCY2hZhyUvtCSnRNqj6qoeul6yK
+ G/6qf1Vnesl66KHR9VL1Vm+un9dBDo+ql6qzvXS9dJTo+ql6qzvXS9dBDo+ql6qzvXS9dJLo+ql6qzvX
+ S9dJTo+ql6qzfXS9dBLpeql6qzfXS9dEKdH1UvVWd66XrqQBDo+ql6qzvXS9dLhU6Pqpeqs710vXSpTo
+ +ql6qzvXS9dKlOl6qXqrN9dL10KU6Xqpeqs310vXQpTpeql6qzfXS9dJTpeql6qzfXS9dJLpeqn9RZnr
+ p/XSS6Pqpeqs/wBdROQkp0vVUhasoZCI3ITSp0w+VIFUmWyrDHymlSZNCcJ4TCphCcBOUyaSpkFIFDlL
+ cm2pKSoFR3JSnxUpMnTKRC6SSSSlJJJIKUkkkkpSSSSClJJJJKUkkkkpZJJJJSkydMkpdOmTpKXUXKSi
+ 5JTWsVcqxYq5SUzYrbFUYrbEVJgkkEklLJJJJKUmTpkFKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpS
+ SSSSlJJJJKWSSSSUunTJ0lLFAsRygWJKaj0zU70zUlNmtWGqvWrDUlLpJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ p//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJSkkkklKSSSSUpJJJJSkkkklLJJ0ySlJJQlCSlJJQlCS
+ lJJJJKUkkkkpSSSUJKUkkkkpSSSSSlJJ0klLJJ0klLJlKE0JKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlk
+ k8JQkpiknhNCKlJ0koSUpJPCUJKUkkkkpSSSSSlJJJ0lLJ0k6SlJ0ydJTFyr2Ky5V7ElNZydqTkmpKbL
+ EYINaMElLpJJJKUkkkkpZJJJJSkkkySl0kySCl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhI
+ pBIpKRPVV6tPVV6SmAR2IAR2JKbDVJRapJKUkkkkpdJJJJSkydMkpSZOmQUpOmTpwUpJJJOUpJJJMKlJ
+ JJJqlJJJJKUkkkgpSdMknhS6ZJJFTApJ4TgIKXaEQBRAUwmlSoUSFOVElNIUxhOEpSQpS8qJKcoTiiAp
+ HY+FQvthWLnLKybITwFIrsiFWOTKqX3aoDbZKmAU6rLZRmvKpUarQZXITqUtvKb1FM1oZYUqUv6hS9RR
+ 9Mp9hSpS/qJeom2FLYUqUv6iXqJthS2FKlL+ol6ibYUthSpS/qJeom2FLYUqUv6iXqJthS2FKlL+ol6i
+ bYUthSpS/qJeom2FLYUqUv6iXqJthS2FKlL+ol6ibYUthSpS/qJeom2FLYUqUv6iXqJthS2FKlL+ol6i
+ bYUthSpS/qJeom2FNsKVKZeoolxKcMKIKkQFISSokkK16KG+pOpKA2wm+0woWtIVC15alS8OkMyO6kM3
+ zWA/IIUBlFKlz0n2ue6X2mVgsySVbrsJQpBdL1pS9QoDASjtrKFMZXDypbipCpS9JKlpRFxUS8oxrQzU
+ UKQw9QqQsTemU4rKFLgzFiXqJgwpbClS9f1EvUTbClsKVKX9RL1E2wpbClS0r+ol6ibYUthSpaV/US9R
+ NsKWwpUtX9RL1E2wpbClS8L+ol6ibYUthSpey3pb0wYpbEKQWJeVEvKmWKBrKVIW9Qpt5T+mU/pFKkMd
+ 5Th6f0ynFaNKWDlKVIVqQqSpSPcU24opqTekjSke4pi+EX0kGxkI0lG++EE5UIV5IWdbaQlSXVGZ5ogz
+ PNc/65U23lKlzvjLlTGTKxGWkq1W8lClOqLpUt6q1yVZawlKkr70xep+mmNZQpDDeU28qXplIVlCkFbe
+ UtxUxUU/pJUhEXFNuKL6SQqQpaikpwSjClP6KVKRByfepGpRNZSpcFb0t6WwpemUqUVb0t6XplLYUaYy
+ relvS2FLYUqQFb0vUS9MpbClS4K9RLelsKXplKl4VvS3lLYUvTKVJVvTh6bYU+wo0gr70xen2JiwpUxl
+ iXqBeVMsKb00aUj3FLcUUVJ/RRpcEO4pjYQjGpV7GQjS8KN8JvtMKpYSFWfYQjTI6n2tROZ5rHdcUI3l
+ GlpdwZcojb5WJXaStCgylSwugHkqW4pq2Si+mgQtR70vUKc1lR2FR0pf1EvUS2FLYUqUr1EvUS2FLYUq
+ Ur1EvUS2FLYUqUr1EvUS2FLYUqUr1EvUS2FLYUqUr1EvUS2FLYUqUr1E/qJthS2FKlL+ol6ibYUthSpS
+ /qJeom2FLYUqUv6iXqJthS2FKlL+ol6ibYUthSpS/qJeom2FLYUqUv6iXqJthS2FKlL+ol6ibYUgwpUp
+ W8piSiCtS9JOAU1y4qBthHfUqtrCEaXBRyIS+1wqFriFUfeQlS8O2MzzUvtcrnvtJRWZBKVLnb+0Sm9W
+ Vn1vlW62yhSwpg8qQcU7KpRm0pUsLEEqW5EFSRrQpYUReoGxTcxCLClSmXqJxYoBhUhWUqZAy9RL1E3p
+ lLYUKSv6iXqJvTKfYUqQr1EvUS2FLYUKWlXqJeolsKWwpUsKvUKXqJbCl6ZSpQV6iXqJemUvTKVMgV6i
+ cPTemVIVlKlytyRcpitI1pUtRF5UfUKma1H0ylSFvUKfeUhWU/plKlK3pw5IVqYrRpS0pEogrSNaNKQF
+ yW4opqTekjSkZehuthFeyFTu0RpLI5MJhmeazbrCFWN5SpLvtzPNTGWuebkFWGXFKlzuDJlOLpWWywlW
+ WElClN31Et6E0SihiVIW3pi8onppjUhSke8pt5UzUU3pFClpYbylvKl6RT+khS1huKW4ogqUhUlSEW4p
+ w8onpJjUlSmO9L1EvTKWwpUlW9LelsKWwpUhW9LelsKWwpUpXqJeolsKWwpUkK3pb0thS2FKl6t6W9LY
+ UthSpSvUS9RLYUthSpaVeom3pbCl6ZRpYVt6bepemU/ppUsR7ilJRRUn9JGmSKIEqQeUT0kxrRplCM2w
+ onIhRsaQqljiEqZA3PtSY5ayn2kILryjS52Dmeaj9rlYpyCnbeSjTDJ2hkSitsJWbS6Vo1MlKmJKHFPv
+ KkKkxrKaQlb1EvUTbClsKFKX9RL1E2wpbClSl/US9RNsKWwpUpf1EvUTbClsKVKX9RL1E2wpbClSl/US
+ 9RNsKWwpUpf1EvUTbClsKVJX9RL1E2wpbClSl/US9RNsKWwpUpf1EvUTbClsKVKX9RL1E2wpbClSl/US
+ 9RNsKWwpUpf1EvUTbClsKVKX9RL1E2wpbClSl/US3pthUhWlSmJcVAuKP6ai6tPEUtY2EKPrwntZCpWk
+ hLgSG59qhP8AbPNY77SEE5JCHAyB3/tnmn+0ysFuSSrVVspcCi6nqymLyhVCVZbVKHCxlGHFEaSpilEb
+ ShwrSxBKcuRfSUHVocK1GbFH1EnMKiGFCkhILE+8qIYU+wpUyBW9LelsKWwpKVvS3pbClsKSFb0t6Xpl
+ L0yla0q3pb0thS2FK1hVvS3pbClsKNrgrelvS2FLYUrZAren3pBhTitC0Lb0xep+momtK0MfUKXqFL0y
+ l6ZSQv6ibeU/plLYihW9LcnDFIVo0phuTFyL6aia0uFSPcUt6n6SY1o8KkbrYQXZMJXAhZ1zyEuBLe+2
+ eam3M81hOvITtyClwJd8ZSkMiVjMulWGPlLgS6QulSFiqs1VhjJS4FJN5S3KQrUvTQ4VI9ybeiGtQLEq
+ Qx9QpvUKcsKj6ZQQv6hTiwphWVIVlBC4eU+9OKyn9NK0Md6YvUjWVEsKVqW9RL1E2wpbChaV/US9RLYU
+ 2wpWpf1EvUTbCl6ZStC/qJeom9MpbCivC/qFL1E2wp9hSXK9RL1ClsKWwpIV6iXqJbClsKNLCrelvS9M
+ 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
+ U2lMg5IuUhWkWIgKRlyjvRCxR9NOpTHeUt5UvTKXplKlKDyn3pemlsSpStyYuUtiWxKlIyU25F9NMa0q
+ Uj3qJthScxV7BCVKSHIhROWqNr4VY2lGlOuMmVMXSsmuwlXapKVKbgsS9RM1hT+mUqUr1EvUS9MpemUK
+ UvvS3pemUvTKVKV6iXqJbCm2FKlL+ol6hTbClsKVKX9RL1E2wpbClSmXqJt6WwpbClSlb0t6WwpxWhS0
+ rhyfckGKYYlSEZcolxRTWmNSVJRF5TeopmooT2EJUuUb4UTkwq9hhVLLYRpLoHKTfalkG9O20lKkuyMi
+ URtsrMqcSr1QJSpDaa9T3qDGImxKlMC9RL1MsUCwpUhbelvS9MpemUqQrelvS2FL0yhSlb0t6XplL0yl
+ SFb0t6XplL0yhSVb0t6XplL0ylSlb0t6XplL0ylSVb0t6XplL0ykApXqJeol6ZS2FPBQr1EvUS2FN6ZR
+ tS+9L1EvTKXpptqV6iXqJeml6ZStSvUS9RN6ZS9MoKX9RL1E3plL0ykpf1EvUTemU+wopW9RL1Cl6ZS9
+ MpKULFIWFRFZUvTKNKWNiE66FN7IVO3RKkpvtCJXkLLc+FKu3VDhU79N8rQqslYGPYtbHemmKnVYUVV6
+ ijhMMVKKiVIpoTeFTApkSE0IcKmCdPCUI8Kl0kkkUKSSSSUpJJJBSkkkklKSSSQUpJJJJSkkkklLJJJJ
+ KUmTpklLp0ydJS6i5SUXJKa1irlWLFXKSmbFbYqjFbYipMEkgkkpZJJJJSkydMgpSSSSSlJJJJKUkkkk
+ pSSSSSlJ0ydJSkkkklKSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklP//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk6SSlkk6SSlkkkklKSSSS
+ UpJJOkpSSSSSlJJJJKUkkkkpSSSSSlQkknSUsknSSUsknSSUtCUJ0klLQlCdJJS0JJ0klLJJ0klLJJ0k
+ lLQlCdJJS0JQnSSUtCaFJMkpjCUJ0klLQnhJJJSoSTpJKWSTpklKTJ0klLJ0ySSl0kkklLp1FSSUsVXs
+ VgqvYkpruSak5JqSmzWjBBrRgkpdJJJJSkkkklLJJJJKUkkkkpZJJJJS6SSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlwkUgkUlInqq9Wnqq9JTAI7EAI7ElNhqkotUklKSSSSUukkkkpSZOmSUpMnTIKUnT
+ J04KUkkknKUkkkmFSkkkk1SkkkklKSSSQUpJJJPClJJJJylQnAThOgpQSlMSokpqmRco7lAlJNKmcqQQ
+ wURpQUyIQnhGUHohTn3hYmYYW7kBYWapApw8h2qFUZKlkcqNHKmCnaw2StummQsvAbwuix69EipqnHQj
+ jrXNQQzUE0FTl/Z0vs60/SCXpBG1OZ9nS+zrT9IJekErU5n2dL7OtP0gl6QStTmfZ0vs60/SCXpBK1OZ
+ 9nS+zrT9IJekErU5n2dL7OtP0gl6QStTmfZ0vs60/SCXpBK1OZ9nS+zrT9IJekErU5n2dL7OtP0gl6QS
+ tTmfZ0vs60/SCXpBK1OZ9nS+zrT9IJekErU5n2dL7OtP0gl6QStTmfZ0vs60/SCXpBK1OZ9nS+zrT9IJ
+ ekErU5ox1MUK/wCkEvTRtTS9JDfStDYoPYnApcLIpWLlMhdRks0WBms5T14efuJCAHFWsgaqoOUFzboJ
+ K1sZkrMxm6rdw2JILcoplXWUKePXor7K0CVhaQoUvRV700tiba0ueaUxoWhsTitAla5v2ZN9nWp6QS9I
+ IWuDmfZ0vQWn6QTekErZHN+zpfZ1p+kl6SVocz7Ol9nWl6SXpJWgub9nS+zrT9JL0krWFzPs6X2dafpJ
+ ekla1zPs6X2dafpJekErXhzPs6X2dafpBL0krZHN9BP6C0PSS9NG1pc40Jvs60fTTioJWtc0Y6l9mWkK
+ gn9MJtqcs46b0FqGoKPpI2poChTFCuitSFaVqaBoTegtH0wkK0rS5xoVa6iAtw1KpkVaIiSnlctkLEvE
+ Lps5kSudyW6p1paHdGYFCNVZqaiuS1NV+itAqatPHYglsUVSr1dCWPWtKupAlTT9BRNC0/TCY1ptqcz0
+ EhQtE1JCtK0NAUKXoLQFaRrQtDmmhMKVoGtR2JLGoKVL0VbDFLYkpzzQoGhafppvTCS8Ob9nS9BaXphL
+ 0wioub6CXoLS9MJemEmIub6CXoLS9MJemEkBzfQS9BaXphL0wkvDm+gl6C0vTS9MJLg5voJegtL0wl6Y
+ Stc5voJegtL0wl6YStBc70ExoWl6Sb00rYy5voJChaPpp/SRtTnihS9BXhWpemla4OW+lUrqluPrWfex
+ OBXBwb2LPtatnIas20J7I5zwgkK5YFXI1SWlnSNVsYjJWXQNVuYbeErWF0aKpCtChTxmaK62tMkUOYcd
+ N9nWoak3pBMtDmfZ0vs60vSCXpBG1Ob9nS+zrS9IJekErU5v2dL7OtL0gl6QStTm/Z0vs60vSCXpBK1O
+ b9nS+zrS9IJekErU5v2dL7OtL0gl6QStTm/Z0vs60vSCf0krU5n2dL7OtP0kvSQtTmfZ0vs60/SS9JK1
+ OZ9nS+zrT9JL0krU5n2dL7OtP0kvSStTmfZ0vs60/SS9JK1OZ9nS+zrT9JL0krU5n2dIY60/SCXpBK1O
+ eKFL0Ve9NLYjanOfQqN9K3HMVK+tPBXPL5VcLHv0XSZlawMpqK8NDcUelyrnlWKBqgl1cYStjHqlZmI3
+ hb+KxJaUtdCOKFYqZojhiaSsLS9FRdSr+xRLELWlzHUKBx1qGtL0gjaHMGOpjHWiKgp+kELZA5n2dL7O
+ tT0gm9IIWucz7Ol9nWn6QT+kELWuX9nS+zrU9IJekErQXL+zpfZ1qekEvSCVrC5f2dL7OtT0gl6QStAc
+ v7Ol9nWp6QT+kErZQ5X2dSGOtP0gm9IJWlz/AEExoWj6aY1pWhzTQo/Z1p+kl6QRtDmjHS9BaXpBMawl
+ aHN9BOKVfNaQrRtTUFKf0VcDFLYlamgaEvQV/wBNSFSXElybKFl5VcLpbatFi5rIlEFLzGSIWe86rTzB
+ CzHnVOUyYVbqCrVK9SElzapar9NaBQxadFaSl66VZZQj1VK0ypAlTSFCX2daIqT+mmcSHMOOm+zrTNYU
+ fTStaXN+zp/QWj6YS9NK1rnihP6Cv+mlsSQ0PQTGhaGxN6aSnOOOm+zrS9IJekErS5v2dL7OtL0gl6QS
+ tTm/Z0vs60vSCf0gkhzPs6X2daXppekErSHN+zpfZ1p+kE3pBK17m/Z0vs60vTT+kErU5n2dL7OtL0gl
+ 6SVrS5v2dP8AZlpCoKQqCFrC5n2dN6C1DUFE1ogrXO9BP6CvbEgxG18Wn6Cg+haQrUXVpWzBw7qVm31w
+ uhvrWRksTrXhw7Wwqb1p3hULAnLmo4lTqJlM4IlQ1SYZOniNlbuNVIWThNXRYjNECWNm2hRdjrSZXonN
+ QUdqcn7Ol9nWn6QTekjanN+zpfZ1p+kl6SVqcz7Ol9nWn6SXpJWpzPs6X2dafpJeklanM+zpfZ1p+kl6
+ SVqcz7Ol9nWn6SXpJWlzPs6X2dafpJeklanM+zpfZ1p+kl6SVqcz7Ol9nWn6SXpJWpzPs6X2dafpJekl
+ anM+zpfZ1p+kl6SVqcz7Ol9nWn6SXpJWpzPs6X2dafpJeklanM+zpfZ1p+kl6SFqcz7OpChaPpJekjan
+ P9FQdStE1qDq08SXONdSsvIqhdFdWsrKrUoKQ85eIVF7jK1MpvKy7BqkV4XrcZWni6rKr5WzhNmE1Tr4
+ 1UrSroQcOvRbFVWiYSsLTFCkKFf9NMK0ziWFpeioOoWjsUTWla1yzjqIx1qGoJCoJWkOcMdS+zrRFQT+
+ kEGQOb9nTfZ1p+kEvSCCnM+zp/s60vSS9IJIc37Ol9nWl6QS9IILS5v2dL7OtL0gl6QSWFzfs6X2daXp
+ BL0gkuDm/Z0vs60vSCXpIMgc30E/oLR9IJvTSQ5/oKJoWj6aXpooc77On+zrRFQUhUEkOZ9nTGhahqCg
+ akQhzRQpClX/AE04qTrU0fRTGhaPppvTStTnihRfQtQVJn1aJcSXncmmFh5TYldXl1wFzea2JUgKnCtM
+ FRa5Tu5QmJyW7UZWhQJWfQFq4zUktymuVfrpQ8di06q00lSFtCn6CusqU/STDJLmmhQNC0zUompC1rme
+ gn+zrS9JSFQQKHMGMpDGWmKgn9IJqHNGOl6C0jWFEsCSHONCicdaXppekEFOZ9nS+zrU9IJekEFOX9nS
+ +zrT9IJekEVOZ9nS+zrT9IJekElOZ9nS+zrT9IJekEV4cz7Ol9nWn6QS9IJJcz7Ol9nWn6QS9JFDmfZ0
+ vs60/SS9II2tLm/Z0vQWn6QTGpK1hc30VIUq8a02xOtAawqUhSrIYiBiXEyxaD6VTvpW05ipXsREmYPO
+ 5FcLLubC3spix7wpAV4c9ygSjPCEQnoLJhWjjCVn18rUxQkSwSdXGrlaDKEDEbwtaqtRSktaRx1A461T
+ UFE1BRWpy/s6X2dafpBL0glanN+zpfZ1pekEvSCVqc37Ol9nWl6QS9IJWpzPs6f7OtL0kvSStTm/Z0vs
+ 60vSS9JK1Ob9nS+zrS9JL0krU5n2dL7OtP0kvSStTmegl6C0vSCXpBG1Ob6CXoLS9IJekErU5voJegtL
+ 0gl6QStTm+gl6C0vSCXpBK1Ob6CXoLS9IJekErS5voJegtL0gl6QStTm+gm9BafpJeklanOFCf0FoipP
+ 6SFpDmGhAtoWyalXtqSte85k1wsi4QV0WYyJWDkjVOCmvXqVrYlcrMqGq3cFkwjaHQoo0VkUKxj16Kz6
+ YTSUOcaE3oLQLE3ppWhzjQm9FaJrTemjanP9BN9nWiKlMVBAlDmDGUvs60vSCXpJtqcz0Exx1p+kl6QS
+ tDl/Z0/2ZafpBL0glanM+zpegtI1hRNaIKXO9FP6SvGtIVp1qaQpSNKvipOa0LS5b6VRvqhbtlazslmi
+ eCp53IbCoHlauWFmuGqcpPjtlbGNVKzcVuq38RiBQzZQp+grrK0T00wlTnihP6C0BWFL0ghaXMNCiaFq
+ ekFE1JWpzDQm9BaZqTekjaHNGOnGOtL0k4qCFqc77Ol9nWl6QT+kELU5n2dL7OtL00vTCVqc77Ol6C0v
+ TTGsJWpzTSm9FaBrTemnWpoihSGOrwrRW1BNJU5pxlVvohbxqEKlk1hAFLzOQyFmWmFt5beVi3jVPBQi
+ aVcobKps5WjjCU5Tfx6pWjXQh4rJWpXVogSpqilI0q/6ab0021OcaFH7OtP0kvSQtDmfZ0vs60/SCXpJ
+ WhzPs6X2dafpJeklaXM+zpfZ1p+kl6SVqcz7Ol9nWn6SXpJWpzPs6X2dafpJeklanM+zpfZ1p+kl6SVq
+ cz7Ol9nWn6SXpJWpzPs6Y461PSCY1BG1OHdRAWVkshdNkV6LBzGwipxn8qdQkqNnKPjiSilu0VStGrHU
+ MSuVr01BAlTTbjKfoLSFQSNSFqc30UvQV81pxWjamh9nS+zrSFQSNYTbU5voJeitA1qPpo2ppClSFCui
+ tTFaRKWgaFA0LTNaia0LU5hoS9FaBqTeknWhoeim9BaPppvTStTnegn+zrRFSkKghanNGMkcdaoqCi6p
+ C0uJbTCzr2QugvqWRksTrQ4V+iqd1eyQqcao2ps44lbWLVKysULocNkwkpNXQiGhXq6tFM1JpKXM9FL0
+ VoGpMa0bQ5/opeir/ppeklanP9BL7OtEVKXpBC1OZ9nTjHWl6QS9IIWlzhQn9BaPppemjanP9BN6C0fT
+ TGtC0OcaExoWia03pJIc37OnGOtIVJxUlanPFCmKVe9JOK0rU0HUqpfTC2zWqWRXoiCl5nJZCzLOVt5j
+ YlY9o1T1MKxJWjQyVSqGq1cZqSm3TUrrKU1DFfrrQJU1PQUTjrTFSY1Jlpcz7Ol9nWn6QTekErQ5n2dL
+ 7OtP0gl6QStTl/Z0vs60/SCXpJKcz7Ol9nWn6SXpBK0OZ9nS+zrT9IJvSRtTm/Z0vs60vSCXpBK1Ob9n
+ UhQtD0gl6aVqaIpUvRVz01IVpWlznY6r2Y62jUEGyoJWl566iFl3thdJk1iFhZbYTkOWTqrWPqVUdyr2
+ IJKSnXxqpWg3H0UMJkhazKhCaSpzTQm9BahqUPSStTnGhRNC1PSUTUlanLOOkMdafpJxUipzRjqX2daI
+ qCf0ghanM+zpfZ1p+kEvSStTmfZ0vs60/SS9JC1OZ9nS+zrT9JL0krU5n2dL7OtP0kvSStTmfZ0vs60/
+ SS9JK1OcMdOcdaQqCkaghanCuohZWTXC6fIq0WHlsUsEuDaNUNo1Vm5uqCwaqwFNqhkrUoqlUsYLZxmJ
+ kipmyhF9BXK6tEX0lCZKc70FIUK/6acVptqaHoJjQtD00xrTbQ53oJegtH00vTTShzvs6Y460/TCXpIK
+ cz7Ol9nWn6QS9MJKcz0E3oLTNSj6SSnO9BSFC0BUpCpEKc/0EvRWga1E1p4S0DSoGhaPppemE60uW7HV
+ a2iFuOrCp5FeifEqeayWws57tVsZrYlY1nKmBUlq1Wnj1Ss/GElb2GwGEiUs68dWW46t1VBHFQVeRQ5/
+ oJjQtP0gkaky0OZ6CXoLS9IJekEbU5voJegtL0gl6QStTm+gl6C0vSCXpBK1Ob6CXoLS9IJekErU5voJ
+ egtL0gl6QStTm+gm9BafpBL0glanM+zpDHWl6QS9MJWpoChSFCvemFIVpWpznUqtbUtl1aq3VIgqcC+t
+ ZtzVvZFaychqKnNjVW6G6oJGquYw1SU6eLVK066NFXxGLXqr0TSUtM0IZoWqa0M1hNElOWcdR+zrUNSb
+ 0k61OZ9nS+zrT9JL0glaHM+zpfZ1p+kEvSCVqcz7Ol9nWn6QS9IJWpzPs6X2dafpBL0glanM+zpfZ1p+
+ kEvSCVqcz7Ol9nWn6QS9IJWpzPs6X2dafpBL0glanNGOpfZ1oioKfpBC0uLbRAWVkshdLfVosLNbEp4K
+ HCt5UWcqd/KhVynKb9DJWnRVKp4rZWzjsQJUuyhE9BXK69EQ1plpc00qPoLRNaQqRtDm/Z0vsy1RUFIU
+ hNJU5QxlMY8LS9IJjWELU5/oqJqWga1A1pwKmh6KQoV/01IVI2pzxQn+zrRFSf0k20uZ6Cb0VpGtQNaI
+ KGh6KXpK96aQrTrU0xSmNC0BWkakLU5T6FSuqhbtlSz8itG1PO5DYWe7la+W1ZbxqipLQJK2cWqVl4rd
+ V0WFXMIWpKzH0UjjrSrq0UjUE3iS5X2dL7OtP0gn9MJWhzPs6X2dafphL0wlanL+zpfZ1p+kE3pJWpzP
+ QTegtP0kvSRtTmegn9BaXpJeklanN+zp/s60vSS9JC0ub9nT+gtL0gm9JK1hc70U4qV81JvTRtDTFKcU
+ K8K1NtaaSuDmux1VuohbpqVO+rREFLzWSyFk36LoMtnKwckJyWiXaotRlAdyrFA1RS6WMyVrUVKliNlb
+ ePXokhiylE9JW21qYrQJU0fQTegtEVp/SCbaHN+zpfZ1pekEvSCVoc37Ol9nWl6SXpBK1Ob9nS+zrS9I
+ JekErU5v2dL7OtL00vTQtTm/Z0vs60vTS9IJWpzfs6X2daXpBL0glaXN+zpfZ1pekEvTStTm/Z032daf
+ pBL0glaHM+zpfZ1qekEvSCVqcz7Ol9nWn6QS9IIWpzPs6X2dafpBL0glanM+zpfZ1p+kEvSCVpcz7Ol9
+ nWn6QS9II2py/s6X2dafpJekErS5n2dL7OtP0gn9IJWpzBjp/s60hUE5qCXEpxbaICzMiuF0l9Wixspi
+ eChwrRBUGHVWL26oLRqnWpvY5WzjFY+OFsYwQJS6lSshAqGiOFEUqSTEpSgpdMlKSSFJk6ZJSkkkk1Ck
+ kkkFKSSSSUpJJJJSkkkkFKSSSSUpJJJJSySSSSlJk6ZJS6dMnSUuouUlFySmtYq5VixVykpmxW2KoxW2
+ IqTBJIJJKWSSSSUpMnTIKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklKSSSSUskkkkpdOmTpKW
+ KBYjlAsSU1Hpmp3pmpKbNasNVetWGpKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1+vSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklLpJpSlJS6SaUpSUukmlKUlLpJpSlJS6SaUpSU
+ ukmlKUlLpJpSlJS6dRlKUlMklGUpSUylKVGUpSUylKVGUpSUukmlKUlLpJpSlJS6SaUpSUukmlKUlLpk
+ kklKTpkklLpJkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKWKBYjlV7ElNdydqZydqSmzWjBBrRgkpdMnTJ
+ KUkkkkpSSSZJS6ZJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXCRSCRSUieqr1aeq
+ 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
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSn//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySl
+ JJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJ
+ kkFLpJk6Sl0kydFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpYqvYrBVexJTXcnamcnakps1o
+ wQa0YJKXTJ0ySlJJJJKUmTpklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlwkU
+ gkUlInqq9Wnqq9JTAI7EAI7ElNhqkotUklKSSSSUukkkkpSZOmSUpMnTIKUnTJ0VKSTpkVKSSSTCpSSS
+ SapSSSSKlJJJIqUkkknhSkkkk5SkiUyZJSxSSTgJKXCdIBPCYVMSmUiE0JKXUXFOUN5Tgpr3FY+WtO9y
+ x8tykipyb+VCrlNe7VBY+Cpgp6LCeAt/HsELksW+FsU5UBCQU9ALQmNgWQMtL7WouFTr+oE3qBZP2tN9
+ rQ4VOv6gS9QLI+1pfa0uFTr+oEvUCyPtaX2tLhU6/qBL1Asj7Wl9rS4VOv6gS9QLI+1pfa0uFTr+oEvU
+ CyPtaX2tLhU6/qBL1Asj7Wl9rS4VOv6gS9QLI+1pfa0uFTr+oEvUCyPtaX2tLhU6/qBL1Asj7Wl9rS4V
+ Ov6gS9QLI+1pfa0uFTr+oEvUCyPtaX2tLhU6/qBL1Asj7Wl9rS4VOv6gS9QLI+1pfa0uFTsCwJ/VCxvt
+ af7YjwKdY2hAstELOOYhPy04QSkybAsHLcNVcvyZWPk2yncK4NK86oDeUrXoQdqlwr3UxitrFcFztD4W
+ rj3QhwoL01FgV9lgXPVZMK23KQ4WMu0LAn9QLHGWpDLQ4VpdbeE+8LJ+1p/taXCtdX1Al6gWV9rTfa0O
+ FeHW9QJeoFkfa0vtaXCvdf1Al6gWR9rS+1pcKHX9QJeoFkfa0vtaXCh1/UCXqBZH2tL7WlwrC6/qBL1A
+ sj7Wl9rS4Frr+oEvUCyPtaX2tLgZIuv6gS9QLI+1pfa0uBe6/qBN6oWT9rTfa0uFDr+qEvVCyPtaX2tL
+ hWuv6gS9QLJGWn+1pcKnWFgS9QLK+1pfa0uFTqmwKJtCyjlqJy0eFTreoFJtoWP9rTjLS4FO36oVe+0Q
+ s/7WgW5WiQglFmvBlc9kkErQysiVj32SjwJCIjVFrCrbtUZjkuFc3qitKh0LHY9XKrYS4VPQ49gWjXaF
+ ztORCusyUuBTti0JjaFlfalE5SHAp1vUCkLAsf7UpDKQ4UOyLApeoFjjLTnLQ4EOobAo+oFlHMUftiHC
+ tdkWBP6gWMMxP9sS4VOwbAm9QLI+2Jfa0eBcHX9QJeoFkfa0vtaPAouv6gS9QLI+1pfa0uBjLr+oEvUC
+ yPtaX2tLgQHX9QJeoFkfa0vtaHAvDr+oEvUCyPtaX2tLgXOv6gS9QLI+1pfbEeFLr+oExsCyftaY5aPC
+ gur6oS9ULJ+1JfakuFjLr+qE/qBY/wBrTjLS4FOwLApeoFjjLT/a0OBcHSssCzsl4Q35apXZMpwgvCDI
+ IWbaj3XSqNj07hXhG9AI1UnvQC9HhQW7RErcwnAQubqsgrWxb4hLhY3rsawQrrbQudoyYVsZaYYIdc2h
+ N6oWQcxN9sTeBTr+qEvVCx/taX2tLgU7HqhL1Qsf7Wl9rS4VOx6oS9ULH+1pfa0uFTseqEvVCx/taX2t
+ LhU7HqhL1Qsf7Wl9rS4VOx6oS9ULH+1pfa0uFTseqEvVCx/taX2tLhU7HqhL1Qsf7Wl9rS4VOx6oS9UL
+ H+1pfa0uFTseqEvVCx/taX2tLhU7HqhL1Qsf7Wl9rS4VOx6oS9ULH+1pfa0uFTseqEvVCx/taX2tLhU7
+ HqhL1Asf7Yl9sS4VOx6gUTYFk/a0xy0RBTpusCp32BVnZSq25Mp3CkIMt4WHklXsm6Vk3vlLhXhA46o9
+ J1VMu1RqnJcK53cVwW5jPC5nHthatF8JcKwvR1WBWBYFh15SMMtDhWF2RYEvUCyBlpfa0OBaXX9QJvUC
+ yftab7Wlwodf1An9ULH+1pfa0uFkDseoEvUCx/tiX2xDhXOz6oS9ULG+2J/tiXCh2PVCXqhY/wBsS+2I
+ cC0ux6oS9ULH+2JfbEuFaXY9UJeqFj/bEvtiXAgOx6oS9QLH+2JfbEuFlDseoEvVCx/tiX2tLhS7HqhP
+ 6oWP9rS+1pcK12PVCb1Asn7Wl9rR4FOrvCW8LL+1pfakuFDq+oExsCyjlqJy0eFTqmwJvVCyjlpvtaXC
+ p1xaEQWhYgy1MZaXAp1LbRCxc14MqVmXosvKyJR4EubmQSst7RKt5NsqkXapcKQmqatCkLOrKu1PS4Vz
+ r0GFqUPAWDVbCvVXwlwqd+u0Kw20LDZkooykOFDs+qE3qhZP2tN9rS4FOt6oSFgWR9rS+1ocK0uyLApC
+ wLGGWnGYlwLS7PqBL1Asf7Yl9sQ4EOv6gS9QLH+2JfbEeBTseoEvUCx/tiX2xLhS7HqBL1Asf7Yl9sS4
+ VOx6gS9QLH+2JfbEuBDseoEvUCx/tiX2xLgXB2PUCXqBY/2xL7YlwL3Y9QJeoFj/AGxL7YlwIdj1Al6g
+ WP8AbEvtiXAtLseoE3qhZH2tL7WlwLC6ptCj6oWWcpR+1pcKx1hYFMWBYwy1MZaPCvi7QsCZ1gWSMtM7
+ LQ4GYNjJsCxMpwR78qVl33yjwMga1xCquUrbFXc9O4VzIwi1ESqhep12JcLDJ3sRwW7i2BcrjXQtfHyY
+ R4WJ6VloUjaFjMy1I5ajMUut6oS9ULH+1pfa03hU7HqBL1Asf7Wl9rR4VOx6gS9QLH+1pfa0uFTseoEv
+ UCx/taX2tLhU7HqBL1Asf7Wl9rS4VOv6oS9ULI+1pfa0uFTseoEvUCx/taX2tLhS7HqBL1Asf7Wl9rS4
+ VOx6gS9QLH+1pfa0uFTseoEvUCx/taX2tLhU7HqBL1Asf7Wl9rS4VOx6gS9QLH+1pfa0uFTseoEvUCx/
+ taX2tLhU7HqBL1Asf7Wl9rS4VOx6gTi0LG+1pxlpcKnYNoQ32BZZy1B2WnCKW1fYFj5TwiW5MrMyL5Ug
+ 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
+ Mt1S4VO5jELXx3hc5RdC06chLhU9AywInqBY7cpSOWlwqdM2hOLQsg5aQy03hU7HqhI2BZAy0/2pDhU6
+ vqBL1Asr7Ul9qQ4VOr6oTeqFlHKUTloiKnX9UJxaFjfa04y07hU7QtCXqBY4y1IZaXCp1/UCb1Asr7Wl
+ 9rS4VOrvCkLAsf7Wl9rS4VOz6oUXWhZP2xRdlocCnQttCzciwIb8pUb8iUuEqa2W4LMcdUfItlZ7rNUu
+ EqdXEIldJhPGi5DGthbmJkwlwlT1ddghSdYFjMzNE5zEuBTqGwJeoFkfa0vtaPCp1/UCXqBZH2tL7Wlw
+ qdf1Al6gWR9rS+1pcKnX9QJeoFkfa0vtaXCp1/UCXqBZH2tL7Wlwqdf1Al6gWR9sTfa0uFTrG0JvVCyT
+ lpvtaPCtLr+qFIWhYv2tSGWlwIdoWhSFgWKMtSGWhwLg7BtCq32CFROWq9uWiIJY5bwsLKIVzIyJWTfb
+ KPClrviUSnlVXP1U6n6pcKXexHALcx7BC5fHthatOTCXAh6NloRRaFhsykQZaXAp2haEvUCyBlpfa0OB
+ Dr+oEvUCyPtaX2tLgQ6/qBL1Asj7Wl9rS4FOv6gS9QLI+1pfa0uBDr+oEvUCyPtaX2tLhU6/qBL1Asj7
+ Wl9rQ4Uuv6gS9QLI+1pfa0uFLr+oEvUCyPtaX2tLhU6/qBL1Asj7Wl9rS4Cp1/UCXqBZH2tL7Wh7ZU6/
+ qBL1Asj7Wl9rS4Cp1/UCXqBZH2tL7WhwKdf1Al6gWR9rS+2JcCnX9QJeoFkfbEvtiXAp1/UCXqBZH2xL
+ 7YjwKdgWBOLAsb7YpDMS4VOyLAkbQsf7YmOYlwKb19ohY2VYE92XKzL8iUeFSG52qC06oVlslMx2qXCp
+ 1McrYxisPHctjGKFKdioo6q0lWgmkKYOCgQjEKJCapEkpkJbUKUxBUkoShEBS6SSSKlJJJJKUkkkgpSS
+ SSSlJJJIKUkkkkpSSSSSlkkkklKTJ0ySl06ZOkpdRcpKLklNaxVyrFirlJTNitsVRitsRUmCSQSSUskk
+ kkpSZOmQUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJJJJS6dMnSUsUCxHKBYkpqPT
+ NTvTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0evSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKTJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klL
+ JJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpOmTpKWKr2KwVXsSU13J2pnJ2pKbNaMEGtGCSl0ydMkpSSSSSlJk6ZJSkkkklKSSSSUukkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpcJFIJFJSJ6qvVp6qvSUwCOxACOxJTYapKLVJJSkkkklLpJJJKUmT
+ pklKTJ0yClJ0ydFSkkkklKSSSTSpSSSSapSSSSKlJJJIhSkkkk8KUkkknKWKZOmSUpSATBSCSlwE6ZKU
+ 0qUU0J5TIKYlBerBCG5qcFOdeFkZLSt62uVn30SpYqeZvrMquKzK3rcSUEYamCmnQCFfrJARK8SFYbjI
+ qa+8pjYVZOOoHHKVBSD1Cl6hR/s5S+zlKgpB6hS9Qo/2cpfZylQUg9QpeoUf7OUvs5SoKQeoUvUKP9nK
+ X2cpUFIPUKXqFH+zlL7OUqCkHqFL1Cj/AGcpfZylQUg9QpeoUf7OUvs5SoKQeoUvUKN9nKX2cpUFIfUK
+ XqFG+zlL7OUqCkPqFL1CjfZyl9nKVBSH1Cl6hRvs5S+zlKgpD6hS9Qo32cpfZylQUh9QpeoUb7OUvs5S
+ oKQ+oUvUKN9nKf7OlSkHqFMbSjnHKiaCiAFIfUKiXko3oFP9nKfQU0LCSqNzCVtnGlBfhyjQXB559RKg
+ KCt84PkkMDyQoL3JrqIV2ppCvNwY7IzcSENEFrMJCKHlWBjJHHKVBYUHqFSFhRPQKQoKVBYWAsKf1Cie
+ gUvQKFBCP1CmNhRfQKXoFKguCH1Cl6hR/s5TfZylQZEPqFL1Cj/Zyl9nKFBCD1Cl6hR/s5S+zlKgtKD1
+ Cl6hRvs5S+zlKgtKH1Cl6hRvs5S+zlGgtQ+oUvUKN9nKX2cpUF4Q+oUvUKN9nKX2cpUF6H1Cl6hR/s5S
+ +zlCghr+oUvUKMaCm9ApUEIxYVIWFTFBTigo0FMPUKY2FF9ApjQUqCkRsKb1Ci+gU/oFGgpDvKcPKMKC
+ nFCVBSLeUN7yVa9AqLsdLRTkXSVRsrJW+/ElAOF5JUFzhiooraitYYXkpjD8kqCXLawozAQr4xFIYqNB
+ KCslWWuKI3GRBQm0FId5TF5Vn0FE0JUFNfeU4eUf7OkMdCgtKIWFI2FG9ApGgoUFparrCoGwqyaCofZy
+ lQQhFpUhaUQY5UhjlKgpF6hS9Qov2cp/QKdQXhD6hS9Qo3oFL0ClQUUPqFL1CjegUvQKVBjKH1Cl6hRv
+ s5S+zlKggIfUKXqFG+zlL7OUqC8IfUKXqFG+zlL0ClQSh9QpeoUb0Cm9ApUFyL1Cl6hRvQKcUFKggod5
+ S3lH9BI0FKgxFr+oUvUKMaCm9Ao0FIxYU/qlT9Ap/QKVBcERsKA8kq76BUTjSlQXhy3glV31lbRxJUTh
+ +SWi8OA+ooLqiuhdheSC7B8kRSC4rKyFfoBCtDC8kdmJCNBjWrcQjeoURuOpegU00prmwpvUKOccpvs5
+ QoKQ+oUvUKN9nKX2cpUFIfUKXqFG+zlL7OUqCkPqFL1CjfZyl9nKVBSH1Cl6hRvs5S+zlKgpD6hS9Qo3
+ 2cpfZylQUh9QpeoUb7OUvs5SoKQ+oUvUKN9nKX2cpUFIfUKXqFG+zlL7OUqCkPqFL1CjfZyl9nKVBSH1
+ Cl6hRvs5S+zlKgpD6hS9Qo32cpfZylQUh9QpeoUb7OUvs5SoKQ+oUvUKN9nKX2cpUFIfUKXqFG+zlL7O
+ UqCkPqFN6hR/s5S+zlGgpBvKG8kq6McpjjJaKca5pKo21Ero34koDsGeyVBeHnDQURlJW59g8lNuB5JU
+ FzmVVkK7XIVtuFHZFGLCGi0tYOIUvUKsfZionHKNBjKIWFL1Si+gUvQKVBai9UpvVKIaCm9ApUFMPUKX
+ qFFFBUhjlCgyBB6hT+oUb7OU/wBnKVBcg9QpeoUf7OUvs5SoIQeoU/qFG+zlL7OUKC0ofUKXqFH+zlL7
+ OUqCwoPUKXqFH+zlN9nKVBQQ+oU3qFH+zlL7OUqDIEHqFP6hRvs5S+zlCglF6hS9Qo3oFN6BRoIReoU4
+ sKJ6BTigo0FMBYUvUKKKCl6BSoIQmwqJsKOaCo+gUqCkPqFLeUX0Cn9BKlIQ8qYeUQUFS9ApUFNZ7yqV
+ 8lapoQX4so0EvP2sJQPSK33YU9lD7D5JUEuSyoqwxhWiMOOyIMRKguaTAQrDCVYGMpjHSoKRNcVIPKMK
+ E/oFCghDvKiXlWPQKb0ClQU1/UKb1CrH2cpvs5SoLSh9Qp/UKL6BT+gUqC1D6pTeqUb7OUvs5QoIQ+qU
+ vVKL9nKX2co0FIvVKXqlF9ApegUqCUXqlL1Si+gUvQKVBSL1Sl6pRfQKXoFKgpF6pS9UovoFL0ClQSEX
+ qlL1Si+gUvQKFLkXqlL1Si+gUvQKNBSL1Sm9Uo3oFL0ChS0oxYVIPKIKCpigpUFhQF5UC8q2aEM0FKgs
+ a/qFSFhRPQKcUFGgvixFpTGwovoFI0FKgzBp2PJVOwErVOPKGcWUaDIHFcwlDNRW2cNMcLySoLnBNRTt
+ rK2zheSj9i8kaDDJoVNIV+okIrMSEduNCVBiRh5SNhVj7OUxxymEBTX9QpeoUf7OUvs5QpKD1Cl6hR/s
+ 6X2dKlIPUKXqFH+zpfZ0qUg9QpeoUf7Ol9nSpSD1Cl6hR/s6X2dKlIPUKXqFWPs5TfZ0qUg9QpeoUf7O
+ l9nSpKD1Cl6hR/s6X2dKlIPUKXqFH+zpfZ0qUg9QpeoUf7OUvs5SoKQeoUvUKP8AZyl9nKVBSD1Cl6hR
+ /s5S+zlKgpB6hS9Qo/2cpfZylQUg9QpeoUf7OUvs5SoKQeoU/qFG+zlL7OUqCkPqFMXlH9ApfZylQU0n
+ klVLQStc4yG7ElGkh5+2olVXUFdK7CnshHA8kqZA882kq7TWQtMYHkjMwo7JUotemQrIeQjtxYUjjpLC
+ 1jYU4tKIaCkKClQWFQtKf1CpCgqXolGlqI2FR9QoxoKb0ClQSEXqFL1CjegUvs5SoMgQ+oUvUKN9nKX2
+ cpUFIfUKXqFG+zlL0ClQQUPqFL1CjfZyl9nKNBaUPqFL1CjegUvQKVBYh9QpeoUb0Cl6BSoLgh9QpeoU
+ b0Cl6BSoMiH1Cn9Qov2cpegUaCkPqFL1CjegVE0FGghGLCpCwqQoKmKClQQj9QqJsKP6BUTQU2ghB6hS
+ FhRfQKcUFKgpFvKW8o/oFL7OU2gpCHlSLyiigqXoFClOfcSVm3tJW6/GlVrMOUqS886spNqK2jg+ScYX
+ klSXNYwqyxpCutw0VuKlSWsyQrDXFFbjIgx0qUiDyn3lG9BL0CjQU1zYVE2FWDQUxoKNBDX9QpeoUb7O
+ Uvs5TqCEPqlP6pRPs5S+zlKghF6pS9Uov2cpfZylQQj9Up/UKIMcqXoFKglD6hS9Qo3oFL0ChQUh9Qpe
+ oUb7OUvs5SoKQ+oUvUKN6BS9ApUEIfUKXqFG9ApegUKC8IfUKXqFG+zlP9nKVBKD1Cl6hR/QKXoFCghB
+ 6hTiwov2cpxQUqC0og8pF5RxQUjQlQYy1jYVH1CrBoKh6BSoICMWlTFpUhQVIUFKgyxYG0oL3kq16BUT
+ jlKgyhzLJKqvYSto4sqBw0qZA4ZqKgait77F5KJwfJJRcEVlHraQtQ4XknGHCTXkgqJCtNeVNmNCKMcp
+ UtR+oU3qFH9Apvs5SoJQ+oUvUKN9nKX2cpUFIfUKXqFG+zlL7OUqCkPqFL1CjfZyl9nKVBSD1Cl6hR/s
+ 5S+zlKgpB6hS9Qo/2cpfZylQUg9QpeoUf7OUvs5SoKQeoUvUKP8AZyl9nKVBSH1Cl6hRvs5S+zlKkofU
+ KXqFG+zlL7OUqUh9QpeoUb7OUvs5SoKQ+oUvUKN9nKX2cpUFIfUKXqFG+zlL7OUqCkPqFL1CjfZyl9nK
+ VBSD1Cl6hR/s5S+zlCgpCLCpCwooxypCgpUEoN5UHvKtegoux0aCXKvJKzrQSt2zGlVH4iNBTksaZV/H
+ JCK3DVmrFhKgpnW8wjbypMxyp+gjQQh3lLeUb0Cn9ApaIQF5US8qyaComgpaIa/qFL1CjegUvQKVBCHe
+ U28o/oFL7OUKCkG8pw8o32cpegUqCkXqFP6hRfQKXoFKglD6hS9Qo3oFN6BQoKQ+oUvVKL6BS9Ao0Eo/
+ VKXqFFFBT+gUaCWs55VewkrR+zqDsZKgpxbWkquWFbjsSUM4fknUEubW0hXqnEIzcSEZuNCFBCMWFS9Q
+ owxyn+zlCghB6hS9Qo/2cpfZyhQUg9QpvUKP9nKb7OUaCkHqFL1Cj/Zyl9nKFBSEWFSFhRRjlOMcpUFI
+ fUKXqFH+zlL7OUqCmv6hS9Qo/wBnKX2cpUFIRYU/qFF9ApGgpUFITYU3qFGNBTegUqCkYsKmLCpigqYo
+ KVBSE2FAseVdNBQnY5SoKcu0kqo8FbD8ZBOIjQU5YaUesEK6MNEbiJUFIqnEKy15Um40IooKVBSL1CmN
+ hR/QKb0ClQUg9QpeoUf7OU32coUEIfUKXqFG+zlL7OUqCEPqFL1CjfZyl9nKFBSH1Cl6hRvs5S+zlKgl
+ D6hS9Qo32cpfZylQUh9QpeoUb7OUvs5SpSH1Cm9Qo/2cpfZyjQUh9QpxYUUY5UhjlKgpFvKYvKsDHKc4
+ 5QoKc+wkqhc0lbbsZV34ko0FOEazKJWwhav2LyUm4cdkqCWtUCFbY4hFbiwiDHSoKRCwpeqUU0FRNBSo
+ KR+qU4tKl6BUhQUqCmIsKfeUQUFS9ApUFIC8qJeVZNCiaEKCkAeVIWFE9AqQoKFBSEvKibCrBoUTQUKC
+ mt6hS9QoxoKXoFGlIvUKW8owoKl9nKVKa28p95Vj7Ol9nKVKQB5Tl5RhQU/oFKlNN7yqlpJWo7HQX4qV
+ KcZ4JQwwrXdiJhh+SVKaNTSFoVEhEZiQrDMaEKCkYeUzrCrHoKJoKVBTVLym3lWDQUvs5RpSDeUvUKP9
+ nKXoFKlIPUKXqFG9ApvQKVKReoU/qFE9AqQoKVKReoU/qFF9ApegUqUi9Qp/UKJ6BS9ApUEFH6hTeoUX
+ 0Cn9ApUEIDYU3qFG9ApegUaCkYsKcWFEFBUhQUaCURsKDY8lXDQUN1CNBTk2yVUc0rafiyh/Y0aCXLYw
+ q3WCFbbho7cRCglrsJCMHlHGNCf7OholBvKY2FWDQVH0ClQUg9QpeoUf0Cl6BQoKQeoU/qFG+zlL7OUq
+ CEPqFN6hR/s5S+zlCgpD6hTeoUf7OUvs5RoIQeoUvUKP6BS+zlKgpB6hT+oUb7OUvs5RoIQ+oVE2FWPQ
+ KiaClQUg9UqQtKkaCnFJSoJULCoueUYUlOaEqCnPtJKz7mkrcdjSq78SUqCnBNZlFqYQtQ4SmzCjslQU
+ 16ZCuNcURmLCMMdKgpr7ylvKsHHTGgpUFIPUKf1SiGgpvQKVBTD1Cl6hRPRKf0ClQUh9QpeoUb0Cn+zp
+ UFIPUKXqFH+zlL7OUqCkHqFL1Cj/AGcpfZyhQUg9QpeoUf7OUvs5SoKQeoUvUKP9nKX2cpUFIPUKXqFH
+ +zlL7OUqCkIsKc2FF9Ap/QKVBTUe8lUrZK1TjoTsSUqCnDewlQFZW0cLyTDC8kVOdW0hXaiQrDcOEZuN
+ CVKRteVL1Ci+gkaClQUi9QqQsKmKFIUFGgpCbComwo5oKgaClQUh9QpxYVP0CnFBR4QpH6hS9Qo3oFN6
+ BSoKQ+oU/qFF9ApegUqCkXqFN6hRvQKb0ClwhSL1Cn9QonoFP6BS4QpF6hTeoUb0Cl6BQoKQ7ylvKP6B
+ T/ZylQU1y8oNjirxxyhuxkKU5F0lVHNK2n4koRw0qU51TSr9RIRWYassxYSUja8qXqFHGOUvs5SoKQeo
+ U3qFH+zlL7OUqCkHqFL1Cj/Zyl9nKVBSD1Cl6hR/s5S+zlKgpB6hS9Qo/wBnKX2cpUFIPUKXqFH+zlL7
+ OUqCkPqFL1CjfZyl9nKVBSH1Cl6hRvs5S+zlKgpF6hTGwo3oFMaCjQUg9QpxYUX0CkKEqCmG8pnOJRxQ
+ pfZ0KCnOskqjawlbpxZQX4cpaKeedWVOppC1nYXkk3DhGgpFQSFda8pMxoRxQUqCkJsKgbCrBoKgaClQ
+ Ui9UpeqUT0Cl6BSoKR+oUvUKKKCn+zlNpSH1Cl6hRvs5S+zlCgpD6hS9Qo32cpfZylQUh9QpeoUb7OUv
+ s5QoKQ+oUvUKN9nS+zpUFIfUKXqFG+zpfZylQUh9QpeoUb7OUvs5RoKQiwqYsKIMcp/QKNBTXe8lUbiS
+ tV1BQH4so0pxHtKZrStV2GkMNKlNWqQrtbipsxYR2Y6VBTEPKcvKMKEjQhQU1i8pt5RzQm9AoUFIg8qQ
+ eUUUFTFBQpSHeUxeVY9BMaEKCmsXlRLyrJoTfZ0QAprbynDyj/Z0vs5TqCkIsKf1Ci+gUvQKVBSP1Cm9
+ UovoFN6BSoKReqUvVKIaCm9ApUFMPVKRsKIKCnFBSoKa7nlAskrQ+zqJxZQoKcS1hKqGoroXYcoRwfJK
+ gpyKmELRpJCM3CjsjtxYSoKYtsKc2FFFBS9ApUFIPUKXqFH+zlL7OUqCkHqFL1Cj/Zyl9nKNBSD1Cl6h
+ R/s5S+zpUpB6hS9Qo/2dL7OlQUg9QpeoUf7Ol9nSoKQeoUvUKP8AZyl9nKVBSDeUt5VgY5T/AGdGgtLW
+ 3lN6hVg46b0CjQQhFhUhYUT0CnFBSoJCI2FCe8lWvQKiccpUFzl2klUrGErcdiygnDlGglwTUVNlRWz9
+ h8lIYXklQS59TSFdrJCsNxIRRjIUFIQ4qW8o4x0/2cpUEIPUKXqFG+zlL7OUqCEHqFL1Cj/Zyl9nKVBC
+ D1Cn9Qo32cpfZyhQUh9QpvUKP9nKX2cpUEIPUKXqFH+zlL7OUqCUHqFL1Cj/AGcpfZylQUg9QpeoUf7O
+ Uvs5QoJQeoUvUKP9nKX2co0FIPUKXqFG9ApfZynUFIfUKXqFG+zlL0CjQUh9QpeoUb0Cl9nKFBSH1Cl6
+ hRvs5S+zlCgpD6hS9Qo32cpfZyhQUh9QpeoUb7OUvs5S4QpD6hS9Qo32cp/QKVBSD1Cn9Qo32cpfZyhQ
+ Uh9UpjYUf7OUxxyhQU03vJVWyStR2MUI4qVKcgsJRK6ytL7GisxECFIMdhWvjNQqsaFoU1QmFTZpCttQ
+ K2wjhRSSumKclRJTVKSUJTykhkmKaUklKTJ0kFKSSSQUpJJJJSkkkklKSSSQUpJJJJSkkkklLJJJJKUm
+ TpklLp0ydJS6i5SUXJKa1irlWLFXKSmbFbYqjFbYipMEkgkkpZJJJJSkydMgpSSSSSlJJJJKUkkkkpSS
+ SSSlJ0ydJSkkkklKSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklP8A/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ
+ JKXSTJJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKWKr2KwVXsSU13J2pnJ2p
+ KbNaMEGtGCSl0ydMkpSSSSSlJk6ZJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pcJFIJFJSJ6qvVp6qvSUwCOxACOxJTYapKLVJJSkkkklLpJJJKUmTpklKTJ0yClJ0ydFS6ZJJGlKSSST
+ SpSSSSapSSSSSlJJJIqUkkknBSkkkk5SoShJOlaloTp0krUsmlIpimEqVKcFQThK1M5TFME6IKkTmygP
+ rlWiFAhSxKmg6iUwxwr2xLYpRJTVbQEQUhWA1SAQMktQ0BROOr21LYhxoaP2dL7Or2xLYl7imj9nS+zq
+ 9sS2Je4po/Z0vs6vbEtiXuKaP2dL7Or2xLYl7imj9nS+zq9sS2Je4po/Z0vs6vbEtiXuKaP2dL7Or2xL
+ Yl7imj9nS+zq9sS2Je4po/Z0vs6vbEtiXuKaP2dL7Or2xLYl7imj9nS+zq9sS2Je4po/Z0vs6vbEtiXu
+ KaP2dL7Or2xLYl7imj9nS+zq9sS2Je4poHHUTjrR2JvTR9xTnfZ0vs60fTTemj7imh9nUTjBaJYoliXu
+ Lg5/2YJxihX9ikGJe4vaIxgpfZwrwan2pvuILQOOonHWgWqJYl7jGXP+zp/s6v8App/TR9xaXP8AQS9B
+ aHpqJYl7i1o+gnFCubE4Yl7i8NP0Evs6vbEtiHuL2j6CX2dXtiWxL3FNH7Ol9nV7YlsS9xa0fs6XoK9s
+ S2Je4sLR9BL0Fe2JbEvcQ0fQS9BXtiWxL3F4aPoJegr2xLYj7i9pfZ0vs6vBifYh7iHOOOonHWkWKJYl
+ 7iHP9BP6Cu7EtiXuKaXoJvQV7YlsR9xTR9BOKFd2JwxL3ENMUJ/QV0MS2Je4lpegl6CuFqbah7imn9nC
+ b7KFfDFMMR9xc5n2UJjjBaZrUSxL3Eub9nSGOr5Ym2I+4ppihTFCtBikGIHIpqegl6CubE+xD3FNL0Ev
+ QV3YlsQ9xBafoJjQru1MWpe4taBoCj9nV8sS2Je4ttojHT/Z1eDE+xL3FBo/Z03oK/sTbE73GQNH0EvQ
+ V7YlsS9xRaPoJegr2xLYl7jEWj6CXoBXtiWxL3FNL0EvQV7YlsS9xcGj6Cb0Ff2JtiXuLmj6CX2dXtiW
+ xL3EtH0E/oK7sS2Je4gtP0ExoV3Ym2Ie4xlo+gl9nV/YnFaPuKaH2dL7OtH00xrS9xIc/wBBOMdXtiQY
+ l7i8NP7OEvswV4NS2oe4yBzzjBDOMFplqiWJwyILmfZQpjGCv7E4Yj7jG0xjp/QV0MT7Ez3FND7Om+zr
+ Q2JtiXuKaP2dL7Or+xLYl7imh9nS+zq/sS2Je4pofZ0vs6v7EtiXuKaH2dL7Or+xLYl7imh9nS+zq/sS
+ 2Je4pofZ0vs6v7EtiXuKaH2dL7Or+xLYl7imh9nS+zq/sS2Je4pofZ0vs6v7EtiXuKaH2dL7Or+xLYl7
+ imh9nS+zq/sS2Je4pofZ0vs6v7EtiXuKaH2dL7Or+xLYl7imh9nTfZ1obEtiXuKc/wCzpfZ1obE/po+4
+ poDHT/Zwr2xMWoe4poHHCicYLQLVHaj7i8ND7KFIYwV4NUg1L3FzSGMEvs4V7altTfcWFoHHUDjrRLE3
+ po+4sLnfZ0xx1pemmNaPuLS5hoUfQWka1D00vcQ0hQpihWwxTDEvcZA0/QS9BXdifYh7i5o+gl6CvbEt
+ iXuIaP2dL7Or2xLYl7iC0vQS9BXdiWxL3FhaXoJegruxLYl7ig0fs6X2dXtiWxL3GQNH7Ol9nV7YlsS9
+ xLR+zpjjrQ2JtiXuIc/0E4oV7YlsS9xTS9BL0Fd2JbEvcQ0TQo+gr5Ym2I+4po+gpChXNicMS9xTTFCf
+ 0Fd2JixD3FNP0E32cFXNqkGpe4uc84oTHFC0wwJGtH3FOX9mS+zrRNajsR9xc0RQn9BXdifYh7iml6Cf
+ 0Fc2J9iXuKaXoJegruxPsS9xDQ9BL0Ff2JbEPcWlofZ0/oK7sS2Je4tLS+zpfZ1e2JbEvcQ0fs6b7OtD
+ YlsS9xTn/Z0vs60NiXppe4uc/wCzpfZ1obEtiPuIc/7Ol9nWhsS2Je4pz/s6X2daGxLYh7iQ5/2dL7Ot
+ DYlsS9xe5/2dL7OtDYl6aXuIc/7Ol9nWh6aXppe4tLQGOpChXdiWxD3FhaRoUTQrxYlsR9xY5/2dSGOr
+ 4rTitH3F8XP+zpjQtE1qJYl7jMHP9BL7OFe2JbEfcXho/Zgn+zBXtqfah7i5zzjBR+zBaWxLYj7jDJzx
+ jBSGOr2xPsQ9xjaPoBL7Or2xLYh7imj9nS+zq9sS2Je4lo/Z0vs6vbEtiXuKaP2dL7Or2xLYl7imj9nS
+ +zq9sS2Je4po/Z0vs6vbEtiXuKaPoJfZ1e2JbEvcU0fs6X2dXtiWxL3EtH7Ol9nV7YlsS9xTR+zpfZ1e
+ 2JbEvcU0fs6X2dXtiWxL3FNH7Ol9nV7YlsS9xTR+zpfZ1e2JbEvcU0fs6X2dXtiWxL3FNH7Ol9nV7Yls
+ S9xTR9BL7Or2xLYl7imh9nT/AGdX9iWxD3VND7Ol9nCvbE21L3UhoHGCY4oWhtS2pe6vDnfZQpjGCvbU
+ 4al7iWl9nCZ1Cv7VEsS9xjLmnHTDHWgWJCtH3FhaIx0/oK+K0jWl7i1zzQkKFeLE4Yj7iQ0hQn+zq8GJ
+ 9iXuMoaH2dL7Or+xNsS9xTR+zpfZ1e2JbEvcQWj9nS+zq9sS2Je4sLR+zpfZ1f2JbEvcWtD7Ol9nV/Ym
+ 2Je4kNH7Ol6CvbEtiXuMrR+zpfZ1f2Jeml7inPOOomhaJrUTWj7iGgKFIUK76acMS9xDS9BRNC0NiiWJ
+ e4hoegnFCubFIMQ9xTUFCXoK8GJbEPcU0fQT+grmxNtQ9xTSNAUDjArQ2p9iHuJcw4g8EvsnktT00vTS
+ 9xLmDGTjGWj6aXppe4loDHTihXdiWxH3FNP0EvQV3YlsR9xTR9BL7Or2xLYj7iGh9nTfZ1o7EvTR9xDn
+ fZ0vs60PTT+ml7iHP+zpfZ1oeml6aXuKc/7Ol6C0NibYl7imj6CXoK7sS2Jcaml6CXoK9sS2Je4po+gl
+ 6CvbEtiHGpo+gl6CvbEtiXuLg0fQS9BXtiWxL3EtH7Ol9nV7YlsQ9xDR9BOKFd2JbEvcWlp+gkaFd2Jb
+ EPcYy55oUfs60diXppe4gOeMdS+zq+K1L00vdZYud9nTfZ1oGtNsS91lDQ+zpxjBX9ifYl7q8FofZgmO
+ MFobUtiXuIJcw4oTfZgtMsTbEvdYJOcMZSGOr2xPsS91a0fQT/Z1d2J9iPuLmj9nS+zq9sS2Je4po/Z0
+ vs6vbEtiXuKaP2dL7Or2xLYl7imj9nS+zq9sS2Je4po/Z0vs6vbEtiXuKaH2dP8AZ1e2JbEvcU0fs6X2
+ dXtiWxL3EtH7Ol9nV7YlsS9xTR+zpfZ1e2JbEvcU0fs6X2dXtiWxL3FNH7Ol9nV7YlsS9xTR+zpfZ1e2
+ JbEvcU0fs6X2dXtiWxL3FNH7Om+zq/sS2Je4po/Z0/oK7sT7EvcS0fQTGhX9iYsQ9xTmOxkF2Ktc1qBq
+ R91TkjERW40LR9JOK0fcVbTFCf0Fc2J9iXuItpegpegrgYnDEuNDS9BRNC0NiYsS9xTn+gm9BX9iWxH3
+ ENH0EvQV7Yn2Ie4poegm9BX9ibYl7iml6CX2dXticMQ9xTR+zpfZ1oeml6aXuJc77Om+zrR9NMa0fcS5
+ /wBnTihXvTS2Je4lpegmOOr+xNsS9xLnnHCh9mC0ixR2J3uKaAxlMY6uhimGIHIhojHS+zq/sS2Ie4ho
+ fZ0vs6v7EtiXuKc/7Ol9nV/YlsS9xTQ+zhL7Or+xPsS9xTQ+zp/s6v7EtiHuKaP2dN9nCv7EtiXuKaH2
+ dN9nV/Ym2Je4po+gmNCv7ExYl7inPNCQoV/YkGI+4ppChSFCuhilsQ9xTQNCicdaBYoliXuKc04yj9lW
+ n6aXpo+4pzRiqQxVpCtL00fcU54x04oV/Ym2Ie4ppegl9nV7Yn2Je4pofZ0vs6v7EtiHuIaH2dL7Or+x
+ LYl7iGh9nS+zq/sS2Je4pofZ0vs6v7EtiXuJaH2dL7Or+xLYl7imh9nS+zq/sS2Je4pofZ032daGxLYl
+ 7imgMdSGOroYpBiXuKaX2dMaFf2KJah7inPNCiccK+WptqPuKaH2YKQxgrwYn2I+4lpDHCX2dXtiWxD3
+ FNA46Y460NiXpo+4pzvs6kMdaHpp/TS9xTQGOn9BXtiYsQ9xTSNCiaFdLU21D3FNL0FIUK2GKQYl7imn
+ 6CgaFobFEsS9xTnmhIUK9sSDEvcU0xQpDHVwMUwxL3FNH7Om+zrQ2JixL3FND0EvQV7Ym2Je4ponHUTj
+ LR2JbEvcU5ZxUhirT9NN6aXuKc8YyIKFc2JbUvcU0zQomhXS1NsS9xTS9BL7OrwYpBiXuKaH2dMcdaGx
+ IsS9xTmnHTfZ1oFibYl7imiMdSGOroYpBiXuKaP2dL7OtD00xYl7inP9BN6CvlibYl7iC0fQT+grwYn2
+ Ie4hofZ032daGxN6aPuKaIoT+gr2xLYj7iWiaFE0K8WKOxH3EtA46cYyvhimK0fcS0BihTGMFfDE+xN9
+ xTQ9BN6CvFqiWpe4lpegl6Cu7U+xL3FNH7Ol6CvbEtiXuKaP2dL0Fe2JbEPcU0fQS9BXtiWxL3ENH0Al
+ 6CvbEtiXuIaP2cJfZ1e2JbEfcU0fQS9BXtiWxL3ENH0FA460diiWJe4pzDjpChaBrSFaPupaYoUvQVwM
+ T7EPcU0jjqBxgtHYlsS9xTm/ZQnGKFpemm2Je4pojHCl6CubUtqHuKaZoUTQr+xNsS9xTnmhN6C0CxN6
+ ad7imh6CcUK96afYl7imkKE/oK7sT7EPcU0fQS9BXtiWxL3FNH7Ol9nV7YlsS9xTR+zpfZ1e2JbEvcU0
+ fs6X2dXtiWxL3FNH7Ol9nV7YlsS9xTR9BL0Fe2JbEvcU0Ps6b7MFobEtiXuKc77KE/2ULRDE+xD3VOd9
+ mCX2daOxRLEvdU0DQoGlXyxQ2IjKpqChSFCtBiIGI+4pomhQNC0SxRNaQyKc/wBBOKFe9NOK073FNL0E
+ 32daHppbEPcU5/oJfZ1f2JtiPuKaHoJegr/ppeml7imh6CXoK/6aWxL3FNH7Ol9nV7YnDEPcU0hjp/s6
+ vBilsTfcU55x1E460ixRLEvdU5hxlH7ItT00/pIe6pzBiogxloemn2Ie6pofZ032dX9ibYj7imj9nS+z
+ q9sS2I+4pofZ0vs6v7EtiXuKaH2dL7Or+xNsS9xTR+zpfZ1e2JbEvcU0fs6X2dX9iWxL3FND7Ol9nV/Y
+ lsS9xTR+zpvs6v7EtiXuKaH2dROOtH00xrR9xTnfZ0vQV81pixH3FNMUKYoVgNU2tTTkU1vs4UXYwWgG
+ pFiHGlynYoURjBajmKBYne4hojHU/QVvYn2Je4pomhROOtDYl6aXuKc77OkMdaPppemj7imgMdS+zq9s
+ S2Ie4po/Z0vs6vbEtiHuKaP2dL7Or2xLYh7imj9nS+zq9sS2Je4po/Z0vs6vbEtiHuKaP2dL7Or2xLYl
+ 7imj9nS+zhXtiWxH3FNH7Ol6CvbExYj7imiaFE40q/sThiPuKc04qX2VanppjWl7inNGMpihXtibYl7i
+ mp6CXoK5tS2oe4ppegm9BXtiWxD3FNMUKYoVoMUwxD3FNP0FE0K8WqJah7imj6CXoK5sThiIyKafoJjQ
+ r+xMWJ3uKaHoJegr2xLYj7imh6CX2dX9iXpoe4pzzjpvs60fTTeml7inPFCkKFd9NOGIe4ppihP9nV0M
+ T7UvcU0DjBROMFo7Uxal7inO+zBOMdX9iWxL3FNH7Ol9nV7YlsS9xTR+zpfZ1e2JbEvcU0fs6X2dXtiW
+ xH3FNH7Ol9nCvbEtiXuKaP2cJfZwr2xLYl7imj9nCX2dX9ibYl7imj9nS+zq9sS2I+4ppegl6Cu7E21D
+ 3FpaRoTfZ1e2JwxH3END7On+zrQFaXppe4kOecdROOtEsUSxL3FznHHS+zBaGxIMR9xLnjFCf7MFo7Et
+ iXuJc/7OE/oK8WptqXuKafoJ/QVwMUtiHuKaP2dN9nV/YlsS9xa0Ps6X2dX9iWxL3END7Ol9nV/YlsS9
+ xTQ+zpfZ1f2JbEvcQ0Ps6X2dX9iWxD3EtD7Ol9nV/YlsS9xTQ+zp/s6vbEtiXuJaP2dN9nV/Ym2Je4po
+ fZ0vs6v7EtiHvJaH2dL7Or+xLYl7ymh9nS+zq/sS2Ie8hofZ0/2dXtiWxL3lNH7Ol9nV7YlsR91TR+zp
+ fZ1e2JbEvdU0fs6X2dXtiWxL3VNH7On+zq7sUgxH3FND7OmOOtDYmLEuNTnnHUfswWhsS2Jcamh9mCkM
+ dXtiW1LjU1m0wjsZClCcJpkpk0KcqAKeVGSpclQJTkqBStS0pwkApAIWpQTp4SIStSySSSKlJJJJKUkk
+ kgpSSSSSlJJJIKUkkkkpSSSSSlkkkklKTJ0ySl06ZOkpdRcpKLklNaxVyrFirlJTNitsVRitsRUmCSQS
+ SUskkkkpSZOmQUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJJJJS6dMnSUsUCxHKBY
+ kpqPTNTvTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0+vSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKW
+ STwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCSSlkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKTpk6Sliq9isFV7ElNdydqZydqSmzWjBBrRgkpdMnTJKUkkkkpSZOmSU
+ pJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXCRSCRSUieqr1aeqr0lMAjsQAjsSU
+ 2GqSi1SSUpJJJJS6SSSSlJk6ZJSkydMgpSdMnTgpSSSSKlJJJJhUpJJJNUpJJJFSkkkkFKSSSTwpSSdM
+ ipaUpTFMkpnKUqCcIFTJMkE6YVLQkApJwgpYBPtUgnTgpGWptqIUyeFI9qW1ETFPtKOEoUiooqZJ1GUp
+ UZQzTKMpSgpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkp
+ kkoylKSmSSjKUpKZJKMpSkpkkoylKSmSkAhypApKZQmISlIlFDEhRhSKZJcFoTgJ4ShJepOmTEpIK6Sj
+ KUoLCzAUoUAU4KSwsiFEhPKYlBDGEoTpJLgpJJJJkUkkkkhSSZJJaukkkktKkkkklqkkkkV4UkkkkyMg
+ nUJTyghkVEhKU0oIWhKEpSlFSoShIKSSloTgJ06KFoSITpFFSMhMnKjKSWYUwhAogKSWUKJCeUiUksC1
+ NtUkklMQFIBJJBSoTwkkkpUJk6YlBaVKJSJTSgtKkkydBBZJ1EJ0lBdMlKaU8MgXSTSlKKSukmlKUGIr
+ pJpSlJC6SaUpSXBdJNKUpLl06jKUoLl0k0p0kFSUJJ0WIqAUgFGUpSUzSKjuTbklwXKZNKUorwySTSkk
+ vCoTQnSRWlaEk6aUli6dQlKUCpmkoylKalkkoylKKmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkp
+ kkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUpKZJKMpSkpkkoylKSmSSjKUoKZhOoSluRQzKgUxcmJRU
+ opkpSQXhcJwmTpLmSUqMppSWFmnCHKkHJLCkhMQmBTyktYlqgWopUSgpHCdOUyTIFJ1FOkuXSTSlKSGS
+ SinSWldJMkksK6SZJJQXSTJIMoXSUUpSSyTqEp5RQvCUJSlKSlJQmlPKSFoTQpJJKYwnATpwipaExCko
+ lJTFOFEpwUkpQnhQBUpSSsQm2qUppSXMdqeE6SSloTwnSSQtCUJ00pKWhMnlRJQWqSTSmlJayTyoSlKS
+ EgKdDBUgUlM0lGUpSXMkyaUpSQukmlKUlLpJpSlJIZJKMpSgvZJKMpSkgsklGUpSWldKE0pJLCqE4CZP
+ KKxkAnhRlLckviyKgQkXKJKLKFiEkpSSZAqE8Jk4RUvCUJJ0mOSoSTEppSYl0lGUpQSySTJJJXSTJJKX
+ STJJKXSTJJKXSTJJKXSTJJKXSTSlKSV0k0pSkpdJNKUpKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXThRS
+ lBTNMVHcm3JptC5TJpSlDVIXSSCdHVkC0JJJJKK6YppTSksLKE4CgCpgorCzASITAp5RWsSE0KRTJJCg
+ E6ZKUWQLpJpSlFK6SaUpSWlSdNKUorSukmlKUli6SaUpSSF0yUppSZWScBRlPKSl4TEJ5TEoqWhOAmlK
+ UkLkKBCkSokoIWhSATKQKapcBIhKUiUCpiQmTkqKbqpcKQCgFMFJLMBPCYFPKWqVQokKUqJKGqVoTQnJ
+ TSjqpSUJpSlOCmUJQmlKUUFdJNKaUUMklGUpTkM0lCUpSQyKYppSSSpJJJJKkkkkkKSSSQUpJJJBcFJJ
+ k6C5SSSSC1SSSSC0rwnhME6TGVQnATSlKGqAzASUdyW5LVliuVGExclKWrKFJ4TSkkldKEydLVBVCaE8
+ piUtWIqSTEppS1WhdOoylKcFzJJRlKUVMklGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJLJJRlKUlMk
+ lGUpSUySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUlMklGUpSUyTqMpwUFMoTQlKSClQm2p08pKY7U
+ 0KUpiihaEycppTlLhSCiCnBRQyTEJSlKCloShKU8pKVCUJJJKWhNCcppTVLwnAUZTgoKZgJ4UAU8pJZQ
+ okJSmlFKoTQlKUopXhNCdOipgQowiQmIRUxAUgmSlBDJJRlKUlMkyaUpQUukmlKUlLp1GUpSUzSUZSlB
+ S6SjKUpKXTJpSlJTKEoSBTykpaEgE6SSlwE6aUpSUoqJCRKaUVKhOAmlOCkpkAlCaUpSUsQmSJTSipkn
+ UJTygpkkoynlNQukmlKUkLpJpSlJS6SaUpSUukmlKUkrpJpSlJS6SaUpRUunCjKUpKZlQKRcokpKWKQC
+ ZOElMgE8JBJJKk4TJpSUzCdQlPuSUzhPChuS3JKZFRKUpiUVLFRhOUyClwFIKEpwUFM0xCaUpSUtCUJJ
+ 5SUuApBQBTykpmolNKYlJS5TJiU0pKZp0OVIFJTKExCUpiUlLFMUiVElJS6cBMCpBJS4CkAmSlJS8JEJ
+ pTEpKWITQkSmlJTIBSAQwVMFJTNMVHcmLklLkJQoynlBaV4TwmlPKSF4TQlKSKVQmITyokohLEpoTkpk
+ 5K4CIAhhTBSSzASKaUiUlMSolOSopJXCkoSnlBTJJRlKUFMklGUpQUySTSmlJDJJRlKUkMklGUpSUySU
+ ZSlFDJMmlPKSlQlCUp5SStCSUppQUunAUZUgUlMoTEJ5USUlMSkExKQKSmYTwogqUoqWhKE8ppSUqEoS
+ lKUlKSSlMkpdJMnSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSTSmlNKmYUghgqQKZqpkokJ5USURamJCjC
+ kUycpQCIAohSBTlLwokKUpiipjCcBJPKcFKhKE0ppRUvCUJpTgpKVCUJ5SSUtCUJ0pQUtCeE0p5TSpkA
+ nhRlKUFLkJoSlNKaVMgE8KMpbk3VTKExTFyiShqpdJRlKU8KZJKMpSnKXSTSmlJTJJRlKUlMklGUpSUy
+ SUZSlBTJJRlKUVMk4UJTgpKZwkQmBSlJSxCgQpEqJKSmKkFFOElJQpIYKlKKlFQIUiVAlBSk4UU4KKmY
+ CcBRBUgUlLwmhPKYlBSoTJEppSUukmlJBS6SZJBS6SZJJS6SZJBS6SZKUlLpJkkVLqJSlMipcBTAUAVI
+ FFTOEiEpTEoqYEKJUiVAlJS6dRlOCgplCUJBOgpQCkoylKCmRUCnJUSUFKUgoynBRCmSYpSmJTlKTgKM
+ pwUlMgE8KIKlKClQmISlMSkpUJQmlKUFLwnTSkkpSZOmSUpJMlKSmSSjKUpKZJKMpSkpkmTSmlFTNJRl
+ KUlMklGUpSUySUZSlFS6SjKeUlLpkySS0sk4UZTykhmE6huTbkUhkVEpi5NKS5eE4CYKQSSqEiE6RSSw
+ ITQpFRSUyCkoAp5RQyTJpTSghkkoylKSGSSjKUpIZJKMpSgpkkoylKSWSSjKUoKZJKMpSklkkoylKCmS
+ ZNKUphtS6SaU0pUVMklGUpQ1UySUZSlLVTJJNKUo6qXSUUkdVMklFKUdVMwpBDBUwU5TKExCeUxKKmJC
+ UJEppRUvCUJSlKKmMJJ0oQUsnTwlCSllEqcJiE1TEBTCinBQUzTFNKaUQpSZOmT1LpJJJKUkkkgpSSSS
+ SlJJJIKUkkkkpSSSSSlkkkklKTJ0ySl06ZOkpdRcpKLklNaxVyrFirlJTNitsVRitsRUmCSQSSUskkkk
+ pSZOmQUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJJJJS6dMnSUsUCxHKBYkpqPTNT
+ vTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS6SSdJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSyZOkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ WKr2KwVXsSU13J2pnJ2pKbNaMEGtGCSl0ydMkpSSSSSlJk6ZJSkkkklKSSSSUukkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpcJFIJFJSJ6qvVp6qvSUwCOxACOxJTYapKLVJJSkkkklLpJJJKUmTpklKTJ0
+ yClJ0ydOClJJ0yepSSSSYVKSSSTFKSSSSUpJJJBSkkkk4KUkkkEVKhNtUwnhC1I4TQplMgSpYJ0kiFGS
+ paUtyYqKFqShyfchBSRBUyLk25RKaU8FSQFPKgCnUgKlFMnTJ6lQlCdJKlLQlCdOhSmMJQpJJUpjCUKS
+ SVKYwlCkklSmMJQpJJUpjCUJ0kqUtCUJ0kqUtCUKUJQlSmMJQpQlCVKYwlClCUJUpjCUKUJQlSmMJQpQ
+ lCVKYwlClCUJUpjCUKUJQlSmMJJ4SSpSkkySKF04CYKQQSF4ShPKUoL2JCiQplRKSiwITKcJQkxlinSh
+ KElpXlJMnSWqTwmUkl4WhKE6dBexhKE6SKloShOklS0rQlCdJKlhWhKE6SVLVoShOkjTIFoShOklS9iU
+ ycqKFKXSSAUoQpDEplIhQSpTIKYUAphFS6SRKjKKGSRUZTykpiQoEIhUYSSsApBNCdGkrymlMUyVJZSk
+ op0qUySTJIUpdOmToKUmITpkFpYwlCdJJaVoTgJwpBBaWMJQpJJKDGE0KSZPAZQtCUJ0kqSVoShSTJUx
+ FaEoTp0qQxhKFJJKlwYwlCkklS5jCUJ0kKXLQnhJOlSCqEydJJiLEqJKkVApIVKeVFSASXBdOkAnhFeF
+ J4TJwUl4XhKEpSlBBYkKJUyolFjYJwlCcJKUE6QToUuWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKW
+ STpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKYlNKcpiEkLSkknASQuApAJgphJeFoSIUk
+ xSXMCFEqZUSElpYpwUoShJYWQKcFRTpLWaZNKeUkLEJoUkkmUMYShSSSpcxhKFJJKlq0JQnTpUgsYShS
+ SSpYWMJQpJJUoMYShSSSpkDGExCmolKlzApBOUwCSFwnTgJEJKYpBIpBKkMgnTBOlSlk4TEpApKZKJCe
+ UklIyEoUyE0JUlYKUpkkkqlKUySS5lKSinSUySTJJUhdMkkkpZKE6SVLSxhNCmlCVLSwhKFOEoSQwhOA
+ pQklSVJJ0kkrJJ0kqUsknSSpCySdJBcFkk6SS5ZJOklSFkk6SVLSskklKSwqSSSSWLEpiUioor4rykmU
+ gEmULJ4TwkivVCcBJOCkpUJJJSkxyYlRKkUyNMawTgJBSCFJWhKFJJKksYShSSSpTGEoUkkqUxhKFJJK
+ lMYShSSSpTGEoUkkqSxhKFJJKlMYShSSSpTGEoUkkqUxhKFJJKlMYShSSSpTGEoUkkqUxhKFJJKlMYTw
+ nSSpS0JipJilSmBUZUiFGEeFCgpAJgFIIcKQuAnhIJ0OFeFoTEKUpilSSjITKZTQjTGWKkEoTwlS0rgp
+ 1FOlS1kkmTpUkLQknSQZAslCdJJSyUJ0kELQknSStYVkk6SVrVkk6SFpCyUJ06VsgYpJyokpWlUp1GU4
+ RtS6SeExCNoWTJ0kkLQnCSdFSkkpTSlSlFNCdJKlLQpBJJDhSvKaUxKiSjwpZSlKikjwpXlJKE8IUpZJ
+ PCaEqUpJKE6VIWSTpIIUknTwlaCxhKFKEkLQxhPCdJK0haEoTpIWlaEoTpJWhaEoTpJWpaEoTpJWvC0J
+ QnSSStCUJ0kkFaEoTpJLCtCdJNKNMZUmJTqJSpAWJSlMUyNMgZSnCYBSASplCk6ZKUeFcunUZTylwqKk
+ xTymQ4WCTEpKUJQjSAxhPCeE6VLmMJQpJJUpjCUKSSVKYwlCkklSmMJQpJJUpjCUKSSVKYwlClCUJUlj
+ CUKUJkqUtCUJ0kaUtCUJ0kqUsknSQpSyUJ06VKYwlCkklSmMJQpJJUpjCUJ0kaSsnCdJNIQpOmTptIUk
+ koyipdJNKdGlLJoUoShGkMU4SSRQukkmSpS6SZOlSl0kk0oKUVEqRKihSlk6SQCFJXlKUkoSSqU0pJka
+ UunCYJwiuZBSATBSQUqExCkmKSWBCYhTKiUUMYSTpJUhZJOkkpZJOklSlkk6ZBSkkkklKSTpJUpaEoUo
+ ShJSySdMkpSSdMkpSUpimlKlKJTJJJUpSdMkjSl5Tpk4SpSyYqcJiElMEgkQkkpkFKEwUk2kLQlCdJKk
+ LQlCdJKlLQlCdJKkrQlCdJJS0JQnSSUtCSdJJS0KJUyolJTFMnhOAjSlgFIBOAnSpSgEk0p5SSsVEqai
+ UlMZSlIhNCSl5TymhJJS8p1FOEqUumhSSSpTFJPCSVKUnTJ4SpSySlCUJUpiknTJUpSZJOlSmKZThNCV
+ KYpwnhKEqUpOkklSlioqRTJUpQCmAmAUwEqUsolSKgUqUqUk0pwlSlioqcJoSpSwTpQnhKlLEppTkJoS
+ pSk4TAJ00haV08pkyCGYSTBOilRUSnKZOpK0JQnATwilYBOE8JkaSukmSlCkqKaE6dKlMYShSSQUxhKF
+ JJBSySdJBSySdJJS0JQnSSpDGEoUkkaQxhKFJJGkMYTp0kqUsknTIJWTJ0ySlBSCYKQSUyTFOmKSkZSC
+ cpklMgnTBOkpRTJJikpUpwmThKlLwnhJOipaEoTpJUpaEoTpJUpaEoTpJUpaEoTpJUpaEoTpJUpaEoTp
+ JUpiQokKaYpUpinCZOlwqXSSCdKlMYShSTFKlLJ00ppSUzlJRBUklLJJ0xSUxKZOUoStSykmhJK1Mk6Y
+ JJWpdMkkkpSSZOkpSUpJpSpS6SZOlSlpSlIqJKVKXlJMnAS4VKTwkAnSpS0JQnSSUtCaFJJKlMYShOkl
+ SloShOklSloShOklSloSTpJUpaEk6SNKUlKZMkpcpkk8JKYwnAUgE8JKWATpJJKWTEJ0kqUxhKFJKEqU
+ sE6SSVKXlJMkkpSUJ0oSpS0JQnhKEqUtCUKSSFKYwlCkklSmMJQpJIUpjCUKSSVKYwlClCSNKYwmhTTQ
+ jSmMJwlCSVKZSmJTSlKNKWKiVIpoSpTFSAShOAlSlwE6QCdClLJinKiSm0pSZJOEKUoBPCcBOiApZRKk
+ VFPpSySdJKlKTymToUpUppSKZKlKlOFFSCFKXClCYKQSpS0JoU4SIQpSMhNCmUyNKYwlCdJKlLQlCdKE
+ qUtCUJ0kaUtCUJ0kqUtCUJ0kqUtCUJ0kaUtCUJ0kqUtCUJ0kKWlaEylCYhKkMSUxKchRhKkqlOEwCmAl
+ S5cBTATAKQSpK8JiEpSlBKxCiQpSmRUxSTpI0hZKE6dKkMYShSSSpDGEoUkkKQxhKFJJJTGEoUkkEsYS
+ hOnSUxhKFJJJLGEoUkyVKWhKE6SXClaEoTpJcKloShOklwoWhKE6SXCpaEoUkkuFTGEoUkkuFTGEoUkk
+ qUxhOnTFGlLymlRTo0pUpk8JkqUvKcKKcIKZBPCYKQTVKhKE6YlBSxUSnJTJpUsU0pymKbalSnlRTpwU
+ unTJ1IpSSSSSlJJJIKUkkkkpSSSSClJJJJKUkkkkpZJJJJSkydMkpdOmTpKXUXKSi5JTWsVcqxYq5SUz
+ YrbFUYrbEVJgkkEklLJJJJKUmTpkFKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKWSSSS
+ UunTJ0lLFAsRygWJKaj0zU70zUlNmtWGqvWrDUlLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1evSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklLpJkklLpJkklLpJkklLpJkklLpJkk
+ lLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpOmTpKWKr2KwVXsSU13J2pnJ2pKbNaMEGtGCSl0ydMkpSSSSSlJk6ZJSkkk
+ klKSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcJFIJFJSJ6qvVp6qvSUwCOxACOxJTYap
+ KLVJJSkkkklLpJJJKUmTpklKTJ0yClJ0ydPClJ0yScpSSSSYVKSSSTVKSSSQUpJJJBSkkkk5SkkkkaUy
+ lKVGUxKFKXJTSmKQTSFMwnUQpSoyFLEKMKaUIUpiGp4UgFJGlIiFGEUhNCeApgAnUgFKFKAqkaSnCUJy
+ qYJ08JQipZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSUoShJTFJShKElMUlKE
+ oSUxSUoShJTFJShKElMUlKEoSUxSUoTQkpZNCnCUJWphCZEhMQkhgnBShOAkuAVKUp4ShBetKSeE8JII
+ WATwnCdBYQxhMQiJiElpCKEyIQowitYp5TpQlS4KlKU8JQkvWlKU8JQkpaUpTwlCS1aUpTwlCK0rSlKe
+ EoSWsZSlPCUJLwFSmlPCUJL6YlMpwlCFKWAUoThSQQjIUCikKBCKmIUwmAUgkpYlQJRITQihgCpBOGqQ
+ akpglCJCaErSwSU4TQkmmBTQiQlCSaYAJ4U4ShK1UwSU4TQkqmKdShPCCGCSnCaEFpLBJShKEqWrBPKc
+ BPCCKYylKchNCNKAWlJOknMoWSTwkkkrJJ4SSYisknShJFLJJ4ShJeAsknhKEkrJJ4SQSsknhPCSCxlJ
+ ShPCTGUaiQjQowkpHCkApQpAJLgFgExRFEoLwEZKaVIqMJ1L6UCnlMApAJUghaUlKEoSY6YQkpwlCSmK
+ SlCUIJYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJ
+ QkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKUKcJJIRwkpkJkqQsCnlKEoSpeAqUxKdKEqX0xlJOklSwh
+ UJQnBTpUsLGElJKElrFJShKEkBZJPCUJMoWSUoShJcsknhKElqySdJJCySdJJaQsknTwkoBikpQlCS8M
+ ZTFThNCSUacBShOAkpQCchSCRQUhKiikKMIoUEipAJEJKRlMCpkJBqSlBOnAUoSUwTIkKJCS5gmRITQk
+ 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
+ KEoStTFJShKErUxUSiQltStSOE4CJtTwhakcKJCNCiQlakSQUyE0JKUFIFMApQmlS0qJKmQoEIKWlJMk
+ mlTJNCcJ4TaUxhKFJNCcFKSSSUilJJJJKUkkkgpSSSSSlJJJIKUkkkkpSSSSSlkkkklKTJ0ySl06ZOkp
+ dRcpKLklNaxVyrFirlJTNitsVRit1pKTBJIJIqWSSSSUpMkkgpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSk
+ kkklKSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklP/1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpYqvYrBVexJTXcnamcnakps1owQa0YJKXTJ0ySl
+ JJJJKUmTpklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlwkUgkUlInqq9Wnqq9
+ JTAI7EAI7ElNhqkotUklKSSSSUukkkkpSZOmSUpMnTIKUnTJ04KUkkkipdMkkmFSkkkk1SkkkkVKSSSS
+ UpJJJPClJJJIqWTJ0kFLJ0kkClSeUySYVMpThMFIIKUnJTKDijSVy5RL0F9kKpZkQngJb/qgJeuFjWZk
+ Ku7P81KAp6D7QE32gLnD1DzS+3+aNKL0f2gJfaAud+3+aX2/zRpYXovXCX2gLnft/ml9u80qQ9F9oCX2
+ gLnft3ml9u80qU9F9oCX2gLnft3ml9u80qU9F9oCX2gLnft3ml9u80qU9F9oCX2gLnft3ml9u80qU9F6
+ 4S9cLnft6X29ClPReuEvXC537el9vSpT0X2gJfaAud+3eaX27zSpT0X2gJfaAud+3eaX27zSpT0X2gJf
+ aAud+3eaX27zSpT0X2gJfaAud+3eaX27zSpT0XrhL1wud+3eaX27zSpD0XrhL1wud+3eaX27zSpT0X2g
+ JfaAud+3eaX27zSpT0f2gJeuFzn2/wA0/wBvRpT0XrhRN4WB9u80xzkqS7/rhOLwue+3eaX2/wA0aZA9
+ ILgl6wXOftHzS/aPmm0vp6P1wom8Lnv2j5pv2h5o0gvRfaAnGQFzf27zT/bvNLhWvR/aAl9pC5z7f5pv
+ t/mlwrS9GcgKP2gLnft/ml9u80qWPRfaAnGQFzn27zT/AG7zRpcHovXCf7QFzn27zT/b0KXPQ+uEvtAX
+ O/bvNL7clSC9F9oCXrhc79u80vt3mjS16L7QEvtAXO/bvNL7d5pUtL0XrhL7QFzv27zS+3eaVIei+0BL
+ 7QFzv27zS+3eaXCyRei9cJeuFzv27zS+3eaXCyPQ+uEvXC577cl9uS4Vpei+0BP9pC5z7d5pfbj4pcK1
+ 6I5IUTkBc99v80327zQpT0X2gKQyAucGcpDNQpT0XrhP64XPfbkvt3mlS0vReuEvtAXOHqHmo/tDzQpD
+ 0v2gJvtAXN/tDzUhn+aPCuD0XrhL1wue+3+acZ/mjwsgeh9YJesFz4z/ADT/AG/zS4V4Dv8ArhN64XPn
+ P81A9Q80uFdT0X2gJvtAXO/b/NN9v80KWF6QZAT/AGgLm/t/ml9v80qYi9J9oCX2gLnPt/ml9v8ANKmI
+ l6L1wnF4XO/b/NOM/wA0qQC9F64S+0Bc99v81E5/mlwsweiOQFH7QFzh6h5pvt/mjwrqek+0BL7QFzgz
+ /NS+3eaVLXoftAS+0Bc99uS+3eaVIeh+0BL7QFz327zS+3eaVKeh+0BL7QFz327zS+3eaVKD0P2gJfaA
+ ue+3eaX25Cl4D0P2gJ/tAXO/bvNL7d5pUl6H7QEvtAXPfbkvtyVIeh+0BP8AaAud+3eaY5/mlS0vSfaA
+ n+0Bcz+0PNOOoeaVMb0v2gKJvC54Z/ml9u80qSHoPtATjIC537d5pxnI0zAPR/aAmOQFz327zUTn+aXC
+ yAPQG8JvXC577f5pxn+adwr6ehFwTi4Lnxn+af7f5pcK2Qeg9cJeuFzx6h5pjn+aHCwF6H7QEvtAXO/b
+ /NL7f5pcKHo/XCf1wuc+3+af7d5ptIeh9cJeuFz32/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz3
+ 2/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz3
+ 2/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz3
+ 2/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFz32/zS+3+aVKeh9cJeuFzv2/zS+3+aVKej+0BN9oC5
+ 77d5pvt3mnCKnoTkBN9oC5/7cl9uR4UPQeuE/rhc99u80vt/mlws8A9D64TeuFzx6h5pv2h5pcLLwvQG
+ 8JvtAXPnP80323zR4WKQehGQE4yQud+2pfbvNLhDCXo/tAT/AGgLnPtx8U4zvNN4Vpej+0BP64XOjO80
+ /wBuQpD0PrhP64XO/bvNL7clTIHovXCXrhc99u80vt3mhS56H1wl64XPfbkvt3mlS16H1wl64XPfbvNL
+ 7d5pUh6H1wl64XPfbkvt3mlS6nofXCXrhc99u80vtyVJp6H1wl64XPfbvNL7d5pUsL0P2gJeuFzv27zT
+ /bvNKkW9B64S+0Bc/wDbkxzUaS9F9pCX2kLnDneab7f5pcKXo/tAS9cLnBn+akM7zTUvRC8J/XC54Zyf
+ 7cgp3/XCXrhc+c7zUTn+aK16P7QEvtAXNftDzSHUPNKlPS/aAo+uFzwz/NP9u807hXh6D1wnF4XO/b/N
+ SGf5o8K8PQ+sExuCwft/monP80OFeA73rhSF4XOnP80hn+aRCiHo/XCRyAue+3+aic/zTaYS9CcgJDIC
+ 5s5/mnGf5pMZL0n2gJG8LnhneaX27zQYyXoPtATfaAufOd5pvt3miAvi9F9oCX2gLnPt3ml9v806mYB6
+ T7QEvtAXN/b/ADT/AG/zQpRei+0BL7QFzv27zT/bkqWF6H7QEvtAXPfbvNL7d5pUh6H7QEvtAXO/bvNP
+ 9u80qQ9D9oCX2gLnvt3ml9u80qSHoftAS+0Bc99u80vt3mhS96H7QEvtAXPfbvNL7d5pUp6H7QEvtAXP
+ fbvNL7d5pUh6H7QEvtAXOHP81E9Q80aWl6X7QEvtAXNftDzUhn+aVLXo/tAS+0Bc99u80vtyNL4vQfaA
+ m+0Bc/8AblE53mjTOA9F9oCb1wud+3+aX2/zSpdT0XrBOLgudGf5qYz/ADRpNPQi4KQuC54Z/mn/AGh5
+ ppiwzegN4UDkBYB6h5oZz/NERYXo/tAS+0Bc59v804zvNKlPR+uEvXC537d5pfbvNClPReuEvXC537d5
+ pfbvNKlPReuEvtAXO/bvNL7d5pUp6L7QEvtAXO/bvNL7d5pUl6L7QEvXC537cl9uSpT0XrhL1wud+3ea
+ X27zSpT0XrhL1wud+3eaX27zSpT0XrhL1wud+3eaX27zSpT0XrhL1wud+3eaX27zSpT0X2gJfaAud+3J
+ fb0qU9F9oCX2gLnft6X25KlPReuEvXC537f5pfbvNKkPReuEvXC537d5pfbvNKlPRfaAl9oC537d5pfb
+ /NKlPRfaAm+0Bc99v80327zSpT0X2gJvtAXO/bvNL7d5o8KnovXCcXhc8M7zTjP80uFcHovXCXrBc9+0
+ PNMeo+aHCzAPResFE3hc9+0fNN+0PNKk09D64SGQFz327zS+3I0sL0YyAl9oC5z7cfFL7f5oUxyej+0B
+ L7QFzn2/zS+3+aVMRej+0BP64XO/b/NL7f5oUoPRfaAn9cLnPt/ml9v80qXh6P7QEvtAXOfb/NL7f5oU
+ vej+0BL7QFzn2/zS+3+aVJej+0BL7QFzn2/zS+3+aVIL0f2gJfaAuc+3+aX2/wA0aWPR/aAl9oC5z7f5
+ pfb/ADSpT0f2gJfaAuc+3+aX2/zQpT0X2gJeuFzv2/zT/bvNGkvQ+uEvtAXPfbvNMc/zSpc9H9pCb7SF
+ zZz/ADTfbz4pUp6T7QE/2gLmxn+akM7zTVPReuE/rhc99u80vt3mktL0PrhP64XOfb/NN+0PNJa9L64T
+ euFzY6h5p/t/miAkPRG8KJvC5/7f5pvt/mncLIHoPXCcXBc8M/zUhn+aNMgD0HrBN64WAc/zUTn+aXCv
+ p6EXhSGQFzf2/wA0/wBv80CFpD0f2gJfaAuc+3+ab7f5ptMRej+0BL7QFzn2/wA0hn+aDES9H64T+uFz
+ ozvNP9uSWW9B64S+0Bc8c7zUTn+acAyRejGQFL7QFzX2/wA04z/NLhZHpDkBRN4XO/b/ADS+3JcKnofX
+ CXrhc99uS+3I8KnofXCXrhc99u80vt3mlwscnofXCb1wuf8At3ml9u80uFZb0HrhL1wue+3JfbkuFcC9
+ D64S+0Bc99u80vt3mlS63oftAS9cLnvt3ml9u80qXB6H1wn+0Bc79uS+3eaVJejGQFIZAXNfb/NOOoea
+ aQsIel9cJG8LnB1DzT/b/NClU75vCb7QFgHO81E5yK4PQ/aQnGQFzn25IZ/mlS8PSeuExuC54Z/mn/aH
+ mlS4O8bgm9YLC+3+ab7f5pwCXe9YJ/XC5/7f5pvt/mjSwh6L7QEvtAXOfb/NP9u80OFY9F9oCXrhc99u
+ S+3JUteh9cJeuFz325L7clSnofXCXrhc99u80vt3mlSnofXCXrhc99u80vt3mhSnovXCXrhc99uS+3JU
+ l6H1wl64XPfbkvtyVKeh9cJeuFz325L7clSnofXCb1wuf+3Jvt3mlSnofXCXrhc99u80vt3mjSnofXCX
+ rhc99u80vt3mlSnofXCXrhc79u80vt3mlSnovXCXrhc99u80vt3mlSnofXCb1wuf+3eab7d5pUl6H1wl
+ 64XPfbvNP9u80qU9B64S9cLnvt3ml9u80qU9F64T/aAuc+3eaX2/zSpT0f2gJfaAudGf5pxneaXCl6H1
+ wn9cLn/t3ml9v80qU9D64TeuFz37Q80xz/NCkPRfaAl9oC5w5/mo/b/NKlr0v2gJvtAXN/tDzT/b/NKl
+ PReuEvXC577d5pfbvNKkPQ+uE/2gLnft3ml9v80qQ9F9oCb7QFzhz/NMc/zQpD0f2gJfaAub+3+acZ/m
+ jSno/tAS+0Bc79u80vt3mlSXo/tATjIC5z7d5pfbvNKkvSjICX2gLm/t/ml9v80qS9J9oCicgLnft/mm
+ +3+aVJei+0BL7QFzn2/zTjP80aS9GLwpeuFzgz/NS/aHmlwpeg9cJvtAXPHqHmonqHmhS0vR/aAl9oC5
+ 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
+ J0lLqLlJRckprWKuVYsVcpKZsVutVGK3WkpMEkgkgpZJJJJSkySSKlJJJJKUkkkkpSSSSSlJJJJKUnTJ
+ 0lKSSSSUpJJJJSkkkklLJJJJKXTpk6SligWI5QLElNR6Zqd6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSU//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpYqvYrBVexJTXcnamcnakps1owQa0YJKXTJ
+ 0ySlJJJJKUmTpklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlwkUgkUlInqq9W
+ nqq9JTAI7EAI7ElNhqkotUklKSSSSUukkkkpSZOmSUpMnTIKUnTJ0QpSSSScpSSSSYVKSSSTVKSSSRUp
+ JJJJSkkkk8KUkkkipSZJJJSkkkk0pVCcBOE6YVKTpkpQSolBe5TcUB5RCmtc9ZmRbCvXLKyVIEtG+8qm
+ 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
+ 5JfYPJK2IuLDkoctr7B5JfYPJK1BxYclDltfYPJL7B5I2yhxYclDltfYPJL7B5JKLiw5KHLa+weSX2Dy
+ QYy4sOShy2fsHkn+weSVKcWHJQ5bX2DyS+weSFKcWHJQ5bX2DyS+weSVKcWHJQ5bX2DyS+weSVKcWHJQ
+ 5bX2DyS+weSVJcWHJQ5bX2DyS+weSVKcWHJQ5bX2DyS+weSKXFhyaHLb/Z/konA8klOIdyGXkLZswoVG
+ 3GhGlNP1SjV3FCfVCTGwUqU6lFpWtjvlYuOFs4wTSEunWUcIVQVgBNKkZCUKZCaECFMYSUoShNpTBOnh
+ MipSSSSKFJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJSkydMkpdOmTpKXUXKSi5JTWsVcqxYq5S
+ UzYrdaqMVutJSYJFIJFBSySSSSlJk6ZFSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlk
+ kkklLp0ydJSxQLEcoFiSmo9M1O9M1JTZrVhqr1qw1JS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/Q69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ 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
+ NrCi9EJeiEWUpStCP0Ql6IRJSlK1I/RCXohElKUrUj9EJeiESUpStKP0Ql6IRJSlK1I/RCb0QiylKVqR
+ +iE/oBTBUgULKUfoBRdQFYBSKFlLm3UCFk5NQC3b+FjZZUoQ41zQCgDlGvOqqh2qKnQxytnFKwscraxS
+ mlLs1cI8qtUdEeUwpUSmlQJTSkhJKUqEp01S6SZJJSkkkkkKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkk
+ lKTJ0ySlJk6ZJS6dMnSUuouUlFySmtYq5VixVykpmxW61UYrdaSkwSKQSKClkkkklKTJ0yKlJJJJKUkk
+ kkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklLJJJJKXTpk6SligWI5QLElNR6Zqd6ZqSmzWrDVXrVhq
+ Sl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSU/wD/0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpYqvYrBVexJTXcn
+ amcnakps1owQa0YJKXTJ0ySlJJJJKUmTpklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlwkUgkUlInqq9Wnqq9JTAI7EAI7ElNhqkotUklKSSSSUukkkkpSZOmSUpMnTIKUnTJ0QpSSSSc
+ pSSSSYVKSSSTVKSSSRUpJJJJSkkkk8KUkkkEVMglCQTpKYEKBRCokIJYp08J4TCpZSCaE4TUsioOUiUN
+ 5Tgpq3rEzVs3lYuYU8JcDIOqhQdVPIGqjQ3VTBT0XTzwukxzoub6eOF0mONECpsyoEqRQymBYV5SlRSR
+ QylKVFJJTKUpUUklMpSlRSSUylKVFJJTKUpUUklMpSlRSSUukkmSQukmSSUukmSSUukmSSUukkkipSSS
+ SSlSlKSSClSokpyolEKWlRcUlBxTgEtPJOiwM3ut3JOiwczupFwcHJ5VMcq5kjVVANUGUN7GOq3sIrBx
+ hqt7DSWl38Y6K+wrOxjor7EwrUsppTJJq0rypBQUgksZpJkkFwVKUpkkFy8pSmSSQV0kySC0rpJkklq6
+ SZJBaukmSSZYrpJkkmRdKU0pSnBaVJSmSRQyBTyogJIFTKU0piVGUFM5SJUJSlFaVEpgUxSASWpQUG/h
+ GhAv4RC8OFnd1z2TyugzjyueyTqpAyBqd0dgQJ1R6yiyhtVrQx1n1rRx0kl2sValfCy8ValfCiLHJIUI
+ lFIQiE1iKgU8qKSLEVyU0piU0pIC8pSmShOZorynlNCeElzIFOop0Fi6SZJJS6SZJJC6SZJJIXSTJILw
+ ukmSSUukmSSQumKSUJLCxSUtqfaksLEJ0oSRSFwpKAUkGYI7OFm5K0rOFm5KcGUOLkrNtWnkrMtTl7Ve
+ FXI1Vh5VcnVFZJsUcreweywaOVvYPZJgL0WMdFdBVHG4V0KOSFEqKRUUlMklFJJTJJRSSUySUUklMklF
+ JJTJJRSSUySUUklMklFJJTJJRSSUySUUklMklFJJTJJRSSUySUUklMklFJJTJJRSSUylRJTqJRUxcqV6
+ uOVO9OC1xcxc/lroMtYOUEWzBzCiU8qDhqiU8oMzu4HZdNicBczg9l0uJwkwydRnCkSoM4UimsBVKRSA
+ ShBaVimUoTQihQTpoToMgXSTJJLl0kkyS0rpJkklLpJJJLgpJJJJSkySSSwqUgop0kMgkUkiglgUykQm
+ hOSoJ0oSTSlSSSZJS6iU6YhFaxlEaVABEaElBjZwsbN4K2bOFi53dOC8PN5qyH8rWzTqsl51UgXhlWr9
+ KoVlX6UmQOpjrYx1j462MZAoLp1I4KBUEcBRlhKxKjKkQowmsRXlPKikksZSnUU6S+K8pkk0Is4VKUpQ
+ lCKCpOmSSWFdJMkkhdJMkkhdJMnQXBSSSZJcukkkkpSSSSSFioFTITQitLEFTBTbU8ILWUppTFRlGmSK
+ SVFxTBM5JlDSySsXKK2clYuUnBeHMtVdyPaq7inJQPTV8pPKVfKLBN18JdHh8LncIcLosQaIFidVh0Ui
+ VBnCkVF1StKUqKSKV5SlMkkpeUpTJJJXlKUySSl5SlMkkpeUpTJJJXlKUySSl5SlMkkpeUpTJJKXlKUy
+ SSF5SlMkkpeUpTJJKXlKUySSF5TyopJKZSlKikkpRKgSnKiUQtLXuWRlrWtWTlp6Q89l91kWcrZyxysi
+ 0aoNiOzCvlbeDyFjVjVbeEOEkvTYPAWzXwsbC4WxXwgVhZlDJUyoQmhikpOE0KQCLCVwnTAJ01IUlKYp
+ kV4ZSlKikkvDKUpUUkkspSlRTpIK8pJkkli8pSmSSUulKinSUvKaUyUpJUSmlKUyKVwVMFQAUggVM5Sl
+ MmlNUvKYlNKaUkFRKiSnKjCKxm0qTjootCd3CK4ObmHRcznHUrpMw6Lmc46lPAXhxbeVGtK06pVlOZYt
+ +lamOsyhaeOkyOtjrTpWZjrUpTSxybTVIlRaFIhRsRYEqJKkQoFBiK4KkCoBOksZJikmKcGWKxSShPCL
+ IoFPKaEk0qZJKKSCmSSZJFikvKUpkklq8pJkkUheUpTJJLwvKeVFOkuC6YlJMklYlMpQltSWlYJ0oShB
+ C6kCoJwiVwZkqnkHRWzwqmRwgF4cPLKxruVs5YWPdypAF4axUHKRKg4p4CVm8rQxVnNOq0MVGmMvQ4Z4
+ WzUdFi4fZbNXCjksKeVFOoqNaVSkmSSQukmSRSukmSSUukmSQUukmSSUukmSSUukmSSUukmSSUukmSSU
+ ukmSSUukmSSUulKZJFS8pSmSSUvKSZJJS8pSmCdBcFSg2nRFKBadEWRys08rnco6rfzTyudyjqkhDUdV
+ v4B4XPVHVb+B2SQ9JjnRWCVWx+FZIQQwlSBUYUgEEMpTEpKJSQvKUqKdJC5KiSnhMQkpjKcFKEoSUyBU
+ gVAJ0lMpTEpKJRSolNKSQCKWQKcpgE5QShsWdkrRsWdklOTTh5YWY4arTyys1x1RS3MXldBiFc/i8rfx
+ EGMutWdESUGtEQWswU8qATyglclRJSJUSipeU8qCdJDOUpUUkFLylKZMipeUpTJJJZSlKikgpUpwVFOA
+ kpICiNKEAitTSlTlRyVecqGSjFLh5fdYt/K2svusW/lPUgZytLEWa3laWKkl6DEWrXwsjEK1qzogUsyh
+ kqZUCEAgqlOmSRWFdJMkkhdJMkgldJMkkpdJMkgpdKUySSV5SlMkipeU8qKdFLIFIlMmcgpp5XC5zOXQ
+ 5PC57OT0OLZyrWLyqtg1VnG5SU9DicLWqWPiFa1RSU2gVMFCBUwmlTIlRJSKYhBSxKZPCaEELhSCjCcI
+ qSBOoAp0kKJUCVIqBSUqVIFQhTASSzlKUySSl5ThRSQSkCi5IFRcUlNW9Y2Uta8rIyinKcXJKpA6q5kl
+ Uhykp08MrpMLgLmcQrpMI8JKdhnCZ5TMOiTkOqkcpApQnARQpKUoSQUyCmEMKUpKZJimlMSkpUpSmSSQ
+ yBTyohSSUpMkmKSl00pkkkqlO0poUmhJLNVcnhWo0VTJ4QC557O7rDtOq2848rCtOqcpJQdVs4pWJQdV
+ s4pSU7VBV5hWfQr7AkpKmJTqJCC0qlKUoShFCpSlKEoSQqUpShKElKlKUoShBSpSlKEoSSqUpShKElKl
+ OCmhOAklkCpAqACmAgpi4oFhR3BV7UQpzskrEyytnJKw8soqc551VvGOqpOOquYvKKnoMMrWrOiycMLW
+ rGiKkspwownCapmkoylKFKXJTSkmRUvKSZJBS8pSmSSQylKVFJBTJJMkkpdJJMipdJMkipmCpEqATlNU
+ 1cg6LDyytvI4WFllSxCXGvOqA06o151QG8qcBLpYpW7iHhYOKt3EPCjkFOxVwikoFR0RVAUMSU0pymhB
+ C0pSlCUIKVKeU0JQihlKUpoSRQylKVFKUlKJUZTlNCSVwVIFRDVKEFLyokpFMSgleU0pJQiFLOKpZHCu
+ uCpZHCkCXCzFjW8rYzTysa06qWISmx+Vu4nZYOOdVuYh4TyFO1SrTSqdJVtqgkhJKYlJMVGpeUpTJJKV
+ KUpJJKVKUpJk1S8pSmSSUvKeVFOipUp5TJkVMpTEpkyKlEpwVFSARUyQLuEchV7kFOTlLEyStrKWJklO
+ U0SdVdxTqqJ5V7F5SU9FhFbFZ0WNhLYr4TSpmSoypEKMIKZBSUAnQUoppSKZFC8pSmSSUylNKZJBS8pS
+ mSSSvKUpkklLylKZJJS8p5UUkVMpSJTJEJJamQdFhZhW7kDRYOb3TkONcdUqjqo3HVNU7VFTs4pWxjlY
+ mKVtY6CnRrKLKFWNESE0qUSlKiUgUUMpTSkmhBS4KmChgKQQUzlQcVJQKSmBKjKkQowgpcFSBUAFIIhS
+ QJ1EJ0VLymlJNCSVSmJTwokIhSGwrPyFfsWfkJynEy1lP5WpllZLzqgpu4h1XS4J4XM4h1XS4PZBTt1n
+ RSKhXwpOTUsZSTJIoZJJkkFLp0ySSF5SlMkipeU0pkklLykmSCSmaSYJIJWJUJUioIpZAorSghEaktKV
+ Vr+EeVWvOiAQ42Yuey10GYVz+WpAyxct/KNRygv5R6OUVxdzDW9jnRYGGtzHOiDGXQaVOUJpUggtSAp1
+ EJ0ELpJkkFLpJkkF4XSTJJKK6SZJJiK6SZJFQXSTJJMwXSlMkkoqSSShJjKk6aEoStS6SaEoQtS6ZKEo
+ StSkkkkLUpJKEoRtKkkoShK1KCkCop0kswVIlCBTkpKQ38LFy1r3HRY+UjanFyOVVHKuXjVVQNUrS28Z
+ beIFjYwW3iBAlTq0jRHhCpGiPCaSpCQmhEIUU0lS0J4TpIWlaEk8pkQUKSSSTkKSSSSUpJJJBSkkkklK
+ SSSSUpJJJJSkkkklKTJ0ySlJk6ZJS6dMnSUuouUlFySmtYq5VixVykpmxW61UYrdaSkwSKQSKClkkkkl
+ KTJ0yKlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklLJJJJKXTpk6SligWI5QLElNR6Zqd
+ 6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKW
+ Kr2KwVXsSU13J2pnJ2pKbNaMEGtGCSl0ydMkpSSSSSlJk6ZJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpcJFIJFJSJ6qvVp6qvSUwCOxACOxJTYapKLVJJSkkkklLpJJJKUmTpklKTJ0y
+ ClJ0ydFSkkkkVKSSSTSpSSSSapSSSSKlJJJJKUkkknhSkkkkVLhPKinlJS5TQlKSCVQnhIJ0wqWITKSa
+ EEsSUF5RnBBeEQpp3FZGXqta4LKyQnhLi3N1T0M1U7hqo1OgqYKd7BEQt+hwhcvi3wtarLgJEKdgvCEX
+ hUDmIRy02lhdPeEt6y/taf7Wkh096W9Zn2tL7Wkp096W9Zn2tL7Wkp096W9Zn2tL7Wkp096W9Zn2tL7W
+ kp096W9Zn2tL7Wkp096W9Zn2tL7Wkp096fesv7Wn+1pIdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9
+ rS+1pKdPeEt4WZ9rS+1pKdPeEt4WZ9rS+1pKdPeEt6zPtaX2tJTpbwol4Wf9rUTlohTfLkN71SOUhuyV
+ IFM8h6w8szKvXXysvIfKVrw5d41VUN1Vu3VAA1SZGzjjVbeIViUmFqY9kIIL0WO7RX2PWDTkQrjMpNWl
+ 1t4S3hZn2tP9rSWF0t4Ug8LK+1qQy0Frqb028LM+1pfa0Eh096besz7Wl9rQXOnvS3rM+1pfa0KQXT3h
+ PvWX9rS+1pUtdTelvWX9rS+1pUtdTeEt6y/taX2tCkOnvS3rM+1pfa0qZIunvS3rM+1pfa0qZHT3pt6z
+ PtaX2tPAQ6m9OHBZYy1IZadSHT3BIvCzPtaY5aaQp0S9QNizjlqJyk1Tp+opB6yvtScZaS0urvCkHBZP
+ 2xSGaitdfcFVyH6Kr9tVe7KkJ4C8NPOdyueyTqtbLt3LGvMlPpkDXB1VisquBqjsSZQ3KitLHKya3Qr1
+ NsJUkvQ4zlqVvELnaMiFfZlqMhjk65eEMuCz/tigcxMpiLo7wmL1m/a0xy0mIuiXpt6zTlpvtSSA6gep
+ ByyxlKYy08BmDphwT7gsz7YEvtiNJdIvCbeFmnMUftaFLXU3hLeFl/a0vtaCHU3hLeFl/a0vtaSnU3hL
+ esv7Wl9rSUHU3pb1l/a0vtaC8OpvS3rL+1pfa0kupvS3rL+1pvtaCHVD1MPCyBlqYzEVhdcOCRcFljNC
+ c5oQpYXQLwol4WccxQOWikOmHqYeFkDLUhlo0zRdF71n5LlB2Wqd+TKLKGrklZdxVu+2Vn2OlFcEFhQC
+ dUZ6EQisk2cflb+EeFz1JgrXxboSpgL1OM/RXA8LCoyoCsjMQIU6TnhR3rNOWm+1ptKdPelvWZ9rS+1p
+ KdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9r
+ S+1pKdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelvWZ9rS+1pKdPelv
+ WZ9rS+1pKdPelvWZ9rS+1pKdTeEi4LMGWn+1pwCG896pXvQ3ZSqW5Eo0gNXLKxMkLTyLZWXeZSbUHPeN
+ USkapnjVTq0KTM7OFpC6LFeuYxnwtjHyIQa83oWP0RN4WQzLU/taFMJdUPCW4LMGWl9rCFLS6e4Jt4Wb
+ 9rTfa0kOlvT71mfa032tBkDqbwlvCy/taX2tJc6m8Jt4WZ9rS+1pLS6e8Jbwsz7Wl9rSU6m8Jt4WZ9rS
+ +1pLg6m8Jbwsv7Wl9rSU6m8Jt6zPtaX2tJYXT3hOHhZf2tOMtFDqh6W9ZYy1L7WjSXS3Jbgs37Wl9sSp
+ Lp7gol4Wd9rUTlppS6Jem3rNOUm+1IKdQPT7wsv7Wl9sRWuqHBEDgscZoRBmhGrU37XiFiZzuVYsy5Cy
+ su/cpIxXBxsw6rKfytHJMrPc3VOpkDKpX6SqVYVqswiyB18crYxnLn6bIWlRkQmlBehqerAcFi15UIwz
+ FGQwl0y8KG8LNOYm+2JrEXT3hNvWZ9rTfa0Fjqb04eFlfa04y0QF0XWDwn3BZQzE/wBtTqZw6m4Ji4LN
+ +2BMcxKlF0S8Jb1mfa0vtaNLC6e8Jbwsz7Wl9rSpDp7wlvCzPtaX2tCkOnvCfeFl/a0vtaVJDqbwm3rM
+ +1pfa0l7qbwlvCy/taX2tJTp7wlvCzPtaX2tBDqh4TghZQzFIZgSpaXUkJi4LN+2DxTHMSpa6BeFAvWe
+ ctQOUiyRdUPTOeFmDLSOWjTME2Q5Y+SVZuyZWZfdKK5qWlVXlGsdKruRSicpVcqJCnWIRYJuvh9l0WId
+ FzGM+Fs4+TCVMT0LHiEnPCzG5aRy1GQl0N4S3rN+1pvtaC5096W9Zn2tL7Wip096W9Zn2tL7Wkp096W9
+ Zn2tL7Wkp096W9Zn2tL7Wkl096W9Zn2tL7Wkp096W9Zn2tL7Wkp096W9Zn2tL7Wkp096W9Zn2tL7Wkp0
+ 96W9Zn2tL7Wkp096W9Zn2tL7Wkp096W9Zn2tL7Wkh096W9Zn2tL7Wkp096W9Zn2tL7Wgp096feFl/a0/
+ 2tGkOiXhQL1nnLUTlpwC0tm16yspyLZkyqF9sopi5uSsu1uq0r3SqFgSbEUdTdVsYekLKYNVo4z4SSXp
+ sN0LXrfoubxr4WizKhBYXXLwo7gs37Wm+1oUxSdPcE4cFmfa04y0KYS6m8Jblmfa0vtaVJDol6W9Zpy0
+ 32tKl4dPelvWZ9rS+1pUvDp70t6zPtaX2tKkunvS3rM+1pfa0qQXT3pb1mfa0vtaVLHT3pb1mfa0vtaV
+ KdPelvWZ9rS+1pUp0i9MXrO+1qP2pGkulvCfcFmfak4y0aS6gcpBwWUMtS+1ppCnTL1AvWcctROUmKdH
+ 1Et6zftSX2pFBdTeE+4LLGWnGYEVjrBwUXu0WcMwJnZcpwCQwzXaLmc48rZyr5WDlulSUyBybeUqk72y
+ U9bUmUN6grTxysqrRXqXwiyO7juWpS9c9TfC0KsqEwrJO414Ui4LKblpzmKMhhLolwUC8LPOYoHLQYi6
+ O9OHrM+1pxloLHT3pb1mfa0vtaeAyxdQOUtwWWMwJ/tgRpkdIuCiXhZ5zFA5aaQp0t6W9Zn2tL7WmqdT
+ elvWX9rS+1osUnU3pb1mfa0vtaKx096W9Zn2tL7WiuDp70t6zPtaX2tJcHT3hLeFmfa0vtaS8OnvCcPC
+ yvtacZaSXWDgpSFlDMCl9tCFLS6RcFEuCzzmBQOWlSHQL1IPWWctIZaK4OsXqre7RVTloFuVKIC8NfLK
+ xr1eyL5Wba+U8Lw13FCcVJxQinBLJh1WlilZbeVfx3wnMZelw3cLYqdoubxsiFpV5ajkFhdcvCiXhZxz
+ FD7Wo6WOnvS3hZn2tL7WlSnT3hLeFmfa0vtaSnT3hLesz7Wl9rQU6e9Lesz7Wl9rSU6e9Lesz7Wl9rSU
+ 6e8Jbwsz7Wl9rQS6e8Jbwsz7Wl9rSU6e8Jbwsv7Wl9rSU6m8Jbwsv7Wl9rSU6m8Jb1l/a0vtaKnU3pb1
+ l/a0vtaSnU3pbwsv7Wl9rSU6m8Jbwsv7Wl9rRU6m9NvWZ9rS+1pKdUPCfcFlDLUvtaVLg6ReFVueqxy1
+ XtyZSpkCDMfyufyTqtTJtlZF5kpKY08rewDwufrMFa2JbEIUh6zGforW4LDoyoCsjMCCHS3BPuCy/tgT
+ /a0kOkXqBes85agcpJDo71IPWX9qTjLQQ6ocE+4LLGWpfbAkp0ZCYuCzvtYTHLSQ6O8Jb1m/a0vtaKXS
+ 3pt6zftaX2tFLp7gnDgsz7WnGWjSXUDgmLgs77WFE5aVJblj1m5L0n5SpX3yjSWjlOWcTqrV75VM8pKb
+ 2KdVv4jlzdD4Wtj5EIMZehY9E3rIZlqf2tJa6geE+9ZYy0vtaVKdMvUd6zftab7Wkp096cPWZ9rT/a0F
+ OnvS3rN+1pfa0lOlvTb1m/a0vtaSnS3p96zftSX2pJTpb0t4Wb9rTfa0lOnuCkHBZX2tSGYlSXWDgph4
+ WQMwKYzEqS6b3qhkPQnZaqXZMpAKauUVj3q/fbKzbXSjSUbRqtDGKzQdVcofCKXosVy1a36Lnce+FfZl
+ QlSnXL1AuCzjlpvtaVKdLcEt4Wb9rS+1oLC6W9Les37Wl9rQQ6W9Les37Wl9rSS6W9Les37Wl9rQU6W9
+ Les37Wl9rSU6W9Les37Wl9rSS6W9Les37Wl9rRU6W5PuCzPtaf7WjSnS3hM56zftaZ2WjSUuS/RYGYZV
+ +/JkLIybZRpDn2DVWMfQqs86otLoKSnfxXrUqesCi2FfryISpTsteih4WQ3KUxlpqnV3hLcFmfbEvtgQ
+ Q6W4Jbgsz7Yl9rQU6e4Jt6zvtab7Ukp096fesv7Ul9rRQ6heol6zftab7Wgp0w4KYeFlDLUhlopdXcEx
+ eFmfbExzEqU6e8Jb1mfa032tKkup6iG+xZ/2pQdlI0pPfYsrJci25ErPutlJTRyCqfdWLnSq06pKdHFK
+ 6DDfwuZx3QtnGvhJT0ldmimXhZLMqFI5aFKdLcE+4LMGWnGWEaU6RcFEvCzzlqJy0EOjvT+osz7Um+1J
+ KdT1Et6y/tSX2tJTqb04eFl/a0/2tJDqh4S3rLGWn+1oKdIvUS9Zxy1E5SCnS3qQeFl/ak4y0kuqHBSa
+ 4LKGYpDMCNJdUuEKlkv0QDmKpflSEqXOfmu5WJadVpZVsrKsMlFSSk6rYxXLEqMFaePbCSnocdy0a3LA
+ pyIV1mWlSnX3BRLgs77YmOWEqWl0twS3BZv2tL7WEqQ6W4Jbgs37WEvtYSpDpbgluCzftYS+1hKlOluC
+ W4LN+1hL7WElOluCW4LN+1hL7WEkuluCbcFnfawl9rCSnS3BLcFm/a032tBLqB4Ug4LJ+2KQzAlSnULg
+ q1zlUOYEC3LlKlMMpywcpy0Mi+Vk5D5RpTUJ1V3FOqzydVbx3wUVPT4ZWtW4QubxsiFpMy9EaU6pcFHe
+ s85aicpKlOj6icWLLOUn+1JUp1A9PvCy/taX2tClOnvS3rM+1pfa0FOnvS3rM+1pfa0EOnvT71l/a0vt
+ aSnU3pb1mfa0vtaSnT3hLesz7Wl9rRU6e9Lesz7Wl9rRpTqh4Tl4WUMtSOWlSmxkP0WFluVy7KlZOTbK
+ kiEhoXnVBZypWukoTTqpgl08YrbxXLnqHwtXHvhNkp6Kp6NvWPXkwi/a1AQh0t4S3BZn2tL7YmFDp7gl
+ uCzPtiX2wJqnS3BLcFm/bAl9sRpDp7wlvCzPtaX2tGlOiXqO9Zxy032pJTph6mHBZIy0QZgSpTqSEi4L
+ M+2hMcwIUp0C9R3rOOWo/akEuqHqYcFkjLUxmBOCnRc4Kjku0Q3ZgVO/JlSBLQzDysW06rSybJWXYZKm
+ ilPQdVt4juFgVGCtXGthPU9FQ9XGPCxKsiFablKCQQ6oeEi8LNGWmOWoqU6W9Lesz7Wl9rSU6W8J96zP
+ taX2tBTpb0t6zftaX2tClOlvS3rN+1pfa0lOlvT71mfa0vtaSnT3pt4Wb9rS+1pynR3pt6zvtSb7UjSn
+ T3BTDgsoZakMwI0p1C5Vb3qscxV7cqUgFIcpyxcgq9ffKzLnyjSmv3V7F5VCdVbofCSnpMMrXqcIXN42
+ RC0q8uAm0p1i4KO4LOOYo/a0KU6W8Jb1mfa0vtaVKdLelvWZ9rTfa0qQ6m9Lesv7Wl9rSU6m9LeFl/a0
+ vtaCnU3hLeFl/a0vtaSnU3pbwsv7Wl9rQS6m8Jbwsv7Wl9rRU6m9Lesv7Wl9rRU6oeFPcFkDLU/tgSpT
+ ayCIWBnHlXrssELGy79ydSnLvOqjUdU1pkqNfKSnaxHLcxnLm8Z8LVoyIRpT0NbhCIXBZDMuFM5iaQp0
+ C9MHhZpy032pKkOoHqW4LLGWn+1oKdPcEt6zPtiX2tBTp70+8LL+1p/taCnSLgolwWf9sCY5YSU39wTh
+ 6zftaX2pFTqB6cPWWMtSGWjSnU3BLcswZaf7WjSXS3BQc5UPtig7LRpTatcs7IclZlSqV98pKaGWVkvO
+ qv5L5VB3KSm7iHVdLgu4XLYzoK3MS/ahSnp636KTnrKZl6JzloUp0N4S3hZn2tP9rQU6e8Jb1mfa0vta
+ SnT3p96y/taf7Wkh096W8LM+1pvtaKnT3pb1mfa0vtaVKdPelvCzPtaX2tGlOpvS3hZf2tL7WhSXTL1H
+ es37Wl9rSS6YeFMPCyvtacZaNLC6psVa+zRVDlqvbkykAgIctywsorRyLpWVe6U6maLSeNUWnlCdyiVG
+ EqXF2sQwtrHfoudx7IWpTkQlTGXcY9ED1ktylMZaCx1Q9PvWYMtP9rQpDp7028LN+1pfa0FOlvCW8LN+
+ 1pfa0F4dLeEt4Wb9rS+1oJLpb0t6zftaX2tFiLpb0t6zftaX2tFQdLelvCzftaX2tJlDpb0+9Zn2tL7W
+ lSS6e8J9yzPtaX2tCmN094S3rN+1pvtaFIdPeEt6zftab7WlSXT3Jb1mfa0vtaFKdPclvCzPtaX2tClO
+ nuS3hZn2tL7WjSXT3hLcsz7Wn+1o0p0S8Ji9Zxy0N2WlSXT9RI2rJOYm+1o0pv22LKyXSpPyZVK26UqU
+ 1buUADVEsfKg3lCktzHC2cVZFAWvjIUp1qjojyq9RRk2lMSmlOU0JpCViU0pEKJTaUvKkChhTCcAhkkk
+ E6ehZJOmSUpJJJBSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJk6ZJS6dMnSUuouUlFySmtYq5VixVykpmxW
+ 61UYrdaSkwSKQSKClkkkklKTJ0yKlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklLJJJJK
+ XTpk6SligWI5QLElNR6Zqd6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//T69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKTpk6Sliq9isFV7ElNdydqZydqSmzWjBBrRgkpdMnTJKUkkkkpSZOmSUpJJJJSkkkk
+ lLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXCRSCRSUieqr1aeqr0lMAjsQAjsSU2GqSi1SSUp
+ JJJJS6SSSSlJk6ZJSkydMgpSdMnRUpJJJFSkkkk0qUkkkmqUkkkkpSSSSKlJJJJ4UpJJJFSkkkklKSTJ
+ IJXBUgVBOCmFTMJ4UQVIFBKxCC9qsFDcEQpz7mrLyGLbsZKo20ypAl5y+tVtpBW7biyqzsMqUKaNbyFa
+ ZeVL7IVIYxRUx9cpesVP7MU/2YoLCi9YpesUX7MUvsxSQi9YpesUX7MUvsxSUi9YpesUX7MUvsxSUi9Y
+ pesUX7MUvsxSUi9YpesUX7MUvsxSUi9YpesUX7MUvsxSUi9YpesUX7MUvsxSUj9YpesUT7MUvsxSQj9Y
+ pesUT7MUvsxSUj9YpesUT7MUvsxSUj9YpesUT7MUvsxSUj9YpesUT7MUvsxSUj9YpesUT7MUvsxSUj9Y
+ pesUT7MUvsxSUj9YpvWKL9mKf7KUlIPVKRsKsfZSl9lKVqaT3Equ9pK1PspTfY5SteHDfSSh+gVv/Yk3
+ 2HyQtkcVlRCsMBC0vsSX2MhJBazHkIgtKN9lKX2YorCi9YpesUb7KUvspQWlD6xUvWKJ9mKX2YorUfrF
+ L1iifZyl9mKSQi9YpesUX7MUvsxSXIvWKXrFF+zFL7MUkFF6xS9Yov2YpfZijS0ovWKXrFF+zFL7MUaW
+ lF6xS9Yov2YpfZilQQi9YpesUX7MUvsxSoMkUXrFL1ii/Zil9mKVBkR+sUvWKJ9mKX2co0hH6xS9con2
+ YpfZigUIvXKXrlE+zFL7MU0qR+sUvVKKMYpxjFNpSH1SmNpVj7MVE4xRpaWsbymGQUc4pUPspRWrDIKR
+ tJUxilTGMU8Lw0bJcqz6SVs/ZCl9jTrZA4f2cqYpIWz9jS+xpMocgVkIjQQtI4ib7IUElrMsIRheQp/Z
+ Sl9mKYWOTH1yom8ov2YpfZSmsRQ+uUvWKN9lKb7MUKYii9UpeqUb7MUhjFGkBELSn9Yo32UpjilODMEJ
+ vKb1yinFKj9lKKWHrlL1iifZil9mKC0o/WKXrFF+zFL7MUkIvWKXrFF+zFL7MUEIvWKXrFF+zFL7MUkh
+ F6xS9Yov2YpfZilS8IvWKXrFF+zFL7MUqSi9YpesUX7MUvsxQpai9YpeuUX7MU32UpUtLD7QU/2gp/sp
+ UhilJjLD1ymNxRhilI4xRSEHrFSFxU/sxTjGKTNFEbigvsJVz7KVE4hSZQ5j5KEayVrfZCnGGivDjmgl
+ RNBW6MNI4SKyThtqIViuWrSOEm+xkJMBa7LSEUXlT+ylP9mKSkfrFL1ii/Zil9mKapF6xS9Yov2YpfZi
+ kpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZi
+ kpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZi
+ kpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpH6xS9Yooxin+zFEIQm0oTnkq39mKY4
+ xTkBzXglVn1krZOIUxwpSbMHAdQU7aSFuHBTfYUGa3NraQrbHkKwMOFIYpSYJIhcU/rlF+zFL7MUGEo/
+ XKf1yp/Zil9mKC0sPXKf1ip/Zin+zFJCL1im9Yo32YpvsxSZAi9YpesUX7MUvsxSXIvWKXrFF+zFL7MU
+ lpResUvWKL9mKX2YpKResUvWKL9mKX2YpLgi9YpesUX7MUvsxSUi9YpesUX7MUvsxSWFF6xTi4on2YpD
+ GKSGIuKf1ip/Zyl9nKclGbyo+uUU4xTfZiglH65Ti4qf2YpxjFNKWHqlL1Si/ZikcYoUpAbioG8qwcYo
+ ZxiitQ/aCpDJKf7KVIYpTgpY3koFhLlbGMVL7KU8FcHHsqJQTjlb32NL7EjbIHDGOQpiohbX2JROGlbI
+ HLaCFYY8hWTiJxilAoKMWkJzeUX7MUxxioywlCbymF5RPspTjFKDEWAuKf1iijFKX2UoLEPrFN6xRjjF
+ ROMUQuij9cpfaCp/Zim+zFOZwx+0FOLyn+zFSGMUVFj6xS9Yogxin+zFJYUXrFL1ii/Zil9mKSEXrFL1
+ ii/Zil9mKSEXrFL1ii/Zil9mKCQi9YpesUX7MUvsxQXovWKXrFF+zFL7MUlIvWKXrFF+zFL7MUkIfXKb
+ 7QUY4xUDilJaWIyCnF5TjGKkMYpLWPrFMbSjfZil9mKTJFB6xSNxRvsxTfZiizBqvsJQHklaBxSm+yFF
+ c5ZYSl6JWsMNTGGilxTQkKSFufY0xwkrYZuSxparLLCFaOGonFISthYC8p/XKl9mKcYxQKUfrFL1ii/Z
+ il9mKalF6xS9Yov2YpfZikpF6xS9Yov2YpfZiilF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2
+ YpfZigpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZiipF6xS9Yov2
+ YpfZikpF6xS9Yov2YpfZikhF6xS9Yov2YpfZikpF6xS9Yov2YpfZigpF6xS9Yov2YpvsxRQhNxS9Yov2
+ YpfZiihAbCUJ8lXhilP9kKKQ476yUB1JW+cKVA4KDYi4IpIR62ELV+wpDDhJJa1biEcWkIgxSE/2YpMZ
+ Rm8qPrlG+zFN9lKDGUYvKcXFT+ylSGMUmEsRcUvWKIMYp/sxSSEJuKb1ijfZim+zFJeEXrFL1ii/Zil9
+ mKS8IvWKXrFF+zFL7MUEovWKXrFF+zFL7MUUFF6xS9Yov2YpfZiksResUvWKL9mKX2YpKResUvWKL9mK
+ X2YpKResUvVKL9mKf7MUkofVKb1irH2YqJxSilD6xS9cov2UpfZSmlSMXFP6pRRjFOMYptKQ+qUxtKsf
+ ZionGKKC1jcU3rlHOKVH7KUljAZBUvXJTjFKIMUp4SGtY4uVO2suWv8AZSmOHKfbIHAOOSnbjkLd+xJ/
+ sSVssXFbSQitaQtQ4aY4iVsjSYSEZtpCP9lKf7KU0sckQvKRvKL9mKb7KVGxFEbym9Yo32UpDFKDEUQt
+ Kf1SjDFKf7KUliA3FRNxVg4xUDjFODJFD65T+uVP7KU/2UpzIj9cpesUX7KU/wBlKalD6xS9Yo32YpfZ
+ igpD6xS9Yo32YpfZiixSQ+sUvWKL9mKX2YpLUXrFL1ii/Zil9mKKQi9YpesUX7MUvsxSXBF6xS9Yov2Y
+ pfZikvCL1il6xRfsxSOMUEovXKQyCpnFKQxSktKwvKXrFEGKVL7KUEIDaUvWKOcYqP2Yorgi9YqDrSVY
+ +zFN9lKK8NB5JQHMJWr9kKX2NFeHHNRUTSVtfY0vsaeElxBSUVjCFq/Y032NG2MtWt5CsNuIRBiFP9lK
+ BLGWHrlN6xRfsxS+zFMK1F6xS9Yov2YpfZigpF6xS9Yov2YpfZigpF6xS9Yov2YpfZikpF6xS9Yov2Yp
+ fZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZigpF6xS9Yov2YpfZikpF6xS9Yov2YpfZiipF6xS9Yov2Yp
+ fZiklF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZikpF6xS9Yov2YpfZiipF6xS9Yov2Yp
+ fZikpF6xT+uUT7MUvsxSXBH6xTGwlFGMVIYxSZGhZJVSyolbRxSVA4cpIcQVEK1VLVf+xJxiEJIRMtIU
+ vXKJ9mKX2YoIR+uVIXlSGKVIYpQQw9YpeqUUYxS+zFJCE2lN6xRjjFROMUqQi9cpfaCiHGKb7MUqUw+0
+ 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
+ 2YpfZikhF6xS9Yov2YpvsxRUj9YpvWKL9mKX2YoqResUvWKL9mKb7MUlI/XKb1yifZil9nKSkfrFL1ii
+ jGKf7KUEofWKcXlF+ylN9mKK0sfWKi6wlF+zlP8AZinIDReSVVewla/2UlROGkyxcM0lSbUQtk4SQwkl
+ 7n1ghWWOIVkYhUhilJjKAWlL1Sj/AGUpfZSgsQi4p/WKL9mKX2YoIR+sUvWKJ9mKX2YoKCP1im9Yov2Y
+ pfZihS8IvWKf1iifZil9mKSii9YpesUX7MUvsxSpjKL1in9Yon2YpfZiioIvWKXrFF+zFL7MUmUIvWKf
+ 1iifZil9mKKij9Yp/XKn9mKX2co0sYeuUvXKn9nKX2cpUph6xS9cqf2cpfZylSkfrFL1iifZyl9mKFKY
+ euU3rlE+zFL7MUKSj9cpesUT7MUvs5RpTD1il65U/sxS+zlKlIzcUN1xVg4xUDjFGktc3FIWlG+ylSGK
+ UlIC8lQcSVdGKU/2QpJc0sJU2VrQGIiNxYSpSGhi1cdsINdEK7UyE0hLbrRgUFmiJKYQpkUyjuTgoUpR
+ CYhSTwlSkcJwFKEoTaQskkkkhSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUpMnTJKXTpk6Sl1F
+ ykouSU1rFXKsWKuUlM2K3WqjFbrSUmCRSCRQUskkkkpSZOmRUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSS
+ SSSlJJJJKUkkkkpZJJJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSn//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpYqvYrBVexJTXcnamcnakps1owQa0YJKXTJ0ySl
+ JJJJKUmTpklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlwkUgkUlInqq9Wnqq9
+ JTAI7EAI7ElNhqkotUklKSSSSUukkkkpSZOmSUpMnTIKUnTJ0VKSSSRUpJJJNKlJJJJqlJJJJKUkkkip
+ SSSSeFKSSSRUpKE4TwkpiknKiUEqSTJJhUyBTgqCcFBLOUxUZTyiFMS2UM1SjKQCkCWmccFQOKFoQokB
+ PBS5/wBlCX2UK6VGU5BaoxQn+yBXApgIErC0PsgS+yBX4CUIWhofZAl9kCvwlCVqaH2QJfZAr8JQlamh
+ 9kCX2QK/CUJWpofZAl9kCvwlCVqaH2QJfZAr8BKAlamh9kCX2QK/AShK1Of9kCX2QLQhKAlanP8AsgS+
+ yBaEBKAlxKc/7IEvsgWhASgJcSnP+yBL7IFoQEoCXEpz/sgS+yBaEJQlaHP+yBL7IFoQlCVqc/7IEvsg
+ WhtS2pWpoDECkMQK6ApAJEqaP2QKJxQtEhQMIWpofZgnGMFbhSACVrw1BihL7KFdhKErX20TihROKFfh
+ RICNqLQ+yhOMQK9AUgAlawtH7IEvsgWhAShC1pc77IEvsgWhCaEbWuf9kCf7IFf2pQlxJDQ+yBL7IFfh
+ KErXtD7IEvsgV+AlCXEgtD7IEvsgV+EoS4lhaH2QJfZAr8BKAjxLS5/2QJfZAtCEoS4kOf8AZAl9kCvw
+ nhLiZYtD7IE32QLQhKEuJkc84gTfZQtDaltS4lrn/ZQn+yhXSEkrQ0vsgS+yBXhCmAhanO+yBP8AZAtH
+ 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
+ U55xAm+yBaMBKEuJDn/ZAnGIFfgJQlxIaP2QJfZAr8JQErU5/wBkCX2QK/omgJWpo/ZQl9kCvwEoCVqa
+ P2QJfZAr8J4QtTn/AGQJfZAr8JQjamh9lCb7IFoQmhK1ND7IE/2QK9CSVpaH2QJjiBX00I2lofZQl9lC
+ vQlCNqaQxgpDHCtQklamr9mCb7IFdCmAE21Of9kCX2QLR2hLaEuJTnfZAl9kC0ICaAlaGh9lCf7KFdhP
+ CVqaP2UJfZAryeErU0PsgTfZAtCEoStDn/ZAl9kCvwlCXEpz/soSOIFfhKEbU5xxAl9kC0IS2pWpojEC
+ kMQK8AngIWlofZAmOIFoQmIStaXO+yhL7KFobUtqPEgND7KE/wBmCu7QlCXEzRaX2UJfZQrsJQla4tH7
+ KE/2UK9CcBLiYy0fsgS+yBX4SgIWtaH2QJvsgV+EoCVrWh9lCX2UK/CUJWpofZQl9kCvwlCVrw0PsgS+
+ yBX4ShK1FofZQl9lCvwlCVsZaH2UJfZQr8JQlag0PsoS+yhX4ShK2UND7KE32ULQhNCVqLQ+yhL7KFfh
+ NCPEtaP2UJfZQr0JQlxIaP2UJfZQr0JQlxJaP2UJfZQr0JQlamj9lCX2UK9CUJWpo/ZQl9lCvQlAStTR
+ +yhL7KFehKErU0fsoTfZAr4CkGhLiS5/2MJxiBaO0JiAhxJaAxQn+yhXYShLiU0vswTegArxCiQjxKag
+ qhFa2FMhMkZJXCRSCkAm2pgnCntT7UOJSwUgmhJN4lLpkpSStBWSTpkkKSSSSUpJJJBSkkkklKSSSSUp
+ JJJJSkkkklKTJ0ySlJk6ZJS6dMnSUuouUlFySmtYq5VixVykpmxW61UYrdaSkwSKQSKClkkkklKTJ0yK
+ lJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklLJJJJKXTpk6SligWI5QLElNR6Zqd6ZqSmz
+ WrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6Sliq9isFV
+ 7ElNdydqZydqSmzWjBBrRgkpdMnTJKUkkkkpSZOmSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKXCRSCRSUieqr1aeqr0lMAjsQAjsSU2GqSi1SSUpJJJJS6SSSSlJk6ZJSkydMgpSdMnR
+ UpJJJFSkkkk0qUkkkmqUkkkkpSSSSKlJJJJ4UpJJOnKXCSilKClyolOlCCWMJQpwnhMKkcJKZCiUErJw
+ mThOClwpKKeU8JZKLkxemL04BLAhRARJCQhOtBU0IgCiCFLeEwrCvCUJbwm3hJC6SbeEt4SUukm3hLeE
+ lLpJt4S3hJS6SbeEt4SUvCUJt4S3hJS8JQm3hLeElLwnUd4T7wkpdJNvCW8JIXSTbwlvCSl0k28Jbwkp
+ dJNvCW8JKXSTbwlvCSl0k28JbwkpeE6jvCW8IKXKgVIvCiXBN1UxhSATbgnDglqvDOEoS3JSivYlRIU5
+ US4JaqWAUgFHcE4eENVhSQlCYPCfeEVpVCUJ9wTbgktVCaE+8Jt4RSFJoS3hNvCK5eEoS3hLeEkFUJQl
+ vCbeElpXhKE28JbwktK8JQm3hLeEkKSS3hLeEWSKk8Jt4S3hJlZAJEJt4S3hBaWLgoEKZeFCQihdoRWh
+ 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
+ IKXhKE28JbwkleE0JbwlvCS0qhKE28Jt4RQF4TQlvCW5JmitCeEpSlJcVwkm3Jbwkxlkko7wlvCSxlCU
+ Jt4S3hBC8JQm3hLeElBeEoTbwlvCC8LwlCbeE+8JKKoShNvCW8JMZXhKE28JbwkoLwlCbeEt4RZQvCUJ
+ t4S3hJRVCUJbwluCK1UJQluCW4JIVCUJbgluCClQlCW8JbwklaEoT7gluCCloShLcEtwSUqEoS3BLcEl
+ KAUwFDcFIPCKWaiU3qBMXhBSikm3hLeEUrpiEt4S3IKYEKMIkpoQSsApgJgE6apmmKaVEuTSpclNKiSl
+ Kbal5TqKdPCF0kkk9CkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkydMkpSZOmSUunTJ0lLqLlJRckpr
+ WKuVYsVcpKZsVutVGK3WkpMEikEigpZJJJJSkydMipSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSS
+ SUpJJJJSySSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/
+ 1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpYqvYrBVexJTXcnamcnakps1owQa0YJKXTJ0ySlJJJJKUmT
+ pklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlwkUgkUlInqq9Wnqq9JTAI7EAI
+ 7ElNhqkotUklKSSSSUukkkkpSZOmSUpMnTIKUnTJ0VKSSSRUpJJJNKlJJJJqlJJJJKUkkkipSSSSeFKS
+ SSTlKShOnQUtCSdMklkkoykSmFSiVFIlIJql4TwkE5TglgTCE+yFJ5hUb7YUgSkfkQhHKWbdkQqhylIF
+ O8MpT+0rAbklGF5TuFTsHKTfa1jm4qBuKPAsLtfa0/2tYfrFP6xS4EO39rS+1rE9YpesUuBTt/a0vtax
+ PWKXrFLgU7f2tL7WsT1il6xS4FO39rS+1rE9YpesUuBTt/a0vtaxPWKXrFLgU7f2tN9rWL6xS9YpcCna
+ +1pfa1iesUvWKXAh2/taX2tYnrFL1ilwKdv7Wl9rWJ6xS9YpcCnb+1pfa1iesUvWKXAp2/taX2tYnrFL
+ 1ilwKdv7Wl9rWJ6xS9YpcCnb+1pfa1iesUvWKXAp2/taX2xYnrFN65RGNTu/a0vtSwxeVIXlO9pTtjJU
+ hlBYnrlROTCHsrw7wygpfagud+2JxmJe0yPQHKCicpYX2tI5JKXtILsnLTfbFim8qJvKHtLC7ozFIZi5
+ 8XlTF5Q9taXf+1pHMWH65TG8pe2tds5ib7WsT1ym9cpe2kO59rS+1rE9YpesUOBc7f2tL7WsT1il6xS4
+ EF2/taX2tYnrFL1ilwrS7f2tL7WsT1il6xS4Vrt/a032tYvrFL1ilwodr7Wl9rWL6xS9YpcLJF2vtaX2
+ tYvrFI3FLhZHZ+2JvtixTeVD1yiIId37WpDKWELyiC4o8CHaGUn+1rG9YpjeU0wU7Jy1H7WsY3lN6xTe
+ BTt/a0vtixPWKXrFHgWl2DmKBzFjm0qPqlOEFruDLRBkrDbaUZtpTxjXh2RkJxkLH9eEvtKd7bIHa+0B
+ ROQFj/alB2Uh7bIHXdkqH2tYrspDOSUfbXO+MxS+2LnxkFTF5TDBjk7pzE32tYnrFIXFM4GIu4MtP9rW
+ ILipesUOBiLs/a032tY5uKj6xS4EB2vtaX2tYvrFL1iniDMHa+1pvtaxvWKXrFHgS7X2tL7WsT1il6xQ
+ 4Frt/a0vtaxPWKXrFLgQ7f2tL7WsT1il6xS4EO19rS+1rE9YpesUOBIdv7Wl9rWJ6xS9cpcC8O39rS+2
+ LE9YpeuUPbS7f2xL7YsP1yl65S9tDufbE32xYnrlL1il7awu19rS+1rF9Yp/VKXAxl2PtSX2tY/qlMbi
+ j7aQ7P2tP9sWJ6xS9Ype2zxdz7Ym+2LE9YqJvKPtsgd4ZaI3KBXODJKKzKR9tc9EMkJzkhYQy0jlpe2t
+ kHbOUFA5awjlqP2olH22Au99sS+1rCF5UhcUDjU7f2tL7WsX1il6xTeBTtfa0vtaxfWKXrFLgU7X2tL7
+ WsX1il6xS4FO19rS+1rF9YpesUuBTtfa0vtaxfWKXrFLgU7X2tL7WsX1il6xS4FO19rS+1rF9YpesUuB
+ Ttfa0vtaxfWKXrFLgU7X2tL7WsX1il6xS4FO19rS+1rF9YpesUuBTtfa0vtaxfWKXrFLgU7X2tL7WsX1
+ il6xS4FO19rS+1rF9YpesUuBTtfa0vtaxfWKXrFLgU7X2tL7WsX1il6xS4FOz9rTfa1jG4qPrFOGNDt/
+ a1L7WsMXlP65TvbQHb+1JfaQsQ5KicpL22xAO79pCcZIWB9rTjLQ4GYh6D7UExyliDJTnIKHtsMnWdlq
+ H2tZDryoesUvbYS7zctFGWufbeUQXlN9ta7Zy0M5axzeVA3lL20O19rTjLWH65S9cpe2yB3PtaX2tYnr
+ FL1yl7a52/taX2tYnrlL1ylwLS7f2tL7WsT1yl6xS4FO39rS+1rE9cpeuUuBcHb+1pfa1ieuUvXKXAp2
+ /taX2tYnrlL1yl7awu39rS+2LE9cpjeUvbQ7n2xL7YsL1ynFxS4Eu39rTjKWKLipesU0wS7P2tI5axvX
+ Kibym8CXaOWm+1rF9YpesUuBTt/a0xy1jesVE3FHgWuz9sUhlrD9YqbbinDGp3RlKX2lYrbipG8hSDGv
+ DsfaUvtIWIcqE32tH214dz7QFE5IWL9rTHKS9teHZ+1JxlrCOSnGQUDjQXe+2KLsxYvrlQNxUZgxF2Dm
+ JDLWIbikLim8DEXdGWpfaliC4qXrFN4Fjs/akvtSx/WKXrFEQXRdj7Ul9qWP6pS9Up4gzh1/tSX2tY5t
+ KY3FLgQXa+1pfa1iG8pvXKPAtLufa0vtaw/XKXrlDgQ7n2tL7WsP1yl65S4EO59rS+1rD9cpeuUOBIdz
+ 7Wl9rWH65S9cpcC93PtaX2tYfrlL1yhwKdz7Wl9rWH65S9cpcCHc+2JfbFh+uU3rlLgWl3TmKJy1ii4q
+ QtKXAtdb7Ul9qWV6hTeqUeBki64y1IZaxfVKXrFHgZQ7f2tL7WFgnIITfaijwLqehGUCpjIC55mUjtyk
+ eBNO0b1A5MLJOShOykeBhk7P2uE/21c+ckpvtJQ9tieh+2pvtiwRkFSF5Q9tDufa0vtaxPWKXrFLgU7f
+ 2tL7WsT1il6xS4FO39rS+1rE9YpesUuBTt/a0vtaxPWKXrFLgS7f2tL7WsT1il6xS4FO39rS+1rE9Ype
+ sUuBLt/a0vtaxPWKXrFLgU7f2tL7WsT1il6xS4FO39rS+1rE9YpesUuBTt/a0vtaxPWKXrFLgQ7f2tL7
+ WsT1il6xS4FO39rS+1rE9YpesUuBDt/a0vtaxPWKXrFLgU7f2tL7WsT1il6xS4FO39rS+1rE9YpeuUuB
+ TufbE/2tYXrlP65R9tTufa0vtSxPXKb7SUvbXRdz7SE4yQsL7Um+1ocDYDv/AGkJHKCwPtal9qlL21EO
+ 2cpDOUsj7QSom4pe2sLsfa04zFhm4pC8ocDHJ3xmJfa1hi8p/XKHAwl2jlpvtaxjcU3rFLgUHb+1pfa1
+ iesUvWKXAyB2/taX2tYnrFL1ilwLw7f2tL7WsT1il6xS4Eu39rS+1rE9YpesUuBBdv7Wl9rWL6xS9Ypc
+ Cwu19rS+1rE9YpesUuBTt/a0vtaxfWKXrFHgU7X2tN9sWKbiom4pcCXb+2J/tawvWKkLilwKdwZaf7Us
+ UXFP6xQMFOycpQOWsg3FQNxTOBTs/bEhmLD9YpxcUeBBd0ZakMtYQtKmLiiILXc+1pjlrG9YpvWKkGNI
+ dj7Ul9pWKbym+0wn+2yB3RkhSGQFgjLUhlpe2yB2zkBQOSsg5SgclL217sfakvtaxDkFL1ymnGtLt/bE
+ 32tYvrFL1iozBiLtfa04y1iesVIXFN4GIu2MpL7UsYXFP6xQ4FjrnKUTlLJNxUTcU4QZIux9qTjLWN6p
+ S9Up3AyO19rT/a1i+sU3rFHgS7f2tL7WsP1yl65S4FO59rTfa1ieuUvXKPAxydv7Wl9rWJ65S9cpcDG7
+ f2tL7WsT1yl65S4Fwdv7Wl9rWJ65S9cpcC4O39rS+1rE9cpeuUOBeHb+1pfa1ieuUxvKbwJdv7Yl9sWH
+ 65SFxQ4Fpd37WkcpYouKl6pQ4EOqctR+1rJNpUDaUuBcHbGWpjLWELil65S4F4d4ZYUhlBc99pKk3KTh
+ BcHoRkhP66w25Sn9qR4EuuchR+1LHdlIZySncCwu59rS+2LB+0FL1yh7bGXdOYm+1rE9cpesUeBa7X2t
+ P9rWJ6xS9YpcCna+1pfa1i+sUvWKXAp2vtaX2tYvrFL1ihwKdr7Wl9rWL6xS9YpcCna+1pfa1i+sUvWK
+ XAp2/taX2tYnrFL1ihwJdv7Wl9rWJ6xS9YpcCnb+1pfa1iesUvWKXAp2/taX2tYnrFL1ilwKdv7Wm+1r
+ F9YpesUeBTtfa0vtaxfWKXrFL21O19rT/a1iesUvWKXtqdv7Wl9rWJ6xS9Yo8Cna+1pfa1i+sUvWKXAp
+ 2vtaX2xYnrFL1ijwJDuDLUxlrBF5UxeUuBc7wyUvtIWJ9phMctD21O2ckKJylifa0vtJKXAh2Tlpvtix
+ TeVA3FLgQ7v21P8AbFgeuVMXFDgWu6MtSGWsMXFP65Q4EO59rTHLWJ65S9cpcCnaOWo/a1jG4qPrFLgU
+ 7f2tL7WsT1yl65S9tTufa032tYnrlL1yj7anb+1pvtaxfXKY3lL20u39sS+2rDN5UTeUfbS7pzUxzFhe
+ uUvWKPAl3PtakMpYYuKkLyjwKd5uSpjKCwBkwn+1oe2l3TlqBzFhnKUTkEoe2tLu/bE4zFgi8qQvKXto
+ d37Wm+1rF9cpvWKXAp2vtaX2tYvrFN6xS4FO59rS+1rE9cpeuUuBTt/a032tYvrlN65Q4FO19rSGWsT1
+ ynF5S4FO4MtP9rWGLypeuUuBTtHLUTmLGN5UDeUuBTt/bE32xYZvKb1ylwJd77Yl9rWGLinFxR4FO39r
+ T/a1iesUvXKXAl3BlqQygsH7SUvtSXtpd/7UExylhDLT/aUfbS7RylH7Wsf1yU3rFLgU7P2tL7WsX1il
+ 6xS4FO39rS+1rE9YpeuUOBYXb+1pfa1ieuUvXKHAh2/taX2tYnrlL1yhwJdv7Wl9rWJ65S9cpcCnb+1p
+ fa1ieuUvXKXAp2/taX2tYnrlL1ylwJdv7Wl9rWJ65S9co8Cnb+1pjmLF9cpjcUeBTtfbE32tYvrFOLij
+ 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
+ uUuFLt/a0vtaxPWKXrFDhU7n2tL7WsT1il65Q4VO19rS+1rF9cpeuUuFLtfa0vtaxfWKXrFHhU7X2tN9
+ rWL6xTesUuFTt/a04y1h+sVIXFHhU7f2pL7WsU3lQOSUOFLujKRG5ErnhlI9eSlwqd9tsozXSsim+VoV
+ PlNMUtsJEJmmVKEwhTAqJUyFGEOFTFOnhKEOFSk6SSVIUkkkihSSSSSlJJJIKUkkkkpSSSSSlJJJJKUk
+ kkkpSZOmSUpMnTJKXTpk6Sl1FykouSU1rFXKsWKuUlM2K3WqjFbrSUmCRSCRQUskkkkpSZOmRUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJJJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Yaq9a
+ sNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpYqvYrBVexJTXcn
+ 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
+ R6JS9ErX+zJfZkrU5HolL0Stf7Mn+zI2lx/RKb0Ctj7Ml9mRtTj+iVL0StX7MnOMlaXGfWQqtgIW5bj6
+ LNvphK1OcXkItVmqHYyCmZygp2MexatD1h45WvjFNKXVrKKgVlGBUZUopkiUpSUpJJJC1KTJ0kFFZJJJ
+ BapJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpMnTJKUmTpklLp0ydJS6i5SUXJKa1irlWLFXKSmbFbrV
+ Rit1pKTBIpBIoKWSSSSUpMnTIqUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklKSSSSUskkkkpdO
+ mTpKWKBYjlAsSU1Hpmp3pmpKbNasNVetWGpKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/Q69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKTpk6Sliq9isFV7ElNdydqZydqSmzWjBBrRgkpdMnTJKUkkkkpSZOmSUpJJJJSkkkk
+ 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
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//R69JJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKTpk6Sliq9isFV7ElNdydqZydqSmzWjBBrRgkpdMnTJKUkkkkpSZOmSUpJJJJSkkkklLpJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXCRSCRSUieqr1aeqr0lMAjsQAjsSU2GqSi1SSUpJJJJS6SS
+ SSlJk6ZJSkydMgpSdMnRUpJJJFSkkkk0qUkkkmqUkkkkpSSSSKlJJJJ4UpIJJJymQTwmBSlBSxCgVMlR
+ ISSwSTkJAJhUoKYTAKYCCVFDeilCeU4KaN4WNlhbVyyMoKQJcK8apqRqj3M1TUs1UoU6+D2W/jnRYmE1
+ btA0SkpsgpipBMVCsLFJSSSpDFJOklSlkk6SVKWSTpJUpZJOklSlklJJKlMUlJMlSlkk6SVKWSTpJUpZ
+ JOklSlkk6SVKWSTpJUhZJOklSlkk6dKlMVEqaRCSUaZyIoP4TgloZPC53O7roco6Lnc48qVcHnsoaqoF
+ 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
+ liFEowaouCVqalizchatoWZkp1JcLLKynHVamYeVkuOqPCh0MPldNg9ly+GdV1GAdAmkKdqvhO5KvhSc
+ mdUoCmRCmhGkMIShThPCFKYJKcJJKYwlCmkihglCmmSUwSU0oRUwSU0kFzBMppQlSkam1PCk0JLSyCDd
+ wjqvedEBqpxc3uuczF0OY7lc7mFSgMsXIsGqLjjVQfyjY41R4Vxd3BHC6HGGi5/BXQ4x0SpjLeATp2qU
+ KNbTBJSITFJatKSdJKlLJJ0kKXhZJOklSSsknSSpiKySdJKlBZJOklTKFkk6SKisknSSWlZJOkkhZJOk
+ kpZJOkkpZOknSUsknSSSsknTJKUolTTwklGFJTDU5alamncdFj5ZWzeNFjZacpxrzqqwOqsX8quBqhSW
+ 7jlbOMsbHWxippCnWp4VkBV6eFaCBCmBCaFMqJTSFMSmSKZNpSk6ZOiFLpJJJy1SSSSSlJJJIKUkkkkp
+ SSSSSlJJJJKUkkkkpSZOmSUpMnTJKXTpk6Sl1FykouSU1rFXKsWKuUlM2K3WqjFbrSUmCRSCRQUskkkk
+ pSZOmRUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJJJJS6dMnSUsUCxHKBYkpqPTNT
+ vTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKW
+ Kr2KwVXsSU13J2pnJ2pKbNaMEGtGCSl0ydMkpSSSSSlJk6ZJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpcJFIJFJSJ6qvVp6qvSUwCOxACOxJTYapKLVJJSkkkklLpJJJKUmTpklKTJ0y
+ ClJ0ydFSkk6SKlJk6ZNKlJJJJilJJJIqUkkkiFKSSSTwpdMkknKVKUpkklLpJJ0EsYTgJinBTSpkApQm
+ Ckgli5AeUdyrPRCmrcVlZJWlcsjLKkCXNueJUarQCgZLiCqgtIKmCnqcS8BbFOSIXF0ZRC0a80gcoEKe
+ q+1hMcsLm/tp8VE5p8U2lhel+1hL7WFzP24+KX24+KVIem+1hL7WFzP24+KX24+KNKem+1hL7WFzP24+
+ KX24+KVKem+1hL7WFzP24+KX24+KVKem+1hL7WFzP24+KX24+KVKem+1hL7WFzX20+KX20+KFKel+1hL
+ 7WFzX20+Kb7aUqU9L9rCX2sLmvtp8Uvtp8UaU9L9rCX2sLmvtp8Uvtp8UqU9L9rCX2sLmvtp8Uvtp8Uq
+ U9L9rCX2sLmvtp8Uvtp8UqU9L9rCX2sLmvtp8Uvtp8UqQ9L9rCX2sLmvtp8Uvtp8UqU9L9rCX2sLmvtp
+ 8Uvtp8UqU9MMsJ/tQXMfbT4qQzT4oUp6T7UEN+UFgfbT4pnZZKcAl0MnIBCwsu2ZU7cglZ17yU5kDTvd
+ JVYcotgJQ9pSZG7jvhbOJcAsCoEK/TYQkgvVY+SAr7MsLk68khHbmkd00hY9SMsKX2oLlxmnxUxmnxTa
+ Wl6Q5ITfagud+2lI5hRpY9D9qCf7UFzn2wpvthSpcHpPtQS+1Bc39tPil9tKVLnpPtQS+1hc39tPil9t
+ KVIL0n2sJfawub+2lL7afFLhWvSfawl9qC5v7afFL7afFLhWl6T7WEvtQXN/bT4pfbT4pcK16T7UEvtQ
+ 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
+ 6f7WEvtYXMfbj4p/tp8UuFT032sJfagua+2nxS+2nxRpT0v2oJfagub+2nxSOafFClwej+1hL7WFzRzT
+ 4qP24+KVJepGWFIZYXLDOPipjOPilwrS9McsKpfliFiHNPigWZZKIigNnLyQVh5Nsol95KzrXEqUBlij
+ c/VHofBVQgotYIRpeXfxLoW7j5IAXJU2ELQqySECGIvWMygp/aguYGYQpfbT4qIxWvSHKCicoLnftp8U
+ 32wpUh6P7UEvtQXOfbCl9sKVKek+1BL7UFzn2wpfbChS8PR/agl9qC5z7YUvthSpRej+1BL7UFzn2wpf
+ bClTGXovtQS+1Bc79sPim+2FGkB6P7UEvtQXOfbD4pfbClTMHo/tQS+1Bc59sKX2w+KVKL0f2oJfaguc
+ +2HxS+2lKlhej+1BL7UFzn20+KX20+KVIek+1BL7UFzf20+KX20pUp6T7UEvtQXN/bSl9tPihSno/tQS
+ +1Bc59tPim+2lKlPSfagl9qC5v7afFL7aUqS9J9rCX2sLm/tp8UvtpRpL0oygpjKC5f7afFSGcfFAhT1
+ IygkcoLmBnnxUvtx8U3hS7V+SIWPlXgqvblkrPuyCU8BTK60EoLXyVWfYSVKoklIqdbHK2cVYmKFuYgT
+ Sp1qRorIVekaKwEwqWKGSpuQyUFLEpJlIBBKgE8JwEoSQVkkkklqkkkklKSSSQUpJJJJSkkkklKSSSSU
+ pJJJJSkydMkpSZOmSUunTJ0lLqLlJRckprWKuVYsVcpKZsVutVGK3WkpMEikEigpZJJJJSkydMipSSSS
+ SlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V
+ 61YakpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkyCl0kkklKSSTpKWSTpIqWSSSSUpJJJJSkkkklKTpk6Sliq9isOVexJ
+ TXcnaouTsSU2mIwQK0cJKXTJ0klLJJJ0lLJJ0oSUsknhJBTFJOmSUukmSRUukkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJklMgkUwTpKRPVV6svVV6SmIR2KuEdiSmy1SUWqaSlk6SSSlJJJklKSSTJKXTJJ0FLJ0kk
+ VKSSSRUpJJJNUpJJJClKSSSSpSkkkkaUpJJJOClJJJI2pSSSSFqUkkklalikE6aEEsgVMFDClKClOQXh
+ FKiQiq2jayVmZNBK3XVygPx9ycCm3kMjEJVE4bpXaPwQeyCemjwTxNVvKsxXBWW0OC6EdNA7KX7P8keN
+ FvPei5RNLl0X2DyTfYPJLiQ896LkvRcuh+weSX2DyS4kPPei5L0XLofsHkl9g8kuJTz3ouS9Fy6H7B5J
+ fYPJLiU896LkvRcuh+weSX2DyS4lPPei5L0XLofsHkl9g8kuJTz3ouS9Fy6H7B5JfYPJLiU896LkvRcu
+ h+weScYHklxKee9ByXoOXRjp/kn/AGf5JcSnm/Qcl6Dl0n7P8kv2f5JcSqeb9ByXoOXSfs/yS/Z/klxK
+ p5v0HJeg5dJ+z/JL9n+SXEqnm/Qcl6Dl0n7P8kv2f5JcSqeb9ByXoOXSfs/yS/Z/klxKp5v0HJeg5dJ+
+ z/JL9n+SXEqnm/Qcn9Fy6P8AZ/km/Z/klxKeeFLk/ouW/wDYPJL7D5I8SXnjQSgvxSV0/wBh8lE4I8Eu
+ JILyjsI+Cb7CfBdX9gHgl9gHglxL+J5YYRCIMUhdL9gHgn+wDwS4kW84MchP6Dl0X2DyT/s/yQ4kW86K
+ HKYpcugHT/JSGB5JcS1wBS5L0HLoRgeSf7B5JcSHnDQ5MaHLozgeSY4HklxJec9FyXouXQ/YPJL7B5Jc
+ Sbee9FyXouXQ/YPJL7B5JcSHnvRcl6Ll0P2DyS+weSPEh570XJei5dD9g8kvsHklxIp570XJei5dD9g8
+ kvsHklxKp530XJei5dF9g8kvsHkjxLg896Lk3ouXRfYPJL7B5JcS63nPRcl6Ll0f7P8AJL9n+SHEh58U
+ uRBS5bwwPJP9h8kOJDheiVE0ldB9hTHBQtTzppcoGly6Q4HkonA8kLU836LkjU5dH+z/ACTfs/yRtBDz
+ ZpcmFLl0h6d5Jfs7yRtFPPClyn6BW+On+SkMDyThNLzbsYlCOESup+wDwS+wDwR9xcC8sME+Cf7EfBdT
+ 9gHgl9gHgl7i8SeVOGU32QhdUcAeCienjwS9xPG80MdwUxS5dF+z/JL9n+SaZWtJed9Jyb0XLov2f5Jf
+ s/yTbWF54UuUhS5dB+z/ACT/AGDyStYQ8/6LkvQcuh+weSX2DyQtXC8/6LkvRcug+weSX2DyTuJeHnvR
+ cl6Ll0P2DyS+weSXEl570XJei5dD9g8kvsHklxIee9FyXouXRfYPJN9g8kuJTz3ouS9Fy6H7B5JfYPJL
+ iQ896Lk3ouXRfYPJL7B5JcSXnfRcl6Ll0X2DyS+weSXEut530XJei5dF9g8kvsHklxKt530XJei5dF9g
+ 8kvsHklxIt530XJvRcuj+weSX2DyS4kPO+i5OKXLoP2f5J/sHklxLaefFLk/oldB9h8kvsPkjxJAefNL
+ lA0uXRfYPJMcDyR4lwLzTqXIZocV056f5Jv2d5Jca/ieZGM5GZiFdCOn+SIMEDsjxruN577IUGzCPguq
+ +xjwUHYIPZL3Fpk8gcI+CdmIQuqPTx4Jv2ePBH3FheeZQ4Igpct4YHkpDA8kDNDz/ouS9Fy6H7B5JfYP
+ JM4kPPei5L0XLofsHkl9g8kuJTz3ouS9Fy6H7B5JfYPJLiU896LkvRcuh+weSX2DyS4lPPei5L0XLofs
+ Hkl9g8kuJTz3ouS9Fy6H7B5JfYPJLiU896LkvRcuh+weSX2DyS4lPPei5L0XLofsHkl9g8kuJTz3ouS9
+ Fy6H7B5JfYPJLiU896LkvRcuh+weSX2DyS4lPPei5L0XLofsHkl9g8kuJTz3ouS9Fy6H7B5JfYPJLiU8
+ 96LkvRcuh+weSX2DyS4lPPei5L0XLofsHkl9g8kuJTz3ouS9Fy6H7B5JfYPJLiU876LkvRcui+weSb7B
+ 5Jwmqnn/AEHJHHK6H7B5J/sPkne4inmXYpKE7CJ7Lq/sA8E32AeCXuM0ZU8icE+CcYJ8F1n7PHgn/Z48
+ EONf7jzDcQhEGOQuj+wDwS+weSXGxmVvOGhyh6Dl0pwPJR/Z/khxsbzopcp+i5dB+z/JP9g8kuJFPOml
+ yiaHLo/sHkl+z/JDiVTznoOTihy6L9n+Sf8AZ/klxLg856DkvQcuj/Z/kl+z/JDiTbznoOS9By6P9n+S
+ X7P8kuJDzvoOS9By6L9n+SX7P8kuJTzvouS9Fy6L9n+SX7P8kuJLzvoOS9Fy6L9n+Sf9n+SXEq3nPRcl
+ 6Ll0f7P8kvsHklxLXnfRcomly6T9n+SY9P8AJLiVTzfouSFLl0f7P8kv2f5I8SnnxS5TFLlvDA8k/wBh
+ 8kuJLgGlyiaXLofsPkmOB5IcSXnDS5QNLl0p6f5Jv2f5JcSHmvRcmNLl0v7O8kv2d5JcSHmhS5EbS5dD
+ +zvJOOn+SeJqcEUOUXYxK6MYHkl9g8k73FweWOGSkME+C6n7APBOMAeCXurgXmhhHwTnDPgumGCPBI4I
+ 8EvdXcTyxxCkMYhdOcAeCj9g8kjkQZPOChyRpcuj+weSb9n+SYZrCXnPRcpCly6H9n+SX7P8k3iWEOAK
+ XJGhy6D7B5J/sHklxI4XnDQ5N6Dl0f2DyS+weSXEkCnnPQcn9By6L7B5JfYPJHiZLed9FyXouXRfYPJL
+ 7B5JcSLec9FyXouXR/YPJN9g8kuJDzvouS9Fy6P7B5JfYPJLiQ856LkvRcui+weSX2DyS4lU876LkvRc
+ uj+weSX2DyQ4kvO+i5N6Ll0f2DyS+weSXEm3nfRcl6Ll0X2DyS+weSXEp530XJvRcui+weSX2DyS4kPP
+ ei5P6Ll0P2DyS+weSPEh5w0uUTQ5dJ9g8k37P8kuJFPNihykKHLov2f5J/2f5I8S4PPilyY0uXRfYPJL
+ 7B5JcbIJPNOx3FDOISuo/Z/kl+zx4I8aeJ5luGUUYZXRjAHgpjCHglxp43l34R8EB2EfBdecEeCGenjw
+ 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
+ dJJSySdMkpSdMnSUuouUlFySmtYq5VmxVykpkxW61VYrVaSkwSSCSClkk6SSmKSdMipSSSSSlJJJJKUk
+ kkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklP/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKTJ0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipBJTFyr2Kw5V7ElNZyTEnJ
+ MSU2q0cIFaOEFMkydMkpSZOmSUunTJ0FKTFOmKSlkydMkpSSSSKl0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pMnTJKXCdME6SkL1VerT1VekpgEdiAEdiSmy1TUGqaSlJJJJKUmTpklLJJJJKUnTJ0lKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlQnDUycFJS4YE/phNuT
+ 70lKNYTemEt6W5JS3phN6YT7ktyKlvTCXphPuS3JKW9MJemE+5Lckpb0wl6YT7ktySlvTCXphPuS3JKW
+ 9MJemE+5Lckpb0wl6YT7ktySlvTCcVhLcluSUyFYT7Ao70t6SmWwJbAo70t6SmWwJbAo70t6SmWwJbAo
+ 70t6SmWwJbAo70t6SmWwJbAo70t6SmWwJbAo70t6Sl9gTGsJb0tySljWExrCluTSipj6YTemFOU0pKY+
+ mE3phSlKUlLemEvTCeU8pKWFYUhWE0p9ySl9gT7Am3Jb0lMtgS2BR3pb0lMtgTbAm3pb0lK2BLYEtyW5
+ JStgS2BLcluSUrYEtgS3JbklK2BLYEtyW5JStgS2BLcluSUrYEtgS3JbklK2BLYEtyW5JS/phP6YUdyf
+ ckpfYE2wJbktySlbAlsCW5LckpWwJemEtyW5JS3phL0wluS3JKV6YS9MJtyW5JSvTCWwJbktySlbAl6Y
+ S3JbkFK2BLYEtyW5JSvTCXphLcluSUr0wl6YS3JbkVK9MJemEtyW5JSvTCWwJbktySlbAn2BNuS3JKX2
+ BLYEtyW5JStgS2BLcluSUr0wlsCW5LckpWwJbAluS3JKVsCWwJbktySlbAlsCW5LckpWwJbAluS3JKVs
+ CWwJbktySlbAlsCW5LckpWwJbAluS3JKV6YS9MJbktySltgS2BLcluSUrYEvTCW5LckpXphL0wluS3JK
+ V6YTbAn3JbklLbAlsCW5LckpXphL0wn3JtyClemE4YE25OHIqX2BLYEtyW5JStgS2BLcluSUrYEtgS3J
+ bklK2BLYEtyW5JStgS2BLcluSUrYEtgS3JbklK2BLYEtyW5JStgS2BLcluSUrYEtgS3JbklK2BLYEtyW
+ 5JStgS2BLcluSUrYEtgS3JbklK2BLYEtyW5JStgS2BLcluSUrYEtgS3JbklK2BNsCfcm3JKVsCWwJbkt
+ yClemE/phNuT7klK9MJemEtyW5JS3phL0wluS3IqV6YS9MJbk+5JS3phL0wn3JtySlemEvTCW5PuSUr0
+ wn9MJtyW5JS/phL0wm3JbklL+mEvTCW5LckpXphL0wluS3JKV6YS9MJtyW5JS/phL0wm3JbklL+mEvTC
+ W5LckpXphL0wluTbklK9MJvTCfcluSUtsCWwJbktySlbAlsCW5LckpXphL0wluT7klLemEvTCfcluSUt
+ 6YS9MJ9yW5JS3phLYEtyW5BSvTCf0wluS3JKVsCbYEtyW5JS+wJemEtyW5JS3phL0wluT7kVK9MJvTCf
+ cluSUtsCWwJbktySlbAn9MJtyfckpb0wl6YT7ktySlvTCXphLcluSUrYEtgS3JbklK2BLYEtyW5JStgS
+ 2BLcluSUrYEtgS3JbklK9MJemEtyW5JSvTCWwJbktySlbAlsCW5LckpWwJbAluS3JKV6YS9MJbktySle
+ mEvTCW5LckpXphL0wluS3JKV6YS9MJbktySlemEtgS3JbkFK2BP6YTbk+5JSvTCb0wn3JtySlemE/phL
+ cluRUrYEtgS3JbkVK2BLYEtyW5JStgS2BLcluQUrYEtgS3JbklK2BLYEtyW5JStgS2BLcluSUrYEtgS3
+ JbklK2BLYEtyW5JStgS2BLcluSUrYEvTCW5LckpXphL0wluS3JKVsCWwJbktySlbAlsCW5LcipWwJbAl
+ uS3JKVsCXphLcluQUt6YS9MJ9ybckpXphL0wluT7kFLemE/phLcluSUr0wl6YS3JbklLemEvTCW5Lcip
+ XphL0wluT7klLemEvTCW5LckpXphL0wluS3JKX9MJemEtyW5JSvTCb0wn3JtySlemE/phNuS3JKV6YT+
+ mE25PuSUr0wl6YS3JbklK9MJemEtyW5JSvTCXphLcluSUr0wl6YS3JbklK9MJemEtyW5JStgS9MJbkty
+ SlemEvTCW5Lckpf0wm9MJb0tySlemEvTCW5LckpXphL0wluS3JKVsCf0wm3JbkFK9MJiwJ9ybckpb0wl
+ 6YT7ktySlemEvTCW5LcipXphP6YTbk+5JSvTCWwJbktySl9gS2BNuS3JKX2BPsCbclvSUvsCWwJt6W9J
+ SiwJiwJ9ybckpb0wl6YS3JbklL+mE3phPuTbklK2BLYEtyW5JSvTCf0wm3J9ySlemEvTCW5Lckpb0wls
+ CW5LckpXphL0wluS3JKV6YS9MJ9yW5JS3phL0wn3JbklLemEvTCW5LckpXphL0wluS3JKV6YS9MJ9yW5
+ BS2wJbAluS3JKX9MJemEtyW5JSvTCb0wn3JbklLemE/phLcluSUr0wl6YS3JbklK9MJemEtyW5JSvTCX
+ phLcluSUr0wl6YS3JbklK9MJemEtyW5JSvTCXphLcluSUr0wl6YS3JbklK9MJemEtyW5JSvTCXphLclu
+ SUr0wl6YS3JbklK9MJemEtyW5JSvTCXphLcluSUr0wl6YS3JbklK9MJemEtyW5JSvTCXphLcm3JKX2BL
+ YE25LckpfYE+wKO5PvSUvsCbYEt6bekpfYEtgTbk+9JS/phN6YS3pb0lK2BLYE29LekpfYEtgTb0t6Sl
+ 9gS9MJb0tySlemEvTCW5PuSUr0wlsCW5LckpWwJbAluS3JKVsCXphLcluSUr0wm9MJ9ybckpb0wl6YT7
+ k25JS3phL0wn3JbklKFYT+mE25PuSUv6YTemEt6W5JStgS2BLcluSUr0wl6YS3JbklK9MJemEtyW5JSv
+ TCXphLcluSUr0wl6YS3JbklK2BLYEtyW5JStgS9MJbktySlemEvTCW5LckpXphL0wluS3JKV6YS9MJbk
+ tySl/TCXphNuS3pKX9MJemE29LckpXphL0wluS3JKV6YS9MJbktySlemEvTCW5LckpWwJemEtyW5JSvT
+ CXphLcluSUr0wlsCW5LckpWwJbAluS3JKVsCWwJbktySlbAlsCW5LckpWwJemEtyW5JS/phN6YS3Jbkl
+ K9MJ/TCbclvSUv6YS9MJb029JStgS2BLcluSUr0wlsCW5LckpXphL0wluS3JKV6YS9MJbktySl/TCf0w
+ o7k+9JS+wJbAm3pb0lL7AlsCbelvSUv6YTemEt6bckpXphL0wluS3JKV6YTemE+5Lckpb0wm2BPuS3JK
+ W9MJemE+5Lckpb0wl6YT7k25JS3phLYEtyW5JS+wKQYFHcn3JKZemEtgTb0t6SmWwJbAm3pb0lL7AlsC
+ belvSUrYEtgTbktySl9gTbAluTbklK2BLYEtyW5FSvTCbYEtyW5JStgS2BLcluSUv6YS9MJtyfckpXph
+ L0wm3JbklL7AlsCbcluSUvsCWwJtyfckpXphNsCW5LckpfYEtgTbktySl9gS2BLcluSUrYEtgS3JbklK
+ 2BLYEtyW5JStgS2BNuS3JKX2BLYE25PuSUrYEtgTbktySl9gS2BNuS3JKV6YS9MJbktySlemEtgS3Jbk
+ lK2BL0wluS3JKV6YS9MJbktySlbAm2BPuTbklK9MJemEtyW5JSvTCXphLcluSUrYE+wJtyfckpWwJ/TC
+ bcluSUv6YS9MJtyW5JS/phL0wm3JbklL+mEvTCbcluSUv6YS9MJtyW5JS/phL0wm3JbklL+mEvTCbclu
+ SUrYEvTCW5PuSUt6YS9MJ9yW5DVS3phL0wn3JbklK9MJemEtyW5FS/phL0wluS3JKV6YT+mE29Lekpf0
+ wlsCben3pKX2BLYE29LekpWwJtgS3pbklLemEvTCW5LckpXphLYEtyW5JSvTCXphLcluSUv6YTbAluS3
+ JKVsCXphLcluSUv6YS9MJt6fegpXphNsCW9LckpWwJ9gTbk+5JStgS2BLcluSUrYEtgS3JbklK2BLYEt
+ yW5JStgS2BLcluSUrYEtgS3JbklK2BLYEtyW5JStgS2BLcluSUtsCWwJbktySlemE/phNuS3JKV6YS2B
+ LcluSUvsCWwJtyW5JS+wJbAm3JbklL+mE3phLcluSUr0wl6YS3JbklK2BLYEtyW5JS/phL0wluS3JKV6
+ YS9MJbktySlemEvTCW5LckpWwJbAluS3JKVsCWwJbktySlbAlsCW5LckpWwJbAluS3JKVsCbYEtyW5JS
+ 2wJemEtyW5JS/phL0wlvS3pKV6YS9MJb0tySlbAn9MJtyfckpXphP6YTbktySl/TCXphLcluSUr0wn9M
+ JtyW9JSjWFE1hS3pi5JTH0wl6YT7ktySlemE+wJtyfckpfYEtgTbk+9JS+wJbAm3pb0lK2BLYE29Lekp
+ RYFEsCfcm3JKW9MJemE+5LckpQrCf0wm3J9ySl/TCXphLeluSUr0wl6YS3JbklK2BLYEtyW5JStgS9MJ
+ bktySlemEvTCW5LckpXphL0wluS3JKV6YS2BLcluSUr0wl6YS3JbklK9MJemEtybcipXphNsCfcm3JKW
+ 2BNsCfcluSUt6YT+mEtyW5JSvTCXphLcluSUvsCWwJbktySl9gS2BNuT7klK2BPsCbcluSUvsCWwJtyW
+ 5JStgS2BLcluSUrYEtgS3JbklL7AlsCbcluSUvsCWwJtyW5JStgS2BLcluSUrYE+wJtyW5JS/phL0wlu
+ S3IKV6YS9MJbktySlemEvTCW5LckpXphL0wluS3JKV6YS9MJbktySlemEvTCW5LckpXphL0wluS3JKV6
+ YS9MJbktyClemEtgS3JbklK2BL0wluS3JKV6YTbAn3Ji5BSxaExCeU0pKWSSSSUpOmTpKUkkkkpSSSSI
+ UpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSTJKXSTJ0lLqLlJRckpr2KuUexVykpIx
+ Wq1UYrdaSkwTpgkkpSSSZJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSySSSS
+ l06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Xr0kkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0yCl0kkklLpJJJKUkkki
+ pZJJJJSkkkkVKSSSSUpSCipBJTFyr2Kw5V7ElNZyTEnJMSU2q0cIFaOEFMkydMkpSZOmSUunTJ0FKTFO
+ mKSlkydMkpSSSSKl0kkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKXCdME6SkL1VerT1VekpgEdiAEdiSmy
+ 1TUGqaSlJJJJKUmTpklLJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJS6ZJJJSkkkklLpkkklKSSSSUpJJJJSkkkk5SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUsnSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJSkkkklLpJJJKWShOkkpjCUKSSSmMJ4Tp
+ JKWhJOkkpZJJMkpSUpJklLpJk6Sl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklLpJJJKU
+ kkkkpSZJJJS6ZJJJSkydJJSySdJJSySdJJSySdJJSySdJJSySdJJSkkkklKSSSSUpJJJJSkkk6Slkk6Z
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6ZJSkykm
+ SUsknSSUsnSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpOkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlk6SSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWTpJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6SSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6SlJJ0klLJ0kklKSSTpK
+ WSTpJKWTKSZJS0JoUkklMYSTpJKWSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpkkklKSSSSUpOmSSUpJ
+ OkkpZJOkkpimhSSSUxhKE8J4SUtCSdJJSydJOkpZOkkkpSSSSSlJk6SSlkk6SSlk0KSSSmMJQpJJKYwl
+ CkkkpjCUKSSSmMJQpJJKYwlCkkkpjCUKSSSmMJQpJJKYpJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klL
+ JJ0klLJJ0klLQlCeEoSUtCUJ4ShJS0JQnhKElLQlCeEoSUtCUJ4ShJS0JQnhKElLQlCeEoSUtCUJ4ShJ
+ S0JQpJJKYwlCkkkpjCUKSSSmMJQpJJKYwlCkkkpjCUKSSSmMJQpJJKYwkpJklKSSSSUpJJJJSkkkklKS
+ SSSUpJJMkpdJMkkpdJMkkpdMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpd
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJSySSSSlJJJJKUkkkkpSdJJJSkkkklLpkkklK
+ Tpk6SlkkkklKSTpklKSSSSUpJMkkpdMkkkpSSSSSlJJJJKUlCSdJSydJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSTpKWhKFJMkpaE0KUJQkpjCUKUJoSUxhKFKEoSUxhJShKElLQlClCUJKYwnT
+ pJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkkFKSSTpKUkkkkpZJOmSUpJJJJSySdMkpSSSSSlJJJJKUkkkgpdJMnRUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJBSkkkklLJJJJKUnTJ0lLqLlJRckprWKuVYsVcpKZsVutVGK3WkpMEkgkkp
+ SZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklKSSSSUskkkkpdOmTpKWKBYjlAsSU
+ 1Hpmp3pmpKbNasNVetWGpKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//W69JJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMgpdJJJJS6SSSSlJJJIqWSSSSUpJJJFSkkkklK
+ UgoqQSUxcq9isOVexJTWckxJyTElNqtHCBWjhBTJMnTJKUmTpklLp0ydBSkxTpikpZMnTJKUkkkipdJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlwnTBOkpC9VXq09VXpKYBHYgBHYkpstU1BqmkpSSSSSlJk6ZJ
+ SySSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSdMnSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklLJJJJKUnTJJyl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUqUpTJJKXTqKdJS6SZOkpSSSSKlJJJIKUmTpJKYpQnS
+ hJS0J0oSSUpJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpSZOmSUpOmSSUumSSSUpJJJJSkkkk
+ lKSSSSUpJOmSUpJJJJSkkk6Slkk6SSlkk6SSlk6SSSlJJJJKUkkkkpSSSSSlJJJJKUmTpJKWSTpJKWST
+ pJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpZ
+ JOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklKSTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJ
+ S6SZJJS6ZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklLpkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpdJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKTpJklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSlJS6SZKUlLp1GU8pKXSTSlKSl0
+ 6jKeUlLpJpSlJSkkpTJKXSTJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJ
+ IqUkkkkpSSSSClJJJJKUkkmSUukmSRUukmSSUukmSQUukmSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJklKSSS
+ SUpJJJJSkkkklKSSSSUpMnTJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkkVKSSSSUpJJJJS6ZJJJSkkkkFLJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOipdJNKUoKXSTSkkpdJMkkpdJMkkpdJMkkpSSSSSlJJSlKS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOkkpZJOkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSClJJJJKWSTpklKTJ0ySlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkkFKSSSSUskkkkpSdMnSUuouUlFySmtYq5VixVykpmxW61UYrdaSkwSSCSSlJk6SS
+ lkydMkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTUeman
+ emakps1qw1V61YakpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipB
+ JTFyr2Kw5V7ElNZyTEnJMSU2q0cIFaOEFMkydMkpSZOmSUunTJ0FKTFOmKSlkydMkpSSSSKl0kkklKSS
+ SSUpJJJJSkkkklKSSSSUpMnTJKXCdME6SkL1VerT1VekpgEdiAEdiSmy1TUGqaSlJJJJKUmTpklLJJJJ
+ KUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJ0ydJSkkkklKSSS
+ SUpJJJJSySSSSlJJJJKUkkkipSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ0klLJJ0klLJJ0
+ klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0ySlJJJJKUnSSSUpJJJJSkkySSl5STJJKXTqKdJS6SSSSlJJJJK
+ UkmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOkm
+ SUukmSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkmSSUukmSSUukmSSUukmSSUukmSSUukmSSUuk
+ mSSUukmSSUukmSSUumSSSUpMkkkpSSSSSl0kySSl0kkklLpkkklLpJkklLpJk6SlJJJklLpkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkyS
+ l0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpOmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkySSl0kySSl0
+ kySSl0kySSl0kySSl0kySSl0kySSl0kkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTIqXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJ
+ KXSTJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkySSl0kySSl0kySSl0kySSl0ky
+ SSl0kySSl0kySSl0ySSSlJJJJKUnTJJKXSTJJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkySl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKUkkkkpSSSSSlJ0ySSl0kydJSkkkklKSSS
+ SUpJJJJSkkk6SlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklKSSSS
+ UpJJJFSkkkySlJJJJKUkkkkpSSSSSlJ0ySSl0kkklKSTJIKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXST
+ JJKXSTJJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJMkkpdJMkkpdJMkkpdJMkkpd
+ JMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJM
+ kkpdJMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKTJ0ySlJJJIqUnTJJKXSTJJKXSTJ0FKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJMkkpdJMkkpeUkySSl06ZJJS6SZJJS6SZJJSkkkySl0kySSl0kydJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpJklLpJkkFLpJkklLpJkklLpJkklLpJkklLpJkk
+ VLpJk6SlJJJJKUkkkkpSZJJJSkydMkpSSSSSlJJJJKUkkkkpSdMnSUpJJJBSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJBSkkkklLJJJJKXSTJwkpdRcpKLklNexVyrFirlJTNitVqqxWq0lJgnTBOkpZJJJJSyZO
+ mSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZJJJJS6dMnSUsUCxHKBYkpqPTNTvTNS
+ U2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipBJTFy
+ r2Kw5V7ElNZyTEnJMSU2q0cIFaOEFMkydMkpSZOmSUunTJ0FKTFOmKSlkydMkpSSSSKl0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpMnTJKXCdME6SkL1VerT1VekpgEdiAEdiSmy1TUGqaSlJJJJKUmTpklLJJJJKUnT
+ J0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkySSSlJJJJKUnTJJKXSSSSUpJJJJSkk
+ kySlJJJJKUkkkkpdJMnRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6SSlkk6SSlkk6SSlk
+ k6SSlkk6SSlkk6SSlkk6SSlkk6ZJSkk6SSlkk6SSlkk6ZJSySdMkpZOkmSUukmTpKXTpkklLpk6ZJSkk
+ kkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSToKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKW
+ STpJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKTJ0klLJJJIKUknSSUsknSSUpJJJJSkkkklKSSSSUpJOkipZJOkkpZJOkgpZJOkkpZJOkk
+ pZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZMnTJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSTpKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkkkklLJJ0klLJJ0klLJJ
+ 0klLJJ0klLJJ0klLJJ0klLJJ0klKSSSSUpJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkk
+ pZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJSySSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSRUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJOkgpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZKE6SSloShOklaloShOklaloTpJJKUkkkkpS
+ SSdJSySdJJSySdJJSyZSTIqWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWST
+ pJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJ
+ KWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKUkkkkpSSSSSlJJJJKUmTpklKSTpJKWSTpklKS
+ SSSUpMnTJKXSSSSUumTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWTKSZJSySdJBSySdJJSySd
+ JJSySdJJSySdJJSySdJJSySdJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkk6SSlk
+ k6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6ZJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySd
+ JJSySdJJSySSSSlJJJJKUnTJ0lKSSSSUpJJJJSkk6SSlJJJJKUmTpJKWSTpJKWSTpJKWSTpJKWSTpJKW
+ STpJKWSTpJKWSTpJKWSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk6SSlkk6SS
+ lkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJ0kklKTpkklLpJJJKUkkkkpSZOkkpZJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsknSSUsknSQUpJJOkpZJOkkpZOmTpKWS
+ TpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJWpZJJJK1KSSToWpZJ
+ Oklalkk6SNqWSTpJKWSTpJKWSTpJWpZOkkkpSSSSSlJk6SSlkkkkVKTJJJKUkkkkpSSSSSlJJ0klLJ0k
+ klKSTpIKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpIKWSSTJKUkkmSUunUU6SmSi5OouSU17FXKPYq5
+ SUkYrdaqMVqtJScJJgkkpdMkkkpSZJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlk
+ kkklLp0ydJSxQLEcoFiSmo9M1O9M1JTZrVhqr1qw1JS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/R69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMgpdJJJJS6SSSSlJJJ
+ IqWSSSSUpJJJFSkkkklKUgoqQSUxcq9isOVexJTWckxJyTElNqtHCBWjhBTJMnTJKUmTpklLp0ydBSkx
+ TpikpZMnTJKUkkkipdJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlwnTBOkpC9VXq09VXpKYBHYgBHYkp
+ stU1BqmkpSSSSSlJk6ZJSySSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSlJS6UJpS3JKXShNuS3JKX
+ hKE25LckpeE0JtyW5JS8J4UdyW5JTKEoUdyW5JTKEoUdyfckpeEoTbktySl4ShR3JbklMoShR3JbklLw
+ lCbcluSUyhKFHcluSUyhKFHcluSUyhKFHcluSUyhKFHcluSUyhKFHcluSUyhKFHcluSUyhKFHcluSUyh
+ KFHcn3pKZQko70t6SmSSjvS3pKZJKO9Lekpkko70t6SmSSjvS3pKZJKO9Lekpkko70t6SmSZNvTb0lMk
+ oUd6W9JTOEoUd6fckpeEoTbktySl4TQluTbklLwmhLcluSUqE8JtyW5JS8J4UdyfckpeEoTbktySl4Sh
+ R3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoShR3J9ySl4Sh
+ NuS3JKXhKE25LckpeEoUdyW5JTKEoUdyW5JTKEoUdyW9JTKEoUd6W9JTKEoUd6W9JTKE8KG9PvSUvCUJ
+ t6W5JS8JQm3JbklLwlCbem3pKZQlCjuS3JKZQlCjuS3JKXhKE25LckpeEoUdyfckpeE8KO5LckplCUKO
+ 5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckpeEoTbktySl4ShNu
+ S3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhPCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS
+ 3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS
+ 3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQmhNuS3JKXhKE25LckpeEoTbkt
+ ySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25Lckp
+ eEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKZQlCjuT7klLwlCbcluSUvCUJtyW5JS8J
+ Qm3JbklLwlCbcluSUvCUJtyW5JS8JQm3JbklLwlCbcluSUvCUJtyW5JS8JQm3JbklLwlCbcluSUvCUJt
+ yW5JS8JQm3JbklLwlCbcluSUvCUJtyW5JS8JQm3JbklLwlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS
+ 3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuT7klLwlCbcluSUvCUJtyW5JS8JQm3JbklLwlCbclu
+ SUvCUJtyW5JS8JQm3JbklLwlCbcluSUvCUJtybckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5Lck
+ plCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5Lck
+ plCUKO5LckplCUKO5LckplCUKO5LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKX
+ hKE25LckpeEoTbktySl4ShNuS3JKXhKE29LekpeEoTb0t6Sl4ShNvS3pKXhKE29LekpeEoTb0t6Sl4Sh
+ NvS3pKXhKE29LekpeEoTb029JTKEoUd6W9JTKEoUd6W9JTKEoUd6W9JTKEoUd6W9JTKEoUd6W9JTKEoU
+ d6W9JTKEoUd6W9JTKEoUd6fckpeEoTbktySl4ShNuTbklMoShR3Jb0lMoSUd6W9JTJKFHen3pKXhJR3p
+ b0lMklHelvSUyShR3p96Sl4ShNvS3pKXhKE29LekpeEoTb0t6Sl4ShNvS3pKXhKE29LekpeEoTb0t6Sl
+ 4ShNvS3pKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEo
+ TbktyKl4ShR3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoShR3JbklMoSh
+ R3J9ySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhPCjv
+ S3pKZJKO9Legpkko70t6SmSSjvS3pKZJKO9Lekpkko70t6SmSSjvS3pKZJKO9LekpknhQ3pb0lM0lDel
+ vSUzTKO9Lekpkko70t6SmSSjvS3pKZJ1DelvSUzShQ3pb0lM0lDelvSUzhNCjvS3IqZQlCjuS3JKZQlC
+ juS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlC
+ juS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlC
+ juS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlC
+ juS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjuS3JKZQlCjvS3pKZQlCjvS3pKZQlC
+ jvS3JKZQlCjuS3JKZQmhNuS3JKXhKE25LckplCUKO5PuSUvCUKO5LekpklChvS3pKZwko70t6SmSUKO9
+ PvSUvCUJt6W9JS8JQm3pb0lLwko70t6SmSSjvS3pKZJQo70tySmUJQo7ktyCmUJQo7ktySmUJQo7ktyS
+ mUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7kt6SmUJQo70t6SmUJQo70t6SmUJQo70t6S
+ mUJQo70t6SmUJQo70t6SmUJQo70t6SmUJQo70t6SmSSjvS3pKZJKO9Lekpkko70t6SmSSjvS3pKZJKO9
+ Lekpkko70t6SmSSjvS3pKZJQo70t6SmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktyS
+ mUJQo7ktySmUJQo7ktySmUJoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhPCjuS3JKZ
+ QmhNuS3pKXhKE29LekplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5LckplCUKO5Lckpl
+ CUKO5LckplCUKO5LckplCaE25LcipeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhK
+ E25LckpeEoTbktySmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQ
+ o7ktySmUJQo7ktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNu
+ S3JKXhKE25LckpdJR3JbklMklHcluSUyShR3J9ySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKX
+ hKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckplCUKO5LekplCUKO9LekplCUKO5PuSUvCUJtyW5JS8J
+ oS3JtySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE2
+ 9NvSUyhKFHelvQUyhJR3pb0lMklHelvSUyTqG9LekpnCUKO9LekplCSjvS3pKZQlCbem3pKZJKO9Lekp
+ kko70t6SmSSjvS3pKZJKO9Lekpkko70t6SmSSjvS3pKZJKO9LekpklCjvS3pKZQlCjvS3oKZQlCjuS3J
+ KZQlCjuS3JKZQlCjuS3JKXhKE25LckpeEoTbktySmUJQo7ktyKmUJQo7ktySl4ShNuS3JKXhKE25Lcip
+ dKE25NuSUyhKFHcluSUyhKFHcluSUyhKE25LckpeEoTbktySl4Two7ktySmUJQo7ktySmUJQo7ktySmU
+ JQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktySmUJQo7ktyCl4TFIuUS5JS6UKO5LekplCdQ3p9ySmai
+ 5Lcouckpr2KuUewquSkpKxWq1TYVbrckpOEimDkpSUpJNKSSl0kydJSkkkklKSSSSUpJJJJSkkkklKTp
+ k6SlJJJJKUkkkkpSSSSSlkkkklLp0ydJSxQLEcoFiSmo9M1O9M1JTZrVhqr1qw1JS6SSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKf/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKTJ0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipBJTFyr2Kw5V7ElNZyTEnJMSU2q0cIFaOE
+ FMkydMkpSZOmSUunTJ0FKTFOmKSlkydMkpSSSSKl0kkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKXCdMEi
+ kpE9VXq1Yqr0lMAjsQAjsSU2GoiG1TSUukkkkpSZOmSUskkkkpSdMkkpSSSSSlJ0ycJKUkpJJKYpinKi
+ UlLEqJcmcUNxSUzL1E2ILnKBckpsG1N6qql6jvSU3PVS9VUt6W9JTc9VN6yqb025JTc9ZL1lT3FPuKSm
+ 36yXrKpuKW4pKbnrJesqe4pbikpuesl6yp7ylvSU3PWTesqe8pbykpuesl6yp7029JTd9ZL1lS3pb0lN
+ 31kvWVLelvQU3fWS9ZUt6W9K1N31kvWVLelvStTd9ZL1lS3pb0rU3fWS9ZUt6W9K1N31kvWVLelvStTd
+ 9ZL1lS3pb0rU3fWS9ZUt6W9K1N31kvWVLelvKVqbvrJesqW8pbylam76yXrKlvKW8pWpu+sl6ypbylvK
+ VqbvrJesqW8pbylam76yXrKlvKW8pWpu+sl6ypbylvKVqbvrJesqW8pbykpuesn9ZUt6W8pKbvrJ/WVH
+ en3pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvS3pKbvrJesqW9Lekpu+sl6ypb0t5SU3fWS9ZUt5
+ Tbykpvesl6yo7ylvKSm96yXrKjvKW8pKb3rJesqO8pbykpvesl6yo7ylvKSm96yXrKjvKW8pKb3rJesq
+ O8pbykpvesl6yo7ylvKSm96yXrKjvKW8pKb3rJesqO8pbykpvesl6yo7ylvKSm96yXrKjvKW9JTe9ZL1
+ lR3pb0lN71k3rKlvS3pKbvrJesqW9Lekpu+sl6ypb0t6Sm96yXrKjvT70lN31kvWVLelvSU3fWS9ZUt6
+ W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pt6Sm76yXrKlvS3pKb3rJesqO8pbyk
+ pvesl6yo7ylvKSm96yXrKjvKW8pKb3rJesqO8pbykpvesl6yo7ylvKSm96yXrKjvKW8pKb3rJesqO8pb
+ ykpvesl6yo7ylvKSm96yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8
+ pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesq
+ W8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJe
+ sqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvr
+ JesqW8pbykpu+sm9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN
+ 31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeU
+ lN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTe9ZL1lR3lP
+ vKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypb
+ ylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6y
+ pbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl
+ 6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+
+ sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykp
+ u+sl6ypbylvKSm76yXrKlvKW8oqbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pby
+ kpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8p
+ bykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbnrJesqW
+ 8pbygpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJes
+ qW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJ
+ esqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6yo7ylvKSm96yXrKjvKW8pKb3
+ rJesqO8pbykpvesl6yo7ylvKSm96yXrKjvKW8pKb3rJesqO8pbykpvesl6yo7ylvKSm96yXrKjvKW8pK
+ b3rJesqO8pbykpvesl6yo7ylvKSm96yXrKjvKW8pKb3rJesqO8pbykpu+sl6ypbylvKSm76yXrKlvKW8
+ pKbvrJesqW8pbykpu+sn9ZUd5T7ykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypby
+ lvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6yp
+ bylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6
+ ypb0t6NqbvrJesqW9Lekpu+sl6ypb0t6Sm76yXrKlvS3pKbvrJesqW9Lekpu+sl6ypb0t6Sm76yXrKlv
+ S3pKbvrJesqW9LeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt
+ 5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3pb0LU3fWS9ZUt6W9K1N31kvWV
+ LelvStTd9ZL1lS3pb0rU3fWS9ZUt6W9K1N31kvWVLelvStTd9ZL1lS3pb0rU3fWT+sqO9PvKVqbvrJes
+ qW8pbylam76yXrKlvKW9K1N31kvWVLelvStTd9ZL1lS3pb0rU3fWS9ZUt6W9K1N31kvWVLelvKVqbvrJ
+ esqW8pbylam76yXrKlvKW9G1N31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9
+ ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6
+ W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JT
+ d9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL
+ 1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3
+ pb0lN31kvWVLelvSU3PWS9ZUt6W9JTd9ZP6yo70t6Sm96yXrKlvS3pKbvrJesqW9Lekpu+sl6ypb0t6S
+ m76yXrKlvS3pKbvrJesqW9Lekpu+sm9ZUt6W8pKbvrJesqW9Lekpu+sl6ypbylvKSm96yXrKjvS3pKb3
+ rJesqO9Lekpvesl6yo70t6Sm96yXrKjvS3pKb3rJesqO9Lekpvesl6ypbylvKSm76yXrKlvKW8oKbvrJ
+ esqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbv
+ rJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pK
+ bvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8
+ pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvK
+ W8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKl
+ vKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yb1
+ lT3lLeUlNz1kvWVPcUtxSU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9Z
+ L1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5RU3fWS9ZUt5S3lJTd
+ 9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJ
+ Td9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3
+ lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5
+ S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlNz1kvWVPcUtxSU3PWS9ZU
+ 9xS3FJTc9ZL1lT3FLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9
+ ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3FLcUlN31kvWVLcUt5SU3fW
+ S9ZUt5S3lJTe9ZL1lR3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3
+ fWS9ZUt5S3lJTd9ZL1lS3lLeUlN31kvWVLeUt5SU3fWS9ZUt5S3lJTc9ZL1lT3pbygpuesl6yp7ylvKS
+ m56yXrKnvKW9JTc9ZL1lT3pb0lNz1kvWVPeUt5SU3PWT+sqW8pbykpu+sl6ypbylvKSm76yXrKlvS3pK
+ bvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8pKbvrJesqW8pbykpu+sl6ypbylvKSm76yXrKlvKW8
+ pKbvrJesqW8pbykpu+sm9ZU95S3lJTc9ZL1lS3pb0FN71kvWVLeUt5SU3fWS9ZUt5S3lJTd9ZL1lS3lL
+ eUlN31kvWVLeUt5SU3fWS9ZUt5S3lFTd9ZN6yp7ym3pKb3rJesqW9Lekpu+sn9ZUd6fekpuesl6ypb0t
+ 6Sm76yXrKlvS3oqbvrJesqW8pb0rU3fWS9ZUt6W9JTd9ZL1lS3pbykpu+sl6yp7ylvKSm76yXqqlvKW9
+ FTd9ZL1lT3pb0lNz1kvVVPelvSU3PVS9VU96W9JTc9VL1lT3pb0lNz1kvVVPem3pKbvqpesqW9LeUlN3
+ 1kvWVLeUt5QU3fVTeqqgeluSU2Taom5VnOQy8pKbwuUhaqAeUQOKSm56qY2qtuTFySkj3oJcokqMpKTN
+ erDLFSBRWuSU3hYph6qNcjNKSmwCpBDaiBJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJ
+ JSkySSSlJJJJKXTpk6SligWI5QLElNR6Zqd6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//
+ 0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSU
+ ukkkkpSSSSKlkkkklKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJ
+ S6dMnQUpMU6YpKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0l
+ MAjsQAjsSU2Gqag1TSUukkkkpSZOmSUskkkkpSSSSSlJJJ0lKThMnSUukkkkpYqBRCokJKQuCG4I5CgW
+ pKazghlqtFqgWJKapaolqtFiY1pKau1LarPppemkpr7E+xWBWpBiSmrsS2K1sT7ElNTYlsVv00vTSU1N
+ iWxW/TS9NJTU2JbFb9NL00lNPYlsVv00vTSU1NibYrfppemkpqbEtit+ml6aSmpsS2K36ab001TV2JbF
+ a9NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NP
+ 6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSm
+ psS2K36aXppKamxLYrfppemkpqbEtit+ml6aKmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2
+ K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36a
+ XppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppK
+ amxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxL
+ YrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfp
+ pemkpqbEtit+ml6aSmpsS2K56aXppKaexLYrnppemkpp7Etiueml6aSmnsS2K56aXppKaexLYrnppemk
+ pp7Etiueml6aSmnsS2K56aXppKaexLYrnppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbE
+ tit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+
+ ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6a
+ SmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmps
+ S2K36aXppKamxNsVz00vTSU09iWxXPTS9NJTT2JbFc9NL00lNPYlsVz00vTSU09iWxXPTS9NJTT2JbFc
+ 9NL00lNPYlsVz00vTSU09iWxXPTS9NJTT2JbFc9NL00lNPYlsVz00vTSU09iWxXPTS9NJTT2JbFc9NL0
+ 0lNPYlsVz00vTSU09iWxXPTS9NJTT2JbFc9NL00lNPYlsVz00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNT
+ YlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsV
+ v00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00v
+ TSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1
+ NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWx
+ W/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00VNTYlsVv00vTRU1NiWxW/TS
+ 9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJT
+ U2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2Jb
+ Fb9NL00FNPYlsVz00vTQU09iWxXPTS9NJTT2JbFc9NL00lNPYlsVz00vTSU09iWxXPTS9NJTT2JbFc9N
+ L00lNPYlsVz00vTSU09iWxXPTS9NJTT2JbFb9NL00lNTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00l
+ NTYlsVv00vTSU1NiWxW/TS9NJTU2JbFb9NL00lNTYlsVv00vTSU1NiWxW/SS9JJTU2JbFb9JL0klNTYl
+ sVv0kvSSU1NiWxW/SS9JJTU2JbFb9JL0klNTYlsVv0kvSSU1NiWxW/SS9JJTU2JbFb9JL0klNTYlsVv0
+ kvSSU1NiWxW/SS9JJTU2JbFb9JL0klNTYlsVv0kvSSU1NiWxW/SS9JJTU2JbFb9JL0klNTYlsVv0kvSS
+ U1NiWxW/ST+mkpp7Etiueml6aSmnsS2K56aXppKaexLYrnppemkpp7Etiueml6aSmnsS2K56aXppKaex
+ LYrnppemkpp7Etiueml6aSmnsS2K56aXppKaexLYrnppemkpp7Etiueml6aSmnsS2K56aXppKaexLYrn
+ ppemkpp7Etiueml6aSmnsS2K56aXppKaexLYrnppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppem
+ kpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsTbFc9NL00lNPYlsVz00vTRU09
+ iWxXPTS9NJTT2JbFc9NL00lNPYlsVz00vTSU09iWxXPTS9NJTT2JbFc9NL00lNPYlsVz00vTSU09iWxX
+ PTTemgpqbEtit+kl6SCmpsS2K36SXpJKamxLYrfpJekkpqbEtit+kl6SSmpsS2K36SXpJKamxLYrfpJe
+ kkpqbEtit+kl6SSmpsT7Fa9JL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1
+ diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1dibYrfppemipqbEtit+ml6aSmpsS2K36aXppKamxLY
+ rfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfpp
+ emkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkp
+ qbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEt
+ it+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+m
+ l6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aS
+ mpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS
+ 2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsT7Fa9
+ NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00
+ lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXY
+ lsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr
+ 00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vT
+ SU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00vTSU1diWxWvTS9NJTV2JbFa9NL00lNXYlsVr00/ppKam
+ xLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYr
+ fppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppe
+ mkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpq
+ bEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEti
+ t+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml
+ 6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSm
+ psS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2
+ K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36a
+ XppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppK
+ amxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsTbFc9NN6aSmpsS
+ 2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36
+ aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXppKamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXpp
+ KamxLYrfppemkpqbEtit+ml6aSmpsS2K36aXpoKamxLYrfppemgpq7Etiteml6aSmrsS2K16aXpoqaux
+ LYrXppemkpq7E2xW/TS9NJTU2JbFb9NL00VNTYlsVv003ppKam1LarfpJvSSU1dqW1WvSS9JJTV2pbFa
+ 9JL0klNXYlsVv00vSSU1NifYrXpJ/SSU1NifYrXpJ/SSU1NifYrXpJ/SSU1NiWxW/STemipqbUtqteml
+ 6aKmrtT7VZ9NL00lNbaltVn00/ppKau1LYrXppemkpqbEtit+mm9NJTV2JbFa9NL00lNTYlsVv00vTQU
+ 1gxPsVn00tiSmoWIZYrpYoGtJTWDEQMRhWpitJSDYmLVa2KJYkpqFqjtVlzFAtSUiDURrVINRGsSUs1q
+ M0J2tRA1JS7QiBMApJKUknTJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklLJJJJKUkkkkpdOm
+ TpKWKBYjlAsSU1Hpmp3pmpKbNasNVetWGpKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1OvSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkkkpSSSSKlkkkk
+ lKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dMnQUpMU6YpKWT
+ J0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjsQAjsSU2Gqag1
+ TSUukkkkpSZOmSUskkkkpSSSSSlJJJklLynlRlPKSmUp1GUpSUyTJJJKWITEKaUJKRFqbYjQltSUg2Jt
+ isbUtqSmvsS2KxtS2pKa+xLajlqjCSke1LaiQlCSke1LaiQlCSmG1LapwnhJSPaltRIShJSPalsRIShJ
+ SPYm2IsJ4SUh2JbEWEoSUi2JbEWEoQUi2J9iJCUJKR7EtiJCUJKR7EtiJCUJKR7EtiJCUJKR7EtiJCUJ
+ KR7EtiJCUJKR7EtiJCUJKR7EtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJ
+ KRbEtiLCUJKRbEtiLCaElI9iWxEhKElI9iWxEhKElI9iWxEhKElI9iWxEhKElI9iWxEhKElI9iWxEhKE
+ lI9iWxEhKElI9iWxEhPCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlC
+ SkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlC
+ SkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlC
+ SkWxLYiwlCSkWxPsRITJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimkkphsS2KaSSmGxLYppJKYbEtimk
+ kphsS2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJo
+ SUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSU
+ j2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2JbERJJSPYlsREklI9iWxESSUj2
+ JbERJJSPYlsREklI9iWxESSUj2JbERJJSPYlsREklI9iWxESSUj2JbERJJSPYlsREklI9iWxESSUj2Jb
+ ERJJSPYlsREklI9iWxESSUj2JbERJJSPYltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbUR
+ JJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJ
+ SPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSP
+ altREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPYlsREklI9qW1ESTgpHtS2oiSKke1
+ LaiJIKR7UtqIkkpHtS2oiSSke1LaiJJKR7UtqIkkpHtS2oiSSke1LaiJJKR7UtqIkkpHtS2oiSSke1La
+ iJJKR7UtqIkkpHtS2oiSSke1LaiJIqR7UtqIkgpHsS2IiSCkexLYiJIKR7EtiIkkpHsS2IiSSkexLYiJ
+ JKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiJCUJKR7EtiJCUJKR7EtiJCUJKR7EtiJCUJKR7EtiJCUJKR7
+ EtiJCUJKR7EtiJCUJKR7EtiJCUJKR7EtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRb
+ EtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRbEtiLCUJKRb
+ EtiLCUJKRbEtiLCUJKRbEtiJCSSkexLYiJJKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiIkkpHsS2IiSSk
+ exLYiJJKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiIkkpHsS2IiSSkexLYiJJKR7EtiIkkpHsS2IiSSmGx
+ LYpp0VI9iWxESSUj2JbERJJSPYlsREklI9iWxESSUj2JbERJJSPYlsREklI9iWxETQkpHsS2IkJQkpHs
+ S2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJQkpHsS2IkJJKR7EtiJCUIKR7EtiLCSSkWxL
+ YipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxPsREoSUj2JbEWEoSUi2JbEWEoSUi2
+ JbEWEoSUi2JbEWEoSUi2JbEWEoSUi2JbEWEoSUi2JbEWEoSUi2JtiLCUJKRbEtiKkipFsS2IqSSkWxLY
+ ipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYip
+ JKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJK
+ RbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJKRb
+ EtiKlCSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS
+ 2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipJKRbEtiKkkpFsS2IqSSkWxLYipQgpFsS2IsJQkpFsS
+ 2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS
+ 2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS
+ 2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS
+ 2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJQkpFsS2IsJoSUj2pbURJJSPaltREklI9qW1E
+ SSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESS
+ Uj2pbURJJSPaltREklI9qW1ESSUj2pbURJFSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj
+ 2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2p
+ bURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbU
+ RJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJ
+ JSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJSPaltREklI9qW1ESSUj2pbURJJS
+ PaltREklI9qW1ESSUj2pbURJJSPaltREklI9iWxEhPCCkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYi
+ wlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYi
+ wlCSkWxLYiwlCSkWxLYiwlCSkWxLYiwlCSkWxLYiQlCSkexLYiQlCCkexLYiQlCSkexLYiQlCSkexLYi
+ QkipHsS2IiUJKR7EtiLCUJKRbEtiJCUJKR7E2xFSSUi2JbEVJJSLYlsRE6SkWxLYipJKR7EtiIkkphsS
+ 2KadJSPYn2KaSSkexLYiJQipFsS2IsJQipFsS2IsJ4SUi2JbEWEoSUi2JbEWEoSUi2JbEWEoSUi2JvTR
+ oShJSLYm2I0JQgpDsTFqNCYhJSAsUdiOWptqSkQYphimGqQCSkRaoOarBCG4JKazgoEIzghkJKWDUVrV
+ FoRmhJS4apgJwE8JKWTpJklLpJk6SlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSySSSSlJJJJ
+ KXTpk6SligWI5QLElNR6Zqd6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//1evSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkkkpSSSSKl
+ kkkklKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dMnQUpMU6Y
+ pKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjsQAjsSU2G
+ qag1TSUukkkkpSZOmSUskkkkpSSSSClJk6UIqWSTwmSUpOmSSUylOopSkpmkoynlJTJOoynlJS6dRlKU
+ lMklGUpSUopilKSSlkk6ZJSkydMkpSSZNKSmUpSoylKSmUpSoykkpnKSjKUpKZJKMp0lLpkk6VKWSTpJ
+ UpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqU
+ pJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpOmTpUpSSSSVKUkkklSlJJJ
+ JUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpS
+ SSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlpSTpQlSlkk8JQlSlkk8JQlSlkk8JQl
+ Slkk8JQlSlkk8JQlSlkk8JQlSlkk8JQlSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVK
+ WSTpQlSlkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkko
+ ShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJK
+ lKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkoShKlKSShKEqU
+ pJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkko
+ ShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEq
+ UpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEqUpJKEoSpSkkoShKlKSShKEVKSShKEVKSSh
+ KElKSShKElKSShKElKSShKElKSShKElKSShKElKSShKElKSShKElKSShKElKSShKElKSShKElKSShKEl
+ KSShKElKSShKElKSSSQpSkkkkKUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkk
+ kkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqU
+ pJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJ
+ KlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJGlKS
+ SSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSp
+ SkkkkqUpJJJKlKlOmSQpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSSpS8pJk6VKXSTJJUpdJMkl
+ Sl0kySVKXSTJJUpdJMklSl0kySVKXSTJJUpSSSZGlKlKUkkqUqUpSSSpSpSlJJKlKlKUkkqUqUpSSSpS
+ pSlJJKlKlKUkkqUqUpSSSpSpSlJJKlKlKUkkqUqUpSSSpSpSlJJKlKlKUkkqUqUpSSSpSpSlJJKlKlKU
+ kkqUqUpSSSpSpSlJJKlKlKUkkqUqUpSSSpSpSlJJKlKlKUkkqUqUpSSSpSpSlJJKlKlKUkkqUqUpSSSp
+ SpSlJJKlKlKUkkqUqUpSSSpSpSlJJKlKlPKZOlSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJ
+ JJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSFKUkkklSlJJJJUp
+ SSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSS
+ VKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUk
+ kklSlJJJJUpSZOmSpSySeEkqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJ
+ J0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kaUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJ
+ J0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJ
+ J0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJ
+ J0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJ
+ J0kqUsknSSpSySdJKlLJJ0kqUsknSSpSk6ZJKlLpJJIUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJ
+ JUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlkkkkqUqUpSSQpSpSlJJGlKlKUk
+ kqUqUpSSSpSpSSSSpSk6ZJKlKTSnTFKlKlNKSSVKVKUpQlCVKVKUpJ4SpSpSlKEoSpSpSlKE8JKUlKUJ
+ 4SpSyUp4ShJS0pSlCZFTKUpUJSlJTOUpUZSlJTKU8qEp0lMpSlRSlJTKUpUZSlJTKUpUZSlJTKUpUZSQ
+ UylMmlOkpUJoTp0lKATpk6SlihORChPKSkLkOVN5Q5SUkajsVdhVliSkgCScJFJTEpk5TJKUkkkkpdJJ
+ JJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKWSSSSUpJJJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Ya
+ q9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkkkpSSSSKlkkkklKSSSRUpJJJJSlIKKkElMXKvYrDl
+ XsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dMnQUpMU6YpKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUskkkkpSSSSSl0
+ kk6SloShOkkpimUkySlkk6SSlJSkkkpdKUySSl5SlMkkpUpSmSSUyBUlAKUpKXTJSmSUpMnTJKUmTpQk
+ pikpQlCSmKeE8J4SUxhPClCUJKYwnhShNCSlk6ZJOUvKSinRUukmSSUukmSSUukmSSUukmSSUukmSSUu
+ kmTJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXST
+ JJKXSTJJKXSTJJKXTqKdJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJ
+ JS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS
+ 6SZKUlLpJpSlJS6SaUpSUukmlKUlLpJpSlJS6SaUpSUukmlKUlLpJpSlJS6SaUpSUukmlKUlLpJpSlJS
+ 6SaUpSUukmlKUlLpJpSlJS6SaUpSUukmlJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6S
+ ZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6ZMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJ
+ KXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5STJJ
+ KZJKKdJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS
+ 6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6S
+ ZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJ
+ JS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJSkpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl
+ 5SlMkkpeUpTJJKXlKUySSl5SlRSSUylKVFJJTKUpUUklMpSlRSSUylKVFJJTKUpUUklMpSlRSSUylKVF
+ JJTKUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKU
+ ySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUp
+ TJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5S
+ lMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXl
+ KUySSl5SlMkkpeUpTJJKXlKUyZJTJJRSSUySUUklMklFJJTJJRSSUySUUklMklFJJTJJRSSUylPKgnQU
+ ySUUklMklFJJTJJRSSUySUUklMklFJJTJJRSSUySUUklMpTSmSRUukmSSUukmSSUukmSSUukmSSUukmS
+ SUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSU
+ ukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUyS
+ TJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ
+ JKXSlMkkpUpSmTJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSmUp
+ SopJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSmUpSopJKZSlKik
+ kplKUqKSSmUpSopJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSmU
+ pSopJKZSlKinSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSU
+ ukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUuk
+ mSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmS
+ SUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSU
+ ukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUvKSZMkpkkopJKZ
+ JKKSSmSSikkpkkopJKZJKKSSmSSikkpkkopJKZJKKSSmSSikkpkkopJKZJKKSSmSSikkpkkopJKZJKKS
+ SmSSikkplKSZJJS6SZJBS6ZMkkpdJMkkpeUpTJJKZJKKSSmSUpkklLpJk6SloShOlCSloSTpJKUkknSU
+ skkkkpdJMmlBTJJRlKUlMpSlRlKUlMiVEpSkkpZKFJKElMUlJKElLJJ4TwkpikpQlCSmKSlCUJKYpKUJ
+ oSUsknhKEFLJ0kySmSSZOkpdNKSYpKUShPRChuSU13lClEehJKTMKssVRhVtiSkwSKQSKSmJTKSZJSyd
+ JJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpZJJJJSkkkklLp0ydJSxQLEcoFiSmo9M1O9M1
+ JTZrVhqr1qw1JS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMgpdJJJJS6SSSSlJJJIqWSSSSUpJJJFSkkkklKUgoqQSUx
+ cq9isOVexJTWckxJyTElNqtHCBWjhBTJMnTJKUmTpklLp0ydBSkxTpikpZMnTJKUkkkipdJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKTJ0ySlwkUgkUlIrFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSySSSSl
+ JJJJKXSTJ0lLpJkklKSSSSUpJOkkpZJOkkpaEoTpJKWhKFJJJTGEoUkklMUkimKSlSkkkkpdJJOkpZKE
+ 6SSlQlCSSSlJ00pSkpkkoylKSmSShuS3JKZJoTbk8p4UqEoSlKUqUqEoSlKUqUqEoSlKUqUqEoSlKUqU
+ qEoSlKUqUqEoSlKUqUqEoSlKUqUqEoTSlKVKXhKE0pSlSl4ShNKeUqUqEoSlKUqUqEoSlKUqUqEoSlKU
+ qUqEoSlKUqUqEoSlKUqUqEoSlKUlKhKEpSlJSoShKUklKhKEpSlJSoShKUpSpSoShKU0pUpeEoTSlKVK
+ XhKE0pSlSl4ShKUpSpSoShKUpSpSoShKU0pUpeEoTSlKVKXhKE0pSlSl4ShNKUpUpeEoTSlKNKXhKEpS
+ lClKhKE0pSlSl4ShNKUpUpeEoTSlKNKXhKE0pShSl4ShNKeUqUqEoTSlKSl4ShKUpSUqEkpSlFSkkpSl
+ JSkk0pbkqUukm3JbkqUukm3JbkqUukm3JbkqUukm3JSlSl0k0pbkqUvCUJtyW5KlLwlCbcluSpS8JQm3
+ JbkqUvCUJtyW5KlLwlCbcluSpS8JQm3JbkqUvCUJtyW5KlLwlCbcm3JUplCUKO5LclSmUJQo7ktyVKZQ
+ lCjuS3JUplCUKO5KUqUyhKFGU8pUpeEoTSlKVKXhKE0ppSpTKEoUdyW5KlMoShNuS3JUpeEoTbktyVKX
+ hKE25LclSl4ShNuS3JUpeEoTbktyVKXhKE25LclSl4ShNuS3JUpeEoTbktyVKXhKE25LclSl4ShNuS3J
+ UpeEoTbktyVKXhKE25LclSl4ShNuS3JUpeEoTbktyVKXhKE25LclSlQlCbclKVKXSTSlKVKXSTSnSpSk
+ kkkqUpJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJN
+ KUpUpdJNKUpUpdKE0pSlSl4TwoynlKlLwlCbcluSpS8JQm3JbkqUvCUJtybclSmUJQo7k+5KlLwlCbcl
+ uSpS8JQo7k8pUpeEoTSlKVKXhKE0pSlSl4ShNKUpUpeEoTbktyVKXhKE25NuSpTKEoTbktyVKXhKE25L
+ clSl4ShNuS3JUpeEoTbktyVKXhKFHcluSpTKEoUdyfclSl4ShNuS3JUpeEoTbk25KlMoShR3JbkqUyhK
+ FHcluSpTKEoTbktyVKXhKFHcluSpTKEoTbkpSpS8JQm3JbkqUvCUJtyW5KlLwlCaUpSpS8JQmlKUqUvC
+ UJpSlKlLwlCaUpSpS8JQm3JbklLwlCbclKCl4ShNKUpKXhKE0pSkpeEoTbktySl4ShNuS3JKXhKE25Lc
+ ipeEoTbktySl4ShNuS3JKXhKE25LcgpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKX
+ hKE25KUVKhJNKUpUpdJNKUpUpdJNKdKlKSSTSlSl0k0pSlSl0k0pSlSl0k0pSlSl00JSlKVKVCUJSlKV
+ KVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlK
+ VKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJ0kqUtCUJSlKVKVCUJSlKVKVCUJSlK
+ VKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXS
+ TSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXSTSlKVKXS
+ TSlKVKXhKE0pSlSl4ShNKUpUpeEoTSlKVKXhKE0pSlSl4ShNKUpUpeEoTSlKVKXhKE0pSlSl4ShNKUpU
+ pdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdJNKUpUpdKE0pSlSl4ShKUpSpSoShKU
+ pSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShK
+ UpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKU8pUpaE8JpSlKlLwlCaUtyVKXhKE25LclSl4ShNKUpUp
+ eEoTSlKVKXhKE25LclSl4ShNuS3JUpeEoTbktyVKXhKE25LclSl4ShNKUpUpeEoTSlKVKXhKE25KUqUv
+ CUJpTylSlQlCUpSkpUJQmlKUqUvCUJtyW5KlLwlCbcluSpS8JQm3JbkqUvCUJtyW5KlLwlCbcluSpS8J
+ QmlKUqUvCUJpSlKlLwlCbcluSpS8JQm3JbkqUvCUJtyUpUpeEoTSlKVKXhKEpSlJSoShNKUpUpeEoTSl
+ KVKXhKE0pSlSl4ShNKUpUpeEoTSlKVKXSTbktyVKXSTbktyVKXSTbktyVKXSTbktyVKXSTbkpSpS6SaU
+ tyVKXSTSlKVKXSSlKUqUpJKU0pUpdJNKUpUpdJNuS3JUpdJNuS3JUpdJNuSlKlLpJtyW5KlLpJtyW5Kl
+ KhKEpTSlSlQlCUpSlSlQlCUpSlSlQlCUpSlSlQlCUpSlSlQlCeUkqUtCUJ00pUpUJQlKUpUpUJQlKUpU
+ pUJQlKUpUpUJQlKUpUpUJQlKUpUpUJQlKUpUpUJQlKUpUpUJQlKUpUpUJQlKUpUpUJQlKUpUpUJQlKUp
+ UpUJQlKeUqUtCUJ5SlKlLQlCUpSlSlQlCUpSlSlQlCUpSlSlQlCUpSlSlQlCUpSlSlQlCUpSlSlQlCUp
+ SlSlQlCUpSlSlQlCUpSlSlQlCUpSlSlQlCUpSlSlQnhNKeUqUqEoSlKUlKhKEpSlKlKhKEpSlKlKhKEp
+ SlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKE
+ pSlKlKhKEpSlKlKhKEpSlJSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoSh
+ KUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoS
+ hKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSo
+ ShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpS
+ oShKUpSpSoShKUpSpSoShKUpSpSoShLclKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKV
+ KVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCUJSlKVKVCaEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSl
+ KlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpSlKlKhKEpS
+ lKlKhKEpSlKlKhKEpSlKlKhKEpSlKlLwnhNKUpUpUJQlKaUqUvCaEpSlKlKhKE0pbkqUvCUJSlKVKXhK
+ E25KUqUvCUJSlKVKXhKE0pbkKUyhJR3JbkqUyShNuSlKlLwlCUpJUpaEoTpkqUtCUJ0yVKWhJOkhSmMJ
+ QnShKlLJwnSSUukmSQUukmSSUukkkkpSSSSSlJJJpSUukmSSUukmSQUopkkklKTpJ0lKTFOmSUsUNyLC
+ G4JKar0Eo9gQCkpIxW2KoxW2JKTBJMEklLpJBJJSySdMkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkkl
+ KSSSSUskkkkpSSSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klP/0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXS
+ SSSUukkkkpSSSSKlkkkklKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJ
+ k6ZJS6dMnQUpMU6YpKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Y
+ qr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUskkkkpSSSSSlJ0ydJSkkkklLpJJJKUkkkkpSZJJJSpSlM
+ kkplKSinSUylNKaUklKKZOmSUpJJOkpSSZOkpSaU6YhJSpTSkVAlJTLcm3oTnQguuhJTc3pi8LOdlAKB
+ zAlSnRNij6iz/tUp/XSAU3/VS9VZxvTfaFIAp0vVS9VZv2hL7QnUp0vVS9VZv2hL7QlSnS9VL1Vm/aEv
+ tCVKdL1UvVWb9oS+0JUp0vVS9VZv2hL7QlSnS9VL1Vm/aEvtCVKdL1UvVWb9oS+0JUp0vVS9VZv2hL7Q
+ lSnS9VL1Vm/aE32hKlOn6qXqrN+0JfaEqU6Xqpeqs37Ql9oSpTpeql6qzftCX2hKlOl6qXqrN+0JfaEq
+ U6Xqpeqs37Ql9oSpTpeql6qzPtCX2hKlOn6qXqrM+0JfaEqU6nqp/VWV9pTHKSpTr+qEvVCx/tiX2wJU
+ qnX9VN6qyvtaX2pKlU6vqpvVWZ9pS+0JUp0/VS9VZn2hP9oSpTpeql6qzfXS9dKlOl6qXqrN9dN9oSpT
+ p+ql6qzPtCX2hKlOn6yXrLM+0JfaEqU6frJessz7Ql9oSpTp+ql6qzPtCX2hJTp+ql6qzPtCX2hJTp+q
+ l6qzPtCX2hJTp+ql6qzPtCX2hJVun6qXqrM+0JfaElOn6qXqrM+0JfaEqU6fqpeqsz7Ql9oSU6frJess
+ z7Ql9oSU6fqpvWWd66XrpKdL1UvVWZ66X2hKlOn6qXqrM+0J/tCVKdMWp/WCyTkwmOWlSnX9UJeqFj/b
+ EvtaVKp1/WS9VZH2tP8AakqVTq+qm9VZgyZT+ulSnS9VL1Vm+ul9oSU6Xqpeqs310vXSU6Xqpeqs310v
+ XSU6Xqp/VWZ9oTfaElOp6qb1VmfaE/2hJTpeql6qzftCXrpUp0vVS9VZvrpfaEqU6Xqpeqs37Ql9oSU6
+ Xqpeqs37Ql9oSU6Xqpeqs37Ql9oSU6Xqpeqs37Ql9oSU6Xqpeqs37Ql9oSU6Xqpeqs37Ql9oSpTpeql6
+ qzfXS9dKlOl6qXqrN9dL10qU6Xqpeqs37Ql9oSpTpeql6qzPtCX2lKlOp6qXqrL+0pfaUqVTqeqn9VZX
+ 2lN9rSpVOt6oTG1ZP2tOMqUqU6nqpeqs37Ql66VKdL1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66Xr
+ pKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd
+ 66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1U
+ vVWd66X2hJTpeql6qzPtCb7SlSnU9VL1Vl/aUvtKVKdX1U/qhZP2pN9sCVKp1/VCXqhY/wBsCf7YEqVT
+ reqm9VZf2pP9pSpVOn6qXqrM+0JfaEqU6Xqpeqs37Qn9dKlOj6qXqrO9dL7Qkp0fVS9VZ32hL7Qkp0fV
+ S9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeuk
+ p0fVS9VZ3rpvtCSnT9VL1VmfaEvtCVKdL1UvVWb9oT+ulSnR9ZL1lneul9oSU6PrJeqs77Ql66SnR9VL
+ 1Vneul66SnR9VL1VnfaEvXSpVuj6qcWrN9dMcmEqU6otS9ULIOXCb7aPFKlOx6oTeqsn7YEvtaVKp1vV
+ Teqsv7UnGSlSqdL1UvVWd66XrpKdH1kvVWd66XrpKdH1UvVWd66XrpKdH1UvVWb9oS+0JKdL1UvVWd9o
+ S9dKlOj6qXqrO9dL10qU6Pqpeqs710vXSU6Pqpess710vXSU6Pqpeqs710vXSU6PrJeqs710vXSU6Pqp
+ eqs710vXSU6Pqpeqs710vXSU6PrJess710vXSU6Pqpeqs710vXSU6Pqpeqs71032hKlOl6qXqrN+0J/X
+ SpTo+ql6qzvXS9dKlOl6qXqrM+0JfaUqVTqeqEvVCyvtSb7WlSqdf1Ql6oWR9rCX2tKlOsbU3qrLGVKk
+ MhKlOj6qXqrO9dL10KU6Xqpeqsz7Ql9oQU6fqpeqsz7Ql9oSU6fqpeqsz7Ql9oSU6fqpeqsz7Ql9oSU6
+ fqpeqsz7Ql9oSU6fqpeqsz7Ql9oSU6fqpeqsz7Ql9oSU6Xqpeqs77Ql66SnR9VL1Vneul66SnR9VL1Vn
+ eul9oSU6Pqpeqs77Ql9oSU6Xqpeqs37Ql9oSU6Xqpeqs37Ql9oSU6Xqpeqs37Ql9oSU6Xqpeqs37Ql9o
+ SU6Pqp/VWZ9oS+0J1KdP1U/qrK+0pfakqU6vqhP6oWR9rS+2BKlU6/qhN6qyftgSGXKVKp1Tam9VZoyU
+ vtCVKdL1UvVWb9oS+0JUp0vVS9VZ3rpeulSnR9VL1Vneul66VKdH1UvVWd66X2hJTo+ql6qzvtCXrpKd
+ H1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66XrpKdH1UvVWd66X
+ rpKdL1UvVWb66f10qU6Hqpeqs/10vXSU6Hqp/VWd66b7Qkp0vVTeqs710/rpKdD1UvVVD1kvWSU3/VS9
+ VZ/rpeulSnRFqkLVlnIhROXCVKdf1Qm9ULI+2DxS+2BKlOv6qb1Vlfa0/wBqSpVOp6qb1VmfaU/2hKlU
+ 6Pqpeqs/10vXSU6Hqpeqs/10vXSU6Pqpeqs310vXSVbpeql6qzftCX2hJTpeql6qzftCX2hKlOj6qXqr
+ O9dL10qU6Pqpeqs710vXSpTo+ql6qzvXS9dKlOj6qXqrO9dL10qU6Pqpeqs710vXSpTo+ql6qzvXS9dK
+ lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrO9dL10lOj6qXqrN+0JfaElOl6qXqrN+0JfaElOl6qf1V
+ mfaEvtCSnT9VP6qy/tKb7SkqnV9UJeqsr7Ul9qSpVOr6qXqrJ+1p/tSVKdT1U3qrNGQn9dKlOj6qf1Vm
+ +ul66SnS9VL1Vm/aEvtCSnS9VL1Vm/aEvtCSnS9VL1Vm/aEvtCSnS9VL1Vm/aEvtCSnS9VL1Vm/aEvtC
+ SnS9VL1Vm/aEvtCSnS9VN6qzvtCX2hJTo+ql6qzvtCX2hJTo+ql6qzvtCX2hJTo+ql6qzvtCX2hJTo+q
+ l6qzvtCX2hJTo+ql6qzvtCX2hJTo+ql6qzvtCX2hJTo+ql6qzvtCX2hJTo+ql6qzvXS9dJTo+ql6qzvX
+ TfaEKVTqC1P6oWScqFH7YlSnY9UJjasj7YpDKlGlOn6qXqrNGQn9dKlOj6qXqrO9dL10qU6Pqpeqs710
+ 32hKlOl6qXqrN+0Jeukp0vVT+qs310/rpUp0fVS9VZ3rpvtCCnS9VL1Vm/aEvtCSnS9VL1Vneul66KnR
+ 9VL1Vneul66FKdH1UvVWd66Xro0p0fVT+qs310xyEqU6gtT+qFknKhN9rQpTrG1RNqyvtaf7TKNKdT1U
+ 3qrN+0JfaEqU6fqpeqsz7Ql9oSU6fqpeqsz7Ql9oQU6fqpeqsz7Ql9oSU6fqpeqsz7Ql9oRpTp+qm9VZ
+ v2hL7QlSnS9VL1lm+ul66VKdL1U/qrN9dN66CnT9VL1VmfaEvtCSnT9VL1VmfaEvtCVKdL1U/qrM+0Jf
+ aEaU6nqpeqsr7Sm+1pUp1/WCb1Vk/a0vtaVKdX1U3qrMGTKf10qU6XrJeqs7103rpUp0vVT+qsz7Ql9o
+ SpTp+ql6qzPtCX2hKlOn6qXqrM+0JfaElOn6qXqrM+0JfaEFOn6qXqrM+0JfaElOn6qXqrM+0JfaElOn
+ 6qXqrM+0JfaEaU6fqpvWWb9oS9dKlOl6yXqrO9dL10qU6Xqp/VWX9oUTlJUp1/VCXqhZH2tL7WlSnW9V
+ N6qyxlJ/tCVKdL1UvVWb66X2hKlOn6qXqrM+0JfaEqU6fqpeqsz7Ql9oQpTp+ql6qzPtCX2hGlOl6qXq
+ rN+0JfaEqU6Xqpeqs37Ql9oSpTp+qm9VZn2hP9oSpTpeql6qzfXS+0JUp0vWT+qsz7Qm+0JUp0/VS9ZZ
+ n2hP9oSpTp+ql6qy/tCY5SVKdb1UvVWR9rS+2JUp1/WTeqsoZaf7SlSnT9ZP6qzPtCb7QlSnT9VL1Vm/
+ aEvXSpTpeql6qzfXS+0JUp0/VS9VZf2hL7QlSnT9VL1Vm/aEvXSpTpeql6qzfXS+0JUp0/VS9VZn2hL7
+ Qkp0vVS9VZ3rpeukp0vVS9VZn2hL7QlSnT9VN6qzftCf10qU6Pqp/VWb66Y5CVKdQWp/VWScqE32xKlO
+ v6qb1Vk/a04yZSpTqeqm9VZv2hP66VKdH1UvVWd66XrpUp0fVS9VZ3rpeukp0fWS9ZZ3rpeukp0fWS9Z
+ Z3rpeukp0fWS9ZZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeulSnR9VL1Vneul66VKd
+ H1U/qrN9dL7QlSnS9VP6qy/tKb7UlSnW9UJvVCyftaf7UlSnU9VN6qzRkp/XSpTo+qn9VZvrpeulSnS9
+ VL1VmfaEvtCVKdP1UvVWZ9oS+0JUp0vVS9VZv2hP66SnR9VL1Vneul9oSU6Pqpeqs77Ql9oSU6Pqpeqs
+ 77Ql9oSU6Pqpeqs77Ql9oSU6Pqpeqs77Ql9oSU6Pqpeqs710vXSU6Xqpxasv7Ql9pSpTq+ql6oWSctN9
+ sS4VOv6oTG1ZIy1IZMpcKnT9VL1Vneul66VKdH1UvVWb66XrpUp0vVS9VZvrpeukp0vVS9VZvrpfaElO
+ l6qXqrN+0JfaElOl6qXqrN+0JfaElOl6qXqrN+0JfaElOl6qXqrN+0JfaElOl6qXqrN+0JfaElOl6qXq
+ rN+0JeulSnS9VP6qzPtCY5KVKdX1UvVCyftab7Ylwqdf1U3qrK+1p/tKXCp0/VS9VZv2hL7QlSnS9VL1
+ Vm+ul66SnS9VL1Vm+ul66SnS9VL1Vm+ul66SnS9VL1Vm+ul66SnS9VL1Vm+ul66SnS9VL1Vm+ul66SnS
+ 9VL1Vm+ul9oSU6Xqpeqs37Ql9oSpTpeql6qzfXS9dKlOl6qXqrN9dL10qU6Xqp/VWZ9oTHKhKlOr6qXq
+ rI+1pxloUp1Dam9VZoyZUvXRpToeqn9VZ3rpvXSpTpeql6qzftCb7QlSnT9VL1VmfaE/2hClOl6qXqrN
+ +0JfaEqU6Xqpeqs37Ql9oRpTpeql6qzftCX2hKlOl6qXqrN+0JfaEqU6Xqpeqs37Ql9oSpTpeql6qzft
+ CX2hKlOl6qXqrN+0JfaEqU6Xqpxasz7QonKSpTreqEvVCyPtaX2tClOt6qb1VljKT/aUaU6fqpeqs37Q
+ l66VKdL1UvVWb9oS+0JUp0vVS9VZv2hL7QlSnS9VL1Vm/aEvtCVKdL1UvVWb66f10KU6Pqpeqs7103rp
+ Up0vVS9VZv2hL7QlSnS9VL1Vm/aEvXRpTpeqm9VZ3rp/XSpToeql6qz/AF0vXSpTo+ql6qzfXTfaUqU6
+ nqp/VCyTlQm+2BClOv6oTeqsn7WnGUjSnU9VL1VmfaUvtCVKdP1UvVWb9oS+0JUp0vVS9VZv2hL7QlSn
+ S9VL1Vm/aEvtCVKdL1UvVWb66XrpUp0vVS9VZvrpeulSnS9VL1Vm+ul66VKdH1UvVWd66XrpKdH1UvVW
+ d66XrpKdH1UvVWb66XrpUp0vVS9VZv2hL7QlSnT9VP6qyvtKb7WlSnX9UJvVCyPtif7WlSnV9VL1Vl/a
+ k/2hKlOl6qXqrN+0JfaEqU6Xqpeqs310/rpUp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0
+ fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeukp0fVS9VZ3rpeulSnR9VP6qzPXS9dJTpeql6qzfXS
+ 9dBTo+ql6qzfXS9dFTpeql6qzfXS9dJTpeql6qzfXS9dBTpeqn9VZnrp/XSU6Xqpeqs310vXSU6fqpeq
+ sz10vtCSnT9VL1Vm/aE4vSU6XqqQtWX9oT/aUlOqLAn9RZX2oKQyggp1N6beqDciUVtkpKbO5PuQgZUg
+ kpJKUqKdJTKUpUU4QUunTQnhAqUknSQUsknSSUsknSSUsknSSUsknTJKUmTpJKWSTpkFKSSSSUuFJRTp
+ KXTJ0ySlQoOCIoOSU1bAq5VmxVykpkxWmKqxWmJKSpJJJKXCdRCkkpSZOmSUpJJJJSkkkklKSSSSUpJJ
+ JJSk6ZOkpSSSSSlJJJJKWSSSSUpJJJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Yaq9asNSUukkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSn//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkydMgpdJJJJS6SSSSlJJJIqWSSSSUpJJJFSkkkklKUgoqQSUxcq9isOVexJTWckxJyTElNqtH
+ CBWjhBTJMnTJKUmTpklLp0ydBSkxTpikpZMnTJKUkkkipdJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySl
+ wkUgkUlIrFVerViqvSUwCOxACOxJTYaphQaphJS6SSSSlJk6SSlkydJJSydJJJSkkkklKTpkklLpkkkV
+ KTpkklKSSSQUpMnSSUsnSSSUpJJJBSk8JJ0FMUykVEpJUnUU4KKmYCUJAqQSUjcEJwVghBeE4JalphZ2
+ RbtWheFj5ZTqU078uFW+2meVVyXGVVaSSnUqncqySVabYSsvFaStaqkkI0qlF5UC8qyaCoGgooKDeUt5
+ RvQKXoFFCHeUt5R/QKXoFJSDeUt5R/QKXoFJSDeUt5R/QKXoFJSDeUt5R/QKXoFJSDeUt5RvQKXoFJSH
+ eUt5RvQKXoFJSHeUt5RvQKXoFJSHeUt5RvQKXoFJSHeUt5RvQKXoFJCHeUt5RvQKXoFJSHeUt5RvQKXo
+ FJSHeUt5RvQKXoFJSHeU+8o3oFL0CgpBvKYvKP6BTHHKcFIN5S9Qo3oFMaCpAApA60hV35BCPbWQs28E
+ I8K+LN2YQojN81m2vIQw8ocLKIu2zLJR2ZBKxankrQpBKHCtIdAWkqXqFDrrJRxSUqYyxDypB5UxQVMU
+ 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
+ SSSSSlJJJJKXTJJJKUkkkkpdOmTpKWKBYjlAsSU1Hpmp3pmpKbNasNVetWGpKXSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJT/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ
+ 0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipBJTFyr2Kw5V7ElNZyTEnJMSU2q0cIFaOEFMky
+ dMkpSZOmSUunTJ0FKTFOmKSlkydMkpSSSSKl0kkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKXCRSCRSUis
+ VV6tWKq9JTAI7EAI7ElNhqmFBqmElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJ
+ SkkkkFKSSSSUpJJJBS6dMFJBSxCiQpqJCSWBTSpFRKSmQKmCgypgohKQlQcFKVFyeFNO8LFzAtq8rGzC
+ nBLg5DNUGqqSj3nVNRynKdTColbtGNos7AbwuhoYIStTX+zKBxlploQyE0FaWh9mS+zK9CUI2ho/Zkvs
+ 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
+ ZX9qW1K0NH7Ml9mV7altQtDQ+zJ/syvbUtqVoaP2ZL7Mr21LaErQ0fsyX2ZXtoS2hJTR+zJfZle2hLak
+ pofZkvsyv7UtqNpaP2ZOMZXQ1SDULS0RipzjK+GhItQ4lzkW46zMimF0Fw0WRkqRLiW1IAZqrl51VXdq
+ kptY7VtYoWNQVs4pQKnWq4R1XqOiPKYVMSopymQQpOEoTwghSdNCdBCkySSClJk6ZJSkkkklKTpk6SlJ
+ JJJKUmTpklKSSSSUpJJJJSkydMkpSdJJJS6i5SUXJKa1irlWLFXKSmbFaYqrFaYkpMEkgkkpZJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0ydJSxQLEcoFiSmo9M1O9M1J
+ TZrVhqr1qw1JS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipBJTFy
+ r2Kw5V7ElNZyTEnJMSU2q0cIFaOEFMkydMkpSZOmSUunTJ0FKTFOmKSlkydMkpSSSSKl0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpMnTJKXCRSCRSUisVV6tWKq9JTAI7EAI7ElNhqmFBqmElLpJJJKUkkkkpZJJJJSk
+ kkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkkFKSSSSUpJJJBS4TyopSgpnKYlRlKUkqKiQpJQkpHCkE
+ 8JwEQlkFF6JCg9PCmhesTMK28hYeYE4JcO86pY51TXjVNRynKel6eeF0dB0XMYDuF0WO/RNKm4UIqe5Q
+ JQC0rJJSlKKFJJSlKSlJJSlKSlJJSlKSlJJSlKSlJJSlKSlJJSlKSlJJSlKSlJJSlKSlJJSlKSFJJSlK
+ SlJJSlKSlJJSlKSlJ00pSkpSYp5TpKRKD0eEN4RtDm5PCwczut/J4WBmd0rXxcHJ5VPuruSNVTjVK2cN
+ 3G5W9hLBxhqt7CSsrZO/jDRaLAs/GOi0qyIQtiK5CYhEUShaEYCIAoypgpIXhMQpSFElBTApJ5SlFCkk
+ pSlJSkkpSlBS6SUpSkvCkkpSlJepJKUpSYpqTJSlKDCunTAp5RXhgVAlTJUCkvUCiBQCmCmkqZhJKUxc
+ m2pRKjKRco7k4FYWSkAhhym1ychJCqZHCtbgqeS7RGK8PP555XN5TtV0WeeVzmVypQvDS3aqzUVWjVWK
+ gnWzBv0lamMsylamMha4uxjLTqCzcYrSrKjkWIpwExThyYuUZYypJNuSlNtjKkxSlKUrQGJTKUpJwLPF
+ ZOknlFJWSSlKUWMqSSlKUkBSSUpSgvCkkpSlJKkkpSlJapJKUpSUpJKUpSXKSSlKUkFeEoSlKUrYysUM
+ opKiUUIwiBMAiAJLwieNFm5QWq/hZmUiCyxcHKWVatbKWVanW2A1XlBPKM9CjVG1k2xj8roMEcLDxm6r
+ oMEcJW1C7uMNFeA0VTG4V0FRyKQwKZScVGUkrJJ5SlJSySeUpSUsknlKUlLJJ5SlJSySeUpSUsknlKUl
+ LJJ5SlJSySeUpSUsknlKUlLJJ5SlJSySeUpSUsknlKUlLJJ5SlJSySeUpSUsmKmmhJBRuVO9XnKlenWt
+ DhZi5/LXQZhXP5aNtmDmu5RqDqgu5RqOU22Z3cLsuixFzuF2XRYhSthm6dY0U4UazoiSgwFiknSlJYuE
+ 8JgU8oWpUJlKU0oWvCySeUpStcsknlKQlawrJJ5CUhK1LJJ5CUpWuCySeQlIStRWSTyEpStYVk4SlOCE
+ rQvCYhSlMSiuRFMFIpgipkFNRBUpTCUqKgVMlDLkLQVk4UNykHI2sKRqIENrkQFFMWNg0WFn91uWO0WF
+ nnlOC95bO5KxnnVbObysh41UgK8Mqlo0KjUFo0BG2YOpjBbWMFj4y2cYppKC6VQ0RwEKoiEaQoyWIsHB
+ DIRHEIZKFsZUklKUoWxlcJ0wKeUQuiolRJTkqJKezBaU4KaU4KBQWQTpgU8pqxSSUpSkkKSSlKUlykkp
+ SlJaVJJSlKFrVJJSlKNpCkkpSlK1ykkpSlK0FdKEgU8pLWBUUQqCKQyancnanckvDm5XCwctdBlcLAyw
+ nAs8XGuVYq1cFWITrZUJRauVAhFpGqNtbI7GEF0eINFz+EF0WJwgS13RYNE5SadEnFRpYJJSlKKlJJSl
+ KSlJJSlKVpUklKUoKUklKUpJUklKUpKUklKUpKUnSlKUlKSSkJSglSSUpSihSSUpSkpSSUpSkpSSUpSi
+ pSSUpSkpSZPKUpIYFCcjlDcE4FBaVyyspa9yycpOtdFwsrusm06rWylk3cpW24MGcrXw+QsmsarXw+yF
+ pk9HhLaqGixsIrapOiFtaSaFAhElRKaxlEU4TlMCktZhSUQU8pJCkkpSlBkCkkpSlBRUklKUpLVJJSlK
+ SgpJKUpSXqSSlKUkFSSUppSWLp00pwUlBSaFKUk5cwUgklKaVLhOmlPKbaliFFSJUSUrWlSSjuThycCs
+ StSeNEmuScdEVwcnOGhXKZ/JXWZp0K5XP5KkC8PP3HVKop7hqlUE62WLoUFauOsugLVxkrXuvjBatIWV
+ jFatLkwlZJuMCkQotcFIuCjLEWJUCpFygXIWxlSkFGU4KFrF1EqUqJKcGWLElNKclMnMi4UgogqQKaVp
+ XhJKUpTbWrJJ5SlK1wWSSlKUrSpMnlKUrWFZOlKUo2hSSUpSla4KSSlKUUqhPCUpAo2tKoTFTlRKKERT
+ hOUgnLguVWv4VtVr+EAWWLhZaxr+Vt5axL+VIGeLUcUJxRXIRTky2UzlaOKs9g1WliBFpTd7DHC2Khos
+ nD7LYqOijktCRMVKVElRpWSTymlJKkkpSlJSkkpSlJSkkpSlJSkkpSlJSkkpSlJKkkpSlJSkkpSlJSkk
+ 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
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1OvS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkk
+ kpSSSSKlkkkklKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dM
+ nQUpMU6YpKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjs
+ QAjsSU2GqYUGqYSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSQUpJJJJSk
+ kk6CmKZShMQgpjKQKYpBJLMKYCg1ECSlQkApJkQlcoTypkoLynhTUvKxcwLYvKycoSnBLgXjVDq0KtXs
+ 1QWMgoqdbCfC3aLoC5zHMLUqtgJw1U7IvTG9ZnrqBvTxBaXV9dL7Qsr10vXR9tDq+ul66yvXS9dL21Or
+ 66XrrK9dL10vbU6vrpeusr10vXS9tTq+ul66yvXS9dL21Or66XrrK9dL10vbU6vrpeusr10vXS9tTq+u
+ l66yvXS9dL21Or66XrrK9dL10vbQ6vrpeusr10vXS9tTq+ul66yvXS9dL21Or66XrrK9dL10vbU6vrpe
+ usr10vXS9tTq+um9dZXrpeul7anWF6mLwscXqQyEPbU6/rhCsvCzftCG/IS4EJcm5YeXZKtXWysy8ylw
+ L4ude5VZ1Vm1pKD6ZS4GcNjHctrEshYtTSFo0EhLgWSelxr9Fo13rnKbYV1mQlwMRdr1wmN6yftCRyEO
+ BTp+unGQsg3pfaEeBDs/aE32hY/2hP8AaEvbU63rpeusn7Ql66XAp1vXS9dZPrpeul7aHW9dL11k+ul6
+ 6Xtqdb10vtCyfXS+0Ie2vi632hL7Qsn7Ql9oS9tkdb10vXWT66Xrpe2wzdb10vXWT66Xrpe2xOuL0/rr
+ I+0J/tCXtrw6pvUfWWb66Xro+2udMXJxesv1kvXTDjU6vrpjkLKOQom9N9tTqG9N66y/XS9ZH21hdT10
+ 4yFk+snF6cIIdc5Cq336Kkb0C26QpBBcGtmWzKwsh0laeS6VlXNlP4GQNadUetyDsRWNS4GYN6l608ex
+ ZFavUuhDgSXex7loV3rBqshWm3KMwYy7H2hMchZRvUTemcDGXX+0J/tCx/XT+uh7bGXX9dL11k+ul66X
+ toDreul66yvXT+unDGzRdT10vXWV66b7Qne2uLreum9dZP2hL10vbYy63rpeusn10vtCXtoDreul66yf
+ tCX2hD214db10vXWT9oS+0Je2l1vXS9dZP2hL7Qh7a0ut66XrrJ+0JfaEvbUHW9dL11k/aEvtCXAudb1
+ 0vXWT9oTeulwILrfaE4yFkeul9oS4GMux66f1wsgZCcZCPAh1xcFIXhZAyE/2lL21wdOy8Qs3JulCfkK
+ lddKIxs0Wvk2Ssy16tXOlUbBKdwNgIXOUQdU5aUwYjwLJtzHdqtzDsiFg0iFp474S4GoXpqL4Cti9YNV
+ 8I4yE041B1Teo+uso5Cb7Qh7aXW9dL11k/aEvtCPtqdb10vXWT9oS+0Je2p1vXS9dZP2hL7Ql7anW9dL
+ 11k/aEvtCXtqdb10vXWT9oS+0Je2p1vXS9dZP2hL7Ql7anW9dL11k/aEvtCXtqdb10vXWT9oS+0Je2p1
+ vXS9dZP2hL7Ql7anW9dL11k/aEvtCXtqdb10vXWT9oS+0Je2p1vXS9dZP2hL7Ql7anW9dL11k/aEvtCX
+ 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
+ hLgU9NXkaKZyFisyFI5CXAp1vtCX2hZHrp/XQ4FOv66b11k+ul66XAh1vXT+usj10/rpcCHW9dP66yPX
+ T+uhwIdb10/rrJ9dL10uBTq+ul66yvXSN6XAh1PtCb7Qso3qPrpe2l1/tCXrrKF6kLkvbS6nrKQvCyfX
+ SGQj7a0uwbwq91+iofaUKy+URjQEWXZKwcp0rSvfKyrxKPAzRc951RaDqoOZqp1Ngo8C4u3hvhb2Ndou
+ ZxjC1qbYQ9tjLvsvU/XCx23qX2hL21rqm9RN6yzeo+uhwLXV9dL11leul66HAoOr66XrrK9dL10PbXh1
+ fXS9dZXrpeuh7aS6vrpeusr10vXR9tjLq+ul66yvXS9dLgQHV9dL11leul66PtsodX10vXWV66f10uBL
+ q+ul9oWV66XrpcKHV9dL11leul66XCtdX7Ql9oWV66XrocKnV+0JfaFleul66XCh1ftCX2hZXrpeulwq
+ dX7Ql66yvXS9dLhU6vrpeusr10vXS4Uur66b7Qss3qJvR4UuuMhP9oWMLypi8pcKXQtv0WVk2ypPu0VC
+ 98o8KWtc/VAB1T2FQbyhSXQxytnFWJjrZxUCFOvUdEaVXqOiNKYQpYpwmUgE0hCoTEKcJQhSEakE8JQh
+ SFJ0ySClJk6ZJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkydMkpdJJJJS6i5SUXJKa1irlWLFXKS
+ mbFaYqrFaYkpMEkgkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lLp0ydJSxQLEcoFiSmo9M1O9M1JTZrVhqr1qw1JS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1evSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkkkpSSSSKl
+ kkkklKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dMnQUpMU6Y
+ pKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjsQAjsSU2G
+ qYUGqYSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSQUpJJJJSkgkkEFMoT
+ EJwkUFIyFFTKiklk1ECGFMFJTNRJSlRKcEsXFBeUVyC4JwU1rdVn3slab2qtZVKclwrqkAVarZfRKD9m
+ RU1KmQrTVNtEIoqT4qQklRMqz6KXoqzEhaWrqlqrXopegnWENXVLVWvQS9BKwpq6paq16CXoJWFNXVLV
+ WvQS9BKwpq6paq16CXoJWFNXVLVWvRS9FCwpq6paq16KXopWFNXVLVWvRS9FKwpq6paq16KXoJWFNXVL
+ VWvRS9FGwhq6paq16KXopWFNXVLVWvRS9FKwpq6paq16KXopWFNXVLVWvQS9FKwpq6pSVaNKiaELCmqX
+ FRJJVr0Cm9BNsLWi9pKA+glawx1IYqVhfFwHYhKj9jK6L7In+x+SVhnDz7cQhWGUELY+yJvsyVhbJz2s
+ IRRKt/Z03oI2GJryUpKsegn9BKwhq6paq16CXoJWFNXVPqrPoJeilYU1tUtVZ9FL0UrCmtqm1Vr0U3op
+ WFNbVLVWfRS9FGwhrapaqz6KXooWGSLW1S1Vn0UvRSsMjW1S1Vn0UvRSsMMmtqlqrPopeilYYWtJTglH
+ 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
+ rXoJeijYS1dUoKteil6KVhLTLShurJWj6CX2dGwlxn0EoBxit84yicRKwpxG0EKyxhC0Psqb7PCVhTXE
+ p9VY9BOKUrCmtqn1Vn0E/oJWFNXVLVWvRTeihYQ1tUtVZ9FL0UrCGvqn1Vj0U/opWENbVPqrHopeihYU
+ 19U2qs+il6KVhTV1TgFWfRTilKwprgFSgqyKUjSlYS0ySoElW3UoZpRsLSg3FMZKOKVIUo2EBoPYSq1m
+ OStn7OkcVGwzReeOKnbjELeOIkMRGwuLl1UkK2xpCuDGhP6CVhjLV1SkqyaU3ooWFjX1TwVYFKkKULCG
+ rBSgq36KXooWFBqQUoKt+il6KFheGpBTwVa9FL0UrCi1IKUFW/RS9FKwxlqQUoKt+il6KNhQakFKCrfo
+ peilYZQ1IKUFW/RS9FK0tWClqrXopeim2tauqWqteil6KCGrqlqrXopeigpq6paq16KXopIauqWqteil
+ 6KSmrqlqrXopeikpq6paq16KXopJapBUSCrnopegilpgFTAKtChSFKKWk5pVayslaxpQX0IJcV9RTMp1
+ Wq7HTDHQShorWrjthAqphX6WQmkqbVY0RQosCnCjJUsphRUgghkE6ilKahdMlKSBQskkkmqUmTpklKSS
+ SSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKTJ0ySl0kkklLqLlJRckprWKuVYsVcpKZsVpiqsVpiSkwSSC
+ SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lLFAsRygWJ
+ Kaj0zU70zUlNmtWGqvWrDUlLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1uvSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkkkpSSSSKlkkkklKSSSRUpJJJJ
+ SlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dMnQUpMU6YpKWTJ0ySlJJJIqXS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjsQAjsSU2GqYUGqYSUukkkkpSS
+ SSSlkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSQUpJJJJSkkkkFLylKjKUoKUVFSShJKwUw
+ U0JJKZJFME6ISwIUC1GhMQnhTXLFA1SrJCaE5LUNEqBxlfDU+xJTn/Z04oV7YEtoRtTS9BP6CubE+xO4
+ 1paXoJegruxLYjxoaXoJegruxLYlxlTS9BL0Fd2JbEuMqaXoJegruxLYlxlTS9BL0Fd2JbEuMqaXoJeg
+ ruxLYlxlTS9BL0Fd2JbEuMqaXoJegruxLYlxlTS9BL0Fd2JbEuMqaXoJvQV7YlsS40NH0EvQV7YlsS41
+ NH0EvQV7YlsS41NH0E/oK7sS2Jcaml6CXoK7sS2Jcaml6CX2dXQxSDAgZqc/7Ml9mWjsCYsCHGtLn+gp
+ ChXSxNtR418WqKU/pBWYTQlxFmBa5qUTSrUJbUuJBaZoTegru1OGJcbEWj6Cf0Fe2JbQlxoaPoJvQV7a
+ m2Jcamj6Cf0Fd2J9iXGpo+gl6Cv7EtiXGpoegm9BX9iWxLjU0PQS9BXtiWxLjU0PQS9BX9iWxLjXxaHo
+ J/QV3Yn2JcbI0fQS9BXtiWxLjYptH0EvQV7Yn2JcbC55oS9BX9iWxHjXhoihTFCuBifYlxlc0jSoGlXy
+ 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
+ BL0Ff2JtiXGhoeikKldNab00uNIaoqT+irQYnDUuMpaZoUDjrR2JbAjxrS5v2dOKFoGsJtidxoDSFKl6
+ KtbU+1LjZotT0U3oK5tS2pca4tP0UxpV3am2JcbGWkaE3oK/sT7EuNa0BQpeiruxLYhxrWl6KXoq5sT7
+ EONTS9FL0Vd2JbEONeGl6KXoq7sS2Jcai0vRS9FXNiWxLjYy0/RS9FXNiWxHjUGn6KXoq5sT7EuNlDS9
+ FL0Vc2JbEeNLT9FN6KubEtiXEhp+in9FW9iWxLiWtT0UvRVvYn2JcSmn6KXoq3sS2IcSGp6KXoq5sS2J
+ cSmn6KXoq5sTbEuJTT9FL0Vc2JbEuJLT9FP6KubEtiPElp+kn9JW9iYtS4ktU1KBpVzalsS4ktA0KPoL
+ RNaia0OJLUbVCsMZCmGKbQmmSl2hShOAkm2pikE8JJpKFJSkmQ4kLpJk4StCkkkkVKTJ0ySlJJJJKUnT
+ J0lKSSSSUpMnTJKUkkkkpSSSSSlJk6ZJS6SSSSl1FykouSU1rFXKsWKuUlM2K0xVWK0xJSYJJBJJSySS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SligWI5QLElNR6Zq
+ d6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkkkpSSSSKlkkkklKSSSRUpJJJJSlIK
+ KkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dMnQUpMU6YpKWTJ0ySlJJJIqXSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjsQAjsSU2GqYUGqYSUukkkkpSSSSSl
+ kkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSQUpJJJJSkk6ZBTEpBIpggpmApwogqQKSViFFS
+ KiUlKlSlQlOCiEskxKSYp4UxJTApyEwCcEswVKVEBSASUsSmlShKElLSnlKEoSWlSSdKEELJJ4ShJSyS
+ eEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJJ0klLJJ0ySlJSkkihUpSkkkpUpSkkkpUpJJJKUkkkkpU
+ p5TJQgpfcm3JQmhFavKSZOEl8VFMnKZJlWTpJJKKpTymTpMRVKYlPCaElLSnBTQnASQuE6ZOgpeUpSSS
+ UpMnSSUsmUkySlkk6SS8MUk8JQkvUknhPCTHJZJPCUIMKyUpJIrwqUpSTIr1iU0qRCaECEKCkEwCkE2k
+ LgJ4SCdJaWJCiQiJQlS2kO1KEUhNCIXBhCdSTFFkDAqBRCokIhlDBSCUJwEU2yCdMFJMIWFSQCdOEKYy
+ oJinSKVMZYFRlSKjCNLQuCnlNCdFnisSmlPCaEVxVKSSSTGVJJ0kkBZJOkgvCySdJKkrJJ4ShKliySeE
+ oSpSySeEkKXLJJ4TgJUosU4UoShJjK0qJcpEKBCNIW3KYchQptSpcEsqDlIJnJMsUDkymQmhOpltcBSC
+ YKYCSySydPCSDAVkk6SSgskkkklSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKXBUtyikghfcmJTJJKWKiVOExCLNFEUgpwlCLJa7VMFRCeUGOSiVCVI
+ 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
+ hYynlKE8JLVJJ0kFqySdJBSySdJKl4WSTwklSSsknhKEqYisknhKElBZJPCSTKFkylCZFLFJOkihZJOk
+ khSSSSSFJJJ0kLJJ0klLJJ0klMUk6SSVJ0k4QSsQokIsKJCVrkakAnhOAkpeFEhTSKCkRCUKaUJJWSTw
+ kQghimTpJpCmKSdKEKQxThPCSQQpJJJOUpMnTJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKUmTpkl
+ LpJJJKXUXKSi5JTWsVcqxYq5SUzYrTFVYrTElJgkkEklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpdOmTpKWKBYjlAsSU1Hpmp3pmpKbNasNVetWGpKXSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJT/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKTJ0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipBJTFyr2Kw5V7ElNZyTEnJMSU2q0cIFaOE
+ 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
+ CX2gLnftx8UvtyVJei+0BSGQFzf24p/tx8UuFc9J9oCX2gLnPt58UvtxQ4UvRfaAkMgLnvt3mm+3+aPC
+ l6P7QEvXC50Z/miNzZ7pcKXfFoKIHysSvKlXarpTSEOjKYlBa+VOU2kLkpkxKSNKXSTSlKaQhdMlKSCF
+ JJJIKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSZOmSUukkkkpdRcpKLklNaxVyrFirlJTNi
+ tMVVitMSUmCSQSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0
+ 6ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0yCl0kkklLpJJJKUkkkipZJJ
+ JJSkkkkVKSSSSUpSCipBJTFyr2Kw5V7ElNZyTEnJMSU2q0cIFaOEFMkydMkpSZOmSUunTJ0FKTFOmKSl
+ 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
+ 5b37P8lE9P8AJG0uEQ5QJcFtvwY7KrbiQklynWkKBvKPfTCpObqjamw24lFaXFBoqla+NibklNMNcn2u
+ W2zA8lI9P8kLU4e1yW1y2vsHkn+weSSnD2uS2uW59g8k32DySQ4e1yW1y3PsHkn+weSVocPY5OGOW39g
+ 8k/2DyQtDibHJ9jlt/YPJP8AYPJK1OHtcmLHLd+weSb7B5JWhwSxybY5bxwPJRPT/JK0hw9rktrlufs/
+ yS+weSFpcPa5Psctz9n+ScdP8kbWlw9jkxDgt49P8kCzCjsnAoDiOe4IDriFpX40LMuqhG2aKM5BTtvJ
+ VdzdUStkori22WEowLimoolaVWJKDGWhDktrlstwfJT+weSVrXE2uT7XLb+weSb7B5IWtcXa5La5bX2D
+ yS+weSFqDi7XJbXLa+weSX2DyQteHF2uS2uW19g8kvsHkhaS4u1yW1y2vsHkl9g8kbYi4u1yW1y2vsPk
+ l9h8krUHF2uS2uW19h8kvsPkiyhxdrktrltfYfJL7B5JWlxNrktrltfYPJL7B5I8SHF2uS2uW19g8kvs
+ HkhxLXF2uS2uW19g8kvsHklxKcXa5La5bX2DyS+weSHEhxdrktrltfYPJL7B5JcSnF2uS2uW19g8kvsH
+ klxKcXa5La5bX2DyS+weSXElxdrktrlt/YPJL7B5I8SXF2uS2uW39g8kjgeSXElwzuQy4hbNmFCpW40J
+ cS5o+qQiMtKZ9UKLWwUOJTpUWlauO8lY2OFsYwQMlOnUUcIVTdFYATeJTBJSITJpkhZMpJoTeJDFOkkl
+ aF0kkkVKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKXSSSSUuouUlFySmtYq5VixVykp
+ mxWmKqxWmJKTBJIJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ S6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0uvSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTIKXSSSSUukkkkpSSSSKl
+ kkkklKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QUyTJ0ySlJk6ZJS6dMnQUpMU6Y
+ pKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJSKxVXq1Yqr0lMAjsQAjsSU2G
+ qYUGqYSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSQUpJJJJS6ZJJBTEpJ
+ 4ShBSykCmhJJLMFKVGUpSUuSop0gEQliQhPCsEKDmp4U51zVk5QW3c1Y2YE4JcS46pUwSoZB1TUO1TlP
+ Q4TAVv0UiFg9PdwujxzogVM/RCiaQjyokplrSi9EJeiETclKKEfohL0QiSlKSkfohL0QiSlKSkfohL0Q
+ iSlKSkfohL0QiSlKSkfohL0QiSlKSkfohL0QiSluSUj9EJeiETclKSkfohL0QiSluSUj9EJeiETclKSE
+ fohL0QiSlKSkfohL0QiSlKSkfohL0QiSlKSkfohL0QibktySkfohI1BE3Ji5JSE1BCfUFZlDeU8EqcvI
+ qCw8tgC6HJ4WBmnlSrouHfoVWB1Rsk6qoHapM4dHHAK2sRgKw8Z2q3sMoLZOzj1BaDKQqeMdFoMKZJiU
+ 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
+ VvqEK8SqmQ7RGJZYuJlsAWLeAtnMcsW86qUM8Wm8ILgjOQ3BPTJiwarTxGhZrOVpYhSaU3oMOsGFsVVC
+ FkYbuFs1O0UUloZ+iE3ohF3KO5RWVyP0Ql6IRNyW5HVSP0Ql6IRNyW5LVSP0Ql6IRNyW5LVSP0Ql6IRN
+ yW5LVSP0Ql6IRNyW5LVSP0Ql6IRNyW5LVKP0Ql6IRNyW5LVSP0Ql6IRNyW5LVSP0Ql6IRNyW5LVSP0Ql
+ 6IRNyW5LVSP0Ql6IRNyW5LVSP0Ql6IRNyW5LVSP0Ql6IRNyW5LVSP0Ql6IRNyW5LVTD0Qkagp7kiUtVw
+ QuqCq3UhXSUC06IsgcLLrAlYeQ2Cuhze657JOqKkdIErdwWAwsCk6roOnnhJD0FFQhWPSCFQdEeU0rSx
+ 9MJekE+5PuQ1QjNQUDSEeVElEKRCkKQqClKcOS1Qt6QSNQUtyYvQ1Uw9IJvSClvT7kkMPRCf0Qpgp5SS
+ j9EJvRCLKbcilh6QTioJ9yQclqlXpBMagphyRKSmpZSFm5NQWvYVm5JUgXPO5TAFnFuq1Mvusx3KcpuY
+ rRK6DErBWBinVdBiO4QWF1GVBE9IKNbkUOTDa1iKQn9EKYKlKYVIjQFE0hGJUSUFIvRCf0QibkpTkI/R
+ CXohFlKUrKkXohN6IRZTSjZSi9EJeiESUtyVlTD0Qn9EKYcn3IFCP0QkKQpbk4egpYUhSFIThymClqlC
+ +kKlkUhaTiqOQU6JU4WSwBZNzQtfLPKxr3aqYKRtAlaGMwFZrXarSxSkUu1i1ArUrpELPxCtWs6KKRSt
+ 6IUfRCMSobk3VTD0Ql6IRA5PKVlCL0Ql6IRZSlKyhF6IS9EIspSlaEXohL0QiylKVqReiEvRCLKUpWpF
+ 6IS9EIspSlakXohL0QiylKVlSIUhSFIU5T7krK4MPSCi6kIu5RcUhaXNyahCwMxgC6LKOi53OcpFOTYB
+ KNQASqtjtVZxjqkp28WsFalVIWfiLWqSUlZSEZtITNKIHJhQt6ITGkKe5MXpuqEZpCiaQiF6bcihh6IS
+ FIUw5SBSUwFIS9EIgKeUrKkJpCY1BFLkMvRFqYioKQqCbepB6Sl/SCXohSD0tyGq5h6IT+iFLcnDktVM
+ PRCi6kI8qLilZS0LqgsvIYAti86LHynJ6nHyQFRIEq3kuVLdqkpv4rAV0GHUDCwMQrpMLshanRroEIhp
+ CmzhOSmWVIfRCf0QpbktyOqGJpCiaQibk25LVCP0Ql6ARQU4StCH0Al6AR0xKVqQ+iEvRCLKbciph6IS
+ 9EIm5PKCkJpCiaAjymlJCH0ApCkIkpSikMRSFIUhPuThyGq5Y1BU8mkQr8qpknRKJS83m1gSsW1olbmc
+ eVh2nVSKXqaJWvisCyaTqtjFKSnWx6gr7KQqWOVoMcgVL+iFA0hG3JiUyygovRCXohFlKUVqL0Ql6ARZ
+ SlBSL0Al6ARZSlJCL0Al6IRZSlJKL0Ql6IRZSlFSL0Ql6IRJTyklF6IS9EIkpSklgKQiCkJtymHIG1MT
+ UFXtpCtFyBa5IKcjJqCw8pgC6DJPKwstPCnLI1V3FaJVJx1VzFOqSHocOsFa1dQhZOE5bFT9ECpkaQom
+ kIu5IFNShNASFAR00pWhEKQn9EKe5Lckph6IS9AIgcnlJSL0Ql6IRZSlJSP0Ql6IRJSlJSP0Ql6IRJSl
+ K1I/RCXohElKUrUj9EJvRCLKUpaqYCkKRpCkCpEoWUOfkUiFh5dYC6DIOiwswqaC4OHc0ShMAlGvOqAw
+ 6qwF7o4zAVtY1QKxsUrdxCoprS6FVARvRCerhFVWTGg9AJeiEQlNuUZQw9EJeiFLcluTVMfRCXohT3Jw
+ 5PiuDD0Qn9EKe5PKkXITQE3oBHlNKSkQoCkKQpbk29JS/ohRNIUvUS3phWlCaQoeiEclRlMWsW0hEFQS
+ DlIOTgpg6kKhk1CFoueqOS7RSRS89mMAWNa3VbeaeViWnVWoMgZUt1WziVgwsejlbmJ2Up2XOrRUFdZS
+ FXoKusKrTWFQpCY0hFBSJUNlah9EJeiESUpRsqR+iEvRCJKUpWVI/RCXohElKUrKkfohL0QiSlKVlSP0
+ Ql6IRJSlKylH6ITGkIspEpWVIDSFH0QjkppRUiFIRG0hKVNrkjamJpCq30hXiVWvOiQKnDyawFjZDQFu
+ 5R5WJklFTSgSr2M0SqE6q9inVFTv4dYK166RCysIrZrOiBKljSFA0hHLlCU0EpReiEvRCKCnlG1IxSE/
+ ohElNuQQw9EJvRCJuSlJSP0Ql6IRJSlJSP0Ql6IRNyW5LVSP0Ql6IRNyW5LVSP0Ql6IRJSlKypH6IS9E
+ IkpSlZUwFIU/RCcOTl6GqmpfUIWDmsAlb2Q/RYGa5PCnDvGqhUNVO86qNXKKnVxWAraxqgsfEW3jFBTf
+ rqCIaQo1uRdyabUgNITeiEUlKUbUjFIT+kFOUtyWqmHpBN6IU9yeUtVI/RCkKQpyluQ1Qw9EJjSFMvTb
+ 0tVMPRCXohT3JwUVMPRCf0QiApShZUj9EJeiETcm3JapYeiFF1IRdyiXIi0tSykLPyKgtSwrPyCnJcHL
+ YAsp41WvlrJfykptYrRK6PCqBhc7iHVdLgnhJTrV0iFI0hPWdFMlMJNqQ+iE/ohTlKUbKmHohN6IRZTS
+ lZQj9EJ/RCnKeUrKEfohP6IU9yW5DVDH0Ql6QU9yW5LVTD0gl6QUtyW5LVTD0Qm9AIspSlaUPohL0Qik
+ qO5JSwpCkKQkHKYKWq1gaQql9IhaBVW/hIFTgZdYCw8loC6DM7rn8sqQMsXOdyjUASqzzqj0HVFcXbxG
+ Arbx6hCxcMrexjogxluMpCmKQkwogcmm1rD0Ql6IRJTym2UIfRCXohGlKUrKgh9EJeiEaUpSXhD6IS9E
+ I0pSkoofRCXohGlKUmIofRCXohGlKUrUEPohL0QjSlKVsoQ+iEvRCNKUpWlD6AS9AI0pSgtQ+gEvQCNK
+ UpIQ+gEvQCNKUoKQ+gEvQCNKUpIQ+gEvQCNKUoKQ+gEvQCNKUpKQ+gEvQCNKUopRegE/oBElPKSUYpCY
+ 0BFBSJRS0LqRCysmsBbV50WPlFJc49wAKrjlHvdqqm7VBToUFbGMVh45W1ilAqdirhGlV6jojEppUsSm
+ lRJTSmlDOU0qKdNQukmTp4QukkknqUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSZOmSUukkk
+ kpdRcpKLklNaxVyrFirlJTNitMVVitMSUmCSQSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklP/9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ
+ 0yCl0kkklLpJJJKUkkkipZJJJJSkkkkVKSSSSUpSCipBJTFyr2Kw5V7ElNZyTEnJMSU2q0cIFaOEFMky
+ dMkpSZOmSUunTJ0FKTFOmKSlkydMkpSSSSKl0kkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKXCRSCRSUis
+ VV6tWKq9JTAI7EAI7ElNhqmFBqmElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJ
+ SkkkkFKSSSSUpJJJBS6UJJ0FLQmhSTQklinTwkkpipBMnCISyUXJ5UHFPCmresPNW1eViZpTgl5/JOqh
+ QdUTIGqhQ3VOU9D088LpcY6Lm+njhdJjjRIqbRQypoZTAtKkpTJJIXlKUySSl5SlMkkpeUpTJJKXlKUy
+ SSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpdKUySSF5SlMkkpeUpTJJKXlKUySKl0kySCl0xSTFEKWUXJ1B
+ 50TwppZPC5/N7reyToufzTynWvi4WSdVUCtZPKqoWzhvYx1W9hLAxuVvYZStZJ6DG4WgxZuMdFoMKBY0
+ kpSmSTUKlSCgpApKZpkySCFJSmSSQukmSSUukmSQUukopIL4spSlRSSXskkySDFJeUpSTJMK8qJKRTEp
+ wZIqlKUySevZAqQKgE6YVM5TSoymlNQzlIlQlOisKxKYFIhOGooZgoF/CsAIF40TguDgZ3dc7kjVdHnd
+ 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
+ lmCnJUAnJQpc17uFj5a17josfKKfSXGyOVVHKtX8qqOUuFTcx1t4ixcdbeL2TTFTrVDRGIQquEZNIUiI
+ TQplMhwoWhPCkEk3hQtCUJ0yVIUkkkipSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJk6ZJS6
+ SSSSl1FykouSU1rFXKsWKuUlM2K0xVWK0xJSYJJBJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SligWI5QLElNR6Zqd6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSU//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pMnTIKXSSSSUukkkkpSSSSKlkkkklKSSSRUpJJJJSlIKKkElMXKvYrDlXsSU1nJMSckxJTarRwgVo4QU
+ yTJ0ySlJk6ZJS6dMnQUpMU6YpKWTJ0ySlJJJIqXSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpcJFIJFJ
+ SKxVXq1Yqr0lMAjsQAjsSU2GqYUGqYSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkk
+ kklKSSSQUpJJJJSkkkkFKlPKgSlKCmcp1AFSBSSyTJSlKSlimSKZEJUShuKmQhPCeFNW4rIy9Vq3LKyU
+ 4JcS9uqahuqJfyoVugpwU7+DpC36HCFyuLkQtarMgJKdsvCEXhZxzfNDOWm0tLqbwlvCyvtaX2tKkOr6
+ gS9QLL+1pfa0qU6nqBL1Asv7Wl9rSpTqeoEvUCy/taX2tKlOp6gS9QLL+1pfa0qU6nqBL1Asv7Wl9rSp
+ TqeoEvUCy/taX2tKlOpvCW8LK+1pfa0qU6u8Jbwsr7Wl9rSpTq70t6yvtaX2tKkOrvS3rK+1pfa0qU6u
+ 9Lesr7Wl9rSpTq70t4WV9rS+1pUp1d4S3hZX2tL7WlSnV3hIvCyvtaf7WiAp0i9De/RUPtSg/JT1L5L1
+ hZZmVfvvlZWQ+UmSLlZA1VYDVW7RKAG6oMwbOMNVt4hhYlOi1MeyElsno8d+i0GPWBTfCuMykmIuvvS3
+ hZn2tMctBDp7wkLFl/a0vtaSnV9RPvCyhlp/taFIdTeEt4WZ9rS+1pUh096W8LM+1pvtaFKdTeE29Zn2
+ tL7WlSnT3hLesz7Wl9rQpeHT3pb1mfa0vtaVMjp7wn3rL+1pfa0qYZupvCW8LM+1pvtaVMLpF6iXrOOW
+ o/akQGSLph6kHhZQy1IZacvdXeE28LM+2JjlphU6RsUTYs05ab7UmqdQWKQeFkjKUhlo0sLrbgpNcFlD
+ MUhmjxRC119wVa9whVPto8UC3KkJ4iuDSzjyudyuVs5Vu5Yt+qfS8NI8orCoFmqmxqVMwbVRWpjFZNei
+ vUvhKkl6HGetSt+i52i+FeZlwoyGOTsF4UC8LN+2KJy02mIuoHhP6iyhlp/taDGXSNiiXrOOUo/akAEB
+ 0w9TDwsoZSkMtSBmDrBwT7wssZiX2xKkl0i8KO9Zpy1H7Wgxl096fesv7Wl9rQUHU3pb1l/a0vtaS8Op
+ vS3rL+1pfa0qSXU3pb1l/a0vtaFLXU3pb1l/a0vtaVKdTel6iy/taX2tJLqb1IPCyftakMtKkF1twTFw
+ WaMwJHMRpYXQLwoF6zzlqBykaU6YsUxYsgZSkMtFcHRe9Z2S5M7KVK/IlGmWLUySsu4q5fZKoWGUabIa
+ zygnlHe1C2I0xzT4/K38I8LApEFa2LbtRpqF6rGforoeIWBRkwrQy00hQdMvCjvCzTlpvtaZS9094S3h
+ Zn2tL7WlSnT3hLeFmfa0vtaVKdPeEt4WZ9rS+1pUp094S3hZn2tL7WlSnT3hLeFmfa0vtaVKdPeEt4WZ
+ 9rS+1pUp1N6W9Zf2tL7WlSnU3pb1mfa0vtaVKdPelvWZ9rS+1pUp096W9Zn2tL7WlSnT3pb1mfa0vtaV
+ KdPelvWZ9rS+1pUp096W9Zn2tL7WlSnT3pb1mfa0vtaFKdTeFEvCzvtaY5aeAgt5z1SvehOylVtyJT6W
+ hrZRlYmSFp32Ssu8yhTZg57hqiUjVJw1U6hBQpmdjCMQuixHrmMZ8LYx8iEqYJvQ1vRN4WQzLRPtaFMJ
+ dQPCfeFljLT/AGtKljpF4Tbws77Wm+1oUp0t6W8LM+1pfa0KXh094S3hZn2tL7WkudPeEt4WZ9rS+1oL
+ XT3hLeFmfa0vtaVIdPeEt4WZ9rS+1pUuDp7wlvCzPtaX2tKlF094S3hZn2tL7WksLp7wm3rN+1pjloqD
+ pb0t6zPtab7WjS8OnvTh4WX9rT/a0iEupvCResz7Wm+1phCHSNiXqLM+1JfakEF1A9S3hZIy1L7YisLq
+ hwRA4LHGaPFTGaPFOAU6FrxCw853KsWZchZeXduUgC4OLmHVZT+VpZJlUHN1RpkiyqV+kqixsK3WYRZg
+ 62O5bGM9c9TZC0qMiE0hBeiqerAeFiV5cIwzFGQxF1C8KO8LMOao/bEKYi6m8Jt4WZ9rS+1oUxl1A8KQ
+ eFk/a04y0QF0XXDwpbgsgZikM0eKdTMHU3BRLws05o8VE5iNILpF4Tbwsw5ab7WlS11d4S3hZX2tL7Wl
+ SQ6u8Jbwsr7Wl9rQpc6u8Jbwsr7Wl9rSpBdXeEt4WV9rS+1pLHV3hLeFlfa0vtaCQ6u8Jbwsr7Wl9rQp
+ c6oeE+4LKGYn+2DxSpBdXcFEvCzPto8UxzEVrpF6jvWactR+1opDrtenLwskZakctKl4bF7ljZJVi3Jl
+ Zt90o0zxalxVN5R7XSq7kWVA9Sq5TOCkwQjTWyOvhldFiO0XL4z4Wzj5MJU1nomPEJy8LKbmJHMTSFzp
+ bwlvCy/taX2tNpTqbwlvCy/taX2tKlOpvCW8LL+1pfa0qS6m9LeFl/a0vtaVKdTeEt4WX9rS+1pUl1N4
+ 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
+ IZaVJdUPCfeFlDLT/bAlSnU3BNvCzPtgTfa0qU6m8Jt4WX9rS+2JUh0y4Ji4LN+2JvtaVIdLeE+9Zf2t
+ P9rSpLqB6feFlfa0/wBrSpTqbwluCy/taX2xGkuruCi54Wb9sUTlpUlu2PWdkPTPypVK6+UqS0styynn
+ VXsh8rPdyjSm5inVdHhO4XMUOhbOLftSU9PW8Qpl4WQzLUzloUp0t4S3hZf2tP8Aa0qU6e8Jb1mfa0vt
+ aVIdPeEt4WZ9rS+1pUh1N4S3hZf2tP8Aa0KQ6e9LeFmfa0vtaVKdLelvCzPtaX2tKkOoHhPvCyvtaX2t
+ NpLpl4Tbws37Wm+1pUl1A8KTXhZX2tOMtGlpdY2BVb7NFUOWq9uTKcAgIct0rCydVo5F0rLvdKNM0Wi4
+ ao1PKE7lEqMJUuLs4hhbdD9FzuPZC06b4SYy7jHogeFktylP7WlS11Q9L1Fl/a0/2pNpa6fqJeosz7Ul
+ 9rQU6fqJeosv7Wn+1IUvDp+ol6iy/tSf7UlSS6fqJeosv7Wl9qSYy6nqJeosz7Ul9qRpAdP1EvUWZ9qS
+ +1JUyh0/US9RZn2pN9rRCXU9RL1Fl/a0vtach1PUS9RZf2tL7Wkh1PUS9RZf2tL7Wgh1PUS9RZf2tL7W
+ kh1PUS9RZf2tL7Wkp1PUS9RZf2tL7Wkp1PUS9RZf2tN9rSS6vqJw9ZQy1IZaNJdUPSL1ljLSOWlS5tXP
+ 0WTkuRLcmVn33SilqX8quBqiWPlDbykpuY62sVY2OFs4yBU61R0R5VepHTSpiSlKchNCCFSlKSZNQvKU
+ pk6CF0kkkFKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKXSSSSUuouUlFySmtYq5VixV
+ ykpmxWmKqxWmJKTBJIJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//V69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMgpdJJJJS6SSSSlJJJ
+ IqWSSSSUpJJJFSkkkklKUgoqQSUxcq9isOVexJTWckxJyTElNqtHCBWjhBTJMnTJKUmTpkFLp0ydJSkx
+ TpikpZMnTJKUkkkipdJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlwkUgkUlIrFVerViqvSUwCOxACOxJ
+ TYaphQaphJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJBSk6ZJJS6ZJJBT
+ EqKkU0IKUE4KUJ4SSqUpTFJJS8pwogqQKISuQhvaipiE8Kc+5qy8li3LGSqN1EpwS81fXqqmwgrobcSV
+ UdheScpzq3kK0y4hF+xHwUhiFFTD1ym9YowxSn+ylFaUHqlL1ij/AGUpfZSlSEHrFL1ij/ZSl9lKSkHr
+ FL1ij/ZSl9lKSkHrFL1ij/ZSl9lKSkHrFL1ij/ZSl9lKSkHrFL1ij/ZSl9lKSkHrFL1ij/ZSl9lKSkHq
+ lL1Sj/ZSl9lKSkHqlL1Sj/ZSl9lKSkHqlL1Sj/ZSl9lKSEHqlL1Sj/ZSl9lKSkHqlL1Sj/ZSl9lKSkHq
+ lL1Sj/ZSl9lKSkHqlL1Sj/ZSl9lKSkHqlSFpRfspUhilJSH1SmNhVj7MUvsxSS0nklVnsJWr9mKX2SUm
+ SLgvoJUPs5XQfYvJN9h8kmYOIykhWGNIWn9i8k/2SElsmoxxCKLSj/ZSl9mKTCUHqlI2lH+zFN9mKSEH
+ qlL1SjfZil9mKSkQtKf1SiDGKkMYpIReqUvVKN9mKX2YpIQeqUvVKP8AZim+ylJSD1il6pR/sxTfZikh
+ D6pS9Uo32YpfZilS+KH1il6xRvsxS+zFKmRD6xS9Yo32YpfZilTDNF6xS9Yo32YpfZilTCg9UpvVKsfZ
+ im+zFJlig9UpvWKsfZim+ylBeg9YpesUb7KUvspTSpF6pS9QowxipfZigpB6hTG0qx9mKY4xRpYWubym
+ F5RjilN9lKcAtYjIKc2kqQxiiDGKeFwab5cqr6SVsDFT/Y05eHC+zJxjrc+x+Sb7GkzAOMKSERrSFqHD
+ TfZElzTa4hEFpCP9lKb7MUwsUkPrFN6xRvsxT/ZSmUxFCLipeqUX7KU/2YptMRQ+qUvVKN9mKf7MUkBB
+ 6pS9Uo/2YpjjFPDPFB65S9copxil9mKKSj9YpeqUUYxT/Zim0xlD6pS9Uo/2YpvsxSUEPqlL1SjfZil9
+ mKS8IfVKXqlG+zFL7MUklD6pS9Uo32YpfZihS1D6pS9Uo32YpfZilSkPqlL1SjfZil9mKVJQ+qUvWKN9
+ mKY4xSpRQ+uU/rlE+ylSGKUWMovVKY2lH+ylI4xRQ1vVKkLSi/ZinGMUaXBCbSgvcSr32YqJxSizRcp4
+ JQzUStY4icYiLZDjnHlROMt0YfknOF5Isc3CFBCOwFq1DheSj9kSahazLCEQXFE+ylP9mKBSEXrFN6pR
+ /sxS+zFMXoPVKXqlH+ylL7KUqUg9UpeqUf7KUvspSpSD1Sl6pR/spS+ylKlIPVKXqlH+ylL7KUqUg9Up
+ eqUf7KUvspSpSD1Sl6pR/spS+ylJSD1Sn9Uo32UpfZSkpD6pS9Uo/wBlKX2UpKQeqUvVKP8AZSl9lKSk
+ HqlL1Sj/AGUpfZSkpB6pS9Uo/wBlKX2UpKQeqUvVKP8AZSl9lKSkHqlL1Sj/AGUpfZSkpB6pS9Uo/wBm
+ KX2YpKQ+qUvVKP8AZSl9lKcFpa5sKG5xKufZSmOKU5aHNeCVWfUSto4iY4Xkk2YOAaCk2khbpwfJN9h8
+ kmZzK2EK0xxCtDDjspDFKDBJCLSn9Yo32YpfZSgwlELin9Yov2Up/spQWIvWKXqlF+zFP9mKCEHqlN6p
+ R/sxTfZikyBD6xS9Yo32YpfZikuQ+qUvVKN9mKX2YoLSh9UpeqUb7MUvsxSQh9UpeqUb7MUvsxSXBD6p
+ S9Uo32YpfZSkpD6pS9Yo32YpfZiksKH1il6pRvsxS+zFFCH1SmNpVj7MU32Yosga5tKb1irBxSm+ylAp
+ Q+sU4tKKMUqQxSmFCL1Cl6hR/sxSOMUlFrG0qBvKsnGKGcUo0xlB65UxkFS+ylOMUpwUt6xKDYS5WxjF
+ S+ylSBcHHsqJQTjLe+xpfYvJFlDhDHhSFRC2/sXkonD8kmUOU1pCsMcQrf2ROMQoFBQi0hObyj/ZSmOK
+ VGWItc3lIXFFOKU4xShTEUYuKf1SjDFKf7KUGItf1Sl6xRzilN9mKIC+KH1yl65RfsxTfZinswR+uUvX
+ KJ9lKcYpSUUXrFL1ij/ZSl9lKSxB6pS9Uo/2UpfZSkkIPVKXqlH+ylL7KUFyD1il6xR/spS+ylJBQesU
+ vVKP9lKX2UoMaD1Sl6pR/spS+ylJcEHqlL1ij/ZSl9lKVLmubim9cqwcUqJxCggoPXKkLiifZCpDFKK1
+ D6pS9Uqx9lKX2UpJCAWlL1ijfZSl9mKK8NV1hKA8krQOKUvshRZ4uWWEqPoytYYimMRFlcU46YUELd+x
+ +SX2LySa2RyGMIVhjyFdOF5KJxCk10IuKf1ii/ZSl9mKBSh9YpesUb7KUvspQUh9YpesUb7KUvspSUh9
+ YpesUb7KUvspSSh9UpeqUb7KUvspSUh9UpeqUb7KUvspQSh9YpeqUb7KUvspSpSH1Sl6pRvspS+ylKlI
+ fVKb1Sj/AGUpfZSlSUHqlL1Sj/ZSl9lKVKQeqUvVKP8AZSl9lKSEHqlL1Sj/AGUpfZSkpB6pS9Uo/wBl
+ KX2UoqQeqUvVKP8AZSl9lKSkHqlL1Sj/AGUpfZSkhB6pS9Yo/wBlKX2UoqQ+sUxtKsfZSl9lKKC1HPJQ
+ HyVo/ZSm+yFJMXHfWSgOoK3/ALF5KJwfJJuRcEUFHrYQtf7D5JfYo7IJk06yQji0hHGIQnGMUmtJD6xS
+ 9Yo/2UpfZSgxlD6xT+sUb7KUvspQWofWKXrFG+zFL7MUkhB6pS9Uo/2UpfZSkyBB6pS9Uo/2UpfZSkoo
+ PWKXrFH+ylL7KUlqD1il6xR/spS+ylJQQesUvWKP9lKX2UpL0HrFL1ij/ZSl9lKSCg9UpeqUf7KU32Up
+ LEPqlP6pRvspT/ZikoIPVKY3FWPsxUTjFFe1zcU3rFHOKU32UoFSIXFOLSjDFKkMYplIQeoUjaVZ+zFM
+ cYo0tLVNxUfXKsnFKgcQorEYvKl65KmMQqYxSnhIaz3Fyp2Vly1/spTHDT7ZA4DsclIY8Le+xeSX2LyS
+ ZYuIKSERrCFrHC8k32NJkaLCQjNsIVgYhUhilNKwoRcUjeUb7KUxxSo2EofXKb1ijfZSnGKUKYyhFpUv
+ VKMMUp/spQpY1zaUxuKsHFKicUpwDLFB65S9co32Up/shTmVD65TesUf7IUvspSoLCg9UpesUf7KUvsp
+ Rpag9YpeqUf7KUvspQpcEHrFL1ij/ZSl9lKFJQeqUvWKP9lKX2UpUsKD1Sl6pR/spS+ylClqD1Sl6pR/
+ spS+ylKl4QeqUvWKP9lKY4pSpLX9cpfaCjHFKb7IUqWlgLypesUQYhUxilBDX9UpeqVY+ylN9lKK4IfW
+ KG60lWvspTfZCiyRc95JQHMJWt9jKX2PySbEXG9EpjQVtfY/JP8AY/JFMtnC9AojGELY+xeSb7F5JW0p
+ tGtxCsNtIR/sZT/ZClawIvWKXqlG+ylL7MUlwQ+qUvVKP9mKX2UpJQeqUvVKP9lKX2UpKQeqUvVKP9lK
+ X2UpKQeqUvVKP9lKX2UpKQeqUvVKP9lKX2UpKQeqUvVKN9lKf7KUkoPVKXqlH+ylL7KUlIPVKXqlH+yl
+ L7KUlIPVKXqlH+ylL7KUlIPVKXqlG+zFL7MUlIfVKXqlG+zFL7MUlIfVKXqlG+zFL7MUlIfVKXqlG+zF
+ L7MUlIfVKXqlG+zFL7MUlIfWKY3FH+ylL7KUkhr+qVEvJVr7IU/2UoL3OsBKqPqJW4cRROFPZJDhNqIV
+ qqWrR+w+ScYZCKEDbSFP1yi/ZSl9lKSEPrlOLyifZSnGKUkI/WKXqlGGMUvsxSQh9UpesUf7MU32UoIQ
+ G8qBvKsHFKgcQoUpB65Ti8ov2QqQxChSkPrFP6xRvspT/ZSlSkHqlN6pVj7KUvspRpLX9UpxcUf7IU/2
+ QpJQC4p/WKN9kKX2UpwSgNhKE8kq79mKX2UpwS5T6yUI0FbX2RL7H5IpcdtZCOxxCvnD8k32QoLWu20o
+ gtKKMQqQxSgUIhaUvVKP9lKb7KVGVIPVKb1SrH2UpvspQpSD1Sn9Uo/2UpfZSnBCD1Sm9Yqx9lKicYpy
+ kHrFN6pR/sxTfZinKQ+qU4tKMMUp/spSUiFxS9Yo32YpfZioypD65S9co32UpvspQUi9cqQvKn9lKQxi
+ iFMDcShvsJVj7MU/2Yp4S5tklVnsJWycQqJwvJPCXGFRRWNIWn9i8k4w/JIqa1ZIRhaQjDFKf7MUwpQG
+ 4qHrFWDjFN9lKCkHrFP6pRvspT/ZSihB6pS9Uo/2UpfZSkhB6pS9Uo/2UpfZSmoQeqUvVKP9lKX2UpKQ
+ eqUvVKP9lKX2UpUhB6pS9Uo/2UpfZSkpB6pS9Uo/2UpfZSklB6pS9Yo/2UpfZSiuQi4p/WKL9lKf7MUU
+ tZ7yVUsBK1PspUThkpJcU1lTYwhav2LyTjDSU065COHkKwMWE/2YpIa/qlL1ijnGKY4pTUIPXKb1yjHF
+ KX2UoUtReuU4vKJ9lKf7MUEI/WKY2lG+zFP9lKKmubSm9UqwcUpjilFTX9YpesUf7KU/2QpJa/rFP65R
+ /shS+yFJSH1yl65RfspTfZSilgLypC4qQxipDGKSWIuKRtKIMYqX2Yoparnkqu+StH7MUxxCUlOM+slC
+ 9ErcOF5JvsPkgpya6yFbrJCuDCjspDFIRUgFpCibirJxioHFKSmv6xT+uUb7KU4xCghD6xS9Uo/2QpfZ
+ SkhB6pT+qUf7KUvsxSQg9QpeqUf7MUvsxQU1zaVH1irJxSmOKUkIPWKcXFF+ylIYpQpSMXFP6pRRjFS+
+ zFKlIPVKY3FWDjFROMUUhB65SF5RfspS+ylFcw9cqD7SUcYxT/ZSilzbASqxqJW0cQnsm+xeSSXHbUQr
+ DAQtEYXkn+yJIajXkKYuKP8AZSm+ylJSL1il6pRvspT/AGUpqCg9UpeqUf7KUvspQpag9UpeqUf7KUvs
+ pSUg9UpeqUf7KUvspSQg9UpeqUf7KUvspSUg9UpeqUf7KUvspSSg9UpeqUf7KUvspSSg9UpvVKsfZSl9
+ lKcFNf1il65RzilR+ylOSi9cpjaSjfZSnGKUVNRxJVd7CVq/ZSl9kSU4hpKkxhC2DheSj9i8kFNNjyEY
+ XlG+yFP9lKCkYvKcWlEGKVMYxSUi9QpjYVY+zFI4xQQ1DaU3rFWTilROKUFIPWKXqlH+ylL7MUlIfVKX
+ qlG+zFP9lKSkHqlL1Sj/AGUpfZSkpD6pS9Uo32Up/spSUg9UpeqUf7KUvspQUg9UpeqUf7KUvspRQg9Y
+ pesUf7KUvspSU1XWEoDwStH7KU/2RIGlwcZ1RKh6RW2cLyTHC8k7iZHKY0hWqyQrYw1IYpCVrChFpCc3
+ FG+zFMcYprGgNxUfXKOcYqJxSlSEPrlL1yjfZSl9lKFIReuUvXKL9lKf7KUl4ReuU/rFE+ylP9mKS5F6
+ xSNpRvsxS+zFK1Nc3FRN5Vk4pUDiFK1IPtBUheUT7IVIYhSWlF6pT+qUYYpT/ZSjSxr+sUvXKOcUqJxS
+ klD65UHWEqz9lKcYpRS5rwSgGklbP2RP9i8k4FkDjsqIVhgIWiMPyT/ZEeJe1A8hS9Uqz9lKb7KUw6sZ
+ QesUvWKN9lKX2UoLUPqlL1SjfZSl9lKSkPqlL1SjfZSl9lKSkPqlL1SjfZSl9lKSkPqlL1SjfZSl9lKS
+ kPqlL1SjfZSl9lKSkPqlL1SjfZSl9mKSkPqlL1Sj/Zil9mKKkHqlL1ijHGKb7MUkovWKi6wlH+zFL7MU
+ qU0XyVXfWStb7KUvsaVKcX0iiMYQtX7F5J/sfkkpp1uIRxcQjfZSExxikpEbym9Yov2YpDGKKmAtKf1S
+ iDGKl9mKCkBtKb1ijnGKb7MUKUh9YpeqUb7MUvsxSpSH1Sl6xRvsxS+zFKlIfWKXrFG+zFL7MUlIfWKX
+ rFG+zFL7MUkIfWKXrFG+zFL7MUVIfWKXqlG+zFL7MUlIfWKY3lGOMUxxSkpruvJVd5Llf+yFOMM+CSnJ
+ NRKdtJWuMLyUxh+SSnLY0hGa8hXjiKBxCkpri8hP65RTilN9mKSmHrFOLiiDGKkMYpJQ+sUxvKP9mKic
+ UoKQ+uU4uKL9lKcYxSUi9YqJuKP9mKY4pSQg9cpxcUX7IVIYhRQhFpT+qUcYpT/ZSklB6pTeqVY+zFMc
+ Yoqa5uKb1ijnFKb7KUkofXKXrFF+ylL7KUkoDaShucSrn2UpfZSklzHsJQTSVtfZE/2LyRU4zaiFZYS1
+ X/sXkm+yFJSAWkKXrFF+ylOMUoKQ+qU/qlH+ylL7KUlIPVKb1SrH2UpvsxSQg9UpesUb7MUvsxSQh9Yp
+ esUb7MUvsxSQi9YpesUX7MUvsxSUi9YpvWKN9mKb7MUkIvWKb1ijfZil9mKaQuQ+sUvWKOMUp/spQU1/
+ WKcXFH+ylL7KUQtKL1iousJR/sxT/ZiigOe+Sqz6yVsHEJTHDnsizRcE0lSbUQtr7F5JfYvJFeXOraQr
+ DXEK2MNS+ylBiLW9QpeqVZ+ylL7IUlrX9Up/VKP9lKX2YoLUHqlL1Sj/AGYpfZigpB6pS9Uo/wBmKX2Y
+ oUvCD1Sl6pR/sxS+zFKklB6pS9Uo/wBmKX2YpUxFB6pS9Uo/2YpfZiioIPVKXqlH+zFL7MUmUIPVKXql
+ H+zFL7MUktf1Sl6pR/sxS+zFJag9UpeqUf7MUvsxTUIPVKXqlH+zFL7MUlIPVKXqlH+zFL7MUkIPVKXq
+ lG+zFL7MUFIfVKXqlG+zFP8AZiipB6pS9Uo32YpfZiilD6pT+qUb7MUvsxRSiFpS9Uo32Up/sxStLVc8
+ lAfJWicUqP2QpLnLLCVNlS0fsiIzESUgorWtjMQ6seFfpqhAqbFQRwFFjYU00qYkJQnKaUELQmhPKSah
+ jCSdJBCkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKXSSSSUuouUlFySmtYq5Vi
+ xVykpmxWmKqxWmJKTBJIJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2a1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/1uvSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSQUpJJOkpSSSSSlJJ
+ JIqWSTpJKWSTpIqWSSSSUpSCinSUs5V7FYKr2JKazkmJOTtSU2a0cIDEcIKZJkkklKTJ0klKTpkklLpk
+ kkFLJk6ZJSkkkkVLpJkklLpJk6SlJJJJKUkkkkpSSSSSlJk6SSlBIpwkUlIbFVerViqvSUwCOxACOxJT
+ YaphQaphJS6SSSSlJJJJKWSSSSUpJJJJSkkk6ClkkkkVKSSSRUpJJJJSkkkkFKSSSSUpJJJJSkkkkFKT
+ QnSSUqE6SSVKWIUSpqMJJYqQShJFTMFOohPKKrWLZQnVSjJJ1ptqnHBUDiBXoTwEbVbnfZAl9kC0ICUB
+ LiVbn/ZAl9kC0ICaAjxIaH2QJfZB4K/ASgJcSGh9kHgl9kHgr8BKAlxKaH2QeCX2QeCvwEoCXEpofZB4
+ JfZB4K/ASgJcSmh9kHgl9kHgr8BKAlxKaP2QJfZAr0JQlxKaP2QJfZAr0JQlxKaP2QJfZAr8JQlxKaH2
+ QJfZAr8JQlxKaH2QJfZAr8JQEuJTQ+yBL7IFfgJQEuJTQ+yBL7IFfgJQEuJTQ+yBL7IFfgJQEuJTQ+yB
+ L7IFfgJQEuJDQ+yBP9lCvQlCVpaP2UJjjBX4USErU0fswTjGCuwkAjxLgWoMYJfZgrsJQhbJxNE4wTHG
+ CvwFEhK0GTR+zBL7KFehKEbWNL7KE32UK/CaELQ0DihN9lC0ITbUbU0BihTGKFchPCVoaf2UJ/soVxJC
+ 1NL7KE32UK8klaGj9lCX2UK9CUJWpo/ZQl9lCvQmhK1waX2UJfZQrsJQla+2l9lCX2UK7CeErYpatH7K
+ EvsoV6EoStjpofZQl9lCvQlCNsgDR+yhP9kCuwnhC1zR+yBN9kCvwlCFqaH2UJfZQr0JQkppfZQl9lCu
+ wnhG1hDQ+yBL7IFfhKAlaKc/7IE4xQr8JoR4lwDTGME/2cK3CeEuJeGn9nCb7OFdhNAS4l4k0/s4TfZg
+ rsJQEuJPE0TjBN9lCvwmhLiWEtH7IE/2QK9CeELYy0fsoS+yhXoCUIWsIaH2UJfZgr0BKErQA0vsoS+y
+ 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
+ TfZQtCE0JcSnP+yhOMUK9CUJWppjFCmMUK2An0TbS0/soUTihXkxStBaH2UJfZgr0JoTrRTT+zBP9mCu
+ QngJcTIC0vswS+zBXYCUBDiXcTS+zBL7MFdhKErWEtP7KE/2UK4lola1pfZQm+yhXk0JWhpfZQl9lCuw
+ lCVqaX2UJfZQrsJ4StcGj9lCX2UK9CUJWotH7KEvsoV2E8JWsIaP2UJfZQr0JoStQDS+yhL7KFdhKErZ
+ A0vsoTfZQr0JQlaraP2UJvsoV+EoStDQ+yhL7KFfhKEEND7KEvsoV+AlCSmj9lCX2UK9CUJKaH2UJfZQ
+ r8JQkimh9lCX2UK/CUBJNND7KEvsoV+AlCNqaP2UJxihXYTgJWuaX2UJfZQr0JoQtTR+zBL7MFehNCNp
+ aX2YJxjhXITQlaba7aYRmshShOgSi2QTEpSokpqLUSmSKZFVrpJk6ClJJJIIUkkkgpSSSSSlJ0ySSl0k
+ ySSl0ySSSlJJJJKUkkkkpSSSdJSyZOkkpSSSSSl1FymoOSU1rFXKsWKuUlM2K0xVWK0xJSYJJBJJSySd
+ JJSySdMkpSSSSSlJJJJKUknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SligWI5QLElNR6Z
+ qd6ZqSmzWrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSTpKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9fr0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6
+ ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJ
+ S6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKS
+ SSSUumTpkFKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVLpkkkFKSSSSUpJJJJS8
+ pSmSSUvKUpJIIVKUpk6KlSlKZJOCV5SlMkipeUpTJIKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkp
+ eUpTJJKXlKUySSl5SlMkkpeUpTJIqXlKUySSl5SlMkkpeUpTJIKXlKUySSl5SlMkkpUp5TJJKXlKUySS
+ l5TSkkipUpSkkipUpSkkkpUpJJJKVKUpJkVLylKZJJS8pSmSSUvKUpJJKVKUpk6SlSlKZJJC8pSmSSUv
+ KUpkklLylKZOgpUpSkmRSvKUpkkFLylKSZJS8pSmSSUvKUpkklLylKZOgpUpSmSSUvKUpJIKtUpSkkki
+ 1SlKSSKlSlKSSSlSlKZOkpUpSkkkpUpSkkgpUpSkkkpUpSkmRSvKUpkklLylKSSClSlKSSSFSlKSSSlS
+ lKSSSlSlKZJJS8pSmSSUylKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkq15SlMkkq15SlMkileUpTJJI
+ XlKUkklKlKUkklKlKUkklKlKUkySl5SlMkkpeUpTJ0VKlKUkklKlKUySSlSlKSSSlSlKSZJS8pSmSSQv
+ KUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJLKUpTJJKVKeUySSl5SlMkkpeUpTJIKXlKUySSl5SlMkkp
+ eUpTJJKVKUpkklLylKZJJS8p5TJIKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJyl5SlMki
+ peUpTJIKXlKUySCl5SlMnQSqUpSTJKXlKUydNUqUpSSSUqUpSSSVakpSSSUqUpSTJKXlKUySKl5SlMki
+ peUpSTIqXlKUkkVKlKUkkEKlPKZJBSpSlJJJSpSlJJBSpSlJJFSpSlJJJSpTymSSUvKUpkkkqlKUkySl
+ 5SlMkkpeUpTJJKXlKUkklKlKUkklKlKUkyKrXlNKSZBS+5KUySSl5SlMnRUvKUpkkkLylKZJJS8pSmSS
+ UvKUpkklLylKZJJS8pSmSSUvKUpkkkLylKZOgpUpSkkkpUpSkmRSvKUpkklLylKZJJS8pSmSSUvKUpkk
+ lLylKZOkpUpSmSRXLpJJJKVKUpkklLylKZJJSpSlMkkpeUpTJJKZSlKinSUvKUpkySmUpSmSSQvKUpky
+ SmUpSopJKZSlKikkplKUpkklLylKZMkplKUqKSSmUppTJIKXlKUySSF5SlMkkpeUpTJJJXlKUySSl5Sl
+ MkkleUpTJJKXlKUySKl5SlMnSUvKUpkkFLylKZJFS8pSmSSUvKUpkkkLylKZJJCpTymSSUvKUpkySGUp
+ pSSSSqUpSSRSqUpSSSUqUpSSSUqUpSSQUqUpSSSUqUpSSSUqUpSSSUqUpTJIKXlKUySSV5SlMkgpeU8q
+ KdJS8ppTJJKXlKUkklKlKUySSl5SlMkkpeUpTJ0EKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUk
+ kVKlKUkkkqlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlPKZJJS8pSmSRUvKUpkkl
+ LylKZJJS8pSmSSUvKUpkkkLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLyluTJJJXlKUyS
+ Sl5TSkkkpeU0pJJKXlKUySKl5SlMkipeUpTJJKXlKUySSF5SlMkgpeUpTJJKXlKUySSl5SlMkgpeUpTJ
+ JIXlKUySSl5SlMkgpeUpTJJKXlKUySCl5SlMkkpeUpSTJIXlKUySKl5SlMknBKpSlJMkpeUpTJIKXlKU
+ ySaVLylKZJNUvKUpJkkrylKZOkpeUpTJJKXlKUydFSpSlJJFSpSlJJFSkpSSRQqUpSSSUqUpTJ0lKlKU
+ ySSl5SlMkipeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlNKSSSlSlKSSSlSnlMkkpeUpTJJKXlNKSSSlSnl
+ MkkpeUpTJJKXlKUySSl5TSkkkpUp5TJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlK
+ UySSl5SlMkkleUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5TSkmSUvK
+ UpkkUrylKZJJS8pSkkkhUpSkkkpUpSkkkpUpSmTpKVKUpJJKVKUpJklKlKUkklKlKUkklKlKUkklKlKU
+ kklKlKUkklKlKUkklKlKUySSV5Tyop0iheUpTJJiF5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlK
+ UySCl5SlMnSUvKW5MmSUy3JSmSSUvKUpkklLylKZJJS8pSmTJKZSlKZJFS8pSmSSUvKaUkyCl5SlMkkp
+ eUpTJIqXlKUySSl5SlMkkpeUpTJJJXlKUySSl5SlMnSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSQq
+ UpSSSUqUpTJJKXlKUydJSpTymSRUvKUpkkkrylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklL
+ ylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkkVLylKZJJS8pSmSSU
+ vKUpkkkLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSkkkpUpSkmSUvKUpk6CFSlKZJJS8pSmSSUvKUpk6S
+ lSkkmSUqUpSTIpVKeVFOipeUpTJIKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkheU8pkklLylKZJJ
+ S8pSkkklUpSkmSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKSZBS6SZJJS8pSmSSUvKUpk6SVSlKZOkp
+ UpSmSSUvKUpJklLylKZJJS8pSkmSUvKUpkklLylKSZJSpSlJMkpeUkydJCkkkklKSSTpKUmTpkCpSSSS
+ alSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUskkkkpSdMnSUuouUlFySmrYq5VixVykpmxWmKq
+ xWmJKTBOmCdJSySSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0yd
+ JSxQLEcoFiSmo9M1O9M1JTZrVhqr1qw1JS6SSSSlJJJJKWSSSSUukkkkpSSSSSl0kkklKSSSSUpJJJJS
+ kydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/Q69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJ
+ JJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkp
+ SZOmSUpJJJJSkkkklLpk6ZBSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkkUqSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSk
+ kkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSSUpJJJFSkkkklKSSSSUpJJJG1KS
+ SSStSkkkkrUpMnTJWpSSSSVqUkkklalJJJIWpSSSSVoUkkklxKUkkkhxKUkkklxKUkkkjalJJJI2lSSS
+ SVqUkkklalJJJJWpSSSSFqUkkkkpSSSSSl0kkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUs
+ knTJKUkkkklSSSSSlJJJJKUkkkghSSSSSlJJJJKUkkkkpdJJJFSkkkklKSSSSUpJJJBSkkkkUqSSSSUp
+ JJJJSkkkkkKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJK1LJJJJWpSSSSVqUkkklalJJJJ
+ WpSSSSVqUkkklalJJJJWpSSSdJSkkkkrUpJJJK1KSSSSUpJJJBSkkkklKSSSSUpJJJJSySSSSlJJJJKU
+ nSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSTrUpJJJK1KSSSStSkkkkLUpJJJJKkkkkFKSSSQUpOmS
+ SUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSRUukmTpWpSSSSVoUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkklZJJJJSkkkklKSSSSUpJJJJS6SZJJS6ZJJJSkydMipSSSSSlJJJ0kKSSSRUpJJJBSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSRtcpJJJJSk
+ kySSlJJJIKUkkklalJJJJWpSSSSVqUkkklalJJJJIUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqU
+ kkkkpSSSSCFJJJJKUkkkklSSSSSlJJJJKUkkkilSSSSSlJ0ydJSkkkklKSSSSUpJJJJCkkkklKSSSStC
+ ydJJK1LJ0kkrUpJJJG1KSSSStKkkkklKSSSSUpJJJC1KSSSSUpJJJK1KSSSQtSySSSSlJJJJKUkkkklS
+ SSSClJJJJKUkkklalJJJJKUkkkkpdJJJBCkkkkrUpJOkkpZJOkkpZJJJFSkkkklKSSSSUpJJJJSkkkkk
+ qSSTpKWSTpJWpZJOklalkkkklKSSTpKWSTpJKWSTpklKSTJJWpdJMklal0kySVqUnTJJWpdJMklaF0ky
+ SVqXSTJJWpdJMnStSkkkkrUpJJJK1KSSSStSkkkkrSpJJJK1KSSSStSkkkkrUpJJJOBUpJJJFSkkkkrU
+ pJJJK0KSSSQtSkkkklKSSSStSkkkkLUpJJJJCkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJBSkkkkVKSSS
+ RtSySdJG1LJJJIWpSSSSapSSSSClJJJJJUknSSUpJJJJSkkkkVKSSSRUpJJJFSk6ZOkhSZJJJSkkkkrU
+ pJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJ
+ K1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK0qS
+ SSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSRtSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSSt
+ SkkkkrUpJJJK1KTJ0krUsknSStSySdJK1LJJJI2pSSSSVqUkkklalJJJ0rUsknSStSySdJAlSySdJNtC
+ ydJJK1KSSSSUpJJJJSkkkklKSSSSUsknSSUsnSSQUpJJJK1KSSSStSkydMlalJ0ySSlJJJJKUkkkipSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJWhSS
+ SSSlJJJJKUkkklalJ0ydFKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStCkkkkrUpJJJK1KSSSStSkkkkrUpJ
+ JJK1LpkkkrUpJJJC1KSSSStSkkkkrQpOmSStSkkkkrUpMkkjaVJJJI2pSSSSFqUkkklalJJJJWpSSSSV
+ qUkkklalJJJJWpSdJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJG1KSSSStSkkkkLUpJJJK1KSS
+ SStSkkkkrSpJJJK1KSSSStSkkkkFKSSSSUumTpkrUpJJJK1LpkkkrUpJJJK1KSSSRtCkkkklLpJJJKUm
+ TpIKWSSSQSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKWSSSSUpOmTpKXUXKSi5JTVsVcqxYq5
+ SUzYrTFVYrTElJgnTBOkpZJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSl06ZOkpYoFiOUCxJTUemanemakps1qw1V61YakpdJJJJSkkkklLJJJJKXSSSSUpJJJJS6SSSSlJJJ
+ JKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Hr0kkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydM
+ kpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapq
+ DVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpkFKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJ
+ KXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ0lKSSSRUpJJJFSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkydJBSySdJJSySdJBSySdJBCydMnSUpMnSQUskknSUsknSTglZJOknKWSTp
+ JKWSTpJKWSTpJKWSTpIKWTpJJKUkkkkpSSSSSlJJJJKUkkkkhSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kklSSSSSlkk6SSlkk6SSlJJJJIUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSVJJJJKUkk
+ kkpSSSSSFJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJOkkpZJOkkpZJOkkpZJOkkpZJ
+ OkkpZJOkkpZJOkkpZOkkkpSSSSSVJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSlkkkklKSSSSUukkkkpS
+ SSSSlJJJJKUkkkgpSSSSSlJJJIqUkknSQsknSRUsknSQUsknSSUsknSSSsknSQUsknSSUsnSTJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSdMkkhSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ VJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJSkkkklKSSSSQukkkipSSSSSlJJJJKUkkkkpSSSSS
+ lJJJIKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkiuWSSSSUpJJJJSySSSS
+ l0kySCl0kySSl0ySSSF0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkKSSSS
+ UpJJJJKkkkklKSSSSUpJJJJKkkkklKSSSSUukkkkpSSSSSlJJJJIUkkkkpSSSSSFJJJJKUkkkkpSSSZJ
+ S6SZJJK6SZJFS6SZJJS6SZJBS6SZJJS6SZJJS6SZJJSkkk6Clkk6SSlkk6SSVkk6SSlJJJIKUkkkkpZJ
+ OkkpZOkkkpSdMkgpdJMkkhdJMkkpdJMkkpSdMkipdJMkkpdJMkkpdMkkkpSSSSSlJ0ySSl0kySSV0kyS
+ SlJJJJKUkkkkpdJMkkpdMkkkpZJJJJSkkkklKSSSSQpJJJJSkkkkFKSSSSUpJJJJSk6ZOkpSSSSSlJJJ
+ JKUkkkkpSSSSKlJJJJKUkkkklSSSSSlJJJJwUpJJJFCkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkk
+ kEKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklLJJJJKUkkkmqUkkkklSSSSSl0kk
+ klKSSSSUpJJJFSkkkkVKSSSSUpJJJJCkkkklKSSSQUpJJJJSkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJKkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJBS
+ kkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKTJ0ySlJJJIqUkkmSUpJJJJS
+ kkkklKTpk6SFJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSF
+ JJJJKUkkkkpSSSSSlJ0ydFKkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJBSkkkkFKSSSSUpJJJJSkkkkkKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkkkKSSSSUpJJJJSySSSSVJJJIqUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkkkqSSSSUpJJJBSkk
+ kklKSSSSUumTpklKSSSSUpJJJJSkkkklKSSSSQpJJJJS6SSSSlJJJJKWSSSSSpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpOmTpKWSSSSUpOmTpKXUXKSi5JTVsVcqxYq5SUzYrTFVYrTElJgnTBOkpZJJJJSkk
+ kklKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl06ZOkpYoFiOUCxJTUemanemak
+ ps1qw1V61YakpdJJJJSkkkklLJJJJKXSSSSUpJJJJS6SSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKr
+ vVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkp
+ SSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpk
+ 6ZJSkkkkFKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSS
+ SSUpJJJJSkydMmqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJ0ydFSkkkkUqSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkkLUpJJJC1KSSSStSkkkkLU
+ pJJJC1KSSSQtSkkkkrUpJJJC1KSSSQtSkkkk8FSkkkk9SkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSk
+ kkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkkVKSSSSSpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSl0kkkFKTpkklKSSSSUpJJJJSkkkklKSSSSUpOmToWpSS
+ SSVqUkkklalJJJJWpSSSSSlJJJIqUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUumSSQU
+ ukmTpKWSSSRQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSSpJJJJSkkkklLpJkklLpJkklLpJkklLpkkk
+ lKTJ0ySlJJJJKUnTJ0UKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSRSskkkklSSSSSlkkkklKSSSSUpJJJJSkkkkkLpJJJKUkkkkpSSSS
+ SlJJJJKUkkkgpSSSSSlJJJJKUkkkkpSZOmRUpJJJJCkkkklKSSSSUumSSSSpJJJJSkkkkkqSSSSUukkk
+ kpdJJJBSkkkklKSSSRQpJJJBSkkkklKSSSSQpJJJJSySSSKlJJJJJUkkkkpSSSSSlJJJIKUkkkkpSSSS
+ SlJJJJKUnTJ0FKSSSSUpJJJJKkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkkkKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJKySSSCFJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSTwpSSSS
+ KlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJIIUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkk
+ pSdMkkpSSSSSVJk6SSlkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkipSSSSSlJJJIKUkkkkpSSSSSFJJJJ
+ KUkkkhaVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkipSSSSSFJJJJKUkkkkpSSSSSVJJJIWpSSSSVqUkkklalJJJJWpSSSSVqUk
+ kklalJJJJWpSSSSVqUkkklalJJJJWpSSSSNqUnTJJWpdMkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSV
+ qUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJ0ySlJJJJKUkkkkpZJOmSUpJJJJSySdJJSySSSSlJ0ydFCkkkklKSSS
+ SUpJJJJSkkkkkqSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6SS
+ KlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSBKlJJJIWpSSSSVqUkkklalJJJJWpSSSSVqUkkklaFJJkklLpJkkrUukmSStS6SZOkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJIoWSSSQSpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1LpJJJWpSSSS
+ VqUkkklalJJJJWpSSSSSlJJJJKUkkklalJ0ySVqUkkkjalJJJJWpSSSSVqUkkkklSSSSSlJJJJKUkkkk
+ pSSSSSl0kkklLJJJJKUkkkkpSSSSSlJJJIIUkkkkpSdMklal0kkkVLJJJIpUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUnTJ0lLJJJJKUnTJ0lLqLlJRckpq2KuVYsVcpKZsVpiqsVpiSkwTpgnSUskkkkpSSSS
+ SlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dMnSUsUCxHKBYkpqPTNTvTNSU2
+ a1Yaq9asNSUukkkkpSSSSSlkkkklLpJJJKUkkkkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71Y
+ KrvSU13J2pnJ2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkk
+ kkpSSSSSlJJJJKXSKSRSUhsVV6tWKq9JTAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJBSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJFSkkkkUqSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkkFKSSSQUpJJJKkKSSSQpKkkkkK
+ UpJJJKlKSSSQpSkkkkKUpJJJKlKSSSTgFKSSST1KSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUp
+ JJJJSkkkkkKSSSRUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkkVKS
+ SSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkkkKSSSRUpJJJJSkkkklKSSSSUpJJJBSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSRUpJJJFKkkkklKSSSSUpJJ
+ JBSkkkklKSSSSUpJJJJSySSSSlJJJJKXSTJ0KUpJJOlSlkk6SSlkk6SSlkk6ZJSkkkklKSSSTVKSSSSU
+ umSSRUpJJJJSkkkklKSSToqUkmSSQukmSRpSkkkklKSSSSUpJJJKkqSTpIIWSSSSSpJJOgpZJOmSUpJJ
+ JJSkkkkVKSSSRpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJBSkkkklKSSTpUpZJJJKlKSSSSpCkk6SSlkkk
+ klKTJ0ySlJJJJKUnTJ0VKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkkFKSSSSUpJJJJSkkkklKSSSSSpJJJJSySdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJIUkkkkpSSSSSlJJJJJUkkkkpSSSSSVJJJJKUkkn
+ SUpJJJJSkkkklKSSSSQpJJJBSkkkklKSSSSQpJJJJSkydJFKySdJJSySdJJSySdJBSySdJJSySdJJSyS
+ SdJSySdJJSkkkklKSSSQUpJJJJKkkkklKSSSSpSkkkkKUpJJJJSkkkklKSSSSpSkkkkqQpJJJKlKSSSS
+ pSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJ
+ JJJSkkkklKSSSRpSkkkkqUpJJJKkqSSSSpSkkkkqUpJJJKkKSSSSpKkkkkqQpJJJKlKSSSSpSkkkkFKS
+ SSSUpJJJOClJJJJylJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJ0FLJJ0kqUsknTJUhSSSdKlLJJ0
+ yVKUkkkhSlJJJJUpSSSdKlLJJ0ySVJJ0ySlJJJJKUkkkipSSSSVKUkkklSlJ0ydGkKTJJJUpSSSSClJJ
+ JJKUkkkglSSSSSlJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkklSlJJJJUpSSSSVKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOkkpZJOkkpZJOkkpZJ
+ OkkpZJOkkpZJJOkpZJOklSlkk6SVKUkknSpSkkkklKTJ0kqUskkklSlJJJJUpZJOklSlkk6SSlkk6ZJS
+ kkk6NKWSTpJKWSTpJKWSTpJUpZJJJJSkkkklKSSSSQpJJJJSkkkkFKSSSSUpJJJJKkkkklKSSSSpSkkk
+ kqUpJJJKlKSSSRpS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSBUpJJJClKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkkLJJ0klLJJ0ySlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkjSlJJJJUpSSSSVKUnTJ0KUpJJJBSkydJFSySdJJSySdJJSySdJKlLJJ0k
+ qUsknSSpSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSToqWSSSRUpJJJJSkkkklKSSSSSpJO
+ mSUpJJJJSkkkklKSSTpKUkkkkpZJJJJSkkkklKSSSQUpJJJJCkkkklKSSSQUukkkiFLJJJJyVJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSySSSSlJ0ydJS6i5SUXJKatirlWLFXKSmbFaYqrFaYkpME6Y
+ J0lLJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lLFAsRygW
+ JKaj0zU70zUlNmtWGqvWrDUlLpJJJKUkkkkpZJJJJS6SSSSlJJJJKXSSSSUpJJJJSkkkklKTJ0ySlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Tr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJ
+ JSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUp
+ JJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkk
+ klKSSSSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkk
+ kkqSTpkVKSSSSUpJJJJSkkkkEKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSRSpJJJJSkkkklKSSSQUpJJJJCkkkklKSSSSUpJJJJCkkkk
+ FKSSSSUpJOkglZOkmSUpJJJJSkkkkFKSSSSUpJJJFSk6SZFSkkkklKSSSSUpJJJFSkkkklKSSSRUumSS
+ SUukknSUsknSSUsknSSQsknSSUsknSSUsknSSUsknSSUsknTJKWSTpklKSSSSUpJOmSSpJJJJSk6ZJFS
+ 6ZJJJSk6ZJJS6ZJJJSkkkklKSTJJKXSSSSUpJJJJSkkkkFKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkkk
+ qSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpk6ZBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpdJJJJSkkkklKSSSSUpJJJJS6ZJJJSkkkki
+ pSSSSjKlJJJJKUkkkipSSSSSlJJJJylJJJIqUkkkkhSSSSKlJJJJKUkkkkpSSSSClJJJJKUkkkglSSSS
+ ClJJJIKUkkkiFKSSSTlKSTJIqXSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSS
+ SUpJJJJSkydMkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkkUqSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSTpkEKSSSSUpJJJJSkkkklKSTpJKWSSSSSpJJJJSySdMkpSSSSSlJJJJKUknSSUsknSSUsk
+ kkkpSSSSSlJJJJKUknSSUsknTIqUkkkkpSSSSSlJJ0klKSSSRQpJJJBSkkkkkqSSSSUpJJJJSkkkklKS
+ SSQUpJJJJSkkkyKl0kySSl0kkkFKSSSSUpJJMkpdJJJJSkkkklKTpk6Slkk6SSlkk6SSlkk6SSlkk6SS
+ lkk6SSlkk6SSlkk6SSlkkkkFKSSSSUpJJJJKkkkklKSSSSUpJJJJSkkkkFKSSSSUumTpIqWSTpJIWSTp
+ JKWSTpJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6SSlkk6
+ SSlkk6SSlkk6SKlkk6SSVk6SSSlk6SSSlJk6ZJSkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJJBSk
+ kkklKSSSRUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkgpSZOkkhZ
+ JOkkpSSSSSlJJJJKWSTpk1KkkkkkqSSSRQpJJJFSkkkkVKSSSRUumSSSQukkkkpZJJJBSkkkkFKTpkkE
+ qSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpMkkkpdJJJJSkkkklKSSSQUpJJJJSkkkklK
+ SSSSUpJJJJSkkkkkKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkySCV0kkklKSSSRUpJJJJSkkkklKSTJIqX
+ STJJKXSTJ0lKTpJJKUkkkkpZJOkgpZOkkkpSSSSSlJJJJKUkkkgpSZOkkpZJJJJSkkkklKSSSRUpJJOk
+ pZJOmRUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSZOmSUpJOkkpZJOkkpZJOkgpZOkkkpZJJJFSkkkkVKSS
+ SSUpJJJJSkkkkFKSSSSUpJJJJCkkkklKSSSSUpJJJBSkkkkUqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkkFKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkhSSSSSlJJJJKUkkkipSSSSSlJJJI
+ qUkkkkpSSSSSlJ0ydAqUkkkgpSSSSSlJJJJKUkkkkpSSSSSVJJJJKUkkkipSSSSSlJJJJKUkkkgpSSSS
+ SlJJJJIUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkklSSSSSlJJJJKUkkkkpSSSSSl0ydMgpSSSS
+ SlJJJJKUkmTpKUkkkghSSSSSlJJJIKXSSTIhSkkkk5KkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpZJJJJSk6ZOkpdRcpKLklNWxVyrFirlJTNitMVVitMSUmCdME6SlkkkklKSSSSUpJJJJSkkkklLJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SligWI5QLElNR6Zqd6ZqSmzWrDVXrVhqSl0kkkl
+ KSSSSUskkkkpdJJJJSkkkklLpJJJKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSU//1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKb
+ DEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXS
+ KSRSUhsVV6tWKq9JTAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmSUpJJJJSkkkklKSSS
+ SUpJJJBSkkkklKSSSSUpJJJJSkkkkkqSTJIqXSSSSUpJOmKKlpSlMUyKmUpSopwkpkkmSRUukmSSUukm
+ ToUhSSdMlSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVK
+ UkkklSlJJJJUpSSSSVKUkmTo0uUknhMUqQskmSSpS6dMnSpSkydMUqQqUpTJJUpdJMnSpC6SSZKlLpJk
+ kqUukmSSpS6SZJLhUukmSQ4UrpJkkuFS6aUydLhUpJMklwqZJJk6FKUmlIpkqUvKdME4CNKUknSSpSyd
+ MnRpSoTwnCdBTCEykVEogKWlKUySNKZAqSgFJKlLpJkkKUukmSSpC6SZJKlLpJkkqUukmSSpS6SZJKlL
+ pJkkqUpMnSSpSySdJKlLJJ0kqUsknSSpKySdJKlLJJ0kaSpJMkkpdJMkkpSeEykElLQlCnCYhBTBNKRU
+ ZRpDKUlEKSVKUlKSRSpSpSlRSSpDKUkycIUpdJJJKlKSSTI0pdJMnSpSkkkkqSpJJJKlKSSSSpSkkkkq
+ UpJJJClKSSTpUpZNKcoZSpTKU8ocqYSpTJOkApQhSWMJlIpilSlJJk4RpSoShOklSmKaU5USlSl5STJw
+ lSF0kkkaUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUskkklSlJJk6VKUnTJ0qUpOmSQpSkk6SVK
+ WSTqJSpSpSlRJSlGlMk6YJ0CFKSTpJpCVkkkyFKUlKZJGlLpJJI0hUppTJI0plKSipBKkLpJQkUqUsnT
+ JI0pdJJJKlKSSSSpSkk6ZKlLpk6SFKWSTpIUpSZOklSlkk6SFKWTSnKgSiAllKcKAU2o0peEoUgEiEEs
+ ISTlRJTqQqU6jKcJUpdJJOgpZJOmRpSyUpJkqUunUU6VKXTpk6FIUmSSSpSkkkkqUpJJJKlKSSSSpSky
+ dJKlLJJ0kqUskkklSl0kydKlKSTpkaUpJMklSl0kk4SStCeE6SCmKZOVElGkrykoynRpS6dRToUpdPCQ
+ ThJS0JQpwmIQQwTSnKgUaUvKUqEpwlSGcp1EKQSpSkk6ZClKSSSSpSkkkkqUpJJJKlLJJJJUpSSSSVKU
+ kkklSVJJJI0pSSdJClLJ0kkqUpJJPCSloSUoTQkpZJOmRpSkkyUpUpdJMnSpSkk6SCVkk6ZFSkkySVIX
+ SSSSQpJJJJSkkkklKSSSSUpJJJJKkkkkqUpJJJKlKSTJJUpdPCYKQCCloTQpwmISUwKaU5UCjSmUp5UF
+ IJUlknhIBShBTGE0KRTFKlLJJJJUpSdJMlSF0yZKUaUySTAqSClkk6iUqUpJMklSmSSZOlSlJ4SSSpS0
+ JJ0yVKUmSSSpSkkkkqUpJJJCkqSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJGlKSTJJUpkkmSSpC6SZ
+ JKlLpJJ0qUpMnSQpSyaUimRpS8pSmTpUpdJJOhSlkk6ZKlKSSSSpSkkkkqUpJJJKkKSSSSpSkkkkqUpJ
+ JOlSlkycqJKVJXlKVGUkaUylKUySVKXlKUySVJXTqKdKlLpJkkqUulCYFSCVKWhNCmmKFJYpk5TI0hdJ
+ MpJUpaEk6SVKWSTFJKlLpJk4SpCkk6SFKWSSTI0pdJMklSF0kySVKXSTJJUpdJMklSl0kySVKXSTJJUl
+ dJMklSl0kkyVKVKeVFJKlM0kwUkqUsknUSUqUqUpUSU0pUpIkogqYSpC0JJ0xQpS0pSolKUaUyTqIUki
+ EqTJJJlJUkkklSlJJJJ1IUkkkjSlJJJI0pSSSSVKUkkkkhSSSZKlLpJk6FKUmlOmKClSlKikhSmcpJgn
+ ASpKkk6ZKlKSTKQSpKoSTpJUpiknKijwqUnTJI8KF0kkkKUpJJJKlKTJJI8KlJJJJcKl0kkkKUpJJJKl
+ KSSSSpSkkkkaUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkyVKUkkklSlJ0ycJUpeEoThShBKOEk5US
+ UaQulCYKQSpSyZSIUSlSlSmlMUkqUyTpgnSpSkydMlSFJJJJUpSSSSFKUkkklSlJJJJUpSSSSVKUkkmS
+ pS6SZOEqUumTpEJUpZJIpkqUulKSUJUpUppSTJUldOop0qUyShIKQCVJWhKFKEklMYShOklSlkkkkaUp
+ JJJClKSSSSpCkkkkqUpJJJKlKSSSSpCkk6ZKlKSSSSpSkkkkKSpJJJKlKSSSSpSkkkkaUpJJJKlKSSSR
+ pSkkkkqUpJJJKlKTJJpSpS6dRThKlLpJJJUpZKUkxSpSpSlRTJUpnKUqCcFClM5TqIUwlSloSTpkaSsk
+ knSpSySdJKkKSSSSpSySdJKlLJJ0kqUpJJJCkKTJ0kqUpMnSSpSoShOklSmKSRTJUpdOmCcJUlUJQpJi
+ lSmKUpFRKNKXlOopwjSV08JJ02lMUk6ZGkKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSk
+ kkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJClKSSSSpSkkkkqUpMnTJUpdJJJKlKTJ0x
+ SpSpSlMkhSl06YKQSpS0JQpJkqQtCUJ0kaUtCUJ0kqUtCSdJKlLJQnSSpS0JJ0kaUsknSSpSySdMlSlk
+ kkkKUpOmSQpS6ZJJGlKTpQnhKlLQnhOklSVoTQpJkqUskkmSpK6SSSVKUkkmRpS6SZJKkLpJJIUpSSSS
+ VKUkkklSFJJJJUpSSSSFKUkmSSpS6SSSVKUkkklSlJJJJUpSSZJKkrpJJJUpSSSZGlLpJkkqUunTJwlS
+ l4TQpJFClMEk5UUqUunhMFIIUpaEynCiUqUxSlMkhSGSeEwUwEqUxhMpkKBQpSpSlRlIFFTJJJOilZJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUpJJMkpdIJJJKZKDlJRckprWKuVYsVcpKZsVpiqsVpiS
+ kwTpgkkpSSSSSlJJk6SlJJJklKSSSSUpJJJJSkkk6SlkkkklKSSSSUpJJJJSkkkklKSSSSUunUVIJKWK
+ BYjlAsSU1XqLVJ6ZqSmxWrDUCtWGpKXTJ0klLJJJJKWSSSSUukmTpKUknSSUpJJMkpdJMkkpdJMkkpdM
+ kkkpSSdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9br0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkk
+ lKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJ
+ k6ZJSkkkklKSSSSUumTpklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUsknhKEkrJJ4TwipZOA
+ knSUqEiEpSlFTEhNtU04CKmAanDUQBPtSUjhMQi7UxaklCUlMtTbUVMU6fanhJasknhKElLJJ4ShJSyS
+ eEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJ
+ 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
+ UJQkpUpSlCUJIVKUpQlCClSlKUJQkhUpSlCUJKVKeU0J4SUpJKEoQSpKUoShJSpSlKEoSUqUpShKElKl
+ JKEoRUpJKEoSUqUkoShJSkkoTQkpYpk8JQipZPKW1LakpeUpTQnhBSkoTgJwElMdqbaihqfahakO1NCM
+ WqJakpgFKUxCSKl5TSmhPCSVpSlPCUIpUklCUIIVKUpQlCSFSlKUJQkpUpSlCUJKVKUpQlCSFJSlCcBB
+ Sk6QCeElKTFPCYhFTEpk8JQkpScJQlCSV5TEpkoSUsUylCcNRSwhOp7ExalaVpTymITQkhdOkAnhBCyZ
+ ShNCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZ
+ JPCUJKWSTwlCSlkk8JQkpZJPCUJKWTpQnhJK0JQpQltStTFMp7U0JKYp0oShJCkxClCUJKYEJkTam2pK
+ YhSCUJQkpSUpQlCSlpSlPCUJKWlKU8JQkhaUpTwmhJSpSlKEoRUqUpShKElKlKUoShJSpSShKElLJKW1
+ LagpiknhNCSl08JAKQCSloTwpbUiELSwKYlOQoEIqVKUqMJwEVLykkGp9qSVkpTwmhJSk6UJ4SUsknhK
+ ElLJJ4ShJCySeEoSUsknhKEELJJ4ShJSySeEoSUxSUoShJSySfaltQUskn2pbUlLJJ9qW1JSySfaltSS
+ skn2pbUlLJJ9qW1JSyZShLaipZKU8JiElLymlNCUIKUSmUtqbakpQKkCowlKCkkqJUZSlBSoTgJJwkhc
+ BSTJEoKWJQyVIlQKSlpThNCkAkpkE6YJ0krJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ0klLJJ0yS
+ lJJJ0lKUXKag5JTWsVcqxYq5SUzYrVaqsVutJSUJJBOUlLJJJJKWTpJJKUmSSSUpJJJJSkkkklLpJJJK
+ UkkkkpZJJJJSkkkklKSSSSUpJJJJSlIKKkElLFAsRygWJKar0zU70zUlNmtWGqvWrDUlMkydMkpZJJJJ
+ SySSSSlJ0ydJS6SSSSlJk6ZJSkkkklKSSSSUpJJJJS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJT//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcI
+ DEcJKXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRS
+ UhsVV6tWKq9JTAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmSUpJJJJSkkkklKSSSSUpJ
+ JJBSkkkklKSSSSUpJJJJLIBPCYFSlJSoTEJ5TFFLEqJKmVAhFS0pbkxCaElMw5TBQkt0IqbAKlKqG2FE
+ 5EJUpuylIWecsBROaEqU6MhNIWac4eKb7aPFGlOlITbgs37aPFN9tHijSHT3BLcFmfbQl9tHilSHT3BL
+ cFmfbR4pfbR4pUp09wS3BZn20eKX20eKVKdPcEtwWZ9tHil9tHilSnT3BLcFmfbR4pfbR4pUp09wS3BZ
+ n20eKX20eKVKdPcEtwWZ9tHil9tHilSnT3BLcFmfbR4pfbR4pUp09wS3BZn20eKX20eKVKdPcEtwWZ9t
+ Hil9tHilSnT3BLcFmfbR4pfbR4pUp09wS3BZn20eKX20eKVKdPcEtwWZ9tHil9tHilSnT3BLcFmfbR4p
+ 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
+ kLO+2jxTfbR4pUp0pCUhZv20eKX20I0p0pCUhZv20JfbR4pUp0pCUhZv20eKX20eKVKdKQkSFnfbR4pj
+ mjxSpDoFwTbgs45gTfbAjSnTDgphwWSMwKQzQhwqdbcExcFl/bR4pjmhDhS6RcFEkLO+2jxS+2BOpToS
+ FIQs4ZYUxlhIhLoiEjCofawmOYE2kt4kKO4LPdmBQOYE4RU6YcFLcFlDNCl9tCXCp09wS3BZn20JfbQh
+ wqdPcEtwWZ9tCX20JcKHT3BLcFmfbR4pfbR4pcKnT3BPuCzPto8Uvto8UuFDpyEpCzPto8Uvto8UqQ6e
+ 4Jbgsz7aPFL7aPFKlOnuCW4LM+2jxS+2jxSpTpyEpCzPto8Uvto8UKU6chKQsz7aPFL7aPFKlOnISkLM
+ +2jxS+2jxSpTpyEpCzPto8Uvto8UaS6chLcFmfbR4pfbR4pUp05CUhZn20eKX20eKVJdOQluCzPto8Uv
+ to8UqU6chNIWb9tHin+2hKlOjon0Wd9sCcZgQpToaJ4VFuUCjsvBQpCYhDKkHymKVKRkpSnITbUlLgqQ
+ KYBPCCGUppSTIKUlCUpwkpaE8J0kFLJJJJJUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKTJ0k
+ lKSSSSUuouUlFySmtYqxVmxVykpmxWq1VYrVaSkwSKQSKSlkkkklKSSSSUskkkkpSSSSSlJJJJKXSSSS
+ UpJJJJSySSSSlJJJJKUkkkkpSSSSSlKQUVIJKWKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJk6ZJSySSS
+ SlkkkklKTpk6Sl0kkklKTJ0ySlJJJJKUkkkkpSSSSSl0ydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSn/0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcI
+ DEcJKXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRS
+ UhsVV6tWKq9JTAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmSUpJJJFSkkkkFKSSSSUpJ
+ JJBSkkkklKSSSSUpJOmSStKW5IhNCSmQcnlQUgilmmhIFPKKmJam2qZKaUVIyEJ5hGcVVtKSkFtsKjbk
+ wp5Dll3vRUmfmEIDs0+KpWPKCZKKm+c0+KX20+KoBhKmKikpufbCn+2FVPSKXplOWtv7YUvthVX0ym9M
+ pKbf2wpfbCqnplL0ykpt/bCl9sKqemUvTKSm39sKX2wqp6ZS9MpKbf2wpfbCqnplL0ykpt/bCl9sKqem
+ UvTKSm39sKX2wqp6ZS9MpKbf2wpfbCqnplL0ykpt/bCl9sKqemUvTKSm39sKX2wqp6ZS9MpKbf2wpfbC
+ qnplL0ykpt/bCl9sKqemUvTKSm39sKX2wqp6ZS9MpKbf2wpfbCqvpFL0ikptfbCn+2FUzWVAtISSHQOa
+ VE5x8VmOJCE55TqS6328+KkM4+Kxd5RGOKVKdkZp8U/2srMZJRg0pUpuHLKicsqvsKiaykhsfayn+1lV
+ DWUvTKCG4MspfayqmwpbCkhtnLKicsqt6ZTemUlNn7WU4yyqvplL0ykpt/ayl9rKqemUthRQ2/tZS+1l
+ VNhT7Ckltfayl9rKqbCl6ZRU2/tZS+1lVPTKWwpJbf2spfayqnplL0ykpt/ayl9rKqemUvTKKW39rKX2
+ sqpsKWwpKbf2spxlFVBWVL0ymFTa+1lL7WVV9MqJYU1DaOYU32sqqWFN6ZRU2xlFTGWVTFZT7CEVN4Zh
+ CX26O6znSEB9hCVKdc5/mo/bz4rENxTC0lKlO59tPil9rKymOJR2glFTdOWUxzCquwqJrKKm39sKX2sq
+ oKyn9IpKbX2spfayq3pFL0ikps/ayl9rKrekUvSKSGz9rKX2sqt6RS9IoKbP2spfayq3pFL0igps/ayl
+ 9rKrekUvSKCm19rKX2sqr6RS9IpKbX2spvtZVb0imNRSU2vthS+2HxVQ1lN6ZSU3Pth8Uvth8VT9Mpem
+ UlNz7YfFL7YfFU/TKXplJTc+2HxS+2HxVP0yl6ZRS3PthS+2FU/TKXplJLc+2FL7YVT9MpemUVNz7YU3
+ 2wqp6RT+kUaS2xmFTGafFUDUVEghKlOoM4+KY5/msdzyEJ1xQpTtHPPikM0+KwxaSjMcSkp2BmFMcoqi
+ wEomwpITnKKb7WUA1lR9IpIbP2spfayq3pFL0igps/ayl9rKremUvTKCG19rKX2sqr6ZS9MpKbf2spfa
+ yqvplN6ZSU2vthS+2FVfSKXpFJLa+2FL7YVV9IpekUlNr7YUvthVX0il6RSU2vthS+2FVfSKXpFJTa+2
+ FL7YVV9MpekUlNr7YUvthVX0il6ZRU2vtZS+1lVfSKXpFJTZOWU32sqsaimNZSU2hllTGWVR2FSDCklu
+ HMKicsqt6ZTGspJbByykMsqqaimLCElN4ZhRRnHxWSZCiXkJKdsZ/mmOd5rD9YpxaSlSnZOafFROWVmN
+ eSiAEoqbhyym+1lVdhTGspKbf2w+Kf7YVT9MpemUENz7YfFL7YfFU/TKXplBDc+2HxS+2HxVP0yl6ZSU
+ 3Pth8Uvth8VT9MpemUlNz7YfFL7YfFU/TKXplJTc+2HxS+2HxVP0yl6ZSU3Pth8Uvth8VT9MpemUlNz7
+ YfFL7YVT9Mp/TKSm39sKf7WVT9IqQqKKm39rKX2sqqKil6RSU2vthTfbCqxrKj6ZSU2vthS+2FVfTKXp
+ lJTZ+2FN9sKrekUvSKSm19rKcZZVT0ipCopKbf2spjmFVvSKY1lJTZ+2nxSGcfFUXMKEZCSXWGefFS+3
+ nxWIXkJeqUaS7Rzj4phmlY4sJRmElKkuoMspHKKpNaSiemUqQmOUVA5ZQjUVA1FJDY+1lL7WVW9IpvTK
+ CG4MsqQyyqPplSDCghvfaym+1lUwwp9hSQ2jllR+1lVthTGspKbX2wpvthVX0il6RQU2vthS+2FVfSKX
+ plJTa+2FL7YVV9MpemUlNr7YUvthVX0il6ZRS2vthS+2FVfSKXplJTa+2FL7YVV9MpekUlNr7YUvthVX
+ 0il6RSU2vthS+2FVfTKXplFLa+1lL7WVV9MpthTktwZZUhllUgwqQYUFN37WU32wqmWlDdISU3zmnxUT
+ nnxWW9xCCbCgh2vt58Uvtx8ViiwojXEpKdf7YUvtZWc2SiBpSU3ftZTfayqmwpemUlNv7WUvthVP0yl6
+ ZSQ3Ptp8UvtpVP0yl6ZSU3Ptp8Uvtp8VT9MpemUFNz7afFL7afFU/TKXplJTc+2lL7afFU/TKXplJTc+
+ 2nxS+2nxVP0yl6ZSQ3Ptp8Uvtp8VT9MpemUlNz7afFL7afFU/TKXplJTdGaU/wBsKpemUvTKSm4cw+Ki
+ cwqr6ZTekUlNv7YUvthVQVFP6RSS2/thTfbCqpqKiaykpt/bSl9sKp+mUvTKKW59sKcZhVMVFSFRRS3h
+ llOcwqoKimdWUqU2HZxHdQOefFUbGkKq8kJUl2B1A+KmM8+KwPUKIywpUp3hmnxS+1lZLHko7QSkpunL
+ KicsqtsKXplJDZ+1lOMsqr6ZSFZQQ3PtZS+1lVfTKXplJTYOWU32sqsaym9MoIbP2sqQyiqgrKkKykhu
+ DKKX2oqrsKWwpKbJyyo/ayqxYU3plJTa+1lL7WVV9MpemUlNr7WUvtZVX0yl6ZSS2vtZS+1lVfTKXplJ
+ Ta+1lL7WVV9MpemUlNr7WUvtZVX0yl6ZRU2vtZS+1lVfTKXplJTa+1lP9rKqemU4rKKWz9qKicooHplR
+ NZSU2PtZUm5ZVT0ynFZSU3hllOc0qjtIQnkhJTonOPio/b/NZL3kIRtKSXcGcfFSGaVhtsKOxxKSnVOW
+ VB2WVTAJSLCkpsHLKcZRVX0ynFZRU3BlFP8AayqorKXplAqbX2wpvthVX0yl6ZTUNr7YUvthVX0yl6ZS
+ Q2vthS+2FVfTKXplJTa+2FL7YVV9MpemUlNr7YUvthVX0yl6ZSU2vthS+2FVfTKXplJTa+2FL7YVV9Ip
+ emUVNsZZUhllUvTKfYUlNz7WUxyyqmwpiwpKbRyym+1lVSwpthSS2/tZT/ayqWwp9hSS3PtZTfayquwp
+ vTKSm19rKf7WVU9MpxWUktwZRUhllU9hTFpCKm/9sIUTnHxWa8kID7CEFOq7qB8VD7efFYzrSk1xKSHb
+ bnE90QZZKyawSrbKyUENw5RUDlFD9IqJpKSkv2spfayq5pKY1FJTZ+2FL7YVVNRTemUlNv7YUvthVT0y
+ n9IpKbP2spfayqvpFL0ikptjLKf7WVVFRT+kUlNn7WUvtZVb0im9IpKbX2spfayqvpFL0ikptfayl9rK
+ q+kUvSKSW19rKX2sqr6RS9IpKbX2spfayqvpFL0iiptfayl9rKq+kUvSKSm19rKX2sqr6RS9IpKbX2sp
+ vtZVb0imNRSU2vtZTfayqvplN6ZRU3PtZUhllUthS2FJTeGYUjmnxVAghCeSElOkc8+Kb7efFY7nlQ9Q
+ oKd0Zx8VMZp8VhseVYYSUlOr9rKg7KKqAEpFhSQmOUUhllVjWU3plJTcGWVL7WVSFZUvTKSm19rKX2sq
+ r6RS9IpKbX2spfayqvpFL0ightfayl9rKq+kUvSKSm19rKX2sqr6RS9IpKbX2spfayqvpFL0ikptfayl
+ 9rKq+kUvSKSm19rKb7YVV9IpekUENv7WU/2sqp6ZT+mUVNr7UUvtRVXYUthRS2ftZT/ayqnplP6ZRU2v
+ tZUTllVzWVE1lJLY+1lIZZVb0ikKiiluDLKmMoqmKyp+mUlNr7WUxyyqpYUJwIRS3vtpS+3HxWW5xCEb
+ Ckp1znHxUDnHxWVvJTiSlSnUGafFTGYVmtaSjNrKVKb/ANrKY5ZVUVlI1lClNk5hUTllVjWU3plJDa+1
+ lL7WVV9Ip/SKSm19rKf7WVU9Ip/SKCG19rKf7WVU9IpekUENk5hUfthVc1FRNZSU2/thTjMKpisqQrKC
+ m39rKX2sqr6RS9IpKbX2spfayqvplL0ikptfayl9rKq+kUvSKSm19rKX2sqr6RS9MpKbX2spfayqvplL
+ 0ykptfayl9rKq+mUvSKKm19rKX2sqr6RS9IpJbByymOWVX9IpekUlJ/tRSGUUD0iomshFTbGYQiDOI7r
+ McCEIvISU7Qzz4pHPPisP1SnFpKVKdg5p8VA5ZWaHEogaSkpufaynGUVUFZUxUUlNsZZT/ayqnplP6ZR
+ U2DllN9rKrGspvTKBU2vtZS+1lVfSKXpFRlc2vtZS+1lVfSKXpFJTa+1lL7WVV9Ip/SKcENn7WUvtZVb
+ 0il6RTlNn7WUvtZVX0il6RRQ2vtZS+1lVvSKXpFJDZ+1lL7WVW9IpvSKCm19rKf7WVV9IpemUCpt/ayl
+ 9qKq+mUvTKYptfaymOWVW9MpemUlJzllROWUE1FRNRQUn+1lOMsqr6RT+kUQltjLKIMoqkKypisp4S2/
+ tZUTmFVXNIVd8hOAS6P24+KkM/zWI6whRFxTuFTvfbj4qJzT4rHbaSitJKBCnROYU32wqmGEqXpFNWtv
+ 7YUvtZVX0il6RSU2vtZTfayq/pFN6RRU2ftZT/ayqvpFL0igpt/bCl9sKqekU/plJTb+2FMcwqr6ZS9I
+ pKbJzCo/ayq/pFN6RSU2ftZT/bCqvpFL0ikpt/bCl9sKq+kUvSKKm19sKX2wqr6RS9IpKbX2wpfbCqvp
+ FL0ikptfbCl9sKq+kUvSKSm19sKX2wqr6RS9IpKbX2wpfbCqvpFL0ikptfayl9sKq+kUvSKCmx9sKX2s
+ qqaim9MopbgyypDLKpispywhFTd+2EJfbj4rNeSFXfYQgp2ft58UhnHxWEbipssJSQ7YzCU5yysysko4
+ YSklsOyioHLKEaihGopIbYzCpjMKoisqQYUlNz7WUvtZVT0yn9MpKbX2spfayqvpFL0ightfbCl9rKq+
+ kUvSKSm19rKX2sqr6RS9IoKbX2spfayqvpFL0ikptfayl9rKq+kUvSKSG19rKX2sqr6RS9IpKbX2spfa
+ yqvplL0ykptfayl9rKq+mUvTKSm19rKX2sqp6ZS9MpKbf2spvtZVX0yl6ZSU2vtZSOWVV9MpvTKSW19r
+ KX2sqr6ZT+mUUtsZZUxllUhWVIMKKW59rKg7NKquaQq1hISS3/tx8VNuf5rEc8hMLSkp6AZ3mnOafFYj
+ LSUZpJSpTonMKb7YVTDCVL0ilSm19sKX2wqp6RS9IpUpt/bCl9sKqekUvSKVIbf2wpfbCqnpFL0ight/
+ bCl9sKqekUvTKCG39sKX2wqp6ZS9IpKbf2wpfbCqnplL0ykht/bCl9sKqemUvTKaUtr7YUvthVX0im9I
+ oJbf2wpfbCqnpFL0ikpt/bCl9sKqekUvSKKm39sKX2wqp6RS9Ioqbf2wpfbCqnpFL0iipt/bCl9sKqek
+ UvSKSm39sKX2wqp6RT+kUVNk5ZTfayq/pFL0iiptjLKIMsqhsITEEJKdH7afFMc4+Ky3OIQnWFCkusc4
+ +Kic4+Kx/UKkHEpKdX7afFP9sKzWglFDCUkNz7WU32sqt6ZTekUlNr7WU4yyqnpFOKygpt/ain+1FVBW
+ U/plJTa+1lN9sKrGsqJrKCW39sPil9sKp+mUvTKSW59sKX2wqn6ZS9MpKbn2wpfbCqfplL0ykhufbCl9
+ sKp+mUvTKCG59tKX20qn6ZS9MpIbn20pfbCqfplL0ykpufbCl9sKp+mUvTKSm79sKb7YVU9MpemUVNr7
+ WUvtZVX0yn9IoqbYyynGWVT9Mp9hSU3PtZS+1lU9hS2FGktz7WU32sqpsKiWlGkt77aR3S+3nxWa6QgO
+ eQlSnY/aB8U328+KxDYU4sKPCl2/tpPdL7YVkscSjtBKVKb/ANrKX2sqoKyn9IphWtr7WUvthVX0il6Z
+ QU2vth8Uvth8VV9MpemUlNr7YfFL7YfFVfTKXplJTa+2HxS+2HxVX0yl6ZSU2vth8Uvth8VV9MpemUlN
+ r7YfFL7YfFVfTKXplJTa+2HxS+2HxVX0yl6ZSU2vth8Uvth8VV9MpemUlNr7YfFL7YfFVfTKXplJTa+2
+ HxS+2HxVX0yl6ZSU2vth8Uvth8VV9MpemUlNr7YfFL7YfFVfTKXplJTa+2HxS+2HxVX0yl6ZSU2vtZS+
+ 1lVfTKXplJTbGWU4yyqgqKl6ZTgpsnLKgc0qs5hCrvkJ1Kb5zj4pvt58VkucVDeUlO4M4+KmMwrFY8qw
+ yShSnTOWVA5ZVQNKRYUFNn7WVIZZVLYU4YUlN0ZZT/ayqewpbCgpufaym+1lVdhTbCkptfayl9sKqFhT
+ GsoKbf20pfbT4qn6ZS9MpKbn2w+KX2w+Kp+mUvTKSm59sPil9sPiqfplL0ykpufbD4pfbD4qn6ZS9Moo
+ bn2w+KX2wqn6ZS9MpKbn2wpfbD4qn6ZS9Moqbn2w+KX2w+Kp+mUvTKSm59tPil9sPiqWwpgwoKb32sp/
+ tRVMMKmKikhsjKKf7WVW9IpjWUktg5hTfbCqprKjsKKm4MwqX2wqjsKRaQilvfbT4pfbz4rLeSEF1hCV
+ Jdv7efFL7efFYQuKm2wlKkuwc0lN9rKzmyUYMJRU2/tZS+1lVvSKb0ikptfbCl9rKq+kUvSKFKbX2spf
+ ayqvpFL0iihtfayl9sKq+kUvSKCG19sKf7YVU9IpekUFNv7YU32wqr6RS9IoIbX2wpfbCqvpFL0ikhtf
+ bCl9sKq+kUvSKSW19sKX2wqr6RS9Ipqm19sKX2wqr6RS9IpKbX2wp/thVT0il6ZRU2/thS+2FVPTKXpl
+ JTa+2FL7YVV9IpekUUtr7YUvthVX0il6RSU2vthS+2FVfSKXpFJTb+2FL7YVU9IpemUFNz7aUhnHxVBz
+ CEIkhJTuVZpK0sfJlcvU8ytfEfKCno6rJVgaqjjGQr7AgpW1OGqSeUFMdqaE5KiXIIUVEpyUySmKeU8J
+ QkpUp00J4QUpJJJBKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpOmTpKXUXKSg5JTXs
+ Vco9irlJSRitVqoxW60lJgkmCdJSySSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklK
+ SSSSUpJJJJSlIKKkElLFAsRygWJKar0zU70zUlNmtWGqvWrDUlMkydMkpZJJJJSySSSSlJ0ydJS6SSSS
+ lJk6ZJSkkkklKSSSSUpJJJJS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT
+ /9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJ
+ JJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxAC
+ OxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpkVKSSSSUukkkgpZJJJJSkkkkFKSSSSUpJJJJSkkk
+ kkrwlCSdJTGEk5TIqXlKUySKVEppSKQCKlnKrcrZCq3BFTlZCy7gtTIWXaipqlkqbKZTjlWqWykpVeLK
+ stw1aoqlX2Uoqcj7Go/Y1uGhQNKK1xvsiX2RbHopeikpx/siX2RbHopeikpx/siX2RbHopeikpx/siX2
+ RbHopeikpx/siX2RbHopeikpx/siX2RbHopeikpx/siX2RbHopeikpx/siX2RbHopeikpx/siX2RbHop
+ eikpx/siX2RbHopeikpx/siX2RbHopeikpx/siX2RbHopeikpx/siX2RbHopeikpyBhp/sa1xSpeggpw
+ 34kKpbjwuispWdkVwnBIcC2qFUexamQ2FQfynpQBisV1SotCt0tSUlqolW2Y0olFa0aqUCpojESOItht
+ Cn6CbaHCOIl9kW2aE3oJWhxfsib7Itr0E3oJIcb7In+yLY9BP6CSHG+yJvsi2vQS9BJTi/ZEvsi2vQS9
+ BBTi/ZEvsi2vQS9BJTi/ZEvsi2vQS9BJLi/ZEvsi2vQS9BK1OL9kS+yLa9BL0EbXOL9kS+yLa9BL0ErU
+ 4v2RL7Itn0EvQStLjjEUvsi1xQn9BBDjHEUTiLaNCj6CSHG+yKQw1sChSFCSnH+xqD8WFvegg20aIqea
+ vohZtzIXQ5VcLEyRCKnMdypViVF/KJTyipu0VStOrHlVsRkwtzGqlJTUGIl9jW02hP6CFqcUYal9jWx6
+ CXopWpx/siX2NbHopeiEVOP9jS+xrY9FL0UEOP8AY0vsa2PRS9FJTj/Y0vsa2PRS9FBTj/Y0vsa2PRS9
+ FBTj/Y0vsa2PRS9FBTj/AGNI4a2PRS9FJTinDS+xra9BL0ElOL9jS+xra9BL0ElOL9jS+xra9BL0EVOL
+ 9jS+xrZ9BL0EUuN9jS+xrZ9BL0EkuN9jS+xrZ9BL0EbS4ww1IYS2BQpihK1OE/DhUr8eF09lGiysuuEr
+ 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
+ 2Ra4pUhQkpxvsaX2NbfoJegkpxPsaf7Gtr0EvQSU4v2NL7Gtr0EvQSU4v2NN9jW36CXoJKcX7Gm+xrb9
+ BL0EVOJ9jT/Y1tegl6CKnF+xpjhrb9BL0ELU4Rw0ww1ufZ04xkrQ4rcNFGGtgY6mKELU432NROIts0qB
+ pRtThnDUfsa3DQmGOjaXE+x+SFZiwuiOMq19EBK1PLX0Qs+1kLoMuqFiZAgpyWmBqrNTJVcHVXcYSUUt
+ 2iiVoV4kpsSuVs006IKcz7Gl9jW16CiaUrU432RL7Itn0U3opWpx/siX2RbHopeilaHH+xpfY1seil6K
+ Fqcf7Gl9jWz6KXopIcb7Gl9jWz6KXooIcb7Gl9jWz6KXopIcb7Gl9jWz6KXopJcb7Gl9jWz6KXooKcb7
+ Gl9jWz6KXopKcb7Il9jWz6KXopKcb7Il9kWz6KXooqcb7Gl9jWz6KXopJcb7Il9kWz6KXopKcb7Il9jW
+ z6KXopKcf7GmOItn0UzqUlPP240LPtqhdHkVwFi5QhJTSYIK1cNZIdqtPDdqgp6PF4WgxZ2IdFosTSpk
+ VAlSKgUFMS5R3JEKKSGQKmFABEASUyATwkEpQUtCYpyU0oKWSSSQSpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpOmSSUpJJMkpdJMnSUuouUlFySmtYq5VixVykpmxWq1VYrVaSkwSKQSKSlJJkklLpJk6Slkk6
+ ZJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKUgoqQSUsUCxHKBYkpqvTNTvTNSU2a1Y
+ aq9asNSUyTJ0ySlkkkklLJJJJKUnTJ0lLpJJJKUmTpklKSSSSUpJJJJSkkkklLpk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9
+ WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJ
+ JJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTp
+ kUKSSSSUukmTpKWSSSQSpJOmQUpJJJJSkkkklKSSSSSqUpSTJKVKSZJFLJOmCdFSoTgJJwipYhVbwrpC
+ q3hFTi5IWVdytfKWRdyipC3lXscKi3lX8ZFLrYzVpVt0VDGC06xogpYtUSxHIUCEgVpRbEtiLCUI2hFs
+ S2IsJQlakWxLYiwlCVqRbEtiLCUJWpFsS2IsJQlakWxLYiwlCVqRbEtiLCUJWpFsS2IsJQlakWxLYiwl
+ CVqRbEtiLCUJWpFsS2IsJQlakWxLYiwlCVqRbEtiLCUJWpGGKexSAU4QJU07WaLKygtq0aLIy04JcHJW
+ bYdVpZSzLDqpQldhV7HWew6rQx0qU7GMFq0NWXjLWoTCptNap7UzSpSoypgWJtqkSlKK1hsTbERJK0I9
+ qW1TSStDHalsU0krUw2JbERJC1I9iWxESStSPYlsREkrSj2JbERJC1I9iWxESS4lyPYlsREkuJSPYlsR
+ EkuJKPYltREkbQiLU2xEKZFDEMUwxIKQKBKl9ir3M0VqUG3hIFLhZjVz+WF0mYFz2YE9DjWDVEoGqjaN
+ VOnlFTt4Q4XQ4rdFz+EeF0WKdEVN5jFItTsOiclRqYbUxaiJJWpHtS2oiSVqR7UtiJCSVqR7UtqJCUJW
+ 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
+ JJWpHsS2IiSNqR7EtiIklakexLYiJJWpHsS2IiSVqR7EtiIklamAYpBikE8oWhjsTEKZKgSkpiQokJyV
+ GU5SoUmtUZRGFIpZbFVyGaK7OiqZJ0TQl53NbyueyuV0WceVzmWdVICpozqr+KdVnd1fxeU5L0mF2W7Q
+ NFgYJ4W/jnRAqbO1RLEUJiFHaUWxLYiwlCNqRbEtiLCUJWhFsS2IsJQlaEWxLYiwlCVoRbEtiLCUJWhF
+ tS2osJQlakW1LYiwlCVqRbEtiLCSVqRbEtiLCUJWpFsS2IsJQlakWxLYiwlCVpRbEtiLCUJWpFtS2osJ
+ QlaUWxPsRITwlakWxRcxHhRcErU5WU3Rc9mLpcsaLm83lOQ5c6rTwjqsv85amENUFPSYfC02cLNwxotJ
+ qaVLlMQnKSCkZCaESE0JIYgKQShJBS8piUiVEpKVKUpk4QUukkkglSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJk6SSlk6ZOkpdRcpKLklNaxVyrFirlJTNitMVVitMSUmCSQSSUskkkkpSdJJJSkySSS
+ lJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpYoFiOUCxJTVemanemakps1qw1V
+ 61YakpkmTpklLJJJJKWSSSSUpOmTpKXSSSSUpMnTJKUkkkkpSSSSSlJJJJKXTJ0ySlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq7
+ 0lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJK
+ UkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpkUKS
+ SSSUumSSSUpJJJBK6ZOmQUpJJJJSkkkklKSSSSSsknShJS0JAJ4TopUAnSSRUtKcFRKTUVJVXvR1XuOi
+ KnIygse4arYyisi46pykDRqr+OqLeVfx0kuxjLTr4WbjLSZwmlTMqBKmUMpBaVJSmSRQvKUppSlJS8pS
+ mlKUlLylKaUpSUvKUppSlJS8pSmlKUlLylKaUpSUvKUppSlJS8pSmlKUlLylKaUpSUvKUppSlJS8pSml
+ KUlLylKaUpSUyBU5QwVNAqRW8LIy1q28LLyk+KXBygsuwarWygsuwaqYJYMGq0MdUGcq/jpKdjGWrSVl
+ Yy06k0qbjXJy5DCRTKQy3JwUJTCSEgKdRCkmoUmTpkkKTpk6apdJJJBSkkkkFKSSSSSpJJJBSkkkklyk
+ kkkFKSTJJKXSSSTwpUJQnCdOQwSCkVFJLKUK06IiDbwiEOVlrAy1vZawctOU49vKek6qNvKVR1RU7mGe
+ F0OK7Rc3hnhdDilFTqMKnKExTTCpmCnUApIKXSTJJJXSTJJIXSTJIKXSTJ0kLpJkklLpJkpSUumSlMkp
+ SaUkySl5SlMnSUqUpSSSUqUpSSRSpKUydJKkpTJJJXCIChhTCBSxs4WNmrYs4WNmlOCnnM3usa06rYzT
+ ysW06ooS0HVbmEeFg0crdwuySnpMThajOFl4fC1GcJpUzKhKkVFBC0p5TJ4RQpJOkghZOlCeElKSTpig
+ pUpSokppSUzlKVCUpSSzlKVCUpSUzlKVCU8pKZSlKimlFTOUpUJSlJTOUpUJSlKks5SUZThJKimUk0JK
+ UE8pgnSSolVbjorDlUuKIU5OWVhZJW3llYWSU9TnvOqLQdUB/KLQdUVO5iHhb+KVz2GeFv4qCnTYU5Ki
+ xOUxKpTyop0itK8pSmSQQvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKQKikCkpKCnlDB
+ UpQUopkimRUyTqITpKUSmJTEqJKSmUqQKGpApKZkoVhRJQbCkpo5BWNlFa+QVj5RTgpx8hUzyrl6qHlT
+ BcnoWziFY9AWxihEqdvGK0GFZ+MFoMCiKmZKYFIpgmoZgp0wToLVkycpIIUnlMnQQvKaUkk1SySSSSFJ
+ JJQkpSSSSKlJJJIpUkkknJWSTpJKWSTpJJWTpJ0krJFOolJK4KnKgApQgVIreFlZK1LeFlZSIQ4uUsq0
+ 6rTyisq06oqUw6rRxisth1WnjFJDt4y1aVk4y1aUlNtqkotUk1SySSSSl0kySSF0kySSl0kySSF0kySS
+ l0kySSl0pTJJKXSTJJKZBKUyRQUsSoykVEpJSAqQKECpgpKZEqKdMipZOmTpJWSBTFOEUs1Xv4VhV7+E
+ Alw81c/lcroc1c9l8p4U5ruVZo5VZ3KsUHVJTtYnZbmOsPEPC28dJToMKnKGxThJTKUpTQlCCGQSSATw
+ ghikClCQCCGYUlEJ0EKKinKZJSpSlMkipeUpTJJKXlKUySKl5SlMkkpeUpTJJKXlKUySSV5SlMkkpeUy
+ SdJK0JwlCRSQuCpyhBSlCkobzosPN7rauOixMxOCnncsalZjhqtXLWa4aopT4w1W/hdlhY/K3cPsip6D
+ GOivNcs/G4V1pTSFJCU0qKcIJXTpQkmlC6UqKSahlKUqMpSihlKUqMpJKZSlKjKUpKZSlKjKUooZSlKi
+ lKSmUpSoykipeUk0pSklkkmlJJSiU0pyoopXTpk6SVioypFQKSWQKmChhSCRUkJVa86I6rX8JBLjZhXP
+ ZZW/mlc9lFOU57+UfHGqruOqtY3KC0u7hDhdDijRYGF2XQY3CCG+3hIlMExTVLgp5Q5To0pkSmTSmlKl
+ MwlKiCkSkpRKjKRUUlMwphQCmklYppTlQKSmUpSopI0plKUqKSVKZSlKiklSmUpSoylKVKZSlKjKUpUp
+ lKUqKSVKZSlKjKSSl04TBSAQSsUN6KQhPRCmjkLFy1s5CxMspyHFyCqk6qzkFVJ1RU3sYrdxDwsDGK3s
+ Psgp3sYq80qhjcK+1NKlEqCmQoQgEKSSSRUunTJJIXSTJJKXSTJJKXSTJJKXSTJIIXSTJJKXlKUySSl0
+ 8qKdJS6SZJNUpJJJFKxUSpFRKSlJwmhSARSyCTk4CRCCWraFmZIWpaFmZIT0uLkrLs5WrkrLtSUwYtHG
+ KzmcrQxklO1jLTpWXjLUpSU2mqai1SQKmKdMkkpkE6iE6CFEqMpFRJQWswVIFCBUwUlMiVElIlRJQQvK
+ lKgnCIUySTJIqXSTJJJXSTJJKXSTJJKXSTJIqXSTJJKXTFJJJTEhSaEoU2hC0qhV7zorRVTI4QCnFzCs
+ DJOq3MxYWTynhTRPKsUBVzyrNCcp18ULYoCyMVbNCSW2xEUWBTAQUpOClCSCkgKlKGE8ppCWZKaVGUkF
+ MpSlRSRUvKUpkySmUpSopIqZJSopJIZSlKikkhnKUqKSCGUpSoynTSpRTFOmTVLJwknCClJiVJRKcliS
+ mlOU0JwSyaURDaiIlIat/Cwc08reyOFgZ3dSwS8/lnVZxOqv5fKzzyrQQ3sU6rocHsudxeV0OD2UU1PQ
+ Y/CtBVMfhWlWKFEpwVApwkpnKdRSlBTJJNKUpKXSSSSUpJJJJSkkkySl0kySSl0kkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJS6ZJJJSxTJymSSolVMg6K0VTyOE4KcPNK5/JOq3s1YGTykhp91fxeVQHKv4vKSnoM
+ Lst7HOiwcPstyjhJTcBUSUgkQgpQTwkApwghhCSkQolJSk6inSQukmSSUvKSZJJS6UpkkkLylKZJBS8p
+ SmSSUvKUpkklLymSTJKXUgoKQSUzTFIJykpgVFSITQilZJPCUIpWUHKZCi5FLSv4WJmLbv4WJmIpcPJK
+ pd1cyeVT7pKb2MNVv4YWDjLfw+ySndx+FcCp4/CuBMKWJKipFRRCFJJJJIUnTJ0kKSlJJBCkkkklKSSS
+ QQpJJJJIWTpQlCS5SZPCUJKWSTwlCKlJk6SKlkk8JJKWSTpJKWSTpkksgmJThMQkpr2lZuQtK0LNyE4I
+ cXKWVatbKWVaipGzlaOMs5nK0cZJTt4q16FkYq2KAmlTaanKZqRTEsZTSnTJyF5Tyop0lMpSTJIJXSTJ
+ JKXSTJJKXSTJJIXSTJIKXSTJJIXSTJJIXSTJIqXTEp4TEJKYEptyRCinKZgp1EKYQSskpQmISSieVTvK
+ uPCp3hSRS5OSsjIC2MgLJvCeFOc4ao1IUSNUakIpdPFC2sdZGMFsUBAodCtGCBWjBQlayJUZTlRTVLpJ
+ kkVLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpSmSSUzBTu
+ KiE7kEtLJOiwM0reyeFg5ieFOBk8qmBqruQNVVA1TlNvGat/DasXFC3sMcJqnWpGishBqGiOAkpkCiAo
+ QUwU0qSSolNKUpqlimhSShJDGFIJQmQUvKeVFJBS8pSmSSUvKUpkyKmUpSmSSUvKUpkkVLylKZMkplKU
+ pkySmUpblFMihnKZMFIBJDAhNCNtS2oWlBCm1SLVEBOUzlVMh2islUsg6JBLiZp5XPZQ1W/mFYORynJa
+ Ibqr2M1VQNVfxgil2sLst3HOixMQLboCSm60p1FqdRpZJk0pSkpdJNKUpIXSTSkkhdJMlKSF0k0pJIXS
+ TJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTSlKSV0k0pJKXSUUpSSyTqMpSkpkoOKdRckpz8s6Lnc3ldDlcL
+ nswap6HLj3LVwRqswDVa2CNUFPRYg0WgFRxeFdTSpYlIFRKQSUzlJMEk1Ck0pFMkpdNCQUwEFMYShThM
+ UFMUkikklSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUsknTJKUkknSUuoOU1FySmrYq5VmxVyk
+ pkxWmKqxW2JKShJOEklLJJJJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkk
+ klKUgoqQSUsUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUyTJ0ySlkkkklLJJJJKUnTJ0lLpJJJKUmTpklKS
+ SSSUpJJJJSkkkklLpk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Tr0kkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydM
+ kpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapq
+ DVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpklKSSSQtSkkkkrUpJJJFSk6ZJJSkkkklKSSSSUpJJJBSk6ZO
+ kpZOmSSSySTApwipYhOAnTgIqUVVvOitlU8jhOU4+U5ZNztVp5SybeUUrMOq0MZZrDqtDHKcp3MZaLOF
+ lY71osegQpOUIpy5QJQAWldOoSluRpDNJQ3JbkqUzSUNyW5KlM0lDcluSpTNJQ3JbkqUzSUNyW5KlM0l
+ DcluSpTNJQ3JbkqUzSUNyW5KlM0lDcluSpTNJQ3JbkqUzSUNyW5KlM0lDcluSpSQKSECp7kCEo7eFl5S
+ 0rTosvKKcFBxsorJtOq08orKtOqktcsw6q/jlZzOVfxylanbxitakLHxitagoFTbATkJmuUiUxCMhOEx
+ KUooZgqUoUpbkqQllKULcnDkKUllJDDk+5ClJElDcluSpTNJQ3JbkqUzSUNyW5DhUzSUNyW5LhUzSUNy
+ W5LhVbNJQ3JbkuFNs0lDcluS4VWzSUNybcjSLSSluQi5NvRpFppSQg9SDkKTaWEG0aIu5AtdokEuVlrn
+ 8tb2W5c/llSAJcm3lKrlK3lPVynUp2MMcLocVc/h9lv4pSpTpsREJhU5UZUzCdQlKUKUzSUJSlCkM0lG
+ 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
+ SaUpSpS6SaUpSpS6SjKeUaUvCUJSlKC1eE4UC5NvSUmBTygb0+9KkpCoqG9IPSpLNyo5PCuFyo5J0Tgl
+ wc0rByHarczTysDJ5T6Sha7VaOKVlN5WliFKlPRYfZbdA0WFhHhblDtECpthMSmDlEuTKRbOUlDcluRp
+ Fs0lDcluQRbNKVDcluSpVs5SlQ3JbkqUzlKVDcluRpTOUpUNyW5KlM5SlD3JbkqSklKUPcluSpSRJD3J
+ bkqUklKVDcluQUzlJQ3JbklM0lDcluSUzTKO5NuRpTOU8oe5LclSUgKTlAOSLkqU1MoaLns0aroMl2i5
+ /MOqdSnLjVamEdVlk6rSwjqgUPS4h0V8LOxDotJvCjJSwITAIhCaEwlTEBPCSeULQtCYhSTFK1MU4KYp
+ kVUzlNKjKSKl0kkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpJJKUmSSSUpOmTpKXUXKSi5JTWs
+ VcqxYq5SUzYrTFVYrTElJgkkEigpZJJJJSkkkkVLJJJJKUkkkkpSSSSSl0kkklKSSSSUskkkkpSSSSSl
+ J0ydJSySdJJSk6ZOkpYoFiOUCxJTVemanek1JTZrVhqr1qy1JSkykVEpKWTJymSUpJJJJSk6ZJJK6dMk
+ kpdJJJJVLJJ0ySqUkkkkmlJJJJKpSSSSSqUkkkkqlJJJJKpSSSSSqUkkkkqlJJJJIpSSSSSqUkkkkqlJ
+ 0ydJCkydMkhdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSQUsknSSUsknSSUsknSSUsknSSUsknSS
+ UsknSSUsknSSUskkkilSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSn//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkp
+ dJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVX
+ q1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpk6ZBKkkkkFKSSSRUpJJJFCkkkklKS
+ SSRUpJJJBSkkkklLpJJIKWTKSZJSkgUydJTKVIFQCkE4JZFU71aJVW8pwU42UFk2jVbGSsm5OCWu3Qq5
+ S+FQLoU2WwnKd2i6FeZeudZkwrDctJTv+ul6yxBm+aX23zSWl2/WCb1gsX7b5pfbfNJDtesEvWCxftvm
+ l9t80lO16wS9YLF+2+aX23zSU7XrBL1gsX7b5pfbfNJTtesEvWCxftvml9t80lO16wS9YLF+2+aX23zS
+ U7XrBL1gsX7b5pfbfNJTtesEvWCxftvml9t80lO16wS9YLF+2+aX23zSU7XrBL1gsX7b5pfbfNJTtesE
+ vWCxftvml9t80lO16wS9YLF+2+aX23zSU7XrBL1gsX7b5pfbfNJTti4KfrhYQzfNP9tSU61lwhZuTbKA
+ /MlU7cmUkhFkulZtnKPbbKqucnLl2BXaDCotcrFT4SU7eO+Fp1XQufqvhWmZMJUp3xekb1ijLSOWhSHY
+ N6cXLF+1qQy0UO16qXqrHGWpfa0kOt6qXqrIOWmOYkp2fWCXrBYv2xL7Ykp2/WCXrBYn21L7akp2/WCX
+ rBYn21L7akh2/WCXrBYn21L7akp2/WCXrBYn21L7agp2/WCXrBYn21L7akp2/WCXrBYn21L7akp2/WCX
+ rBYn23zS+2+aSnb9ZL1VjDMUvtaSnVNqj6yyzlqBy0kOwLlIXhYf2xOM1FId71wg236LJ+2+ag/LlKly
+ TKslYmS6VauvlZ1z5TktSzlSq5Q3lOwwil2MV0LcxrIXM0WwtOnJhJD0bLgp+sFhNzYUvt3mm0l2/WCX
+ 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
+ 9sS+2I0h2fWS9ZY32xL7YjSnZ9ZL1ljfbEvtiVKdn1kvXWN9sTHMSpTt+ul9oCwzmeab7b5oUp3fXTG5
+ YgzE/wBrQU7PrJvWWR9rS+1JKdkXqQvWJ9rT/a0KXOy69VbrpWectBfkyjSmWQ+VlXlHtulUrXyipCUS
+ soBcpMeil1sd8LWotXPVWwr1WRCRQ9FXcji4LBZlwiDMTCtds3BR9ZY5zPNR+2JIdr1kvWWL9sS+2JJd
+ r1kvWWL9sS+2JKdr1kvWWL9sS+2JKdr1kvWWL9sS+2JKdr1kvWWL9sS+2JKdr1kvWWL9sS+2JKdr1kvW
+ WL9sS+2JKdr1kvWWL9sS+2JKdr1kvWWL9sS+2JKdr1kvWWL9sS+2JKdr1kvWWL9sS+2JKdr1kvWWL9sS
+ +2JKdr1gn9YLE+2JfbEkO4LgmdcsYZiRzEQEt2+2Vj5TpU7cmVQuulPS071UjVHtfKBKSmzSYWtjPhYt
+ boV+m2EFPRUWq6y9c9Xkwjty4QU74uCl6oWEM1TGahSnYNoUDaFlHMUTmJKdb1k4vWMctL7Wgp2vXS9c
+ LE+2JfbEFO36wS9YLE+2+aX23zSU7nrBL1gsP7an+2+aSnb9YJesFifbUvtqSnb9YJesFifbUvtqSnb9
+ YJesFifbUvtvmkp2/WCXrBYn23zS+2+aSnb9YJesFifbfNN9tSU7nrhN64WGc3zTfbfNKlpdz103rrE+
+ 2J/tiSHa9dL11i/a0xzEUu0b0hesQ5iQzEaXO4b1VvtkLP8AtaFZkyjS5FlulYt4kq/fdKzrXyipAG6q
+ 9j6KlKsVPhJDv4tkLXpv0XM03wr1eVCSnoRel6wWKMxL7amIdr1kvWCxftiX23zSQ7XrBL1gsT7b5pfb
+ fNBDt+sEvWCxPtvml9t80lO36wS9ZYn23zT/AGzzSU7XrJessT7Z5pfbPNFLt+sm9ZYv2zzS+2eaSXa9
+ YJesFi/bPNL7Z5oqdr1gl6wWL9s80/2zzRpTs+sEvWCxvtnmm+2eaRCnb9ZL1lifbPNL7Z5pinb9ZL1l
+ ifbPNL7Z5pKdv1kvWWJ9s80vtnmkp2/WTessX7Z5pfbPNOCna9ZP6wWL9sS+2+afSXa9ZQdesg5ig7Ll
+ ClN3Iv0WJk2SUS7JlZ9tklJSwMlamGsmsyVr4aYVPQ4nC0mLMxTotJhURUzKiU5TFRlTElNKRCiUFMpS
+ lQTohTJKEwUgnJWhKFJMUULJJJJIUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ySSm
+ Si5SUHIKa9irlHsVcoqSMVqtVGK3WgpMExSCRSUpMkkkpSdMnSUskkkipSSSSSlJJJJKXSSSSUpJJJJS
+ ySSSSlJJJJKUnTJJKXSTJJKXTqKdJSxQLEcoFiSms9M1J6TUlNqtWWqtWrDUlMiolOVEpKWKSSZJS6SS
+ SSlJJJJJtdJJJJSk6ZOkpSZOmSSpJJJJVqSSSSTakkkklWpJJJJVqSSSSVakkkkFWpJJJJVqSSSSRakk
+ kklWpJJJJSkkkkUKSSSSWqSSSSUpJJJJSk6ZJJS6SZJJS6SZJJS6SZJJS6SSSClJJJJKUkkkkpSSSSSl
+ Jk6SSlkk6SSlkk6SSlkk6SSlkkkkUqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSU//9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqS
+ mwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl
+ 0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpkClSSSSClJJJIqUk
+ kkihSSSSSlJJJJKUkkkkpSSSSKlJJk6Cl0kkkFLJJFNKKmScKAKlKISpxVW5WSUCwSnhTlZAWVexbttU
+ qjZjyiEuG9hQ4K134qEcQpynNBIUg8q99kPgm+yHwRU0t5TeoVe+xnwS+xHwQWFo+oUvUKvfYj4JfYj4
+ JKaPqFL1Cr32I+CX2I+CSmj6hS9Qq99iPgl9iPgkpo+oUvUKvfYj4JfYj4JKaPqFL1Cr32I+CX2I+CSm
+ j6hS9Qq99iPgl9iPgkpo+oUvUKvfYj4JfYj4JKaPqFL1Cr32I+CX2I+CSmj6hS9Qq99iPgl9iPgkpo+o
+ UvUKvfYj4JfYj4JKaPqFL1Cr32I+CX2I+CSmj6hS9Qq99iPgl9iPgkpo+oUvUKvfYj4JfYj4JKaXqFL1
+ Crv2I+CX2I+CSmiXkqBJK0vsR8E/2I+CQSHIcwlDNRW39i8kvsPknrnDFZRGsIWv9h8kvsXkkpzmyEQE
+ q8MMp/shSQ0dxTFxWh9jKb7GfBC1OfvKcPKvHDPgmOGUkNQWFL1CrX2QpfZCkhqGwpjYVc+yFN9jPggp
+ peoUvUKu/Yz4J/sR8ErU0vUKXqFXfsR8EvsR8ErQ0vUKXqFXfsR8EvsRStTS9QpeoVd+xFL7EULU0vUK
+ XqFXfsRS+xFJTS9QpeoVd+xHwS+xHwSU0vUKXqFXvsR8E32I+CSWj6hTiwq79iPgn+xHwSU1BYVMWFWR
+ iFP9kKSGqXlQLyr32QpjhnwSQ5xeU3qFXzhHwTfYj4IpaYsKfeSrgwz4KQxCnWuc50lBewlbH2M+CY4X
+ klaXBNRTCohbpwfJR+w+SKXKY0hGDiFf+xHwS+xnwSQ0fUKb1Srxwj4JvsR8ELS0xaVIWFWxhHwUhhHw
+ QJWtP1Cl6hV37EfBL7EfBBDS9QpvUKvfYj4JfYj4IIaPqFL1Cr32I+CX2I+CCmj6hS9Qq99iPgl9iPgi
+ po+oUvUKvfYj4JfYj4JJaXqFN6hV77EfBL7EfBJLR9Qp/UKu/Yj4JfYj4I2ppeoUvUKu/Yj4J/sR8ErU
+ 0fUKXqFXvsR8EvsR8ErU0fUKb1Cr32I+CX2I+CCGj6hS9Qq79iPgl9iPgkhp+oU/qFXPsR8E/wBiPgkp
+ peoU/qFXfsR8EvsR8ElNH1Cm9Uq99iPgmOEfBG0tE2FRJJV/7EfBSGEfBFLlGslDNBW4MLySOD5IrnBF
+ JCKxhC1zg+ScYJ8ErU57ZCnvKvfYj4JHDPglamgXlR9QrQOGfBROEfBC1NL1Cn9Uq39jPgl9jPgghqeo
+ UvUKufYz4JfYymlDS9Qpt5V77GU32MoIaW8pt5V/7GfBN9jPgiFNH1Cl6hV37EfBL7EfBOtLS9QpeoVd
+ +xHwS+xHwStaWl6hS9Qq79iPgl9iPglbGWl6hS9Qq79iPgl9iPglaQ0vUKXqFXfsR8EvsR8ErZA0vUKX
+ qFXfsR8EvsR8ErXBpeoUvUKu/Yj4JfYj4JJaXqFS3lXBhHwUhhnwSWlo7ymLyr/2M+CY4R8EljQ3lL1C
+ r32I+CX2I+CSmjvKYuKv/Yz4JfYz4JLw5rpKEayVr/Yz4JxheSS8OJ6JUhUVtjB8k/2HySXOS1pCMCQt
+ D7F5JjiFJYWj6hUTaVeOIVH7EfBJY0fVKf1Crv2I+CX2I+CCmn6hS9Qq79iPgl9iPgkppeoUvUKu/Yj4
+ JfYj4JKaXqFL1Crv2I+CX2I+CSml6hS9Qq79iPgl9iPgkppeoU3qFXvsR8E32I+CSml6hS9Qq79iPgl9
+ iPgkppeoUvUKu/Yj4JfYj4JKaXqFOLCrn2I+CcYR8ElNMWFP6hVwYZ8E/wBjPglaGibCo+qVeOGfBR+x
+ nwSU0/VKf1Crn2M+Cf7EfBJTS9QpvUKvfYj4JfYj4JKaPqFP6pVv7GfBL7GfBJTV9QqJeVeGGfBL7EfB
+ JTmucShkErW+wnwS+wHwSS5GwlP6RWuMLyUvsXknBcHGFZCmAQtX7F5JvsR8EUueCQn3lX/sZ8E32M+C
+ ahzy8pB5V/7EfBL7EfBBTSFhUhYVcGEfBP8AYj4IIafqFLeVd+xnwS+xnwSU095S3FXhhnwS+xnwSQ0N
+ 5S3lX/sZ8FE4Z8EVNH1Cl6hV37GfBL7GfBK1NL1Cl6hV37EfBL7EfBG1NL1Cl6hV37EUvsRStTS9Qpeo
+ Vd+xFL7GfBK1NL1Cl6hV37GUvsR8ELS0vUKXqFXfsR8EvsR8EFNL1Cl6hV37EUvsR8ElNL1Cn9Qq59iP
+ gl9jPgklp+oU3qFXfsZS+xnwRS0t5T7yrv2M+CX2M+CNrS0S4qDpK0fshS+xlFjclzSUM1lbJw/JN9i8
+ kV8XHFZRGtIWp9i8k4wvJJlc9sqYcVfGGfBP9jKVrC55eUxeVoHCPgonCPghaxoeoUhYVe+xHwSGEfBC
+ 1NP1Cl6hV37EfBP9iPggpo+oUvUKvfYj4JfYj4ILg0fUKXqFXvsR8EvsR8El7R9QpeoVe+xHwS+xHwSY
+ 5NH1Cl6hV77EfBL7EfBFjaPqFL1Crv2I+CX2I+CVrw0vUKb1Cr32I+CX2I+CNr2jvKbeVf8AsR8EvsR8
+ ELQ0d5Th5V77EfBP9iPggppiwp/UKt/Yyl9kKKmobComwq4cQpvshSU095S3lXPsZ8E/2M+CSmiXlNvK
+ 0PsR8E32I+CSmj6hUS8q/wDYz4JvsZ8ElOW8koJaStn7CT2S+wHwSU4orKK1hWsMA+CmMHySU5bWkKYJ
+ C0vsR8EjhHwSU5u4pt5WicI+Cj9iPgkpoh5Uw8q2MM+CkMM+CSmnvKRsKu/Yz4JjhlJTQNhUDYVfOGfB
+ R+xHwSU0vUKcWlXfsR8EvsR8ElNQWlP6pVr7GfBP9jPgkpqeoUt5VwYZT/YyjaGlvKW8q79jKX2M+CNq
+ aW8pbyr32M+CX2M+Capo7yn3lXfsZ8EvsZSU0t5S3lXvsZS+xlBTQ3lLeVe+xnwS+xnwSU0d5T7yrv2M
+ +Cf7GfBFTQ3lMbCr5wz4KJwz4JKaHqFL1Crn2M+CcYZ8EUtQPKkHlXBhnwUvsZRtTRLihOBK0/shTfYz
+ 4IqcdzCUP0itv7F5JvsXkkpx21lGaCFpfYvJOMM+CCmkCQn3lXhiFL7GUFNAvKgXlaJwj4KBwj4IKaHq
+ FP6hVw4Z8EhhnwSU1PUKXqFXRhHwT/Yj4JJaPqFL1Crv2I+CX2I+CSml6hS9Qq79iPgl9iPgkhpeoUvU
+ Ku/Yj4JfYj4JKaXqFL1Crv2I+CX2I+CSml6hS9Qq79iPgl9iPgkppeoUvUKu/Yj4JfYj4JKaXqFN6hV7
+ 7EfBL7EfBJTR9QpeoVe+xHwS+xHwSU0vUKf1Crgwj4KQwj4JWppCwp/UKu/Yj4JfYyklpGwpi8q79kKb
+ 7GUlNLeUt5V4YZ8E4wz4JKaO8pi4rQ+xnwS+xnwSS5TpKC5pWycI+Cj9hPgkpxthUmtIWv8AYD4J/sB8
+ EUOY2QiB5CvnCPgm+xnwRQ0fUKXqFXfsZTjCPgkpph5UxYVaGEfBP9kPglamr6hTGwq39kKX2QoKafqF
+ MbCrn2Mp/sZ8ElNDeUt5V/7EfBL7EfBBTSFhUvUKt/Yz4J/sZSU0/UKbeVd+xlL7GfBJTR3lLeVe+xlL
+ 7GUlNHeUt5V77GUvsZ8EkNHeUt5V37GUvsZSU0t5Tbyr32MpfYyipo7yn3lXfsZS+xlJTS3lLeVe+xlL
+ 7GfBJTR3lRLytD7GfBROEfBK1NA2FL1Crxwj4JvsR8EVNMPKfeVdGEfBOMM+CSQ0SSoEErT+xnwS+xlB
+ sRcgsKgaytr7F5JjheSSJOMGEKYBC1DheSb7GfBJrSaAJCkHlXfsZT/Yz4JIaW8pw8q79jPgl9jPgklp
+ +oUxsKu/Yz4JfYz4JLg0S8pt5V/7GfBL7EfBJkDQ3lLeVf8AsR8EvsR8ElpaG8pbyr/2I+CX2I+CTEWh
+ vKW8q/8AYj4JfYj4JIaG8pbyr/2I+CX2I+CC5obylvKv/Yj4JfYj4JKaG8pbyr/2I+CX2I+CSmjvKW8q
+ 99iPgl9iPgiFNHeUt5V77GUvsZ8E5TR9QpvUKvfYz4JvsZ8E0paJtKb1Cr32I+Cf7EfBMS0PUKcWFXhg
+ nwUhgnwSS0RYUt5V/wCxHwS+xHwStLnlxUDJWn9iPgl9iPgnAqcdzSUI1lbZwj4JvsPkn2pxPTKm1pC1
+ /sHkl9gPglaC5rSQiteVe+wnwT/Yz4I2tagsKfeVbGGVIYZ8E0lTR3lNvK0PsR8E32I+CYhz95TbytA4
+ R8Exwj4JKc8vKW8q/wDYj4JvsR8EktIPKcWFXPsZ8EvsZTwpqeoUvUKufZCl9kPgnpafqFL1Crv2MpfY
+ z4JhKml6hS9Qq79jPgl9jPggppeoUvUKu/Yz4JfYj4ILC0vUKXqFXfsZ8EvsZ8EFrS9QpeoVd+xHwS+x
+ HwSZYtL1Cl6hV37EfBL7EfBBe0vUKXqFXfsR8EvsR8EWMtL1CnFhVz7EfBL7GfBFDVFhUhYVZGIVIYhR
+ U1C8oL3ErS+yFROEfBG0hx3glAcwlbhwT4KP2A+CNrw4gqKI2srYGB5KYwfJK0ly2tIRBIWj9i8kjiFJ
+ iLn7ilvKvnEPgm+xnwQQGjvKW8q99jPgl9jPghbIGj6hS9Qq59jPgl9jKCWn6hS3lXRhlP8AYz4JLGjv
+ KW8q99iPgl9jPgkpo7ylvKvfYz4JfYz4IqaO8pbyr32MpfYykpo7ylvKvfYz4JfYz4IqaO8pbyr32M+C
+ X2M+CVqaO8pbyr32M+Cb7GfBC1NLeUt5V77GfBL7GfBBTS3lPvKu/Yyl9kPgkpp7yl6hVz7IUvsZ8Ekt
+ I2FRNhV77GUxwz4JKaBsKb1Cr32I+CX2I+CNpaIeVIPKujCPgpjCPgjaXPJJQXtJWv8AYj4JjhHwRtTh
+ molIUlbf2HyTjB8k60uMKiFMAha/2LyUThHwTSVpcsOIUhYVoHBPgm+wnwTFrSFhUhYVc+xHwT/Yj4JK
+ afqFP6hVz7GfBL7GUlNP1Cl6hV37GUvsZSU0vUKXqFXPsZ8EvsZ8ElNL1Cl6hVz7GUvsZ8ElNL1Cl6hV
+ 37EfBL7EfBK1NH1Cl6hV77EfBL7EfBK1NH1Cl6hV77EfBL7EfBK1NH1Cl6hV77EfBL7EfBK1NH1Cl6hV
+ 77EfBL7EfBK1NH1Cl6hV77EfBL7EfBK1NH1Cl6hV77EfBL7EfBK1NH1Cl6hV77EfBL7EfBK1NH1Cl6hV
+ 77EfBL7EfBJTR9QpeqVe+xHwTfYT4JWlpi0pF5Ku/Yj4JfYyngqc14JQH1Era+xnwS+xeSeCpwDSVJtR
+ C2/sPkl9h8kbU5bGkI4JCvjCPgn+xlMJU55eU3qFXzhnwUfsR8EwqagsKIHlWRhHwUxhnwTSpqeoUxsK
+ uHEKY4pSU0zYVH1Crv2QpfYz4J4KmlvKW8q79jPgl9jKNqaW8pbyrv2MpfYyghpbylvKu/Yz4JfYymqa
+ W8peoVd+xlL7GfBNKml6hS9Qq79jPgl9jPgkFNL1ClvKu/Yyl9jPgpAppeoUvUKu/Yz4JvsZ8EVNL1Cl
+ 6pVw4Z8Exwz4JtIafqlMbSrn2Q+Cb7GUqU0/UKQeVc+xnwUhhnwRS0w8pbyrv2M+Cf7GfBFLR3lLcVd+
+ yFL7IUVNAkobgStT7IU4wj4JKcY1kpCoraGD5J/sPkklyAwhEEhan2LyUThHwQU528hP6pV44R8E32I+
+ CCml6hS9Qq79iPgl9iPghSml6hS9Qq79iPgl9iPgkppeoUvUKu/Yj4JfYj4JKaXqFL1Crv2I+CX2I+CK
+ mj6hT+oVd+xHwS+xHwRU0vUKXqFXfsR8EvsRRQ0vUKb1Cr32I+CX2I+CaVNH1Cl6hV77EfBL7EfBNQ0f
+ UKXqFXvsR8EvsR8ElNH1Cl6hV77EfBL7EfBBTR9QpeoVe+xHwS+xHwSS0fUKXqFXvsR8EvsR8ElNH1Cl
+ 6hV77EfBL7EfBJLR9QpeoVe+xHwS+xHwRU0fUKW8q/8AYj4JfYj4I2pobiomStL7GfBL7GfBFTlFhKga
+ itj7H5JfYvJFTjekU4YQtn7F5JfYvJJDlAEKQcQtL7EfBN9iPghanP8AUKf1Cr32I+CX2I+CFqaXqFOL
+ Crv2I+CX2I+Cahp7yn3lXRhnwS+xnwSU0d5S3lXvsZ8EvsZ8EktHeUt5V37GfBL7GfBJTS3lLeVd+xnw
+ S+xlFTS3lLeVd+xlL7GfBFTS3lLeVd+xnwS+xnwRtDS3lLeVd+xnwS+xnwStTS3lLeVd+xnwS+xnwStT
+ S3lMXlXvsZ8EvsZQtTQLym3lX/sR8Exwj4JWpoh5UxYVa+yFOMQpKaweVLeVaGIVIYhQU095S3lXfshS
+ +yFJLS3FRJKv/ZCl9kKKnLcCUFzCtk4Z8FE4XknJcM1lO2srY+w+SkMHyRS5bGEIwkLRGF5J/sZ8EChz
+ 95CXqFXjhnwTfYymLWl6hS9Qq59jKf7GfBJDS9QpeoVd+xnwS+xnwSU0vUKXqFXfsZ8EvsZ8ElNL1Cl6
+ hV37GfBL7GfBJTS9QpeoVd+xnwS+xnwSU0vUKXqFXfsZ8EvsZ8ElNL1Cl6hV37GfBL7GfBJTS9QpeoVd
+ +xnwS+xnwSU0vUKXqFXfsZ8EvsZ8ElNL1Cl6hV37GfBL7GfBJTS9QpeoVd+xnwS+xnwSU0vUKXqFXfsZ
+ 8EvsZ8ElNL1Cl6hV37GfBL7GfBJTS9QpeoVd+xnwTfYz4JKagsKfeVbGGU/2Q+CNpaLnEoLwStX7IVE4
+ R8EbS4rqyVD0its4Xkm+xeSSnIbWUdjSFojC8kQYZ8ELU54JCfeVoHDPgonDKVqaHqFSFpVv7GfBIYZ8
+ ErU1fVKb1Srn2M+Cb7GfBBTU3lPvKtjEKl9kKSmiXlRLytA4Z8FA4R8ElND1Cl6hV77EfBL7EfBBTR9Q
+ peoVe+xHwS+xHwSU0fUKXqFXvsR8EvsR8EVNH1Cl6hV77EfBL7EfBJTR9QpeoVe+xHwS+xHwSU0fUKXq
+ FXvsR8EvsR8ElNH1Cl6hV77EfBL7EfBJTQ9Qpbyr32I+CX2I+CS0tIPKkHlXBhHwUhhnwQQ0d5SLyr32
+ M+CX2M+CKWhvKQeVf+xHwS+xnwRtc0w8pnOKv/Yz4JjiHwRtLkvBKrPYVuHCPgoHBPgilwvTKI1hC1/s
+ B8EhgnwSQ0GSEYOKuDDPgpjEKCmlvKb1Cr32M+Cb7EfBBDR9QpeoVe+xHwS+xHwQQ0fUKXqFXvsR8Evs
+ R8EENH1Cl6hV77EfBL7EfBJTR9QpeoVe+xHwS+xHwSU0fUKXqFXvsR8EvsR8EUtH1Cl6hV77EfBL7EfB
+ JLR9QpeoVe+xHwS+xHwRU0fUKf1Crv2I+CX2I+CNqaPqFL1Cr32I+CX2I+CRKmj6hS9Qq99iPgl9iPgm
+ KaPqFL1Cr32I+CX2I+CSmj6hS9Qq99iPgl9iPgkpo+oUvUKvfYj4JfYj4IhTR9QpeoVe+xHwS+xHwT7S
+ 0vUKW8q79iPgnGGfBG0NB0lBLCVrfZCl9jQU51VWq1sRkJV4kK/RRCYUtzG0C0GFVKmQrLVEVJpTqAKk
+ CoypRCiQpqJQUwhKFKEoRClgFIJoTpwUpMU6ZFSySSSSFJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKWSSSSUukkkkpdRcpKLklNaxVyrFirlJTNitMVVitMSUmCSQSQUskkkkpSdMnSUpMnTIqUkkkkpSS
+ SSSl0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSdMnSUsUCxHKBYkpqvSak9JqSm1WrDVXrVgJKXKiVI
+ qBSUskkkkpSdMnQWqTpk6SrUkkkipSSSSSVJJJJKtSSSSSrUkkkkq1JJJIJtSSSSSrUkkkkq1JJJJItS
+ SSSSrUkkkkpSSSSSlJJJJIUkknRSsnTJ0krJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ0ySl0kySC
+ l0kydJSkkkklKSSTJJXSTJJKXSTJJKXSTJJKUkkkihSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq7
+ 0lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJK
+ UkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpkClS
+ SSSClJJJIqUkkkihSSSSKlJJJJKUkkkkpSSSSSlkkxSQUyCdRCdJSxKhKkVBJTIFSBUApBOSuolsqcJQ
+ nBTXdXKGaJVyEoCKWgcZN9kC0AAngI2pzvsYTjDC0YCWiXEpoDDCf7EFfkJSELWlofYgl9iCvyEpCFoa
+ H2IJfYgr8hKQlaWh9iCX2IK/ISkJWpofYgl9iCvyEpCVqaH2IJfYgr8hKQlamh9iCX2IK/ISkJWpofYg
+ l9iCvyEpCVqaH2IJfYgr8hKQlamh9iCX2IK/ISkJWpofYgl9iCvyEpCVqaH2IJfYgr8hKQlamh9iCX2I
+ K/ISkJWpofYgl9iCvyEpCVqaH2IJfYgr8hKQlamh9iCX2MK/ISkI2oND7IEvsgV+QlolxL3POIExxAtH
+ RRMI8Sqc/wCyBOMQK7opCEeJDSGGE/2MK+IUtEwyU5pwgonDC0zCiYREkOYcMJvsYWkYTaI8SGgMIJxh
+ BaAhTEIcSHN+xBL7EFpaJiQhxKc77EEvsQWhITSEbU0PsQT/AGIK/ISkJWpofYgl9iCvyEpCVqaH2IJf
+ Ygr8hNIStTR+xBL7EFekJSErU0fsQTfYwr8hKQlamj9iCX2IK/ITSErU55wwm+yBaBIUdEbQWiMQKQww
+ rwhTEIEqc/7EExwgtKQmJCXEmnN+xBL7GFo6JtEeJc0PsYS+xhaAAT6IcSXNOGExwwtOAmICPEly/sYS
+ +xBaUBIAI8SHPGCFIYI8FoiFLRNMlOb9hCX2ILSJCiSEOJDnfYgn+xBX5CUhG0ND7EEvsQV+QnkIWhz/
+ ALEEvsQWhISkJWpz/sQS+xBX5CUhG1ND7EEvsQWhISkIWlzvsQS+xBaEhKQjaXP+xBL7EFoSEpCVqaH2
+ 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
+ Od9jCf7GFo6JaIcSnN+xBIYQWjokCEuJTQGEE5wgtEEJGEOJDlnDCj9kC0zCGYRtTQGGFIYYV4QpAhG1
+ ND7GEvsYV+QlIQ4ktD7GEvsYV+QlIS4kND7GEvsYWhISkJWpz/sYS+xhaEhLRC0Of9jCX2MLQ0SkJWpz
+ /sYS+xhX5CUhG0tD7GE32MLQkJxCPEpzvsQTfYgtPRKAhxIcr7EEvsQWpATQEeJTmfYgpDCC0YCfRLiS
+ 5v2IJHCC09FEwlxFLmHDCb7IFpGFHRO4lOeMQIgxArghTbCBkppjDCX2QK+ISMJvEUuccQJvsgV8kJSE
+ eIqaP2MJfYgtAEJ5CHEVOd9iCX2IeC0JCeQlxFTnfYh4JfYgtGQlIS4lOd9iHgl9iC0ZCUhLiU532IeC
+ X2IeC0ZCUhLiQ532IJfYgtGQlIS4lOd9iCX2ILRkJpCXEVOf9iCX2ILQkJ5CXEpzvsQT/Yh4LQkJSELQ
+ 5/2IeCX2IeC0JCUhK1Of9iCX2IeC0JCUhK1U5/2IJfYgtCQlIStLn/Ygl9iC0JCUhK1Of9iCX2ILQkJS
+ ErU5/wBiCb7EFoyEpCVqc/7EEvsQWjISkJcSXMOGFE4gWmYQzCcJKc/7IFIYgV3RSACPEhojECl9jCvA
+ BS0TeJTn/Ywl9iC0NE8hDiU532IJ/sIWhITyEuJTnfYgm+xBaUhRJCVoc77GEvsYWhISkJWhz/sYS+xh
+ aEhNIStLQ+xhL7GFfkJSEbS0PsYS+xhX5CUhK0ND7GEvsYV+QlIStTQ+xhL7GFfkJSErU0PsYS+xhX5C
+ UhK1ND7GEvsYV+QlIStTQ+xhL7EFfkJwQlamh9iCicILTEJGEOJTknCCb7GFpmFHROtDQGIFMYgV0QpC
+ ErS0fsgTfZAtCQmkIWlofZAm+yBX5CbRG1NH7IEvsgV/RLRLiS5/2QJxiBX9E+iXEmmiMQJ/sgV7RPoh
+ xKLn/Ywm+xhaEhNIStYWh9jCX2MK/ISkJWhofYwl9jCvyEpCVqaH2MJfYwr8hKQlamh9jCX2MK/ISkJW
+ pofYwl9jCvyEpCVqaH2MJfYwr8hKQlamh9jCX2MK/ISkJWpofYwl9jCvyEpCVqaH2MJfYwr8hKQlamh9
+ jCX2MK/ISkJWpofYwl9jCvyEpCVqaH2MJfYwr8hKQlamh9jCX2MK/ISkJWpofYwl9jCvyEpCVqaH2MJ/
+ sYV6Qn0StLn/AGMJfYwtDRLRLiU5pxAm+yBaRhR0R4lOeMQKYxArwAUxCBKmh9jCY4YWjolohxKc37EE
+ /wBiC0JCeQlaqc44QTHCC0SQmJCVqc/7GE4wwr2ikIRtTQ+xhN9iC0dE0hC1U5/2IJfYgr8hKQlamh9i
+ CX2IK/ISkJWpofYgl9iCvyEpCVqaH2IJfYgr8hKQlamh9iCb7EFoSEpCNpc/7EEvsQWhISkJWpofYgm+
+ xBaEhKQlanP+xBL7EFoSEpCVrS5/2IJ/sYV+QlIQta0PsYS+xhX5CUhG1waH2IJfYwtCQlIS4lwc/wCx
+ hN9jC0dE2iXElzjhhROGFpaJQEeJLmfYgl9iC04CaAlxIc0YYUhhhaEBPolxKaAwgn+xBX5CeQhaGh9i
+ Cb7EFoSEpCFrWh9iCX2IK/ISkJWpofYgl9iCvyEpCVqaH2IJfYgr8hKQlamh9iCb7EFoSEpCVpc/7EEv
+ sQWhISkJWlz/ALEEvsQWhISkJWpz/sQS+xBaEhKQjxKc/wCxBL7EFoSEpCHEpz/sQT/YgtCQlIStDn/Y
+ gl9iC0JCUhK1Of8AYgl9iC0JCUhLiU532IJfYgtGQmkJWlz/ALEEvsQWhISkI8SnO+xBMcMLRkJjCXEp
+ zTiBN9kC0SAlATuJTQGNCK2iFagJwAgSpEGQpQiQokKIqYypAqMJwmFTOUpTJIKUnUZTyiFLpJpTSnqX
+ lMmlJJS6SSSSFJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpJKUkknSUpRcpqLklNWxVyrNi
+ rFJTNitMVVitMSUmCSQSQUpMnTJKUnTJ0lLJJJIqUkkkkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJK
+ UkknSUpJJOkpiUCxWCq9iSmq9Jqd6ZqSm1WrAVetWAkpcqBUyoFJSyZOmSUunTJ0lqkkkkFLpJJIqUkk
+ kklSSSSSlJJJJKUkkkkpSSSSClJJJJJUkkkkhSSSSSlJJJJKUkkkkhSSSSSlJJJJKUknSRSpJJJFKkkk
+ klKSSSSUpJJJBSkkkklKSSSSUpJJJJKkydJJSySSSSlJJJJKUkkkkpdMkkgpSSSSSlJJJJKUkkkkpSSS
+ SKFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//Q
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSS
+ UpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsS
+ U2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpk6ZApUkkkgpSSSSKlJJJIoUkkkipSSSSSlJJJJKXTJJIK
+ YlMpFNCSlwnSATpKYkKMKZCaEVLAKQCQCkEUrJiYUigvdCcFKc+EM3Qq9tsKlZkQnBLpHJAUTlBYz8pB
+ OWjSne+1hL7YFzpzCl9rKNKeh+1pfa1z4yipfakaWl3vtaX2tYP2pL7UlSHe+1pfa1g/akvtSVKd77Wl
+ 9rWD9qS+1JUp3vtaX2tYP2pL7UlSne+1pfa1g/akvtSVKd77Wl9rWD9qS+1JUp3vtaX2tYP2pL7UlSne
+ +1pfa1g/akvtSVKd77Wl9rWD9qS+1JUp3vtaX2tYP2pL7UlSne+1pfa1g/akvtSVKd77Wl9rWD9qS+1J
+ Up3vtaX2tYP2pL7UlSne+1pfa1g/ak32opUp3/taf7WsD7UnGUjwpD0Ayk/2pc/9rT/bEeBfbvfakxyV
+ g/bE/wBrS4FO39pTjKWH9qS+0pcKHeGWn+1hYH2pROWmmKnoftYUTlhc/wDayl9rKXCh3/taX2sLB+1J
+ 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
+ MkXf+1pfa1gfakvtSNL3f+1pfa1gfakvtSVMZd/7Wl9rWB9qS+1JUh3vtaQy1gfail9qKNJehGYpDMC5
+ 0ZRT/ayhwpD0X2wJfbAubOb5pfbvNLgXh6b7WEvtQXNjO81MZvmlwJL0ByVE5Kw/taRykuFiLtfakhlr
+ DOUoHKRpaHoPtYSOYFz/ANrKicsptMgegOYm+1rn/tZSGUUQEvQfakvtSwRkqX2lO4VrufakvtSw/tKX
+ 2lHhU7n2pL7UsP7Sl9pQ4VO59qS+1LD+0pfaUuFTufakvtSw/tKX2lKkO59qS+1LD+0pfaUKU7v2tL7U
+ sL7Sl9pQpTu/ak4y1g/aUvtSCnoPtYS+1hc/9rS+1oKeg+1hL7Wue+1pfaykl6D7Ym+2Bc+csqJyylSX
+ ovtgS+2hc59rKb7WUaU9L9sCf7YubGWVMZZR4UvQ/a032tYP2pMctHhS7xygm+0rB+2Jxlp3Cp3ftKcZ
+ ULC+1pjloGKC7/2xL7YueOWm+1ptLXoftab7WsD7Un+1JUh3vtaX2tYX2lL7SjSne+1pfa1hfaU32lCl
+ O79rS+1rC+0pvtKNKd37Wn+1rB+1JfakqU7/ANrS+1rA+1JfakKU9B9rTfa1gfakvtSVKd/7Wl9rWB9q
+ S+1JUp3/ALWl9rWB9qS+1JUp3/taX2tYH2pL7UlSnf8AtaX2tYH2pL7UlSnf+1pfa1gfakvtSVKd/wC1
+ pfa1gfakvtSVKd77Wl9rWF9qTHKSpTv/AG2Evtw8VzbssqBzD4ppCXp/toKQy5XMjMKM3LKSnoxkhSGS
+ Fz4y1L7YjSXf+0hN9pCwftvmm+2+aPCp3vtQTHLWF9sUTloUp3DmBN9tC592WUP7WUEPTDNCl9sC5kZh
+ UxllNKnoTlqP2pYX2opfaUlO6MpP9qWF9pS+1J4Cnd+1JfalhfakvtSNKd37Wl9rWF9qS+1JUp3ftaX2
+ tYX2pL7UhSHe+1pfa1g/akvtSap3vtaX2tYP2pL7UiFO79rS+1LC+1JfaU4BTu/ak4y1g/aUvtSRCnf+
+ 1hP9rC577Wm+1lMU9D9rCb7WFz/2spvtZRU9D9rCX2wLnftZT/ayjSnovtYUTlhc/wDa0/2tKku8coJv
+ tSwvtSQyU6lO6MlTGUsEZKf7WjwpegGUmOUFgfbPNL7Yhwpd05Kb7UsL7Wl9qR4VO79rS+1rB+1JfakO
+ FDvfa0/2tYH2pL7UhSnf+1pfa1gfakvtSFKd/wC1pfa1gfakvtSVKd/7Wl9rWB9qS+1JUp3/ALWl9rWB
+ 9qS+1JUp3/taX2tYH2pL7UlSHf8AtaX2tYH2pL7UjSnf+1pfa1gfakvtSVId/wC1pfa1gfakvtSVKd/7
+ Wl9rWB9qS+1IUl3/ALWl9rWB9qS+1JUp3/taX2tYH2pL7UlSXf8AtaX2tYH2pL7UlSnf+1pfa1gfakvt
+ SNKd/wC1pfbAufOWm+1lLhU9B9rCX2lc+MtEGUjwqd0ZCmMhYQylL7Wlwqdz7QExyQsQ5agctDhU7hyw
+ onMCwXZaEcspcKnovto8UvtwXNHMKb7YUqQ9N9tHil9tXNDLKmMsoUp6P7Yl9rXPDKKmMpKkO99qS+1L
+ C+1JfakaS7v2pL7UsL7Sl9pSpTu/akvtSwvtKX2lGlO79qS+1LC+0pfaUqU7v2tL7UsL7Sl9pSpTu/ak
+ vtSwvtKX2lKkO79qS+1LC+0pfaUKU7n2pSGWsH7Sl9qSpTvjLSOWFz/2tL7Wm0p3jlhR+1LC+1FL7Sip
+ 3hlKX2tYH2pP9qSpLu/a032tYJykvtSNJd77Ul9qWD9qTjKR4VO99qT/AGpYP2tMczzR4Uu/9qCcZQXP
+ fbPNSGZ5o8CXoRkpjkrCGWn+1oGCi7Ryk32pYhylH7Sm0sLu/akvtSwvtKX2lKkO79qS+1LC+0pfaUqU
+ 7v2pL7UsL7Sl9pSpTu/akvtSwvtKX2lKlO79qS+1LC+0pfaUqU7v2pL7UsL7Sl9pSpTu/akvtSwvtKX2
+ lKlO79qS+1LC+0pfaUqU7v2pL7UsL7Sl9pSpTu/akvtSwvtKX2lKlO79qS+1LC+0pfaUqU7v2pL7UsL7
+ Sl9pSpTu/akvtSwvtKX2lKlO79qS+1LC+0pfaUqU7v2pP9rWD9qS+1JUp3xlJ/tS5/7Un+1oUl3/ALSE
+ 32kLC+2eaX2xKlO8MkKQyVgDMUvtaVKd05QQ3ZixHZaC7LKVKd/7aEvto8VzZyyl9rKVKek+2hN9sXO/
+ aynGWUqU9EMtSGWudGUVMZSVKeg+1pjlrB+1JjlJUp3vtaX2tYH2pL7UUaU7/wBrS+1rA+1JfakqU7/2
+ tL7WsD7Ul9qKVKd/7Wl9rWB9qKX2oo8Kne+1pfa1g/ak32pLhU7/ANrS+1rB+1Jfailwqd77Wl9rWD9q
+ Kb7Ulwqd/wC2JfbFz5yim+1FClpeh+2JfbFz32op/tRSpD0H2xL7Yuf+1FMcspUueh+2J/tgXO/aykMs
+ pcK56P7Wn+1LnhlKYykeFLvfagl9qCwTlqJzfNLhS9B9qCX2oLnvtvmkM3zS4UPRfagl9qCwBmJ/taHC
+ p3DlpvtawjlKJykuFDv/AGtL7WsD7Ul9qSpa7/2tL7WsD7Ul9qQpTv8A2tL7WsD7Ul9qSpTv/a0vtawP
+ tSX2pKlO/wDa0vtawPtSX2pGlO/9rS+1rA+1JfakqS7/ANrS+1rA+1FL7UUqS7/2tL7WsD7Ul9qKFId/
+ 7Wn+1rn/ALUl9qQIU9B9rS+1rn/tSX2tNU9B9rS+1rn/ALWl9rSU9B9rS+1rn/taX2tJT0H2tL7Wuf8A
+ taX2pEKd/wC1pfa1gfail9qT6S7/ANrT/a1z/wBqKcZSVKd/7UEvtIWD9rSGYhSnoW5AKMy2Vz1eXK0K
+ L5TSp1gZTwgVPlWQoiphCUKcJQmFTCExUyoFBSyUpJk4KXlNKSUJylJwmhOkpdJJJJCkkkklKSSSQUpJ
+ JJJSkkkklKSSSSUpJJJJS6SZOkpZJOmSUpOmTpKXUXKSi5JTWsVcqxYq5SUzYrTFVYrTElJgkkEkFLJJ
+ JJKUkkkkpZJJJFSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSk6ZOkpSdMnSUsUCxWCq9iSmq9
+ Jqd6ZqSmzWrAVetWAkpcqBUiolJSyZJJJS6dME6S1SSSSSl0kkklKSSSSSpJJJJSkkkkkqSSSSUpJJJJ
+ SkkkklKSSSSQpJJJJSkkkklKSSSSQpJJJJSkkkklKTpk6SlJJJIrlJJJJKUkkkkpSSSSSlJJJIKUkkkk
+ lSSSSSlJkkklKSSSSUpJJJJKkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJFBUkkkkhSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Hr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJ
+ JSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUp
+ JJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkk
+ klKSSSSUumTpkClSSSSClJJJIqUkkkihSSSSKlJJJJKUkkkkpSSSSSlQnhJOkpaE6SaUlKTJJklLqQKg
+ nCKVyq9pRyq1yeFOdkOWZdYr+SVlXFOCUD7ChFxKmRKk2uU4KQ6lSAKtsx5Rhioqc8AqWqvnGUfs6FrS
+ 0tUtVd+zpfZ0rQ0tUtVd+zpfZ0rU0tUtVd+zpfZ0rU0tUtVd+zpfZ0rU0tUtVd+zpfZ0rU0tUtVd+zpf
+ Z0rU0tUtVd+zpfZ0rU0tUtVd+zpfZ0rU0tUtVd+zpfZ0rU0tUtVd+zpfZ0rU0tUtVd+zpfZ0rU0tUtVd
+ +zpfZ0rU0tUtVd+zpfZ0rU0tUoKujHT/AGZK1NDVMXEK87HhV7KoTgUhrGwhQNxSsbCrOKlC5si4qbbC
+ VTaVYrEpKbIcSpSVKuuVYbTKBKGqZUDKv/Z1E4yZamjqnAKufZlMYyBKGmAU8FXhjKX2ZNtDmkFQIK0z
+ jKBxkLU5sFSAKvfZU4xkLU0gClBV77Ml9mQtTRgpQVe+zJfZkrU0YKUFXvsyX2ZG1NGClBV77Ml9mRtT
+ RgpQVe+zJfZkbU0YKUFXvsyX2ZG1NDVPBV77Ml9mRtLSAKeCroxk/wBmQtDnkFDIK0zjIZxkLQ5hBSAK
+ 0fsqcYiNqaDQUQSFeGKmdjwnWuaJsIQ3XkI11cLPu0StKU5RSGTKznPKdjpRtLqtuJRASVVoErSqplK1
+ NcglQLStQY0pHEQtTlgFTEq/9lS+zIErWjqlqrv2ZP8AZkLQ0dUtVd+zJfZk21NLVLVXfsyX2ZK0NLVL
+ VXfsyf7MlaWjqlqr32ZL7Mlamjqlqrv2ZL7MnWlpapaq79mS+zJWpp6paq79nS+zpWppapaq79nS+zpW
+ ppaptVe+zpvs6FoaWqWqufZ0vs6Vqaeqlqrf2dP9nStDU1S1Vz7Ol9nStTS1Taq99nS+zI2loGUxeQrz
+ seFVtrhG0oTdCG7IQrTCqOejaW565Km20lUGGVdpZKNpbDSSpQUaqmVYGMlanOIKbaVpHFSGKhanNDSp
+ BpWkMVP9lTbQ50FKCtH7KmOMmkrXOMppKvnGUTjIWhpSU4JVv7OnGOlamrqlqroxkvsyNrmlqlqrv2ZL
+ 7Mla0tLVLVXfsyX2ZK2Npapaq79mS+zJWkNLVLVXfsyX2ZG2QNLVLVXfsyX2ZK1zS1S1V37Ml9mStLR1
+ Taq/9mTfZkbWloapoKv/AGZL7MlbG0QCpAFXxjKQxkrXNAApGQtD7MhvohG1wc9zyEF15CsXVws+3RK1
+ 4SHJKcZJKz3OU2GUVzpttJRQSVVobK0qaZSWFAWkqBYVqtxpSOIlaxyQ0qYBWgcVMcZNtTS1S1Vz7Ol9
+ nStTT1S1Vz7On+zpWppapaq79nS+zpWppaptVe+zpvs6VqaWqWqu/Z0vs6VqaWqWqu/Z032dK1NLVLVX
+ fs6X2dK1NLVISrv2dIY6VqaglS1VsY6f7Olamnqm1V37Ol9nStTS1S1V37OmOOlamkZTGVdNCj6CVqae
+ qQBV37OnGMlamlBUTK0Psyg7HStTnOJCGbCFdsohVLK4SBUxFxCf7Qqz9EPcpQubwvJUxYSqTNVcqZKc
+ UpASU5BViuiUYYyYShziCowVpHFTDFTCVNAAp9pWiMVP9lTSUObBSgrSOKonGTbU0NU2qv8A2ZN9mQtD
+ R1T6q79mT/ZkrU0xKfVXPsyX2dK1NPVLVXPs6X2dG1NPVLVXPs6X2dG1NPVLVXfs6b7Ojamnqlqrn2dL
+ 7OjaWnqlqrn2dP8AZ0rU0tUtVc+zpfZ0LU09UoKujHUhjJWlzy0qJBWmcZQOMjaXO1UhKu/Zk/2ZK1pa
+ YJSLyFaNEIFlcI2xoHWkIZuKVghV3FG18UvrFOLCVXCMxko2ypA4lSBKIymUduOhawtWCngq8MZTGKla
+ xzgCpAFX/syX2ZNJU0dUtVe+zJfZ0LU0dUtVe+zJfZkLXBo6paq99mS+zIWvaOqWqvfZkvsyNscmjqlq
+ r32ZL7MlbG0dUtVe+zJfZk614aMFLVXvsyb7Mla9omU0lXjjKJxk0lDTkpwSrX2dOMdNtTXEp9VaGOpf
+ Z061NIymMq8cdROOjamlqlJVz7Ol9nTrU05KaSrn2dOMZG1NTVRdKvjGUH46Nqc17yEE3EK3dVCz7Wwi
+ pM3IKM29Zswisckp0hdKlvJVaoSrbKiUlIy4qJJVoUFP9nKFqaoJUgSrP2dOKE21NcEpzKtChP8AZ0LU
+ 0TKjqr5x032ZNtTR1TgFXfsycYyFqaUFPBV77Ml9nStTR1S1V046b7OnWhpyUtVc+zpfZ0rU1NUtVc+z
+ pfZ0LU09UtVc+zpfZ0LU09UtVc+zpfZ0rU09UtVc+zpfZ0rU1NUtVb+zpfZ0bS0zKiQVe+zp/sydanOL
+ So7StP7KmOKjanOAKkJV77Ml9mRtTRJKG55CvPohU7q4RtTXdcQoeuh26KuSlam8LyUVthKo16q9SyUF
+ JQSVLVHrplGGOlamgQVGCtH7MnGKhanO2lOAVo/ZUvsyFpaGqWqvfZk32dK1NLVLVXfs6X2dK1NLVLVX
+ fs6X2dK0NLVLVXfs6X2dK1NLVLVXfs6X2dK1NLVLVXfs6X2dK1NLVLVXfs6X2dK1NLVLVXfs6X2ZK1NA
+ gpiCtD7MmOMlanP1SEq/9mTfZkrU1RKIJVgY6IMdK0tTVRMq99nUTjpWpoklNJVs46j9nKVqawcU+4qx
+ 9nKi6mErSgNhCG68hTsYQqlmiFqSG9R9clVC5SYZTrQ3BYSiAkoVTJV2uiUrQ1zKaSr32ZROMUrU1ASi
+ AlWBjFTGOlamtJSkq36CX2dC1NSSlJVv0Evs6VqaZJSkq0cdL7OhamsCU+qtDHUvs6VqaeqYyrv2dN9n
+ StTS1S1Vz7Ol9nStTT1S1Vz7Om+zpWhqaptVc+zpfZ0rU09UtVc+zpfZ0bU09UtVc+zpfZ0rU09U+qt/
+ Z0vs6VqamqYyrn2dL7OlamiQU0FaH2ZP9lTwUOdBTwVoHFUTjJWmLQJIUS8hW30QqtjIStsRRm0pvXQX
+ 6IUoKk3BcVMWEqozVW62SlbWkyBJT6o7KZRhjJWhowUoKv8A2ZOMZC0tANKcArQ+zJHGSteGjqlqrhx0
+ 32dC14amqWqt/Z0/2dK1smnqlqrn2dL7OlbEWnqlqrn2dL7Olag09UtVc+zpfZ0LS09UtVc+zpfZ0rS0
+ 9UtVc+zpfZ0LU0jKYyrpx0xx04FTS1TiVc+zKQxk7iQ0oKeCrwxk/wBmTTJLnkFQIK0jjKJxky0ucQU0
+ FaP2VL7KlaXOgp9VofZUxxkrS0JKW8hW3Y8Ku+qE8KRm4hMchCsEKs9xT1Ns5Cb1iVSDijViUkFsteSi
+ tJUaqpVxlCK1EJS1VsY6c46YVNKSmkq4cdN9nTENOSmkq59nS+zoWppSU0lXTjpvs6NpagJUhKtDHUhj
+ p4kpqapaq59nTfZ07iU09U2qu/Z0vs6BKWjqlqr32ZL7Mm2ppapaq79mS+zIWsLS1S1V37Ml9mQta0tU
+ tVd+zJfZkrZYtLVLVXfsyX2ZK17R1S1V77Ml9mStjLR1TwVd+zJxjI2howVINKvjGUhjI2pztpUHSFqH
+ GQLMdOtLlPeQhG0hXLqYVGxkI2vDIXlFZeVShEYlaS322kogeSq9TZVtlcoWxFiSVEyrYolS+zoWgNHV
+ NBV/7MnGMhbIGhtKcNK0BjJ/syVpaEFLVXjjqP2dOBWtPVLVXPs6X2dG1NPVLVXPs6X2dC0NPVLVXfs6
+ b7Olamnqlqrn2dL7Ohamnqlqrn2dL7OmkqaeqWqufZ0/2dNtTS1TGVd+zpvsyFqaOqWqvfZkhjIWppAF
+ PBV4YykMZK1OfBUS0rT+zJvsqNpcstKW0rTOKm+yp4S5wBRACroxlL7MnBTnmQhPeQtCyiFQvrhPCUBu
+ ISF6r2aIQcnqdAXypeoSqdZlXKmSmSQV5JTiVYZRKMMZR2taYlSEq4MZSGMlamnBS1V37Mn+zpWpo6pa
+ q79nTfZ0rU0tUtVd+zpfZ0rU0dUtVe+zJfZkrU0NU2qvnGTfZkrU0tU+qufZk4x0rU0tUtVe+zpfZ0rU
+ 0dUtVe+zpfZ0rU0dUtVe+zpfZ0rU0dUtVe+zpfZ0rU0dUtVe+zpfZ0rU0dUtVe+zpfZ0rU0tUxlXvs6X
+ 2dK1OY4FD2lapxUvsiCXMa0ogkLQ+yKD8eElNI2EITsghFuZCzrTCeFNg5KcZBKzS/VFqMpynTbaSiSS
+ gUMlaFdEphU1HAoZBWp9lTHETCpzQCigFXRiqYxk1TSAKeCr32ZN9nQU0dU2qvHHUfs6lCmnJSkq59nS
+ +zoqaclLVXPs6X2dBDTkpSVc+zpfZ00qaclLVXPs6X2dMJU09UpKufZ0vs6QKmnqlJVz7Ol9nUoKmnJS
+ 1Vz7Ol9nSJU0tU0FXvsykMZQmSHPgpiCtL7KmOKgJKc2Cm1WicVR+zJ4kloiVLVXRjJ/sycCloiVISrn
+ 2ZP9nTwVNIkqDnkK6+iFTtZCNqQG4hN65QrNEHcjaW6LSUQPJVOsyrtTJStS4JUtVYZRKKMZNtTR1S1V
+ 44yb7OgSppapaq79nTfZ021NPVLVXfs6b7Ohamnqlqrv2dL7OhaGlqlqrv2dL7Olamlqlqrv2dN9nS4l
+ NPVLVXfs6X2dESU0tUtVd+zpfZ0+0NLVLVXfs6X2dC1NLVLVXfs6X2dC1NLVLVXfs6X2dK0tLVLVXfs6
+ X2dK1NLVLVXfs6X2dK0tLVLVXfs6X2dG1NEyowVofZkjjI2poCVIOIVo48IT6oRtSI2wom9QsEKs9yNq
+ bRvTesSqYcjMEpWhLvJSglFrqlWmY0oWpz9pS2FaoxE/2RC1OWGFSDStMYif7KhaHODSngrQ+zJjjIWp
+ oapaq6cdN9nRtLT1Skq59nS+zo2pp6pSVc+zpfZ0rU05KUlXPs6X2dK1NOSlJVz7Ol9nQtDT1S1Vz7Ol
+ 9nStTTkpSVc+zpfZ0LU05KWqufZ0vsyFqaWqbVX/ALMnGMhamgAVKCr32ZL7MlamjBTGVeOOonHRBU0T
+ KbVXTjpfZk8FLT1TElXTjob6ITgVNQvIQnXEI1lcKpYITwlc3lO28qoVJqeEt9txKKLCVVqbKuV1yhJC
+ txS1VhtCIMdQErWnqlJVz7Om+zoWpqSUpKt/Z0vs6VqaklKSrf2dL7OlampJSkq39nS+zpWpqSUpKt/Z
+ 0vs6VqaklKSrf2dL7OlampJSkq39nS+zpWpqSUpKt/Z0vs6VqaklKSrf2dL7OlampJSkq39nS+zpWpqS
+ UpKt/Z0vs6VqaklKSrf2dL7OlampJSkq39nS+zpWpqSUpKt/Z0vs6VqauqWquDHUvsyVqaBkIbnkK9ZR
+ CpXMhFKE3EKP2hAs0QNySnQbeUZtpKzqzKu1NlJSbcSoGSrLKZRhjSkpztpThhWmMVTGIgpy9hS2Fav2
+ VROKlanNgp9VoHGUfs6FqaWqbVXfs6X2dK1NHVLVXfsyX2ZK1NLVLVXvsyX2ZG1NHVLVXvsyX2ZK1NHV
+ LVXvsyb7Mjamlqlqrv2ZL7Mlamlqlqrv2ZL7Mlamlqlqrv2dP9mRtTQgpbStAYykMVNtaXO2lPtK0fsy
+ X2ZK0OdtKiQVpHGTHGRtLmEFIArQOMkMZG1zTAKkSQroxlB9EJ1pc97yFXfcQrV9cLOtEJWln65U23lU
+ ZRqxKFobzLSUYOKBUyVdZTKVqRSU2quDHT/Z0LQ0tUtVd+zJfZ0LQ0tUtVd+zpfZkLQ0dUtVe+zJfZkr
+ U0dU+qu/ZkvsyVpaWqWqu/Z0vs6VqaWqWqu/ZkvsyNpaWqWqu/Z0vs6VqaWqWqu/Z0vsySmlqlqrv2ZL
+ 7MgVNLVLVXfsyX2ZRlTS1S1V37Ml9mSU0tUtVd+zJfZklNLVLVXfsyX2ZOCmlqm1V77Ml9mT1NLVPqrn
+ 2ZI46Smi4kIRsIV22mFRtbCCk1V2q18SyVgVmCtjDcmFL0eOZCutWfinRX2lRFTMqJKRKgSmlS5KiSok
+ ppQUyTpgpAIhSgE+1OApJymMJoUyolJTFJIpJIUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKT
+ JJJKUnTJ0lLqLlJRckprWKuVYsVcpKZsVpiqMVtiSkwSSCSClkkkklKSSSSUskkkipSSSSSlJJJJKXSS
+ SSUpJJJJSySSSSlJJJJKUkkkkpSdMkkpdOmTpKUVXsRygWJKaz0zUnpmpKbVasBVq1YCSlyoFTKgUlLJ
+ Jk6SlwnTBOkqlJJJ0lUpJJJJVKSSSSTSkkkklUpJJJJVKSSSRVSkkkkFUpJJJFVKSSSQVSkkkklUpJJJ
+ JVKSSSRRSkkkkFUpJJJFFKSSSSUpJJJJS6ZJJJSkkkklKSSSSUpJJJJKkkkklKSSSQUpJJJJSkkkkkqS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNd
+ ydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkk
+ kpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpkClSSSSC
+ lJJJIqUkkkihSSSSKlJJJJKUkkkkpSSSSSlSlKZMkplKUpk4CSlJJ4SSUxThIpBOSuVVuVoqteE4KcfJ
+ Ky7StTJCyreU4JRASVbqZKrMGqv0BOU2aqZVtuOnoar7GIEqaBx1E460zWomtNtaXN+zpfZ1o+ml6aNo
+ c77Ol9nWl6aXppWpzfs6X2daXppemlanN+zpfZ1peml6aVqc37Ol9nWl6aXppWpzfs6X2daXppemlanN
+ +zpfZ1peml6aVqc37Ol9nWl6aXppWpzfs6X2daXppemlanN+zpfZ1peml6aVqc37Ol9nWl6aXppWpzfs
+ 6X2daXppemlanN+zpfZ1peml6aVqc4Y6l9mV8VqfpoEqch+OqF9ULoLa9Fl5LE+JSHnr2QqD1q5TVl2D
+ VTArmLVdoEqkwarQxwlaHQorlaFdMoGMxatNaZIqa4x0jjrRFac1qO1OZ9nUhjq/6akK0iUNEY6l6CvC
+ tP6abanPOOonHWjsS2IIc37Ml9mWl6aXpoWpzfsyX2daXppemlanN+zpfZ1peml6aVqc37Ml9mWl6aXp
+ ogqc37Ol9mWl6aXpo2pzfs6X2daXppvTStLnfZ0vs60fTS9MI2pzvs6X2daPphL0wlaXPGOn+zq/6aWx
+ C1pc446icdaWxL00bQ5oxlMYy0BWpCsIWkND7Mg24y2PTCBawQkCueayqYWJkshdTlsXP5bFIClw7Bqp
+ VDVTtbqnpbqjanSxWTC3MaqVl4beF0GKxK1JGUKX2dXGM0U9iYSpz/s6Y4y0tiXphNtBcz7Ml9mWn6YS
+ 9MJWtcz7Mn+zLS9MJemErU5v2ZL7MtL0wl6YStTm/Zkvsy0vTCXphK1Ob9mS+zLS9MJemErU5n2ZL7Mt
+ P0wm9MJWuc37Ml9mWl6YS9MJWpzfsyb7OtL00vTRtTm/Z0vs60vTS9NK1Ob9nS+zrS9NN6aVoc37Ol9n
+ Wl6aXppIc77OnGOtD00/ppWhz/s6X2daPppemELS532dOMZaArUxWlanIsx9Fl5VULpra9FjZtacCl5f
+ JELOedVrZjeVlPGqdaUlIla2KyVl0DVbmG3hG0ujj0yrrcdPi1rRZUmkqc/7OnGOtE1JCtN4lNAY6f7O
+ r+xLYhaHP+zpjjrR9NL00LWuWcZROMtX003pJIcr7KnGMtP0gn9IJWpzhjJfZlpemEvTSXOb9mS+zLS9
+ MJemErWlzfsyX2ZaXphL0wlbG5v2ZL7MtL00vTCNrg5v2ZL7MtL0wl6YSteHN+zJvs60/TS9NK1zm/Zk
+ vsy0vTCXppWlzfsyb7MtP0wl6YStaXM+zJfZlpemm9NG1jnjHU/s6vCtS9NK0hzjQgW0LWLFWuYiCuDz
+ 2TVCxshi6TKYsPJYnWvDjvGqJU1Se3VEpbqkudDFrlbeNTKzcRvC3sViFrCkZQpGhXGMTliba1zzQonH
+ WjsS9NK0Ob9mS+zLS9NL00LU5v2dL7OtL00vTCVqc77Ol9nWj6YS9MJWpzfs6X2daXphL00rU5v2dL7O
+ tL00vTStTm/Z032dafppvTRtTm/Z0vs60vTS9NK1Ob9nTfZ1peml6aVqc4Y6l9nWgK0/pJWpzvs6X2da
+ XppemhanN+zqJx1p+mmNaNqcs46b7OtI1pvTStTQGOpjGV4VogrStTnHGQ3461jWhvrQtThW0LNyKoXR
+ X1rIyWJwKnBtZCrRqtC9qqbdVMFzKlsrUxqpVKhq2cViJKW1RRKtjGRcetXW1qAyU5pxlEY603VqGxK0
+ NIY6f7OrwYn2JpKHPNCiaFolij6abanP+zpfZloitSFaSHN+zJ/sy0xWEvTCSnM+zJvs60zWE3ppWpzf
+ s6X2ZaXppemipzfsyX2ZaXppemipzfs6X2daXppemlanN+zpfZ1pemEvTCNpc37Ol9nWl6YS9MJWpzfs
+ yX2ZaXphL00rU5v2dSFC0PTS9NK0uf6CY0LQ9NN6aVpc8Y6f7MtAVqXpIWtLkWY6oX1Quhtq0WXk1pwK
+ wvP3shUnhamS1ZzxqnWuiwYFcpZKqs5WjjhJlbVNMq6yhLHYtCqtC1hazcdEGOrzalP000la532dN9nW
+ l6ab00rU5v2dL7OtL00vTQtDm/Z0vs60vTS9NK1wc37Ol9nWl6aXpoWvc37Ol9nWl6aXposcnN+zp/s6
+ 0fTS9NK2Nzfs6X2daXppvTRteHO+zpfZ1o+ml6aVr3O+zJvsq1BWn9IJpKHJ+ypfZlqmoJvTCCnNGMpf
+ ZloCtS9NG1OYcZR+zLUNSb0kbS5n2ZP9mWkKgn9MJWpzDjJDGWmawkKwjanPGMhW42i2PTCBcwQkJKea
+ yaYWNkMhdNltWBlhSAqclw1RKlF/KJSNU60OjjslatFEqjiN4W7jMSJUxZjKX2VaVdQRPSCiJS5P2VN9
+ mWuagoGoIWpzRjqQx1oemnFaVoc77Mn+zLR9NL0whanO+zJfZlo+mEtiCnO+zpfZ1oeml6aSnN+zpfZ1
+ peml6SNoc37Ol9mWl6SXppWpzvs6X2ZaXppemgpzfsyX2daXppemlanN+zpfZ1p+ml6aVpcz7Ol9nWn6
+ aXppKcz7Ol9mWn6Sb00bU5v2dOMdaPpJemlamgMdMcdaGxLYjanN+zpHHWj6ac1I2lxraFlZNULpbq9F
+ jZjE8FTzeQ2FTPK0coLPI1SQmpErXxq5WZjjVbmGzhK1N6iiVaGOi49eiutrTSUud9nUhjq+a0tibamj
+ 9nTHHWhsS2JWpzvs6b7MtL00vTQtTm/Zkvs60vTS9NG1Ob9nS+zrS9NL00rU5v2dL7OtL00vTStDm/Z0
+ vs60vTCXphK1Ob9nS+zrS9MJemErU5v2dL7OtL0wl6YStTm/Z0vs60vSS9JK1Od9nS+zLSFSf00LU5Zx
+ lE4y1TWFE1hK1OaMZSGOtAVqQqRtLnfZ0xxlp+km9NC1OWcZN9lWr6QS9IJWlyTioNmNC3DUFWuqEIgq
+ ecyKoWVe2F0OWyFhZWiKnNdyiVCShvOqNRyjaHUxq5WxRjyFn4TZhdBi16IEoQjFUTirXFQTGoJtpckY
+ ql9mWmKgn9IJWpyzjJvs61DUm9JG0OaMZP8AZlpCpP6YQtTl/Zkvsy1PTCb0whanNGMn+zLSFYT+mErU
+ 5hxk32daZrCb00bU5n2ZL7MtL0wl6YStTm/Z0vs60vTS9NK0OZ9nS+zrS9JL0kbU5v2ZL7MtL0kvSStT
+ m/Zkvsy0vSS9JK1Ob9nS+zrS9JL0glanN+zpxjrR9NL0wlanPGOpDHV7YpBiVoc846G7HWqa0N9aIkmL
+ iW0Qs3IrhdDfWsfKbCeC2IuHaIVZXLwqndK1STVCVp0VyqFAWzislC2sWzTRKttxkbHrV5lSaSgOd9mS
+ +zrSNSia0LS5/oJGhX9iWxK14c846b7MtL00vTStkDm/Zkvsy0vTCXphK1snN+zpfZ1pemEvTCFsJc37
+ Ol9mWl6YS9MJWoOb9nS+zrS9MJemErS5v2dL7OtP00vTStLmfZ0vsy0/TS9NK1OZ9mS+zLT9NL00rU5n
+ 2ZOMZaXphP6aXEhzvsyX2daXppvTQtLnHHTfZ1omtR2IWloDHTjGV8MUxWErS532VRdirVFYTOrCVpcO
+ zGVK6iF0FtYWdkMUsVPOZFcLOsatzJYsm0KRTWa1XaGSq7BqtDGakgt2imVoVUIeMxalLE0lagGOnOMt
+ BtYUjWoyVOX9mS+zLT9MJemEEOZ9mS+zLUFYT+kELU5JxlH7MtY1BR9IJWlzBjKYxloioKYqCVqcs4yi
+ cZapqTGpO4kuX9mT/Zlpekl6SVpc37Ml9mWn6aXppWpzPsyf7MtL0kvTQtjLm/Zkvsy0vTS9NK1rm/Zk
+ vsy0vTS9MJMsXN+zJfZlpemEvTCS9zfsyb7MtP00vTStjLmfZk4xlpeml6aVoc8UKQoV3YnDEbU0jQq1
+ tC2DWq91aQKQ87kULKvrhdFksWNkBPBZA5bmKTGqTuVOsI2otqhkrRpplVsZi16K0LYiszHRhjK5XUji
+ pNJQHN+zJ/s60vSTGtNtkDn+gl6Cv7EtiNpc/wCzpvsy0vTS9NLiQ5v2ZL7MtL00vTS4lOb9mS+zrS9M
+ JemEuJDm/Z0vs60/TS9MIWpzPs6X2dafppemErQ5v2ZL7MtL0wl6YQtTm/Zkvsy0vTCXphBTm/Zk32Za
+ fphP6QStTmfZkhjLT9IJemEFOcMZL7OtH00vTSU5/oJvQWhsTFiIS0PQUTjrQ2JtieEtEY6c0K8GJzWj
+ aXHuo0WRlVwulvr0WJmMUkSp5y8QVU7rQyRqqMaqQKbFAla+NXKy8Yarew28JkkFt048qyMZHoYIVwVh
+ QkrXO+zJxjLR9NOK0LU532dI460vTTGtK1OacdN9nWka1H00bU5/2dOMdaHppxWlanP+zJfZloisJ/TC
+ Fqcz7Mm+zLU9MJjWlanM+zJfZlpemEvTRtTm/Z0vs60fTS9NK1Od9nS+zrR9NL00rU532dL7OtH00vTS
+ tTnfZ0vs60fTS9NK1Od9nS+zrR9NL00rU532dL7OtH00vTStTnfZ0vs60vTTemlanP8As6Qx1obE2xK0
+ tE0KtdTotctVS9uicFPOZVcLFyBC6LMasLJCkCnNI1VmhslCLdVdxmaoqdLEqlbVFEhUcNnC3sevRMKk
+ QxkxxlptrCRrCitLmfZk/wBnWl6aY1oWhzfQTegtE1qOxFTn/Z0vsy0RWn9MI2pzfsyX2ZaXphL0wlan
+ N+zJfZlpemEvTCVqc37Ml9mWn6YS9MIWhzPsyX2ZafphL0wmqcz7Ml9mWn6YS9MJKcz7Ml9mWn6YTemE
+ 61Ob9mTfZ1p+mExrSJU532dSGOr3ppwxRFTTGOmOMtEMSLAgEOYcZR+zLTNYTemE8Jc77Mn+zLR9MJ/T
+ TkuZ9nTHHWka1F1acCpx7aYWZk1wugvZosbLCelwrxCqE6q5kqkeUVNmnVa2MyVlY41W9ht4QKm9RRKs
+ jGRsavRXRWmEqcs4yb7MtR1aj6aFqc37Ml9mWl6YS9NJTm/Zk32Zafppemmqc37Ml9mWl6aXppIc37Ml
+ 9mWl6aXpoKcz7Ml9mWn6aXphJTm/Zkvsy0vTS9NEKc37Ol9mWl6aXpp1oc37Ml9mWl6aXppWpzfsyX2Z
+ aXppemlanN+zJfZlpemEvTSS5v2dL7MtL00vTSU5v2ZL7MtL00vTCSXN+zJfZlpemEvTStTnjGSOMtIV
+ hI1hK1OQ/HhUbqoW9bWs3IYnAqefyGws+xa+U1ZVoTlIm8q7Q2VUYNVo4wSQ3qKpWlVQgYzVq0sTSVIW
+ 46l9nV4MSLE21ND0E/oK9sThiVoaH2dROOtL00vTQtTmHGTfZlp+mm9MI2lzPsyX2ZafphL0wlanM+zJ
+ fZlp+mEvTCVqcz7Ml9mWn6YS9MJWpzPsyX2ZafphL0wlaHM+zJfZlp+mE/phC1OZ9mS+zLT9MJemElOZ
+ 9mSGMtP0wl6YQU5wxk/2ZaPphLYErU532dRNC0ixQLErU5poUfQWia0vTRS532dSGMtAVKYqCNpcw4yr
+ W48LcdUFUurTgVPO31Qsy5kLoMlix8hqlBU5jmqdbVJw1U6gngpbVFcrTpolVsZq2MdiEihavHRhjK3X
+ WrAqCgkVrmHGTfZlqGoJvTCbanM+zJfZlp+ml6aNqcz7Ml9mWn6aXppWpzPsyX2ZafppemlanM+zJfZl
+ p+ml6aVqcz7Ml9mWn6aXppWpzPsyX2ZafppemlanM+zJfZlp+mEvTCVqcz7Ml9mWn6YS9MJWpzPsyX2Z
+ afphL0wlanM+zJfZlp+mEvTCVqcz7Ml9mWn6YS9MJWpzPsyX2ZafphL0wlanM+zJfZlpekEvSCVqc8Yy
+ kcdaIqTmpC1OJdRAWTk1wulyK9Fh5bU60vPXiFVjVXsgaqn3RUmpbK1MeuVRxwtrEZKSmzTRKuMx0Sip
+ XWVJpKmmMdT9BXQxPsQtTQNCgaFoFiiWI2pzzQm+zrR9NOKkrU5v2ZL7MtP0kvSQtTmfZkvsy0vTS9NK
+ 1Ob9mS+zLS9NL00rU5v2ZL7MtL00vTStTm/Zkvsy0vTS9MJWpzfsyX2ZaXphL0wlanN+zJfZlpemEvTC
+ Vqcz7MnGMtL00vTStTnjHUvs6vemlsStaWj6Cb0Ff2JvTRtDQ9BN9nWh6af00rSHNOOnGMtD01IVhK1z
+ Q+zKvdRAWyWBVMhmiQK55nKrhY14groc0RKwMnlPBU041VmhsqsDqr+MJRtDoY1UrVpx1Xw2StuirRAl
+ TVGMn+zLTFSXpJloc37Mm+zLT9NL0wlaHM+zJfZ1p+mEvTQtTmfZ0vs60/TS9NK0OZ9nS+zrT9NL00rS
+ 5n2dL7OtP0wm9NG1Ob9nS+zrS9NL00rS5v2ZL7MtL00vTStTm/Z0vs60vTS9NK1Ob9mS+zrS9NL00rU5
+ v2ZL7MtP0wl6aapzPsyX2ZafppemkpzPsyX2ZafppemkpzPsyX2dafphN6aIU5v2dL7MtL0wn9MI2lzP
+ syY461PTUXVo2pwr6ICxslkFdRk16Ln8xsFFDmN0K1sIrK7rTwuUwpekxTotBp0WdiDRaA4URUolQJUn
+ FQJTVLJwEymEFLgKQCQTohSpTyolRJTlM9yaVCU4KSl0kkkkKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkk
+ klLpkkklKTJJJKXSSSSUyUXJ1FySmvYqxVixVykpmxWmKqxWmJKTBIpBJBSySdMkpSdMnSUsknTIqUkk
+ kkpSSSSSl0kySSl0kySSlJJJJKUkkkkpZJJJJS6SZOkpdOop0lKKBYjlV7ElNZ6Zqd6ZqSmzWrAVetWA
+ kpRUSpFQKSlkgmlIFJTNSUAU8opZJ1DcluQSzSUNyW5JTNJR3JbkVMklHclKSmSSjKUpKZJKO5NuSSzS
+ UNyW5JDNJR3JbklMklGUpSUySUZSlJTJJRlKUlMkk0ppSQySUZS3JKZJKO5LckhkmTbk25JDJJQ3Jbkk
+ M0lGUpSSySUZSlJTJJRlKUlMklGUpSUySUZSlJTJJRlKUFMklGUpSUzSUJS3JJZplHclKSmaShuS3JJZ
+ plGU8pKXTJ0oSUsnSTJKXSTSkkpdJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklP/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ
+ 2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJ
+ JKXSKSRSUhsVV6tWKq9JTAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmQKVJJJIKUkkki
+ pSSSSKFJJJIqUkkkkpSSSSSlJJJJKWKZOmSUyAUgEwUgkpUKJUlEpKYkpApinCKWSr3jRWVXv4Tgpx8p
+ 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
+ StS6SZOhxKUkkklxKUkmSS4lLpJkkuJS6SZJDiUukmSS4lKSTJQjxLSvCeEgFIBOtDGEiFOFAo2kMSkC
+ mKYFK1yQlU8k6KySqeTwiucHOPK53JOq6DOHK5/JGqNqagOq0cQrNA1WjiJcSno8Lst6jhc/hHhb2OdE
+ rQ3AExSBSKagqTJJIWhSSZJK0LpJkkLUukmTpWpSSZOjaVJJJJWlSSSZG1KSSTJyV06inSUukmSQQukm
+ SSUukmSSUukkmSUukmSRSumckEigpo5Q0XN5vK6PK4XOZ3KkQ5X5y1cLlZP5y1cE6ppS9LiDRXxwqGId
+ Ff7KIqRuUVJyYBNUoKQSAUgEFLhOmhOiFLFRKkVEp6lk4SSCSl0kkkEKSSSSUpJJJBSkkkklKSSSSUpJ
+ JJJSkkkklKSSTpKWSSSSUpJJOkpdQcpqLklNWxVyrFirlJTNitMVVitMSUmCSQToKWTJ0klLJ0kkVKTJ
+ 0klLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkk6ZJSkkkklLp1FOkpRQLEcoFiSms9M1O9M1JTZrRw
+ gVo4SUoqBUyhlJTElKUxTJKZSluUU0oqZbktyhKSSme5LcoJklJN6W9ClKUlJt6fcgSnBRSm3JbkKUpS
+ Uk3JtyHKSSkm5LcoJJKZ7k+5DTpKZ7ktygmJSUk3JbkKUpSQm3J9yBuT7kUJtyW5C3JbklJC5R3qBKiS
+ kpLvS3oMpwUlJtyW5DlJBDPcm3KJTSgpJuThyDKcFJSbcluQ5SSUz3JblCUpSUz3J9yFKUpJSbktyEXJ
+ tyCk25LcghykCkpLuTbkOU0pKS7029CJTSkpPuS3IIKeUlJdybehkppSSmDkQFVwUVpSUnCeEzVNJTAh
+ RKmVApKWlOEwCcBJS6SSdJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSn//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgM
+ RwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJS
+ GxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpk6ZBKkkkkFKSSSRUpJJJFCkkk
+ kVKSSSSUpJJJJSkkkkFLJJ00JKXCkCop0lLymSSRUxITgJ04CISuVVv4VsqpenBTjZRWPcdVr5SyLhqn
+ BKJp1V/HVFg1WhjhOU6uMtOsLPxgtKsIEqShJJRJUdLSyTJpSlCkLpJpSlKlLpJpSlKlLpJpSlKlLpJp
+ SlKlLpJpSlKlLpJpSlKlLpJpSlKlLpJpSlKlLpJpSlKlLpJpSlKlLpJpSlKlLpJpSlKlMgpoYKnKVKRW
+ 8LJylqWnRZWUU4BLh5aybeVrZSyreVMAlgzlaGMs9g1WhjIEKdrGK1aVlYy1aU0hTaCkmapJhUwUgmTh
+ CkMpSlNKiSm0pmnCGHKQchwqZwmKUpShwoWTJ0yXCpSSSSXCpSSSZHhSpJJJGlKTpkkaUpJJJGkrpJkk
+ qUqE0KYTwgVpRwkpEKJSpC4KmEIFTBRpKWEC0aI0oFp0SAS5GYuey1v5hXPZZTqXOVZyp0jVQs5RKBqj
+ wqdvCHC6HFGiwMIcLoMbhClOg3hIpgdExKVKZBSQwVMFAhC6SaUpTaQukmlKUKQulCaUpS4VLpJpSlLh
+ UukmlKUqSukmlKUaSukmlKUqUukmlKUaUukmlKUqUukmlKUKQukmlKUqQukmlKUqUukmlKUqUyCIEIFT
+ BSISxt4WLnLZtOixc1EBLzGceVi28rbzRysexuqfwqXo5W9g9liUN1W7hDhLhS9HhnRarDosnEWow6Jp
+ CkhKGSpEoZKFKUUgVElIFKlrMFSlQBTygQhkmSlJN4ULJ0kkuFSk6aU8pcK5SSaUpS4VpXTJSlKXCxqS
+ SlKUeFIXSTSlKVMgXSTSlKVLgukmlKUaSqEoTyklS0sSoqZQyjSxkCnlQBUglSQoqperZVW4JUuDi5aw
+ skrfywsHJCdwrw5jzqjUcobhqj0N1S4Vzs4Y4XQ4gWFhjhdBi8JUsLosGikVFpSc5NWrFMU0pSlSFJJ0
+ kKUskkklSlJJJJUpSdMklSl0kySVKUkkklSl0ySSVKWThOkEqUyCdMEpSpSxTJEpkqSuE6YFOlSliowp
+ lRSpS0KQSSCVKXKFYUQlBsKVKaOQVi5a2MgrHykRFTi3qsOVbvCrAaqYBLaxlu4ixMcLbxESEu3jlXWq
+ jjnRXWlREKU5QU3FQlCkMgpKAKlKaQhSZKUk3hUpJJJDhQpIJJ0uFSk6SSXCpSSSSPCpSSSSNKUklKaU
+ aUukmlKUqSukmlPKVKUklKUpUpSeU0pSlSVyVEpSmlKkqCmohTSpaUFvCysorVtWVlBGlhcLLKyLeVsZ
+ QWTa3VO4V0UTOVpYqoMbqtLGCXCyu1irXoWTiha1KFLC22qZQ2lSJQpYsUyRKaUKUukmlKUKUukmlKUu
+ FcF0yUpShS9dJNKUo0xyXSTSlKXCxrpJpSlGl4UnTSlKNL2QTpgU6aQhiVEhTKiU3hUsE6UJ4RpTElRJ
+ UiolOpKpThMFIBGlKhSaE4Ck0IqXhV7xorSrX8IBTh5o5XPZY1XQ5i5/L5TwFOW8aolPKg/lFpGqNIdb
+ EW3jBY2IOFu4wSpTerRgo1tRQ1NKWKZTIUYTVLhSCiFIIUheE8JgU8oUpUJoTykShwqWTJEppS4VMkk0
+ pSjSl0k0pSlSl0k0pShwqXSSSS4VKSSlKUuFS6SZJLhUumSlKUeFS6cKMp5RpTOExCbcluRpKyRSlOUl
+ NW86LDzStu/hYeangKefyuVnO5WhlrOdyjSm3j8rdwzwsHH5W7hdkKU7+MdFfaqGNwr7eECpknATJwUF
+ MkxCbclKFKYlJOlCFKWSTpJUpZJOklSlkk6SVIWSTpJUpZJOklSlkk6SSlk0pyolKlKlNKSQSpSk4CSd
+ KlLhSlRCdKkrEoZKIVAhKlMQphMApAJUlcqrfwrZVS/hKlOJmrn8tdBmlc9lHlHhU5rhqrOMNVXdyrWN
+ ylwoLv4I4XR4o0XO4XZdFinRGkN8BRcFJvCZyapGE6dJFTElNKcpoQpSk6QClCVKYQlCnCaEqUxAUkkk
+ qUpJKUkqUukkkhSlJ0ySNIXTppSlKlLpkpSlKlKSSlKUqUpJKUpSpSkyUpiUQFKTqMpSnUhcobypkqDk
+ qTFo3rHy1tXhY+UEabEXDvCqRqr14VWNUqRJPjhbeIsegLZxUKa8nZxyrzCqOOrzUKQylIJikCklIExT
+ SlKFLwsUyRKSVLwpJJKUKQVJJSklTCV0k0p5SpSkkpSSpcpJKUkKUukmlKUqSoqBUyVEoEIYqQSThMpC
+ 4TpkpSpKimSJTSlwpZBSAUQVIFEBLKFF4UpUXFSAJatqzMgLTtWdkBTRCnDygsm0arayQsq1uql4VNZg
+ 1WjjBUmt1WhjhHhQ6+MtWlZeOtOkphCG41TQ2lTlRFCyeEk6YQhQCnCYKQUZCmJCiQiEKJCFJYgJwlCk
+ EqUsknTFGkrJJ0ycApSdNKUp1JXTJJIUxlSSSSFLVJJJJUyhSSSSVL1J0ySVMZUkklKNIUptCgpNKNKS
+ qtfwjFyq3u0QAS42Yufyhqt/LKwckp4iyBzXDVGpQ3cotQR4VF1cUrZxysbGC2KEOFiLo1lHaVXrR2oU
+ gJAVIKAKcFCmQMwkmlKUKSopk8pkKQpJJJKlKSSSSpCkkkkqUpJJJClKSSSS4UKTpkkOFSkkkkuFSxTK
+ SZLhUxUgmThLhUzCZNKUpwCVFMlKUp4CVwnKiCnJSU1cg6LAzVvZB0WDmhSxCXnMvlZ55WnlN1WcW6qY
+ BDaxjquhwuywMYaroMIcKKYU72ONFdAVPH4VwFQELV1MIcqQKVKSJKMpShSlFMUxKYlGlLpKMpSlSmaS
+ jKeUqUukmlKUqUukmlKUqUukmSQpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUuklKYlKlLFRTkqMp4C
+ VyFWvGisyq93CeEuDmhc/lDVdHmhc/lN1U0UOb3V3GOqqFuqu4w1Typ3sLst/H4WFhDhb+MNFBJLaATp
+ wmKhUoJ5UUpSQopoUkkVMYTpJJKUkmTpKUkkkkhdJMkgVLpJpSTCpSdMkgFLpkkk8KUnTJSipeFIBRlK
+ UwhTKExS3KJKICFimSJTSnAJZBOogqSKVKDlJRciFNO/hYmYFuX8LFywpAFODkhU41V/ICpRqjSW5jLe
+ w1g43K3cMoEKd3H4VwKnjnRXAoilYqKcqKQQukmSSUuklKUoKUklKUpUhSSUpJUpSSSSFKUnTJ5SpS6Z
+ KUpQpCk6aUpSpS6SaUpSpS6SZKUKSukmSSpS6SZKUqSukmlKUaUyCi5SBUXI0pr2rMyStK1ZmSjSnGyi
+ su0rTyVl2I8KmLOVo4yzmcrRxkeFDt4oWvQsjFWvQU0hTbakUwKRKFKYFMnKZCkLJwnATgIUpQUkoSSp
+ KkkpSlGlKSSlJKlKSSSSpSkkpSSpCkkkkKUpJJJDhUpJJJLhUqE0KSYocKmKSRSS4VLp1EKQR4UrpwEy
+ kE6lMHKperjlTvTglyMpYmStvJWLkhSAKcx/KnUNUzhqi1BPAS6eKOFt4yx8ULaxwgQh0alYCr1o4KgI
+ QuVFSJUUKQpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJMklSl0kySVKXSTJJUpdJMklSl0kySV
+ KXSTJJUpdJMklSmbU7iohOUQEtPIOiw8xbmRwsTLCkAU8/kjVUSNVo5I1VEjVHhU2MYLdwzwsTHC3MQc
+ IcKnaoOittKqUDRWmoEKSBTCGFIFNpSRJQ3JbkqUylNKaUk2lLykmTpUpdJMkhSl0kySFKXSTSlKVKXS
+ TSlKVKXSTJJUpSSSSFKUklKSVKUnCaUpThFaWYTyh7kt6PChISoEqO5KUaSFimATpwElyiFUyBorpCp5
+ HCIXPP5oWBkjVdBmnlYGSdU6lNIDVXsYKkDqr2Mhwqd7DW5jnRYmGFt0DRKkNxpTpglKbSF0k0pIUhdJ
+ MklSF0kySVKXSTJJUpSSaUpSpK6SaUpSpK6SaUpRAUumSlKU5KkkpSSUukmlOghSSSSSlJJJJKUkkmlF
+ S6SaU6SVBJyaUzikpo5R0XOZvK6HKOi5/M5T0OT3WphcrOjVaeENU0qeixDotAcLPxBoFoNGiiKViEgF
+ IhIJqlAJ0k0oKXSUZSlOClymSTwnKYp1KE0JKWSSSQQpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpOm
+ TpKWSSSSUpOmTpKXUXKSi5JTVsVcqxYq5SUzYrTFVYrTElJgnTBOgpZJJJJSkkkkVKSSSSUskkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJOkkpSdMnSUsUGxHKA9JTVek1O9M1JTZrRwgVo4SUsUMohQy
+ kpgUycpikpZJKU0ooVCUJSnSUqExCeUySWJCZSKZJSySSSSl06ZOElKhOAnCkEVMYShSUSUlKSUZSBSU
+ yUSnlRJSUxKSScJIUknhKEkLSnTgKQCKmEJiESExCSkcKQCeE4CSFAJ4SCdApYkKJUimQUxThMnSUuE6
+ ZOkpdMnSSUxKiSpFRKCWJKaVIhNCSlBSCYBSASUumKkAlCSmBCaESE0JKYhOnhPCSmBTKRCUJKXCK1CC
+ K1JSdpUwUNqmCglRUSnJTJKUAnATBSSUsmTpkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvS
+ U13J2pnJ2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpS
+ SSSSlJJJJKXSKSRSUhsVV6tWKq9JTAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmQSpJJ
+ JBSkkkkVKSSSRQpJJJFSkkkklLpk6ZBSkkkklLpJJ0lLJlJMUlLSkmTpKXUgohTCISoqperZVO9OCnHy
+ gsm0arXyVl2jVOCULBqtDHCot5V6h0IqdjHC0GcLLosCvstCVKbBUCo+qExsCAC0sklDeEvUCNIZpKHq
+ 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
+ dzXTKwcjlSUpqDlaGKqA5V7GMJIehw+y26OFgYj4W1RaIQKm+EkIWhP6gTKUkTKHqBN6gSpakSQ/UCXq
+ BKlJEkP1Al6gSQkSQ/UCXqBKkpEkP1Al6gSpSRJD9QJeoEqSkSQ/UCXqBGlJEkP1Al6gSpSRJD9QJeoE
+ KUkTofqBL1AmqSJIfqBL1AkpIkh+oEvUCSkiZQ9QJvUCKkidC9QJ/UCNJZqLlH1AoPsCNKauTwsHLGq2
+ sh4hYuSZSQ50arSwxqqHdaGKmlLv4p0Wg0rMxjor7SoypKSkoypBNUpMVKEoSUjSU4TQiFKCmFBPKelk
+ mKUppQQsUkkkEKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKTpk6SlkkkklKTpk6Sl1FykouSU1bFXKs
+ WKuUlM2K0xVWK0xJSYJ0wToKWSSSSUpJJJFSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUnTJ0lKTpk6SligWI5QLElNZ6Zqd6ZqSmzWjhArRwkpYoZUyoFJTAqJUioFJS0pJimSWspSlRSJSUvK
+ UqMpSkpknTBOkpSSeEkkrJ0kkkLhPKhKYlFTMlRJUZSCSlk4UgFLakpgmKJCiQkpgnCRCjKKEgKdDlOC
+ khIFIIYKfckpmolNuTSkpdOFGU8pIXTEpiUxKBXBeUlFSCC9UJQpgJQkhhCdOmSUpJJMkpdNCdOElMYT
+ 7VIBSASSj2p4U4TEJKWhJNKaUFMklGUpSUukmlNKSlFJNKSSmQRGoYRGpKShSBUApJKXKZJJJSgpJgnS
+ UpMnTJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ p//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklK
+ SSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQ
+ AjsSU2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpk6ZBKkkkklKSSSSUpJJJFCkkkkVKSSSSUumSToKWS
+ TpkFKlKUxTSkplKSYJwkpUJwEgpBJSgFIBIKQRSwcFTvV16pXpwU5GSsm4rXyQsm9qcEtb1IKNXfCqPa
+ VEEhG1OzVlwrTM6O654PIUvWITgp6L7f5pvt48VzpvKicgp9LS9J9vHil9vHiub+0FL7Q5KkPSfbx4pf
+ bx4rm/tDkvtDkqU9J9vHil9vHiub+0OS+0OSpT0n28eKX28eK5v7Q5L7Q5KlPSfbx4pfbx4rm/tDkvtD
+ kqU9J9vHil9vHiub+0OS+0OSpT0n28eKX28eK5v7Q5L7Q5KlPSfbx4pfbx4rm/tDkvtDkqU9J9vHil9v
+ Hiub+0OS+0OSpT0n28eKX28eK5v7Q5L7Q5KlPSfbx4pfbx4rm/tDkvtDkqU9J9vHil9vHiub+0OS+0OS
+ pT0n28eKX28eK5v7Q5L7Q5KlPSjPHipftAeK5j7Q5P8AaHJUp6F+fPdUL8uVmG8lQc8lEBLO+6VRfYiv
+ BKruYU9LNtquU3ws4NKKyQkp3acmFerzI7rnWPIRxaQgp6MZ3mpfbx4rm/XKY5JQpT0v7QHil+0B4rmf
+ tJTjJKFIelOePFROePFc59ocmOQUKU9H9vHipDPHiuZ+0OS+0OQpT0/7QHimPUB4rmvtDk32hyXCp6X9
+ oDxS/aHmua+0OS+0OQ4VPS/tAeKb9oDxXN/aHJvtBR4VPS/tDzS/aHmua+0FL7Q5KlPS/tAeKb9oDxXN
+ /aHJvtDkqS9N+0B4pftAeK5r7Q5L7Q5GlPS/tDzS/aHmua+0FL7Q5KkvS/tAeKX7QHiua+0OS+0OSpT0
+ hz/NROd5rnheU/rFKlpd77d5pxn+awDcVE3lKlr0gzx4og6gPFct9ocnGS5Kkh6v9oDxQrM4HuubGS5O
+ cglEBc6WRlSsm+6Uz7CVXeCU6koXv1U67IKgaynawhGlOnj3wtajLhc6yQrDbSEKU9K3OA7p/t48Vznr
+ kKJyHIUp6X9oDxTfbx4rm/tDkvtBQpD0n28eKX28eK5z7QUvtBQpD0f28eKX28eK5v7Q5P8AaChSHo/t
+ 48Uvt48Vzn2gpfaChSno/t48Uvt48Vzn2gpvtDkqU9J9vHil9vHiuc+0OS+0ORpL0f28eKX28eK5v7Q5
+ P9ocjSXo/t48Uvt48Vzn2gpfaClSno/t48Uvt48Vzn2gpfaCjSno/t48Uvt48Vzn2gpvtBSpT0n28eKX
+ 28eK5v7QU/2hyFKej+3jxS+3jxXOfaCl9oKVLXo/t48Uvt48Vzn2hyb7Q5KlPSfbx4pfbx4rm/tDk/2g
+ pUp6QZ48VMdQHiuY+0FP9pcjSno354I5Wbk5e5ZpyHFDc8uRpcjybJWe46q49hKC6ko0ljU+Fp498LMF
+ RCPXISpT0VGXCvMzo7rmmWEIovISpT0f28eKX7QHiubOQ5QOS5CkPTftAeKb9ojxXMHJcm+0uQpD1H7Q
+ Him/aA8VzP2lycZDk0haXpDn+aY5/mud9dyf1yhSHoPt/ml9u81z3rFL1ylSQ9D9v80/2/zXOeu5L13J
+ Uuei+3+aX2/zXO+u5L13JUtL0X2/zS+3+a5313JeuUqY3ovt/ml9v81zvruS9dyVJD0X2/zS+3+a5313
+ Jeu5GmQPRfb/ADS+3+a5313Jeu5Glwei+3+aX2/zXO+u5L13JUl6L7f5pfb/ADXO+uU3rlKlpej+3+aQ
+ z/Nc565T+u5Klj0ozx4qf7QHiuZGQ5P9ocjSQ9Ic8eKrW5s91h/aHKDriUqXBuZGTKy7rZUnuJQHMJSp
+ eEJcjVPhQ9IojaiEaXOlj3wtajLhc+wEI4sISpYXpW54HdI9RHiuaOQ4ITslyFLHqP2iPFL9oDxXLDJc
+ pjIclSnp/wBoeaX7QHiua+0OS+0OQpD0v7Q80v2h5rmvtDkvtDkqU9L+0PNL9oea5r7Q5L7Q5KlPS/tD
+ zS/aHmua+0OS+0OSpL0v7Q80v2h5rmvtBS+0FKlPS/tDzS/aA8VzX2gpfaClSnpf2h5pv2gPFc39ocl9
+ ocjSnpP2gPFL9oDxXNfaHJfaHJUl6b9oDxS/aHmua+0FL7Q5KlPRnP8ANL7ePFc367kvXclSnpBnjxUh
+ 1AeK5r13J/tDkqU9L+0PNL9oea5r7QUvtDkqS9L9v80v2h5rmvtDkvtDkqU9Gc/zQ3Z48Vz5vchuvchS
+ natzp7rOvy5VB9zigucSiAplbbKBuUthKcVFPCUtVkLSovhZjayEdgIRU71WXCstzfNYDXkKXqlNQ7/2
+ /wA0h1AeK503uUDkOTaU9OOojxT/ALRHiuX+0uS+0uTaQ9R+0R4pftAeK5j7S5OMhyVKem+3+aX2/wA1
+ zYyHKQvKFIei+3eab7f5rn/XKibylSnoft/ml9vHiucN5Teu5HhU9J9v80vt48VzfrlL7Q5GlPSfbx4p
+ fbx4rm/tDkvtDkaU9J9vHil9v81zf2hyX2hyVKek+3jxS+3jxXOeu5L13JUl6P7ePFL7f5rnPXKXruQp
+ T0f28eKX28eK5z1yl67kKU9H9vHil+0B4rm/XcmOQ5KkvS/tAeKb9oDxXNfaHJfaHI0l6YZ/mn+3ea5o
+ XuRReUqWl3H5s91SuypVA2koT3Eo0xs7r5VJ9qd8lV3NKNL4pm3K1TkQs0NKIyQjTK79OXCu15sd1zbH
+ kIwuIQpYXphn+af9oDxXNeu5MchyVLHpT1AeKb9oea5r7Q5L7Q5NpT0v2/zTfb/Nc567kvXchSno/t/m
+ l9v81znruS9dyFLg9H9v80vt/muc9dyXruSpe9J9v80vt/mub9dyXruSpjk9J9v80vt/mub9dyXruSpj
+ ej+3+aX2/wA1znruS9dyNLw9H9v80vt/muc9dyQvcjS96T7f5pvt3mueF5UvWKFId453ml9u81gG4pvW
+ KVKehGf5qX2/zXOeuU/rlKlPQnP81H7f5rnzeU3rlGlPRfb/ADTjP81znrlP65RpT0f2/wA0hn+a5z1y
+ nF5SpT0Zz/NAtzZ7rFF5UXWkoqbeRlSsu++U1jiVUeCUlLOs1RK7EDYURjCkp06LoWnTlQsKsEKy15CS
+ noGZsd1P7f5rnvWITG8pUp6I9Q81E5/mudN5TeuUKU9F9v8ANL7f5rnvWcn9YoUp6D7f5qQz/Nc76zkv
+ XKVKekGf5qQ6gPFc167kvtDkKU9N+0B4pv2gPFc19ocm+0OSpT0pzx4pvt/mub+0OT+u5GlPR/b/ADS+
+ 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
+ JchSnpT1AeKgc/zXN/aXJDIcmkIeiOd5pvt3msAXFS9YpUp3vt3mn+3+a583FQN5SpL0f7Q80v2gPFc3
+ 67kvXclSnpP2gPFL9oDxXOeu5L13I0p6P9oeaX7QHiuc9dyXruSpT0f7QHil+0B4rnPXcm9dyNIek/aA
+ 8Uv2gPFc367kvXclSnpP2h5pfb/Nc567kvXchSno/t48U46gPFc167kvtDkKU9OOoDxT/tAeK5j7Q5L7
+ S5ClPTnqA8Ux6gPFcz9ocn+0OSpT0n28eKb7f5rnPXcl67kaU9H9v80/2/zXNi8qQvKICXoHZ3mq9mZK
+ yfWKg6wlGlNu7JlZ1t8pnklVnglOCVzapMtVYsKmxhTkupRfC0acqFiVghWGuISKHoGZsd0UdQHiub9Y
+ hN9ocoiEPTHqA8VH7ePFc39ocl9oclSnpPt/ml9v81zf2hyX2hyVKek+3+aX2/zXN/aHJfaHJUp6T7f5
+ pfb/ADXN/aHJfaHJUp6T7f5pfb/Nc39ocl9oclSnpPt/ml9v81zf2hyX2hyVKek+3+aX7Q81zf2hyX2h
+ yVKej+3+aX2/zXN/aHJfaHJUp6T7f5pfb/Nc39ocl9oclSnpPt/ml9v81zf2hyX2hyVKek+3+aX2/wA1
+ zf2hyX2hyVKek+3+aX2/zXN/aHJfaHJUp6T7f5pfb/Nc39ocl9oclSnpPt48Uvt48Vzf2hyX2hyVKemG
+ f5pzn+a5oZBUxeUQFO1bmT3WZk5EqubSUF8lPCmtfZKpk6q4+slBNBSUvS+Fq418LLZUQrVYIQU9BTlw
+ rbc+O65sWEKRvIQIU9L+0R4pHqI8Vy5yXJjkuTaU9OeojxUT1AeK5n7S5L7Q5KlPS/bx4pfb/Nc367kv
+ XKVKek+3+aX2/wA1zf2hyXruSpT0n2/zS+3+a5v13Jeu5ClPSfb/ADS+3+a5v13Jeu5KlPSfbx4pfbx4
+ rm/Xcl67kOFT0n28eKX28eK5v13Jeu5LhU9J9vHil9vHiub9dyXruS4VPSfbx4pfbx4rm/Xcl67kuFT0
+ n2/zS+3jxXN+u5L13JcKnpR1AeKf9oDxXMfaHJfaXJUtL056gPFR+3jxXNjIcpeu5GkPRfbh4pxnjxXO
+ euUje5GkvSjqA8VIdQHiuX+0uSGSUqXPUHPB7qrdmT3WIMkpnWkpwC5Nk3ysq58o9hJVZ9ZKVKQh2qs0
+ 2QgekURjCEqQ7GPkQtKrMhc6wkI4tISpT0Yz/NL7f5rnTeVE3uTaQ9J9v8032/zXOeu5L13IUh6P7f5p
+ fb/Nc567kvXchSHo/t/ml9v81znruS9dyVKej+3+aX2/zXOeu5L13JUp6P7f5pfb/Nc567kvXcjSXo/t
+ /ml9vHiuc9dyXruRpL0f2/zS+3+a5z13Jeu5KlPR/b/NL7f5rnPXcl67klPR/b/NL7f5rnPXcl67k0qe
+ j+3+aX2/zXOeu5L13KMqej+3+aX2/wA1znruS9dySno/t/ml9v8ANc567kvXcgp6P7f5pfb/ADXOeu5L
+ 13JwU9H9v80/28eK5v13Jeu5PU9H9v8ANQdn+a5/13KJvckp2Ls2e6zrsiVVdY4oRJKCm0x8laeJqsml
+ hJW1hsTSl2cYaLRY1U8Zmi0mN0URUxDVIBThMUFMUxKRKGSkpnKaVCUpRCmcpJgpAJ6Vk6eEyBQskkkg
+ hSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUskkkkpSdMnSUuouUlFySmrYq5VixVykpmxWmKqx
+ WmJKTBOmCdBSySSSSlJJJIqUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkydJSlJRTp
+ KUUCxHKBYkprPTNSemakptVowQK0YJKUUMqZQykpiVEpymSUtCUJ1IJtruFhCYhEhMQhauFFCcBSITBG
+ 1cK4CkAmClKVp4VQmhPKiSlauFSSaUpStXCoqBRITEI2rhRqbU0JwlauFIFJDBT7krRwsiokJSpJWrhR
+ kIZCOQhOCVo4WCkAmhTaEbVwqhJEhRIStHCwSShIBK1cK6SdMUrVwrEpk6UJWrhUEQBQAUwgupkEimlR
+ JSVS5TFNKUpKpSZOmSVS8pwVApSkqkoKmCgBymHJKpJKiSmlMSkqliop0oSRSySlCeElUwSUoTQkqmKk
+ AlCmAkqlAIgCYBEASVSgFJIBOkqlkkk6CqWTpk6SqUmTpIoWSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKr
+ vVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkp
+ SSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpk
+ 6ZBKkkkklKSSSSUpJJJFCkkkklKSSSSUpJJJJSkkkkFKhKFIJwElMYShThRKClpTbkxKgSipLvT70GU4
+ KSUjnKvYJRUxbKcFObdVKz7caVuuqlCOPKcl512JKGcIrpfsoKX2QIqeZ+xFMcMrp/sYTHDCcFPKnDKi
+ cIrqjhBR+wjwUgK15b7EU/2IrqPsI8EvsIStDy/2IpfYiuo+whL7CErS8v8AYil9iK6j7CEvsIStTy/2
+ IpfYiuo+whL7CErU8v8AYil9iK6j7CEvsIStTy/2IpfYiuo+whL7CErU8v8AYil9iK6j7CEvsIStTy/2
+ IpfYiuo+whL7CErU8v8AYil9iK6j7CEvsIStTy/2IpfYiuo+whL7CErU8v8AYil9iK6j7CEvsIStTy/2
+ IpfYiuo+whL7CErU8v8AYil9iK6j7CEvsIStTy/2IpvsRXU/YQl9hHglaHlxhFSGEV032IJ/sQR4kvMn
+ CKgcHyXUHDCY4YR4lzyv2A+CkME+C6f7EPBSGEEuJTzIwin+xldN9iCb7EPBDiU8wcQqJxCunOEE32Ee
+ CNoeY+xlSGGV0wwR4KYwR4IEoeX+xFI4RXVDBHgl9hHgm8SnlPsRS+xFdV9hCX2EeCVqeV+xFL7EV1X2
+ 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
+ oSmElJJTpgkkhdJRJUC9JSaU8oHqJ/UQQlJTShl6bekpMFMKuHorXJKTtCmAhtKICkpkklKZJSkydMkp
+ ZOmSSUukmTooUkkkihSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ Ukkkkp//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmT
+ pKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcIDEcJKXSSSSUp
+ JJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRSUhsVV6tWKq9J
+ TAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZJOglZJJJJSkkkklKSSSRQpJJJJSkkkklKSS
+ SSUpOmSQUvKeVFJBTOUxKZJJTEqMKZTQkpiGqQapAKQCSWIaltU00pwUx2pbU8pSnJUGhPtCUpEoqWIC
+ aAmJTSiplAT7QoAqQKFrV9oS2hKU0pWhfaEtoTSlKVqX2hLaE0pSlal9oS2hNKUpWpfaEtoTSlKVqX2h
+ LaE0pSlal9oS2hNKUpWpfaEtoTSlKVqX2hLaE0pSlal9oS2hNKUpWpfaEtoTSlKVqX2hLaE0pSlal9oS
+ 2hNKUpWpfaEtoTSlKVqVtCW0JSlKVpW2hNsCdJLiSoMCcMCQKcFLiUrYEiwJ5SlK1MNgS2BSlPKVqYhg
+ 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
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JT
+ XcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJ
+ JJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUpJJMkpdJJJJSk6ZMgpdJNK
+ UpJXSSSSQpJOkipZJOkkpZJOmSUpJJJJSkk8J4QUxhPCeEkFKhJJMkpYpk5TJKZAp5UJTyklclRLkxKY
+ pyl9ycFQThG0pAU6gFJOtSxUVJNCVqUFIJkk1aukkmSQukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSTpJKUmTpkkqSSSQSqUpTJIqXlKUySSl5Tyop0UMpSlMmSU
+ olRJTlRhJS8pwmhOElMkkkklKSSSSUpMnSQUskkkkpSSSSCVJJJJKUkkkglSSdMkpcFKUyYpLSuXKBck
+ VGEVrMFTCGFMJ1JZQkQlKSNLmJCZSKilaVwpKKdK1KSSTJWpdPKikkpeUkySFIUkkkhSFJ0ySahSSSSS
+ lJJJkaSukmSSpS6SSSSVJJJIqUkkkjSVJJJJUpSSSSahSSSSVoUkkkkhSSSSKlJJJIpUkkmRSpOEycJW
+ pdRKkmKVqRkJAKUJAI2pcBTAUQpBJS8JinlMU2kMSknKSBCFkk6SatpZJJOkkLJ0kklykkkkVpUmTpJL
+ KUkkkkkBSSSSVrwpJJJK1ykkkkkqSSSRpaVioEqRUSEaWUtKmFEBSCCaZAKUJgnStcFQolSJUUOJeCsk
+ kmS4k2pKE6SINrStCeE6SNLFoSTpklKSTJJIXSTJJKXSTJJJXSTJIKXSTJJKXSTJJKXSTJJKXSTJJJXS
+ TJJKXTqKSSl0kySSV0kySSlFRKdMUlLJApQkAkpmCpgoYUgUlMpSTSklaVKJTpilamKQTwlCSFwnTBOk
+ pSZOkghZIJ0kaUuAnhME6VIVCUJ0yKlkkkpRUpJJJJSkkkklKSSSSUumSSQSukmSQUpJJJNpSkkkyVJX
+ BUgoJwUVM1EpSkSigrJkikispcJ1FPKK4LpilKYpMlrJk6ZJaV06ZJBbS6dRToKUkkkmoUkkkkuCkkkk
+ KXKSSSRpYVJ0ySNLKUkkkjS4KSSSRXLp0ySCl0kkkrUpNKSYpKUSmlIpkqUvKcFRThKlMwlCYJ0qUxIT
+ QplRQUoBPCSSCloShSSSUoBSTJEpKWJUSU5UCjSl9yW5RSRpTKUpTJ0qUpSATJwjSmQCRCUpSgpgQmhS
+ KZK1KCkmSRUukmlJKlLpJJk1SkkkkFKSSSSUpJJJJSkkkk6lKSSSRpSkkkyKV5SlMmRUylKVFOhamSSZ
+ JK1KTSnKiUrUvKUqKSCmcp1EJ5RpS6SUpIUpZJJJBSkkkklKSSSSQpJJJJSkkkklKSSSSUpJJJJSiolO
+ kkpZKE6SSlQnhJOkpimUiolJK4KkCoJ0lJAUpUAU6SlFRIUkySWMJ9qkE6SkZCaEQqJCKGMJwEoThJFL
+ gJ0ydJS6SaUxQUqU0pJklLpBMnCSmQTpglKVKWKgpFNCVKUE6ZOhSl4TJ0yVKUkkklSFkk6SVKWSTpJU
+ pSSSSKl0kydJSk8Jk4SUqE0KSZKltMSmTlMkkBeUkydBmBUnTBOlaiVkk6YpWwEKlNKSZJFLypAKIUwj
+ S5cBIhOCkSlS4MSmTlRSpkBXSTJ0lpUkkmQYyF0ydMkoBSSSSSVJJJJJWSTpkaUpPCSdEKVCSdJOtC0J
+ 0kkCpSSSSYUqSSSTaSsmTpIUlZJOkiApSSSScpcJ4TJ5RQViFEqRKiUlqyUJ0k0qVCeEkkKQunTSlKNK
+ ZJkpTSiErFRJTlRUgUpPKZJFLJJMnTSpSSSSapSSSSS0hSSSSFLaUkkklTIFJJJJUuUkkklSwrKQTJBO
+ pFMwnKiCkSkqmLlAqZUYRSFAKYCiApBFeGSdMmlBJUSmlIpkmIrynlQTpUgBlKUqKSFMgUUkkkqSpOmT
+ oIUkkkjalJJJJWpSSZOjalJJJJWhSSSSVqUkkkhaFJkkklLQnSSQUpRKkmKapikE8JQlSVwnTBOlSlio
+ FEUSElMFIJQnASUzCdRCdFSkkkyKlSlKZJJCpSlMkkpeUpTJJKXlOmSSUumSSSUpJJJJS6UpkklLpJk6
+ SloShOkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWhOkkkpSSSdFLEhNCkkkpQTpkiUUrEqCkVGE9C4UwFE
+ KYQKlEKJUlEpilkgUkkFMgnUQnSUopk6SeFLJJJ0VLJJ0klLJJ0kkLJJ0k0lSySdJK1LJk6ScpZOEk6S
+ l0ySSYVMSmCcpklMgU8qKdFTKU0pkyNKZSnlRSSSzlOoSnlKlMkyUppQSpMkkgpSSSSClJJJJKUkkkkp
+ SSSZJS6SZJFC6SSZFS6SZJOUukkkgVLpJJJqFJJJIKUkkklSlJJJIUlSSSSVJUkkklSlJJJI0pSaE6SK
+ mKSdMipeU8qKdJTJMkkihaEoTpIKWhKE6SCmJTJymQpSpTymhJCkMpTJJIUlSSSSFKUkkkjSlJJJJylJ
+ JJIoUkkkipSSSSSlJJJJKUkknQUpKUkyCliknhKEqUoJ4ShOlSVkxUkxSpTFJPCUIpXCSSSSV0kkkkKS
+ hOkghaEoTpJIWhKE6SSVoShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWh
+ KE6SSloShOkkpaEoTpJKWhPCSSSmJUSplQIQUoFTCgAphKlMlEhSlRKVKRlNKkQowlSlwUQFCAUwlSma
+ YhIJ0qUxhOAnTpUpaE6SaUqUpMkkjSlkk6SSlkk6SKlkk6SKlkk6SSlkk6SKlkk6SSlkk6SSlJk6ZMK1
+ YpJQlCbSFwpAqKdGkspSJUUiiuWJUU5TIpUFIBMAphJSoSKdMUlMCVGVIhRhBTIFOFEBSCCF0ydJCkLJ
+ J0kqUsknSSpSySdJKlLJJ0kqUsknSSpKySdJOCmKSdJPtKydJJK1KSTpIWhZJOklalkk6SFqWSTpI2pZ
+ MpJkbSsnTpJWpaEoTpIcSliFEqZUSkSpipBNCcJimYSlMClKClEppSKZJS8pSopwiFMkoSCdPtS0JQpJ
+ igpiknTIIUknSSUsknSQUsknSSUsknSSUsknSSUsknSSUsnSSSUsknhKElLJ0oTJKZKLk6i4pKa1irlH
+ tKrEpKSsVqtVKyrlaSkoTpAJFBSySSZJS6SSdFSySSSSlkkkklKSTJJKXSSSSUpJJJJSkkkklKSSSSUp
+ JJJJS6SZOkpScJk6SlFAsRygWJKar0zU70zUlNhiMEFiMElMSoFEKgQkhE5AeFYcq1joQK+G6FwUNqTr
+ FEPlQFvwOi5agvarI1UXtQXue9qHCtvYglqKqRgKUJ4SSVTGE21TCkAkqmAajsak1iOxiSmTAipNaibU
+ UW1nlVLXwr9jFRtYki2qbFJr1BzFNjElWna5SlRaxT2pKYqYakAiNCKaY7E2xFKG50JKpTWo7Gqt6kIj
+ LkkU2w0Ke1V22oofKSKSAKYCgCiAo2tJZAJFKUk4FjKyiQppiisa7wqr1asVO1yKmEqbHqq58Jm2pKdN
+ j0dpWfU+Veq1QUnCkAk1qnCSFgEinUSUlI3lVLHKw8qu8Skpru1UNso+xSFaSKQBifYrOxRLUlU1y1NC
+ MQoFJFLsCs1hVmlHY5JVNxiO1VWOVhrklJQnUQVJJC4Tpk6VKWKYp00JItZOmhOitKkk6SKFkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Lr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkk
+ lKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACNWkpstU1BqmkpdJJJJSy
+ SSSSlkkkklKSSSSUpJOlCSmKdPCSSFk6ZKUlMkk0p5SUpJKUpSUsknlJJK0JwElIJKUAnhIJ5SUxhNCm
+ mKCmKZSTJKYwmhTTJKYwmUkklMYShSSSUxhPCknSUxhPCdJC0rQlCkklaGMJKSZOUsknSSUsknSSUskn
+ SSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUtCUJ0
+ kFy0JQnSSUtCaFJJOUtCUJ0kVLQlCdJFTGEoUkkFMYTwnSSQsknSQUsknSQQsknSQUsknSSUsknSSUsk
+ nSSUsknSSUsknSRUtCaFJJJTCEtqmknBTCE6kmTlKSTJ0lLJQnSUUlLQnSSTLUpMnSTwpaEoTpKRS0JQ
+ nSRUtCUJ0klLQlCdJRlS0JQnSQClkykmUgUsknSRSpKE6SYULQlCdJAKWhJOkpAlZKE6SRQtCUJ06hKm
+ MJQpJIBTGEoUkk4KYwnhOknKYwlCkmTlLQlCkkgVMYTwnSURKlkoTpJAqYwnhOkngqWhJOknhSySSSKV
+ JQknQKFkk6SjUtCUJ0kFMUk6SSlkk6SSlkoTpJyqWSTpJpUsknSTLUsknSRBUsknSTwpZJOkpApaE0KS
+ SKWMJwFJJAoWTpJKElSkydJRkqWhKE6SZxFVrQknSViBUsknTKZSk0KSSaVMIShSSQUxhKFJJJTGEoUk
+ klMYTwnSSUtCUJ0kFLQlCdOkphCeFJJBTGE0KaSSmEJQppJKYQlCmkkphCUKaSKmEJQpJ0lMIShTSSUw
+ 2pQppIqYQnhSSQKmKSdJMJSslCdOlamMJQpJIoYwlCkknKWhJOknKWhKFJJJCySSSKlJk6SSlkykmSUs
+ kpJIKYpKSSCmKSkmSSsknSSUsnSTopWSTpJKYpQpJIIYpKSZBCkkk6SmMJQpJJyWKSkkipikpJJKYpQp
+ JJJYwlCkkkpjCUKSSCmMJKSSCmMJKSSSGKSkkgpjCSkkipjCSkkihjCUKSSKmMJQpJIqYp06SjKVkk6S
+ YpZJOkpQpaE0KSScpjCeE6SSlk6SSClkk6SikpZJOkmqWSTpJKUmTpJBS0JoUklKFMYShSST1MYShSSS
+ UsknSQUpJJJRlSyUJ0kApZJJJShCydJJFSkkklGVKSSSQUpJJJJSkkkkQpSSSSkUsnSSSSpMnSSUtCUJ
+ 0kClaEoTpKMlSySdJC1LJQnSStS0JQnSTgpaEk6SkSpJJOkgrJJ0kFqySdJJSySdJJSySdJJSySdJJSy
+ SdJJSySdJJSySdJJK0JJ0klLJJ0kkrQlCdJJS0JQnSQUtCSdJJSySdJJSkkkkkrJQnSSUxhPCdJBSySd
+ JFSySdJJTGEoUkklMYTwnSSUsknTJIUmhSSSUxhJOkipSZOkkhZJOkgpaEoTpJKWhKE6SSlkk6SSlkk6
+ SSlk6SSSl0kkkVLQlCdJAqWhKE6SiKrWSTpIKWShOkkpjCUKSScFMYTp0lKFKSSSRUskknSUsknSTSpZ
+ NCdJRlS0JQnSQUtCUKSSKloShOknBTGEoTpKRS0J0k6BUsnSSTULJJ0klLJJ0kkrJJ0kFLJJ0kkrJJ0k
+ lLJJ0klLJJ0kFLJoUkkVMYShSSRUsknSSQsknSSUsknSRUxhKFJJJDGEoUkkVMYShSSQUxhKFJJBLGEo
+ UkkVMYShSSRVTGEoUkkVMYShSSSSxhKFJJJTGElJJJSySdJBTGEoUk6SmEJ1JJJSyZSTJKWhNCmkkhhC
+ UKaZFTGEoUkklMYShSSSUxhKFJJRlS0JQnSQUtCUJ0kFLQlCdJK1MYShSSStTGE8J0krUxhKFJJK1MYS
+ hSSTlMYShSSRUxhKFJJJTGEoUkklMYShSSSUxhKFJJNUxhKFNMgpaEk6SFqYwlCkkiFMYShSSTksYShS
+ SSUxhKFJJJTGEoUkklMYShSSSUxhKFJJJTGEoUkklMYShSSSUxSUkklMUlJJJTFJSSSUxSUkklMUlJJJ
+ TFJSSSUxSUkklMUk6SIQtCUJ0k4KWTKSZOStCaFJOlamICdOkkhSaE6SCmMJQpJ01TGEk6SSlkoTpJyl
+ oShOkklaEoUkkkLQknSQKlkoTpJpUtCUJ0kApaEoTpKRS0JQnSSUxShSSQUwhKFNJJTCE8KSSKmEJQpJ
+ JKYwnUkySlkk6SSlJk6SSloSUkkFMYSUkkFMYShSSSUxSUkklMUlJJJTFJOnSUxhJSSRUxTQpJIqWhPC
+ dJIqWSTpJqlkk6SKlkk6SSlkk6SKlkk6SSlkk6SSlkk6SClkk6SCmMJQpJJKYwlCkkklZJOkgpZJOkip
+ ZJOkkpjCUKSScpjCUKSSSmMJQpJJpUxhKFJJBTGEoUkklMYShSSRQxhKFJJJTGEoUkkVMYShSSSQxhKF
+ JJJS0JQnTpKYwlCkkkpjCUKSSSmMJQpJkkrQlCdOkpjCUKSSSWMJQpJJKYwnhOkkVLJJ00phQpJKUpQU
+ pJKUpRUpJKUpSUpJKUpSUpJKUpSUpJKUpSUpJKUpSUpJKUpSUpJKUpSUpJKUpSUpJKUpSUpJKUpSUpJK
+ UpSUpJKUpSUohRIUpSSUxhOklKcpSSSSKloTQpJ0lMITwnSSUpJJJJSkkkklKSSSSUpJJOkpZJSSQUxS
+ TpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWhKE6SVIWhKE6SSlkk6SCVoShOkgpaE6SUoKUkkk
+ ipaE0KSSKloSTpIqWShOkkhZJOkilZJOkkpZJOkghZJOkklZJOkgpZJOkgVLJJ0ky1LJJ06VqYpJ0krU
+ sknSStSySdJK1LJJ0krUskpJJWpilCkmStSySdJK1LJoUkkbUxhKFJJJTFJSSRUxhKFJJBTGEoUkklLJ
+ J0kVKSSToqWhKE6UpKWhKE6SSloShOkkpaE8JJ0lLQlCdJJS0JoUkySloTQpSmlJS0JQnSSUoBPCUpSk
+ pYhRUiUySllF6mouCSmnaqx5Vu0KsQkpnUr1QVOsK5WUlJwExCcFIpKYQmhSSSUsnTpJKWTJ0ySlkydJ
+ JSySSSSlJ0ydJSkkk6SlkkkklLJJJJKXSSSSUpJJJJS6dMnSUsUCxHKBYkprPTNSemakpssRggsRgkpY
+ qJUioEpKRvVK4q48qpaJQkmLnvcUmOU3sSaxVy2oFPWUQhQYIUiUGxFC8Ku8Kw8qu8os4CIqMpyVFBNM
+ gUVqEApgwiqmwxHaVUD0RtiTHIN1pRAqjbEZr0muWbwqlrVYc9VbXpKa7mJ2tUXPTtckhOAkQmDkxcky
+ RXUgUHcpgpNgBmSq73IxQHhK1Uhc9MLCk5qZrEVU2GWFW63KpWxW62pMcg2WFFBQmhEAQtryZgqQUQEQ
+ BOBWFUKLlIoT3KRCC0qhaVbtcqdglJDUeVFpRXMlJtSSk9JWlQVnVthXKnwkh02FSKqstRQ+UlMioFT5
+ SIRUgIUCxWS1NtSS1xWpbEaFElJSIiEJ5RXuVV7kUsXOQi5M5yHKSKTAozCq7VZrakhsMKssQa2K0xiK
+ 0smhTTgJEJLVkpTEppQWspTqAKkCkhdMnSRQskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J
+ 2pnJ2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSS
+ lJJJJKXSKSRSUhsVV6tWKq9JTAI1aCEatJTZapqDVNJS6SSSSlkkkklLJJJJKUkEk6Sl0kyYlJDIlQJT
+ FyG5ySmZco70IvQy9JTZ3peoqhsS9RJTc9RPvVL1U/qpKbm9Leqfqp/VSS3N6XqKn6qXqpKbvqJ/UVH1
+ UvWSU3vUS3ql6qf1UlNzem3qp6qb1UlNzem3qp6qb1UFNzelvVP1UvVSU3N6W9U/VS9VJTc3p96peqn9
+ VJTc3p96peql6qCm7vS3qn6qb1UlNzem3qn6qXqoqbm9Leqfqpeqkpub0t6p+ql6qSm5vS3qn6qXqpKb
+ m9Leqfqpeqkpub0t6p+ql6qSm5vS3qn6qXqpKbm9Leqfqpeqkpub0t6p+ql6qSm5vS3qn6qXqpKbm9Le
+ qfqpeqkpub0t6p+ql6qSm5vS3qn6qXqpKbm9Leqfqpeqkpub0t6p+ql6qSm5vS3qn6qb1UlN3elvVL1U
+ vVQXN31EvUVL1UvVRQ3d6XqKl6qXqo2pu70t6peql6qNqbvqJeoqXqpeqlam76iXqKl6qXqpWpu+olvV
+ L1UvVStTd3pb1S9VL1ULU3d6W9UvVS9VBDd3pb1S9VL1UFN3elvVL1UvVSU3d6W9UvVS9VJTd3peoqXq
+ peqkpu70vUVL1UvVStTd9RLeqXqpeqjam76iXqKl6qXqpWpu70vUVL1UvVRBU3d6W9UvVS9VPBU3N6W9
+ U/VS9VFTd3pb1S9VL1VDJTd3pb1S9VL1VGpu70t6peql6qlCm7vS3ql6qXqp9qbu9LeqXqpeqjam7vS3
+ ql6qXqpWpu70t6peql6qjJU3d6W9UvVS9VAFTc3pb1T9VL1VKCpub0t6p+ql6qcVNzen3ql6qXqqIlTd
+ 3pb1S9VL1UAVNzelvVP1UvVUgU3N6W9U/VS9VEqbu9LeqXqpeqoJFTd3pb1S9VL1UAVN3elvVL1UvVTg
+ VN31Et6peql6qcCpu70t6peql6qdam7vS3ql6qXqoEqbvqJb1S9VL1VEVN3el6ipeql6qQU3fUS9RUvV
+ S9VPCm7vS3ql6qXqp4Km7vTb1T9VL1U5Td3pb1S9VL1UCVN3elvVL1UvVURKm7vS9RUvVS9VJTd3pb1S
+ 9VL1UaU3d6W9UvVS9VGlNzen3ql6qXqo0pub0t6p+ql6qaQpub0t6p+ql6qZSm7vS3ql6qXqo0pu70t6
+ peql6qeFN3elvVL1UvVUgCm5vS3qn6qXqp9Kbu9LeqXqpeqmSCm7vS3ql6qXqqEhTd3pb1S9VL1VGQpu
+ 70vUVL1UvVTKU3d6W9UvVS9VTwCm7vS3ql6qXqqdTd3p96peql6qYVN3elvVL1UvVQU3d6W9UvVS9VJT
+ d3pb1S9VL1UlN3elvVL1UvVQU3fUS9RUvVS9VBTd3pb1S9ZL1klN3elvVL1UvVSU3d6W9UvVS9VJTd3p
+ b1S9VL1UlN3elvVL1kvVSU3d6W9UvVS9VJTd3peoqXqpeqkpu70t6peql6qKm7vS3ql6qXrJKbu9LeqX
+ rJeskpub0t6peql6qjKW7vS3ql6qXqpKbvqJeoqXqpeqnIbu9L1FS9VL1UbU3d6XqKl6qXqo2pveol6i
+ peql6qNqbu9LeqXqpeqjaG7vS3ql6qXqpWpu70t6p+ql6qFqbm9Leqfqpeqlam5vS3qn6qXqoWpub0t6
+ p+ql6qVpbm9Leqfqpeqlam5vS3qn6qXqo2lub0t6p+ql6qVqbm9LeqfqpeqgShub0t6p+ql6qZxIbm9L
+ eqfqpeqlxKbm9LeqfqpeqncSm5vS3qn6qXqo8SW5vS3qn6qXqpcSm5vS3qn6qXqpcSW5vS3qn6qXqpcS
+ m5vS3qn6qXqocSm5vS3qn6qXqocSm5vS3qn6qXqpcSm5vS3qn6qXqocSG5vS3qn6qXqo8Sm5vS3qn6qX
+ qo8Sm5vS3qn6qXqo8SG5vS3qn6qXqo8Sm5vTb1T9VL1U0lLc3pb1S9VL1UxTd3pb1S9VL1VKCpu+olvV
+ P1U3qp1qbu9LeqXqpeqlam7vS3ql6qXqpEqbu9LeqXqpeqoipu70t6peql6qYpu70t6peql6qSm7vS3q
+ l6qXqohTd3peoqXqpeqpAVN31Et6peql6qfam7vS9RUvVS9VK1N3elvVL1UvVSJU3d6W9UvVS9VRFTd3
+ pb1S9VL1UApu7029U/VS9VTAobm9LeqfqpeqiSpu70t6peql6qiJU3N6f1FS9VL1ULU3d6beqfqpeqla
+ m76iW9UvVS9VEFTd3pb1S9VL1VICpub0+9UvVS9VG0t3elvVL1UvVStTd3pb1S9VL1U0lLd3pt6p+ql6
+ qiKm5vT71S9VL1UlN3elvVL1UvVSU3d6W9UvVS9VOBU3d6W9UvVS9VSAqbu9LeqXqpeqgShu70t6peql
+ 6qbxIbu9LeqXqpeqlxKbu9LeqXqpeqlxKbu9L1FS9VL1UuJTd9RL1FS9VL1UuJTd9RLeqXqpeqlxKbu9
+ LeqXqpeqlxJbu9LeqXqpeqlxKbu9LeqXqpeqlxKbu9LeqXqpeqlxJbu9LeqXqpeqlxKbu9LeqXqpeqhx
+ Kbu9LeqXqpeqlxKbu9LeqXqpeqlxKbu9LeqXqpeqlxKbu9LeqXqpeqlxJbu9LeqXqpeqhxKbu9LeqXqp
+ eqjxIbu9LeqXqpeqlxKbu9LeqXqpeqlxKbu9LeqXqpeqlxKbu9LeqXqpeqlxKbvqJeoqXqpeqlxKbu9L
+ eqXqpeqjxKbu9LeqXqpeqlxIbu9LeqXqpeqlxKbu9LeqXqpeqhxKbu9LeqXqpeqlxKbu9LeqXqpeqlxK
+ bu9LeqXqpeqlxKbu9LeqXqpeqlxKbu9LeqXqpeqngqbu9LeqXqpeqgSpu70vUVL1UvVURU3d6W9UvVS9
+ VBTd9RL1FS9VL1UlN3el6ipeql6qcFN3elvVL1UvVUoKm7vS3ql6qXqo2pu70t6peql6qVqbu9LeqXqp
+ eqgSpu7029U/VS9VRFTd9RLeqXqpeqgpu+ol6ipeql6qSm7vS3ql6qXqp4U3d6W9UvVS9VSAqbu9LeqX
+ qpeqgSpu70vUVL1UvVTbQ3d6W9UvVS9VK1N3el6ipeql6qVpbu9LeqXqpeqham7vS3ql6qXqpWpu70vU
+ VL1UvVSU3d6W9UvVS9VJLd3p96peqn9VJTc3pb1T9VL1UrU3N6W9U/VS9VG0NzelvVP1UvVStTc3pb1T
+ 9VL1UrU3N6W9U/VS9VG1Nzen3ql6qXqpWhu70t6peql6qSm7vTb1T9VL1ULU3N6W9U/VS9VDiS3d6beq
+ fqpeqlxKbm9LeqfqpeqncSm5vS3qn6qXqpcSm5vS3qn6qXqpcSW5vS3qn6qXqpcSm5vS3qn6qXqpcSm5
+ vS3qn6qb1kOJTd3pb1S9ZL1kuJTd3pb1S9VL1UuJTd3pb1S9VL1UuJTd3pb1S9VL1UuJDd3pb1S9VL1U
+ eJTd3pb1S9VL1UuJDd3pb1S9ZL1UbU3d6W9U/VS9VBTc3pb1T9ZL1UKS3N6W9U/VS9VClNzelvVP1UvV
+ SpTc3pb1T9VL1UqU3N6W9U/VS9VKlNzelvVP1UvVSpTc3pb1T9VL1UaU3N6feqXqpeqipu7029U/VS9V
+ FTc3pb1T9VL1UqU3N6W9U/VS9VClNzelvVP1UvVSpTd3pt6p+ql6qbSm5vT71S9VL1UKU3N6W9U/VS9V
+ JTb3pb1T9VL1UUtzelvVP1UvVSU3N6W9U/VS9VJTc3pb1T9VL1UlNzelvVP1UvVSU3N6W9U/VS9VJTc3
+ pb1T9VL1UlNzelvVP1UvVSU3N6W9U/VS9VJTc3pb1T9VL1UlNzelvVP1UvVSU3N6W9U/VS9VJTc3pb1T
+ 9VL1UlNzelvVP1UvVSU3N6W9U/VS9VJTc3pb1T9VL1UrQ3N6W9U/VS9VESU3N6W9U/VS9VOElNven3qn
+ 6qXqo2pub0t6p+ql6qHEpub0t6p+ql6qBkpub0t6p+ql6qbxKbm9LeqfqpeqlxKbm9LeqfqpeqniSm5v
+ S3qn6qXqo2pub0t6p+ql6qHEpub0+9UvVS9VNMlN3em3qn6qXqphkpub0+9UvVS9VISU3d6W9UvVS9VS
+ CSm5vT71S9VL1UeJTd3pb1T9VL1U3iU3N6W9U/VS9VLiU3N6W9U/VS9VHiU3N6W9U/VS9VHiU3N6W9U/
+ VS9VLiU3N6W9U/VS9VLiU3N6W9U/VS9VLiU3N6W9U/VS9VDiU3N6W9U/VS9VN4lNzelvVP1UvVS4lNze
+ lvVP1UvVQ4lNzelvVP1UvVR4lNzelvVP1UvVR4lNzelvVP1UvVR4lNzelvVP1UvVR4lNzelvVP1UvVQM
+ lNzelvVL1UvVTeJDd3pb1S9VL1UeJTd3pb1S9VL1UeJLd3pb1S9VL1UuJTd3pb1S9VL1UuJTd3pt6p+q
+ l6qXEpub0t6p+ql6qHEpu70t6p+qn9VDiU296W9VPVS9VLiU296feqfqpeqlxJbm9LeqfqpeqhxKbm9N
+ vVT1UvVR4lNven3qn6qXqo8Sm5vS3qn6qXqo8Sm5vTb1U9VL1UuJTb3pb1TNqb1UDJTd3pb1S9VL1U3i
+ U3d6beqfqpeqjxKbm9PvVL1UvVS4kN3elvVL1UvVR4lN3em3qn6qXqpcSm5vS3qn6qXqpcSG5vS3qn6q
+ XqpcSm56iXqKl6qXqpcSm76iXqKl6qXqo8Sm76iXqKl6qXqpcSm76iXqKl6yXrJcSW76iXqKl6yXrJcS
+ m76iXqKl6yXqocSW76iXqKl6qXqpcSm76iXqKl6qXqpcSm76iXqKl6qXqoIbvqJeoqXqpeqkhu+ol6ip
+ eql6qSm76iXqKl6qXqpKbvqJeoqXqpeqkpu+ol6ipeql6qSm76iXqKl6qXqpKbvqJeoqXqpeqkpu+ol6
+ ipeql6qSm76iXqKl6qXqpKbvqJeoqXqpeqkpu+ol6ipeql6qSm76iXqKl6qXqpKbvqJeoqXqpeqkpu+o
+ l6ipeql6qSm76iW9UvVT+qlam3vS3qp6qXqpcSW3vS3qp6qXqo8Sm5vS3qn6qXqpcSm5vTb1U9VL1UuJ
+ Tb3pb1U9VL1UuJTb3pb1U9VL1EuJTb3pb1U9RL1EuJTc3pb1T9VL1UuJTd3pb1S9VL1UuJTd3pb1S9VL
+ 1UuJTd3pb1S9VL1UOJTd3pb1S9VL1UuJTd3pb1S9VL1UuJTd3pb1S9VL1UuJTd3pb1S9VL1UuJTc3pb1
+ T9VP6qcCht70t6qeql6qNqbe9Leqnqpeqham3vS3qp6qXqoWpt70t6qeql6qCm3vS3qp6qXqpKbe9Leq
+ nqpeqkpt70t6qeql6qKm3vT71S9VL1UbU3d6W9UvVS9VK1N3elvVL1UvVRtTd3pb1S9VL1UrS3d6W9Uv
+ VS9VC0N3elvVL1UvVStTd3pb1S9VL1ULU3d6W9UvVS9VJTd3pb1S9VL1kKS3d6W9UvVS9ZKlN3elvVL1
+ UvVSpTd3pb1S9VL1UqU3d6W9UvVS9VKlN3elvVL1UvVSpTd3pb1S9VL1UqU3d6W9UvVS9VKlN3elvVP1
+ UvVSpTc3pb1S9VL1UqU3d6beqfqpeqlSm5vS3qn6qXqo0pub0t6p+ql6qVKbu9LeqXqpeqlSm7vS3ql6
+ qXqpUpu70t6peql6qVKbvqJvUVL1UvVSU3fUS9RUvVS9VJTd9RL1FS9VL1UlN71EvUVL1UvVSU3fUS9R
+ UvVS9VJTd9RL1FS9VL1UlNz1EvUVL1UvVSU3d6feqQtUvVSU2y9RNiqm1QNqSm76icPVEWojbElNzcmc
+ 5VxYkbElKsKrkqT3oDnpKTsKsses8WIrbUlOgHqW9URapi1JTb3J9yqixSFiSmxKUoYcpgpKXSSSSUpM
+ nSSUsknTJKUknTJKUkkkkpSSSSSlk6SSSlJ0kklKSSSSUpOmTpKWKBYjlAsSU1Xpmp3qLUlNliMEBiME
+ lKKGSplDKSmDiq70dyr2FApCBwUQme9Q3qEhsRKYFMXIYckShTYjJi8qu8ozigOSpnEmBKcKMKbQlSeJ
+ kAkVIBIhKlcSOVNpTbVNrUqWSklYUdpQmNVhrUqaxLBxVW0q49qqWtSpFtQnVEYm26o9bEaRbJoTEKy2
+ tJ1aVMkC1IRGhT2KQalTZEmBCC9WXBVrEqRxISpsCEVNhSpPE2mBWWBVWFWGFKmOUmy0IgCEwqw1KmuS
+ uGp+E8ob3QiAttZ74VWyxK2xU32J6GbnyoRKgDKPW2UkWxFUqQpVtlakWJKtolsKO+FYtaqb0lNllqt1
+ vlZbCrtTkUW6DSpyq7Xqe9JSVMVAOTOcklZzoVd9qa2yFRsuSS2XWShEyq4tlGYZSSsWSkKirTGAozaw
+ ihqsqVqutFawKYEJIZMbCO1BBhSDklhTymJQtyeUkLkpkgpAJLSsApgKQapQkhHCZEIUCihZJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//U69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKUkkkk
+ pZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjVoIRq0lNlqmoNU0lLp
+ JJJKWSSSSUsknTJKXSSSSUsVEqaiQkhG4oTijOCC4JKQuKESjOCC4JKYFyjuUiFGElK3Jbk0JQkplvS3
+ qMJQklfelvUYShJS+9Lem2ptqSme9PvUITwkplvS3qMJQkplvS3qMJQgplvS3qO1KElMt6W9RhKElMt6
+ W9RhKElMt6W9RhKElMt6W9RhKElMt6bemhLakpfelvTbUtqSl96W9NtS2pKX3pb021LakpfelvTbUtqS
+ l96W9NtS2pKX3pb021LakpfelvTbUtqSl96W9NtS2pKX3pb021LakpfelvTbUtqSl96W9NtS2pKX3pb0
+ 21LakpfelvTbUtqSl96W9NtS2pKX3pb021NtQUy3pb1HaltQSy3pb1HaltSUy3pb1HaltRUy3pb1Halt
+ RUy3pb1HaltSUy3pb1HaltSUy3pb1HaltSQy3pb1HaltSUy3pb1HaltQUy3pb1HaltQUy3pb1HaltSUy
+ 3pb1HaltSUy3pb1HaltSUy3pb1HaltSUy3pb1HaltRUy3pb1HaltSUy3pb1HaltSUy3pb1HaltTwplvS
+ 3qO1LanFTLelvUdqW1QyUy3pb1HaltUamW9Leo7UtqkCmW9Leo7UtqkUy3pb1HaltSUy3pb1HaltSKmW
+ 9Leo7UtqjKmW9Leo7UtqAUy3pb1HaltU0VMt6W9R2pbUSplvS3qO1LaoyplvS3qO1LamhTLelvTbUtql
+ Cl96W9NtS2olS+9Lem2pbVBJS+9Lem2pbU0KX3pb021LanKX3pb021LanBS+9Lem2pbUVL70t6bam2pF
+ TLelvUdqW1RlTLelvUdqW1IKZb0t6jtS2p4Uy3pb1HaltTwplvS3qO1LanBTLelvUdqW1NKmW9Leo7Ut
+ qiKmW9Leo7UtqIUy3pb1HaltTwplvS3qO1LanKZb0t6jtS2pKZb0t6jtS2oFTLelvUdqW1MUy3pb1Hal
+ tRUy3pb1HaltTgplvS3qO1LapYqZb0t6jtS2p6mW9Leo7UtqZJTLelvUdqW1QlTLelvUdqW1RlTLelvU
+ dqW1MUy3pb1HaltU8FMt6W9R2pbVMplvS3qO1LaoyplvS3qO1LamqZb0t6jtS2oKZb0t6jtS2pKZb0t6
+ jtS2pKZb0t6jtS2pKZb0t6jtS2oKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS
+ 2oqZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb029NtS2phSvvS3ptqW1BS+9Lem2pbU5
+ C+9PvUdqW1JTLelvUdqW1OUy3pb1HaltSUy3pb1GEoRQy3pb1GEoSUz3pb1GEoQUy3pb1GEoSUy3pb1G
+ EoSUy3pb1GEoSSy3pb1GEoSUy3pb1GEoSSy3pb1GEoSUy3pb1GEoTShlvT71CEoUSGW9LeowlCIUy3pb
+ 1GEoRUy3pb1GEoRSy3pb1GEoRSy3pb1GEoQUy3pb1GEoSUy3pb1GEoQKmW9LeowlCCmW9LeowlCSmW9L
+ eowlCSGW9LeowlCSmW9LeowlCKmW9LeowlCKGW9LeowlCKmW9NvTQm2pJZb0t6jtS2oKZb0t6jtS2qQK
+ Zb0t6jtS2p6mW9Leo7UtqCmW9Leo7UtqRUy3pb1HaltUZUy3pb1HaltTVMt6W9R2pbUlMt6W9R2pbUgp
+ lvS3qO1LapAplvS3qO1LanKZb0t6jtS2pKZb0t6jtS2pFTLelvUdqW1RlTLelvUdqW1AKZb0t6jtT7VM
+ FL70t6baltSKl96W9NtS2qMqX3pb021LagpfelvTbUtqSl96W9NtS2ohS+9Lem2pbVIFL70t6baltSUv
+ vS3qO1LakplvS3qO1LagVMt6W9R2pbVEVMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUQplvS3qO1LapQpl
+ vS3qO1LamlTLelvUdqW1RKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0
+ t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb029NtS2pKX3pb021Lakpfen3qO1LakplvS3qO1LakplvS3qO
+ 1LakplvS3qO1LakpfelvTbUtqCV96W9NtS2pKX3pb021LakpfelvTbUtqSl96W9NtS2pKX3pb021Laip
+ felvTbUtqSl96W9NtS2pIX3p96jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t
+ 6jtS2pKZb0t6jtS2oKZb0t6jtS2ohTLelvUdqW1ShTLelvUdqW1IqZb0t6jtS2qIqZb0t6jtS2oKZb0t
+ 6jtS2pKZb0t6jtS2pwUy3pb1HaltUgUy3pb1HaltRUy3pb021LakpfelvTbUtqBUvvS3ptqW1RFS+9Le
+ m2pbUlL70t6baltSUvvS3ptqW1OCl96W9NtS2qVS+9Lem2ptqaVMt6W9R2pQmoZb029NtS2pKZb0t6jC
+ UJJZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jtS2pKZb0+9Q2p4SUy3pb1GEoSUy3pb1GEoSUy3
+ pb1GEoSUy3pb1GEoRUy3pb1GEoSUy3pb1GEoRQy3pb1GEoSUy3pb1GEoTCplvS3qMJQmJZb0t6jCUIqZ
+ b0t6jCUIqZb0t6jCUJKZb0t6jCUIqZb0t6jCUIJZb0t6jCUJKX3pb1GEtqSGW9Leo7UtqCmW9Leo7Utq
+ SmW9Leo7UtqSmW9Leo7UtqSGW9Leo7UtqKmW9Leo7UtqSmW9Leo7UtqcFM96W9RhKFIFMt6W9RhKEkst
+ 6W9RhKElMt6W9RhKEFMt6W9RhKElMt6W9RhKElMt6W9RhKElMt6W9RhKEVMt6W9RhKElMt6W9RhKEVMt
+ 6W9RhKElMt6W9RhKElMt6W9RhKEFMt6W9RhKEFMt6W9RhKEFMt6W9RhKEFMt6W9R2pbUlMt6W9R2pbUl
+ Mt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6
+ W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUlMt6W9R2pbUwqZb0t6
+ aEtqapfelvTbUtqkCl96W9NCW1OUvvS3ptqW1NKl96W9NtS2ppUvvS3ptqUJql96W9NtTQkFMt6bemhL
+ apApfelvUYTwnKZb0t6jtS2ppUy3pb1HaltTCplvS3qMJbUwqZb0t6jCW1IKZb029NtS2qUKX3p96jtS
+ hJTLelvUYShBTLelvUYShBTLelvUYShFTLelvUYShFTLelvUYShFTLelvUYShJTLelvUYShBTLelvUYS
+ hBTLelvUYShBTLelvUYShBTLelvUYShBTLelvUYShFTLelvUYShFTLelvUYShFTLelvUYShFTLelvUYS
+ hAoZb0t6jCW1BTLelvUdqW1JTLelvUdqW1FTLelvUdqUJKZb0t6jtS2opZb0t6jtS2oKZb0t6jtShJTL
+ el6ihCaEFJPUS9RDhKElJPUS9RDhKEFJPUS9RDhKElJPUS9RDhKElJfUTeohwlCKknqJeohwlCKknqJe
+ ohJ4SUk3pt6jCW1BLLelvTbUtqCl96W9NtS2oqX3pb021LakhfelvTbUtqSl96W9NtS2pKX3pb021Lak
+ hfelvTbUtqSlb0t6baltRUvvS3ptqW1JS+9Lem2pbUlL70t6baltSSvvS3ptqW1JS+9Lem2pbUEr70t6
+ baltSUvvS3ptqW1FS+9Lem2pbU4LV96W9NtS2oqX3pb021LakpfelvTbUtqSl96W9NtS2pKX3pb021La
+ kpfelvTbUtqSl96W9NtS2pKX3pb021LakpfelvTbUtqSl96W9NtS2pKX3pb021LakpfelvTbUtqSl96W
+ 9NtS2pKX3pb021LakplvS3qO1KE0qZ70t6hCUJiWe9LeoQlCKme9LeoQlCSme9LeoQlCSme9LeoQlCSm
+ e9LeoQlCSme9LeoQlCSme9NvUYShJTPelvUdqW1JTLelvUYS2pKZb0t6jtS2pKZb0t6jtS2pKZb0t6jt
+ S2pKZb0t6jtS2pKZb0t6jtShJTLelvUYTQnhDPelvUIShOUz3pb1CEoQUz3pb1CEoQUz3pb1CEoSUz3p
+ b1CEoSUz3pb1CEoSUz3pb1CEoSUz3pt6jCfaiplvS3qO1Lakpfen3qO1LaiplvTb021KElL70+9R2pbU
+ FMt6W9R2pbUlMt6W9RhLakplvTb00JbUlL70t6baltTkr70t6baltRUvvS3ptqW1JS+9Lem2pbUFL70t
+ 6baltSUvvS3ptqW1JS+9Lem2pbUlL70+9R2pbUlMt6W9RhKElL70t6jCUJKZb0t6jCUJKZb0t6jCUJKZ
+ b0t6jCUIqZb0t6jtS2pKZb0+9QhPCSmW9NvTQmhBTLem3ptqW1BS+9Lem2pbUlL70+9R2pbUlMt6W9R2
+ p9qSmW9Leo7UtqSl96W9NtS2pKVvS3ptqbakpIHqW9ChPCSmRsQzYkQoEJKSB6I16rgIjQkpsh6cvQwE
+ 5CSmD3oLnqb1XckpmHqbXoARGhJScPUw9AAUwElJw9Ea9VgitSU22OR2lVmI7UlJQkmCSSl0kkklKSTp
+ klLJJ0ySlJJJklLpJk6SlJJJ0lKSSSSUpJJJJSk6ZOkpYoFiOUCxJTVeotUnqLUlNhiMEFiMElLFQKmV
+ ApKRPVO0q49U7QgUhpvcoAqTwotCiLNFI0KRCkwKRCTPFruUC2UYtTtYkzBr+mn2QrYrUXVoqtrhOApF
+ iQCCVBqmGpwpSkskyajtVcFGYUWuWTgqtgVsqvYkhq7dVYqCF3RqykhtNCZwTtKTikyRQkJwEikCk2As
+ 4KtYxWiUJySmma1NlaNtCm0BJTFrEUCE4ATpMUmbCjh6rAqW5JgKc2KvZaoPeq73IhSrLJQDqpcojGSn
+ KYsardQUWVozWwkhOxTIQ2qYKSkFjJVOytaThKA+tJTnxCKx8J7GQgnRJDdZYjB0qgxytVlJLYBUXuSl
+ DeUktW96z7Xq7aJVOyspJRNerVVqq7CFNshJTp13Kw28LIDyEQWlFDri5SFqzG2lHY8lJDfD5UwZVasy
+ rLAkgswFMBO0IgCS0sQFIBJKUlrMFPKFuS3JIZEqJTSkihSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9
+ WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJ
+ JJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUjCPWgBHrSU2Wqag1TSUukkkkpZJJJJSkydJJSkkkklLpiE
+ 6SSmBCE5qOVAhJDWc1DLFaIUC1JTVLE2xWSxLYkpq7E+xWdiWxJTW9NN6at7EtiSWp6aXpq36af00lNP
+ 0k/pK56af00lNL0kvTVz00vTSU0/TS9NXPTS9NJTT9NL01c9NP6aCml6af01c9NL00lNP00vTVz00vTS
+ S0vTS9NXfTS9NJTS9NL01c9NL00lNP00vTVz00vTSU0/TT+mrfppemihqeml6at+ml6aVKanppemrfpp
+ emlSmp6aXpq36aXppUpqeml6at+ml6aVKanppemrfppemlSmp6aXpq36aXppUpqeml6at+ml6aVKanpp
+ emrfppemlSmp6aXpq36aXppUpqeml6at+ml6aVKanppemrfppemlSmp6aXpq36aXppUpqeml6at+ml6a
+ VKanppemrfppemjSmn6aXpq56aXpoFTT9NL01c9NL00xVtP00vTVz00vTSVbT9JL01c9NL00VNP00vTV
+ z00vTSU0/TS9NXPTS9NJVtP00vTVz00vTSU0/TS9NXPTS9NJTT9NL0lc9NL00lNP0kvTVz00vTQU0/TS
+ 9NXPTS9NJTT9NL01c9NL00lNP00vTVz00vTSU0/TS9NXPTS9NJTT9NL01c9NL00lNP00vTVz00vTSU0/
+ SS9NXPTS9NJTT9JL01c9NL00rQ0/TS9NXPTS9NPBU0/TS9JXPTS9NOtTT9NL01c9NP6aiKml6aXpq76a
+ Xppiml6aXpK76ab008KafpJemrnppemnWpp+ml6aueml6aNqafppemrnppemlamn6aXpq56af00wqaXp
+ JemrvppemgFNL00vTVz00/pqQFTS9NL01c9NL004lTT9NL01d9NL01GVNL00vTV300vTQCml6SXpq56a
+ XpqQFTT9NP6at+ml6aJU1PTS9NXPTS9NQlTT9NL01c9NL001TT9NL01c9NL005TS9NP6at+ml6aKmn6a
+ f01b9NP6acpp+mm9NXfTTemgVNP00vTVz00vTTSpp+ml6aueml6aSmn6aXpq56aXppymn6aXpq56aXpp
+ wU0/TS9JXPTS9NOtTT9NL01c9NL000lTT9JL0lc9NL01EVNP0kvTVz00vTRCmn6aXpq56af01IEtL00v
+ TV3003poqafppemrnppemipp+ml6aueml6aaVNP00vTV300vTTVNL00vTV3003ppKafppemrvppemnBT
+ S9JL01c9NL01ICpp+ml6aueml6afamn6aXpq56aXpphKmn6aXpq56aXpqIqafppemrnppemmFTT9NL01
+ c9NL001TT9NL01c9NL01LFTT9NL01c9NL01Lamn6SXpK56af000qaXpJekrvppemhSGl6SXpK76aXppU
+ ppekl6Su+ml6aVKaXpJ/SVz00vTQpTT9JL0lc9NL00lNL0kvSV300vTSpTS9JL0ld9NL00qU0vSS9JXf
+ TS9NKlNL0kvSV300vTSpTS9JL0ld9NL00qU0vSS9JXfTS9NKlNL00/pq56aXpo0pp+ml6aueml6aVKaX
+ pJekrvppemlSml6SXpq76aXppEKaXpJemrnppemoyuafppekrnppemgpp+ml6aueml6aSmn6aXpq56aX
+ pooafppemrnppemipp+ml6aueml6aSmn6aXpq56aXpo2hp+ml6aueml6aVqafppemrnppemkpp+ml6au
+ eml6aSmn6aXpq56aXpoKafppemrnppemklp+ml6aueml6aSmn6aXpq56aXppJafppemrnppemkpp+ml6
+ aueml6aSGn6aXpq56aXpocKGn6aXpq56aXpo8Kmn6aXpq56aXpo8Kmn6aXpq56aXpo0lp+ml6aueml6a
+ VKafppemrnppemlSWn6aXpq56aXppUpp+ml6aueml6aFKafppemrnppemhSmn6aXpq56aXpoUpp+ml6a
+ ueml6aVIafppemrnppemjSmn6aXpq56aXpo8Kmn6aXpq56aXpo0hp+ml6aueml6aNKafppemrnppemoy
+ lp+kl6aueml6aapp+ml6aueml6aeFNP00vTVz00vTTrU0/TS9NXPTS9NJTT9NL01c9NL00rU0/TS9NXP
+ TS9NMKmn6SXpq56aXppqmn6SXpK56aXppKafpJemrnppemkpp+ml6aueml6aeFNP00vTVz00vTTrU0/T
+ S9NXPTS9NK1NP00vTVz00vTQU0/TS9NXPTS9NMKmn6aXpq56aXppBTT9NP6St+mn9NSAqafpJemrnppv
+ TSJU1PTS9NXPTTemmFTU9NL01b9NL00FNT00vTVv00vTSU0/TS9NXPTS9NEKanppemrfppemn2pqemm9
+ NXPTS9NG1NP00vTVz00vTStTT9NL01c9NL000lTT9NL01c9NL00xTT9NL01c9NL00lNP00vTVz00vTSU
+ 0/TS9JXPTS9NEKafppemrvppvTTwVNP00vSVz00vTSU0/TS9NXPTS9NClNP00vSVz00vTSpTT9JL0lc9
+ NL00qU0/SS9JXPTS9NKlNP0kvSVz00vTSpTT9JL01c9NL00qU0/TS9NXPTS9NKlNP00vTVz00vTSpTT9
+ NL01c9NL00qU0/TS9NXPTS9NKlNP00vTVz00vTSpTT9NL0lc9NL00qU0/SS9JXPTS9NKlNP0kvSVz00v
+ TSpTT9JL0lc9NL00qU0/SS9JXPTS9NLhU0/TS9NXPTS9NLhU0/TS9NXPTS9NLhU0/TS9NXPTS9NKlNP0
+ 0vTVz00vTSpTT9NL01c9NL00qU0/TS9NXPTS9NKlNP00vTVz00vTSpTT9JL0lc9NL00qU0/TS9JXPTS9
+ NKlNP0kvTVz00/ppUppeml6au+ml6aVKaXppemrvppemlSml6aXpq76aXppUppeml6au+ml6aVKaXpJe
+ mrvppemlSml6aXpq56aXpoqafppemrnppemgVNP00vTVz00vTTCpp+ml6aueml6aCmn6aXpq56aXppKa
+ fppemrnppemiFNP00vSVz00vTTwVNP00vTVz00vTRtTT9NP6aueml6aVqafppemrnppemgVNL00/pq56
+ aXpqNTT9NL01c9NL00lNP00vTVz00vTSU0vTT+mrnppemnBTT9NL01c9NL00+1NL00vTVz00vTQJQ0/S
+ S9JXPTS9NNU0/SS9NXPTS9NJTT9JL0lc9NL00VNP00vTVz00vTSU0/TS9NXPTS9NJLT9NL01c9NL00lN
+ P00vTVz00vTSU0/TS9NXPTS9NJTT9NL01c9NL00lNP00vTVz00vTSU0/TS9NXPTS9NJTT9NL01c9NL00
+ UNP00vTVz00vTSU0/TS9NXPTS9NJTT9NL01c9NL00LU0/TS9NXPTS9NGlNP00vTVz00vTS4UtP00vTVz
+ 00vTRpTT9NL01c9NL00qU0/TS9NXPTS9NKlNP00vTVz00vTSpTT9NL01c9NL00qS0/TS9NXPTS9NKlNP
+ 00vSVz00vTQpDT9JL0lc9NL00qU0/SS9JXPTS9NKkNP0kvSVz00vTSpTT9JL0lc9NL00qQ0/SS9JXPTS
+ 9NGlNP0kvSVz00vTSpTT9JL01c9NL00qU0/TS9NXPTS9NFLT9NL01c9NL00ktP00vTVz00vTSU0/TS9N
+ XPTS9NJTT9NL01c9NL00lNP00vTVz00vTSU0/TS9NXPTS9NJTT9NL01c9NL00lNP00vTVz00vTSU0/TS
+ 9NXPTS9NJTT9NL01c9NL00lNP00vTVz00vTSU0/TS9NXPTS9NJTT9NL01c9NL00lNP00vTVz00vTQU0/
+ TS9NXPTS9NJTT9NL01c9NL00qU0/TS9NXPTS9NKlNP00vTVz00vTSpTT9NL01c9NL00qU0/TS9NXPTS9
+ NKlNP00vTVz00vTSpTT9NL01c9NL00qU0/TS9NXPTS9NKlNP00vTVz00vTSpTT9NL01c9NL00qU0/TS9
+ NXPTS9NKlNP00vTVz00vTSpTT9NL01c9NL00qU0/TS9NXPTS9NKlNP00vTVz00vTSU1PTS9NW/TT+mgQ
+ pp+ml6aueml6aFKafppemrnppempAFNP00vTVz00vTTqU0/TS9NXPTS9NNIU0/TS9NXPTS9NMIU0/TS9
+ NXPTS9NNpTT9NL01c9NL00gFNP003pq56aXpqQBTT9NL01c9NL006lNP00vTVz00vTQpTT9NL01c9NL0
+ 00hTT9NL01c9NL00whTT9NL01c9NL00gFNP00vTVz00vTUgCmn6aXpq56aXppEKafppemrnppemhSGn6
+ aXpq56aXpoUpp+ml6aueml6aNKafppemrnppemjSmn6aXpq56aXpo0pp+ml6aueml6aXCpp+ml6aueml
+ 6aFKafppemrnppemlSmn6aXpq56aXpptKafppemrnppemhwqafppemrnppemlSmn6aXpq56aXppUpp+m
+ l6aueml6aNKafppemrnppemjSmn6aXpq56aXpo0pp+ml6aueml6aFKafppemrnppemhSmn6aXpq56aXp
+ pUpp+ml6aueml6aNKafppemrnppemlSmn6aXpq56aXppUpp+ml6aueml6aVKafppemrnppemlSmka0xr
+ V7003pJUpo+kl6Svekl6SXCpo+kl6Svekl6SHClo+kl6Svekl6SXCpo+kl6Svekl6SXCpo+kl6Svekl6
+ SVKaPpJekr3pJekjSmj6SXpK96SXpJUppipOKlc9NP6aFJafpJemrnppemlwqafpJekrnppemlSmn6SX
+ pK56aXppUhp+kl6SubEtiVKafpJekrmxLYjSmn6SXpK56aXppUhp+kl6Sueml6aVKafpJekrnppemlSm
+ n6SXpK56aXppUpp+kl6Sueml6aVKafpJekrnppemlSWn6SXpq56aXppUpp+kl6aueml6aVJafppekrnp
+ pemlSmn6SXpK56aXppUpp+kl6auemm9NKlrU9NL0lb9NL00qU1PSS9JW/TS9NKlNT0kvSVv00vTSpTU9
+ JL0lb9NL00qU1PSS9JW/TS9NKlNT0kvSVv00vTSpTU9JL0lb9NL00qU1PSS9JW/TS9NKlNT0kvSVv00v
+ TSpTU9JL0lb9NL00qU1PSS9JW/TS9NKlNT0kvSVv00vTSpTU9JL0lb9NL00qU1PSS9NW/TS9NKlNP0kv
+ TVz00vTSpTS9NL0ld9NL00KS0vTS9NXfTS9NKlNL00vTV300vTSpTS9NL01d9NL00qU0vTS9NXfTS9NK
+ lNL00vTV300vTSpTS9NL01d9NL00qU0vTT+mrnppemlSmn6aXpq56aXppUpp+ml6aueml6aVKafppemr
+ nppemlSmn6aXpq56aXppUpp+ml6aueml6aVKafppemrnppemlSmn6aXpq56aXpo8Kmn6ab01d9NL00EN
+ L00vTV300vTQtTS9NL01d9NL00lNL0kvTV300vTSU0vTS9NXfTS9NJTS9NL01d9NL00lNL00vTV300vT
+ SU0vTS9NXfTS9NJTT9NL01c9NL00lNP00vTVz00vTRU0/TS9NXPTS9NK1NP00vTVz00vTStTT9NL01c9
+ NL00rU0/TS9NXPTS9NC1NP00vTVz00vTSU0/TS9NXPTS9NIKanpJekrnppemnqafpJekrnppemilp+kl
+ 6Sueml6aSmn6SXpK56aXppKafpJekrnppemkpp+kl6Sueml6aSmn6SXpK56aXpoKafpJvTV3003ppKaf
+ ppemrfppemkpqemm9NXPTS9NJTT9NL01c9NN6aSmp6aXpq36aXppKanppemrfpp/TStTT9NL01c2Jemg
+ pqeml6at+ml6aVqanppemrfpp/TSU0/TS9NXPTTemkpp+ml6aueml6aSmn6af01b9NL00lNT00vTVz00
+ vTSU1PTS9NW/TS9NJTU9NN6aueml6aSmn6ab01c9NL00lNP00xrVz003ppKaRrTekr3pJekkpoipTFat
+ +knFaSkArTmtWhWnNaSnNsYqzmLStYqjmJKa7WI7a1NjFZZWkpritP6auekl6aSmqK0VrEYVqYYkpg1q
+ KEg1PCSlwnTJ0lLpJJJKXTJ0ySlJk6ZJSkydMkpSdMnSUpOmTpKUkkkkpSSSSSlJ0ydJSxQLFYKr2JKa
+ r0zU70zUlNhiMEJiMElMShlFKGUlInKtY2VaKE5qSmg+tQDIV1zEMsTKXgomhTiUoUgEqZYyY7FMMUwF
+ OEaZhJgGpFkogCI1qVJ4mm6pBcyFpOYqtrEqVxNMmEwcne1RASpbKSVmqsMCFW1WGhKmuZLFV7CrLgq7
+ 2pUq2sTqjVlQLEVjUqRxNhhTlJjVPalS+Mmu5QJhHc1Ac1KmcSYF6gXpOBQy0pUriZ704sQtpThpSpXE
+ 2BYpByrgFFaEqY5SSgqYCi0IgCNMJkjc1AcxXIUSyUqSC1AxHYxEFam1kJJtdrUQMTtCIAkq0e1JEIUC
+ EkWsmIlJJJVtexirPYr7hKEWJKtqNbCsMT+mpBqSrZgqLhKkAphqSbarqpQnULQ2J/TCSXLOOonHWt6Q
+ S9EJJcj0E4oK1fQCXoBJDnNpR2Vq16QUgyElMa2KywKDQiBJaUgKlKgE6S1clRJShNCSFSnTJ0kLhOmC
+ dFCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//W
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSS
+ UpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVHq1Yqr0lMAj1oAR60
+ lNhqIhtRElLpJJJKWSSSSUpJJJJSkkkklLpJJJKWKipJklMCE0KcJklMITwpQnhJTCE8KUJJKYwnhOnS
+ UxhSASThJSgE8JwkkpjtTQppklMYTwnSQUtCUJ0kVLQlCkkgpjCUKSSKWMJQpJJKYwlCkkkphtShSSSU
+ xhKFJJFC0JoUkkrUxhKFJJK1MYShSSStTGEoUkkrUxhKFJJK1MYShSSStTGEoUkkrUxhKFJJK1MYShSS
+ StTGEoUkkrUxhKFJJK1MYShSSStTGEoUkkrUxhPCdJK1MYShSSQKmMJQpJJtIYwlCkklSmMJQpJJUpjC
+ UKSSVKYwlCkklSmMJQpJJKWhKE6SCloShOkkpaEoTpJUlaE0KSSNKYwlCkklSmMJQpJJUpjCUKSSVKYw
+ lCkklSmMJQpJJUpjCeE6SCFoShOklSloShOknBS0JQnSTlLQlCdJMIUtCUJ0k2lLQlCdJOAUtCUJ0kaU
+ tCUJ0klLbUoTpJKWhKE6SYVLQlCkmQAUtCUJ0lIFLQlCdJOKloShOkoyFLQlCdJIBS0JoUklIFMYShSS
+ SKmMJ4TpKIhS0JQnSQpTGE8J0kVMYShSSRpTGE8J0k5S0JoUkkKUxhKFJJClMYShSSSpTGEoUkkaUxhK
+ FJJOUxhPCdJFS0JoUkkCpaEoTpKIhS0JQnSTgpaEoTpJ6VoShOkkpaEoTpIqWhKE6SBUtCUJ0k1S0JQn
+ SSUtCUJ0k4KWhNCkknBTGEoUkk61MYShSSTSpjCUKSSjKmMJQpJJqmMJQpJIKYwlCkkpIqYwlCkknqYw
+ nhOmSQtCUJ0klLQlCdJBS0JQnSStS0JQnSStS0JQnSQUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJF
+ S0JQnSSUtCUJ0klLQlCdJJS0J4SSStS0J4STpFS0JQnTphC5jCaFJJClMYShSSSpDGEoUkklMYShSSSU
+ xhKFJJFTGEoUkkkMYShSSSUtCUJ0kVLQlCdJJS0JQnSQpS0JQnSSpK0JQnTpKYwlCdOkljCUJ0klLQlC
+ dJJDHalCkkihaEtqdJFS0JbU6SKloTbVJJFK0JQnSRUtCW1STIJWhKE6dJTGEtqdOgpjCUJ0kFMdqfan
+ SQUx2pbVJJJDHanhOkkpbalCkmTlLQlCdJFC21KFJMipaE0KSSikljCUKSSZSmMJQpJJ4UtCUJ0kVLQl
+ CdJJS0JoUkkqUtCaFJJNIUtCUJ0kKUtCUJ0kqUtCaFJJKlMYShSSTwFLQlCdJKlLQlCdJJS0JoUkklMY
+ ShSSTCpjCUKSSQCloShOknhS0JQnSSKloShOkm0paEoTpIUpaEoTpJKYwnhOkiFMYTwnSTlLQlCdJFS0
+ JQnSSUtCUJ0kCFLQlCdJNpS0JQnSQpS0JQnSSpS0JQnSRAUtCUJ0k9C0JQnSRSxhPCdJJS0JQnSStS0J
+ QnSStS0JQnSStS0JQnSStS0JoUkklMYShSSSUxhKFJJJTGEoUkkrUxhKFJJJTGEoUkkkMYShSSSUxhKF
+ JJJLGEoUkkkMYShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJJTGEoUkkl
+ LQlCdJJK0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS0JQnSQUxhKFJJJTGEoUkkCFMYShS
+ STKUxhKFJJKlMYShSSSpTGEoUkkgFMYTwnST6UtCUJ0klLQlCdJJS0JQnSSIUtCUJ0kylLQlCdJKlLQl
+ CdJKlLQlCdJEBS0JQnSTlLQlCdJIoWhNtUkk2kLQmhSSSpTGEoUkkUrQmhSSSpTGEoUkkqUxhPCdJKkr
+ QlCdJKlLQlCdJKlLQlCkklSmMJQpJI0pjCUKSSSmMJQpJJIYwlCkkkpjCUKSSCmMJQnSSpC0JoUkk4JW
+ hKE6dOSxhKFJJJTGEoUkklMYShSTJKWhKE6SSmMJbVJOgphtShTTJKYwlCkmSUtCUJ0klLQlCdJJC0JQ
+ nSSUtCUJ0kkLQlCdJJS0JQnSStC0JQnSStQWhPCdOkvYwlCkkkpjCUKSSSmMJQpJJKYwlCkkgpjCUKSS
+ SmMJQpJJKYwlCkkkpjCUKSSSmMJQpJJKYwlCkkkpjCUKSSSmMJQpJJKYwlCdOkpjCUKSSSmMJoUkkVMY
+ ShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJ
+ JJTGEoUkklMYShSSSUxhKFJJJTGEoUkklMYShSSQUxhPCdJBS0JQnSUgUtCUJ0k5S0JQnSTSpaEoTpJh
+ UtCaFJJBS0JoUkklMYShSSUgUxhKFJJFTGEoUkkFMYShSSTSpjCUKSSYVMYShSSSCmMJQpJKUKYwlCkk
+ kVMYTwnTpqGMJQpJJKYwlCdOiphCeE6SKloShOkipaEoTpJKWhKE6SCmO1LapJIKY7UtqkkgpaEoTpJK
+ WhKE6SapaEoTpIqYwltUkkVMdqUKSSKmMJ4TpIqYwlCkkgpjCUKSSCmMJQpJJKYwlCkkkpjCUKSSSmMJ
+ QpJIqYwlCkkkpjCUKSSSmO1PtTp0lLbUtqkkkpjtS2qUpSkpjtS2qSSSWO1LapJJKY7UtqkkgpjtS2qU
+ pJKY7UtqklKKmG1KE5TIJWhKE6SSloShOkkpaEoTpJIWhKE6SSloShOkkpaEoTpJIWhKE6SSloShOkkp
+ aEoTpJKWhKE6SKloTwkkklUJQkkkpaEoTpJJWhKE6SSloShOkkpaEoTpILVoShOkgpaEoTpJKWhKE6SS
+ loShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJ
+ KWhPCdMipUJQnlNKSVQlCeUpSUtCUJ5SlJS0JQnlKUlLQlCeUpSUtCUJ5SlJS0JQlKUpKWhKFJJJTGEo
+ UkklMYShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJFTGEoUkklMYTwnTSmlCoShPKaU1SoShPKUpKWhK
+ E8pSlSloShPKUpUpaEoTylKVKWhKE8pSlSloShKU8pUpjCUKSSSmMJQpJJKYwlCkkkpjCUKSSSmMJQpJ
+ JKYwlCkkkpjCUKSSSmMJQpJIhS0JQkknBSoShJJFKoShJJBSoShJJJSoShJJJSoShJJJSoShJJJSoTQn
+ TpKYQlCkkkpjCUKSSSmEJQppkFMYShSSSUxhPCkkgpjCUKSSSmMJQpJJWpjCUKSSSmMJQpJIqYwlCkmS
+ UtCUJ06SmMJ4Tp0lMYShSSSUxhKFJMkpjCaFNMkpjCW1STpKYhqlsThOkpgWpbVMpklKDU7gnBTOKSmr
+ aFTcFctKqOSUyrCuVtVStXKykpJtSLVJMUlLBqlCYFOkpYhRIUyolJSydJJJS6SSSSlJJJklLpkkklKT
+ J0klKSSSSUpJJJJSkkkklKSSSSUunCZOkpYoFiOUCxJTWemanemakpsVo4QK0cJKYuQyiOQykpgVAqZU
+ SkpgQoFqLCW1BLXLE0QrJYhuYkyRKMFTCjCm0JMoLNoRQFBqlKSbXKA9sohKaJSVbTdVKiKlf2JvTSWy
+ LWayEUBT2JQkwFgWqDq5RkoSQ1vSU21o+1OAkpg1insUwFKEV8UDmIL61cIQ3NSZgWiakvRVstThqSra
+ noJegroAS2hJNtIUqQqVran2pMci1tkJQrBYoFiTCUYUwE4YphqS4LBqfapQmJSXKTyoSnBQQzlNCQCn
+ CSkZCiURyESkpZLakERrUkI9ifYjbVEhJLANTgJSlKSV04KZOAklmFMIYUpSSzhRKjuTFySlFRlMSkkh
+ mCiNQwEVoSQWYCmGpgpApLSramLVLcmJSWsCFFTJUUFLBSTQnRQpJJJFSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTp
+ KWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUuk
+ kkkpSSSSSlJJJJKUkkkkpdIpJFJSCxVXq1Yqr0lMAj1oAR60lNhqIhtRElLpJJJKWSTpklKSSSSUpJJJ
+ JS6SSdJS0JinTFJSyZJJJSk6ZJJS6dMkkpSSSZJS6eVFKUlMpTyoSnlJTKUlGU6Sl0kySSl0kySSV0ky
+ aUlMpSlRlOipdJMkkpdJMkkpdJMkkpeU0pkkwlC8pSmSQtS8pSmSRtS8pSmSStS8pSmSStS8pSmSStS8
+ pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSQtS8pSmSTgpe
+ UkklJS1SSZJKlLpJJIUlUpJJIKVKUpJIKXSTJJKXTJJIKXlNKSZJS8pSkkipUpSkmRSvKUpJkqUvKSZO
+ lSlJJJJUpSUpJJKVKSSSVKXlKUyZBS8pSmSQQylKVFJOCmUpSmSRUvKUpkkFLylKiklSmUpSop0aUvKa
+ UkySl5SlMkkplKUqKSCmUppTJJpUvKUpkkFMpSlRSTgplKUqKSKmUpSopIKZSlKikkpeUpTJJyl5SlMk
+ kpeUpTJJhUvKUpkklMpSUUklLylKZJFS8p5UUkVLylKZOkpUpSkklSlSlKZJKlLpJJIqUkkkkpSdMkkp
+ SUpJIFSpSlJMmqXlKUySCl5SlMkillKaUySSmUpSopJKXlPKikgplKUqKSCmUpSopJKZSlKikiplKaUy
+ dOtS6aUkkrUqUpSSQJUpOmSTVKlKUydBSpSlMnSUpJJJEKXTJJJ1qUmlOmQtCpSlJJK1KlKUkkrUqUpS
+ SStSpSlJJC1KlKUkkrUqUpSSStSpSlJJK1KlKUkkrUqUpSSStSpSlJJK1KlKUkkbUqUpSSStSpSlJJFS
+ pSSSStSpTpk6QUpOmTpy5SSSZGlLpJkkKQukmSQUukmSSUpKUkySl5SlMkkhdKUySKmUpKKdJS6SZJFS
+ 6SZJJS6SZJBK6SZJJS6SZJJK6SZJBS6SZJBS6SZJJC6SZJJC6SZJFK6SZJFS6UpkkUrpJkklLpJkkFLp
+ JkkFLpJkkFLpKKdBS6SZJJS6SinSQukmSRUukmSRUukmSRQukmSTSlSUpJkFLykkkipeUpTJJyl5TSkm
+ SUylJRToqVKUpJIUpUpSkmQpS8pSmTpUpUpSkkjSlSnTJklMklFOipdKUySCl5TSkkgpdJMkgpdJMkgp
+ UpSmSTgleUpTJIqXlKUySapdPKikkplKUqKSSl0pTJJKXlKUyScheUpTJJKZSlKZJJS8pSopJKZSkmSQ
+ pC6SZJJS6UpkklLylKZJFS8pSopIqZSlKZJAqVKeVFOmrlJJJJKVKUpJJKXSTJJKXSTJJKVKSSSSlJJJ
+ JIUkkkkpSUpJJKVKeVFOkheUpTJI2peU0pJklLylKZJJS8p5UU6Sl0kySSl0kySSl0kySSF0kySSl0ky
+ SSV0kySCF0kySSl0pTJJJXSTJJKXTSmSSUvKUpkkkrynlRSSUylKVFJJTKUpUUklMpSlRSSUylKVFJJS
+ 8p5UUkVLynUU6cpdMkkkpdJMkhSl0kySFKXTSkklSlSlKZOjSlSlKSSKlSlKSZJS8pSmSQUvKUpkklLy
+ lKZJNpS8pSmSSpS8pSmSSUvKUpkklLylKZJOUvKUpkkEFeUpSSQUqUkkkkLpJkkUrpkkkVKlKUkklKlK
+ UkkqSqU8pkkVLykmSSpS6SZJKlLpJkkqUukmTJKZJKMp0ELpKMpSkpkkoynSUukmSSQukmSSSukmSSUu
+ kmSSSukmSQUukmSQUukmSSUukmSSUulKikkpeUySSKFJJJJKUkkkkpSSSSSFJSkkgpSSSSSFJJJIIUnT
+ JJWkLynlRSlFeGUpKKSVqZJJkkVLpJkyCmUpJkklLpJkySmSSZJJS6SilKCmSSiklamSSZJK1LpJkkrU
+ ukmSStS6SZNKSmSSinRUukmSRUvKaUySBUvKSZJC0LpSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSSt
+ S8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pJkkrUulKZJK0r
+ pJJJKUlKSSkClSkkknKUlKSSYVKlKUkyYVLylKZJNtS8pSmSSBUySTJKUFS6SSZG1LpJk6ClJJJJpUpJ
+ JMmFS6SSSIKlJJJlIFLpJk6JUpJMkmoXSTJIKXSTJJyl5STJIqXSTJIqXSTJJKXSTJIKXSTJIKXSTJIK
+ XSTJIKXSUUklMklFJJTKUlFOkpdJMkipdJMkipdJMkkpdJJJBCkkkklKSTJJJXSTJIIXSTJJKXSTJJWl
+ dJMnRUpNKSSKlSlKZJJS8pSmSRUvKUpkklLylKZJJS8pSmSQUvKUpkkLUvKUpkkFLyklCUIpWSTwlCSV
+ kk8JQkpZJPCUJIWSTwlCSlkk8JQkpZJPCUJIWSTwlCSlkk8J4QUxSUoShJTFJPCUIqWSTwlCKVkk8J4S
+ UxSUoShJLFJShKElMUlKE0JKUkkmTLWrpJkkLUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUuk
+ mSStS6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6aUkoRBUqUpTwlCclZKU8JoSUsknhKEFLJJ
+ 4ShJSydKE8JKWSTwlCSmMpJ4ShJSpTpoTpKXSTJJKXSTJJKXSSSSUpJJJFSkkkklKSSSRUpJJJJSxKaU
+ 8JoSQsnlKE8JKWSTwlCSlpSlPCUI0pinlPCUI0paUylCaEqUqUkoShClKSTwlCVKUnTQnSUpJJJBSkkk
+ kFKSSSSUpJJJJSkkkkVKSSSSUpMnTJKUklCUIKUklCSVpUkkkhalJJJJKUkkkkpSSSSSlJJQlCSlJJQl
+ CSl0kkkFLJJJJWpSSSSFqUkkklalJJJIWpSSSSFqUkknStSkkkk4KUmTpJ6lkkk6Slkk6SSlJJJJKUkn
+ ShJSySUJJKWSTpklKSTwlCSlpSlIhRSUvKUpkgElMwVFxTqDklILSqrlZsCAQkpdit1lVWBWGJKbAKRK
+ iE6SlSnlNCeElLpJAJ0lLJJ0ySlJkkklKSTJJKXSTJ0lKSTpklKSSSSUskkkkpSSSSSlJ0ydJSlJRThJ
+ SigWI5QLElNV6Zqd6ZqSmzWjhArRklLOQypuQykpiUyRTJKXAUgEwUgihUKLmqUpiUlwKItSAUymhJkB
+ UEiU8JQkm2KkE0JJKtKE8IYKkCktJUQhlEJQ3JMRLAlOCmKQCSrZhPKYBOki1wVIFDUgUlwLMlQKeUiE
+ WW0ZUZRCEMhJVr7k4coQpAJKtmCpBRAUgkskV4TbU8ptyTHatqeE25KUFwKzkJxRDqoFqS9hKm1NtUho
+ khIFKUOUtySlOKEVM6poSUs0I7QhgQpB0IISFCcVLcoHVJLAlOCkWpAJJZgKYCi1TBQSohQJUyhuSSxL
+ lHckQowkpmCiNCEERpSUmaEQBDaUQFJBXSJSUSEFqi5NuTEJQkhkCpBRAUwkhUJk6SKlkkkkVKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Dr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSl
+ kkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlILFVerdiqvSUjCPWgBHrSU2Goig1TSUpOm
+ TpKUmTpklKSSSSUpJJJJS6dMkkpSYp0ySmJTKUJQkpinTwlCSlJJQnQUsmUoTQkpZMpQlCSmKdJPCSlg
+ nSSRSukkkkpSZOkkpZKE4TwipiknITFJSkkydFS6SQTpKWSTEppSpS6SZOm8KFk6SSXCpSSSSXCpSSSS
+ XCpSSSSXCpSSSSXCpSSSSXCpSSSSXCpSSSSXCpSSSSXCpSSSSXCpSSSSXCpSSSSXCpSSSSXCpZJOklwq
+ UkkkiIqXSTJwnrVQknSSSskkVGUqUunUZUggQhUJQpJFNpTFMnKgSjSmUp1AFSBQpK8JQnSSpS0JQnSR
+ pK0JJ0kqUslCdJFS0JQnSSpS0JQnSSpK0JQnSSpS0JQnSQpS0JJ0kKQtCUKQTwlSGEJlMhRKIClkk0pS
+ nUpdJNKUoUpdJIJ0qUskkU0pUpdJMCpBKlKSTpJUpZJOkhSlkk6SFKWSTpJUpZJOkjSlkk6SVKWSTpJU
+ pZJOklSmMJQnSRpS0JQpJJKYwlCkmQpS0JJ0kKUslCdJKlLQlCdOjSmKSkmSpSySSaUaUunUZUglSlQl
+ CmAmKCmKaUiVAuTqUzlJQ3KQKVKZJkkxKCl5SlQJSBSpSRJRBUk2lKSSSQpSySdJKkrJJ0kqUpJOmSpS
+ ydJJKlKSTpJcKlkk6SXCpZJOklSmKdIpkaUukmUglSloShOkUKUsklKSXCpSUJJ0OFSySdRJS4VKSlRJ
+ TSjwqZykoSpApUpklCYFOlwqVCUJ0kuFC0JQkklwqVCUJJJcKlQlCdJLhUtCUJ0kuFS0JQnlJDhUtCUJ
+ 0kuFS0JQnSS4VLJJSmlHhUukmlPKXCpUJQnSS4VLQlCkklwqYwknTFLhUpJRJTSjwqZJ1CUpR4VM0lGU
+ 8p1LmSSjKdClKSSlOlSloSTpIUhZMkU0oUpdJNKSVKXSTpI0hZKE6SVKUknSSpSySdJGlLJJ0kqUxSUk
+ yVJUknSQpSySdJKkrJJ0kqUsmTlRJQpS8pKMqYQpCkoUkxRpSyZIlNKNKXSTApwjSVJKSiUqUpJMSmlK
+ lMk6iCpBClKSTwlCFKWSTpJUpZJOkhSlkk6SVKWSTpJUpZJOkjSFkk6SNKWSTpJUpZJJJCkKhKE4ToUp
+ jCSkVEogKUkmlOCjSVQlCkE8JKYQlCmVEo0lZMkSmlKlMkkwKdClKSSTJUpdJMnCVKVCUKQSSpTGEoUk
+ yKlkoTpIUhaEoTpJUpaEoTpIUhZJOklSWKUJ0kaStCSdJKlLJJ0kKUsknSRpSySdJClLJQnSRpS0JQpJ
+ JUhjCSdMUaUpJNKQKVKXTpBJClLJJJJUhSSUppRpS6SaUpSpS6SaU6VKUknTFJSkkydKlBdJJJNpcpJJ
+ JKlKSSSSpSkkkyVKXSTSlKVKXSTJJUpdJJJKkKSTSlKFKXSTJwjSlQlCdJKkLJJiVGUqUzShMCphKlMY
+ ShFhMQgpHCSkVElOpSkk0p0qUpJJJKlKSSSlKkKTwmTpUpUJQnSQpLFOkmlKkKSTSpBKlKhKE4TwhSmM
+ JoUimSpK0JJ0kaUsknSQpKySdJKlLJJ0kqUsknSRpSySdJKlLJJ0kqUxhOnSSpSySdMnUpSSYlNKNKZJ
+ k0ppQpTJOoSnlKlMkkwKcIUpUJQnSSpSySdMjSlJlJMlSlkk6SVKWSTpIUpZJOklSlkk6SVKWSTpIUpZ
+ JOkjSlkk6SVKWSTpJUgqTJ1ElClLylKjKUo0hknUQVIJUlSSdMlSlJJJI0lSZOSokpUpdOoSnBRpTJMn
+ SQpSySSZGlLpJpSlKlLpQkFIIUpZNCnCZJDGE8KUJQgphCSkQolKlKSSSRpCkk6SFJWSTpJUpZJOklSl
+ kk6SFKWSTpIUlZJOklSlkk6SVKWSTpI0pUJJ0yVIUmSKaUaUySUQVIJUpUJQpBPCFIYQkpFQJSpS6SjK
+ cFKkLwlCcJ0KQxhJIpkKSFJQnTo0vDGElJJGksUlJJKkMUlJJKlMUlJJKlMUlJJKlLJlJJCkMYShSTwh
+ SmMJKcKJQpTFJOmSpSkkkxRpS8pKMpApUlkkkFKEaUxSTpiiAlSSZOEaUpKE4ToEIYwlCnCSbSGEJKSi
+ jwqUklKaUuFS6SUp0uFS0JQpJJcKmKSdNKXCpSSZPKXCpSSUpJcKlJJ0kuFSySdJLhUsknSS4VLJJ0ku
+ FSySdJLhUsknSS4VLJJ0kuFSySdJLhSskkmS4VLp0ydPAUskkSmlOpS6SaUpTSFLpJk4TCFLwlCcJ4Ta
+ UwhOpEJkgFLJ00p5UgClJJSlKNKUkkkhSlJJJIEKUlCSSYQpSSSSQClJJJSpAFKTJ5TSjSlJkiU0ptIX
+ SUZUgUqUulCcJ0aUxTKRTFGlLJJpTSjSmSSaU6VKUknTIUpSSZOClSl0kgnQpSySdJClLJJ0kqUsknSS
+ pSySdJKlLJJ0kqUsknSRpSyUJ0kqUpJOkhSFkk6SVKWSTpJUpZJOnSpTFJSSQpTFJSSRpLFJOklSlkkk
+ 0o0pdJNKUo0pdNCUpSlSl4ShKUpSpSoShJJClLQnSTJUpUJ4TJ0KUtCeEkkqUqE8JpTylSVQlCUpI0lU
+ JQkklSlQlCeUpSpC0JQnlKUKUtCUJ5SlKlLQlCeUpSpC0JQnlNKVKUklKaUqUukmlKUqUulCUp0qUqEo
+ TpIpYwknJUCUqUySUNyW5HhSzTqAKlKVKXTQlKUoUpaEyeUybwrVJQkkhwqVCUJJI8KlQlCSSXCpUJQk
+ klwqVCUJJJcKlQlCSSXCpUJQknS4VLQlCdJLhUtCUJ0kuFS0JQnTJcKlQlCSSXCpUJJJJcKlJJJJcKlJ
+ JJJcKlJwE0pwUuFS8J4TSlKdSV4ShNKeUqUqEoTykhSloShSTFClMYSSJQy5GlM5SlCL0g9KlJkoUA5E
+ BSpS0JoU0xSpTFJJJKlKSSTpUpZJOmSpSkkkkaUpJJJKlKSSSlKlKSSlJKlLwlCQTpUhaEkxKiXJUpmk
+ h7lIORpTKEoTAp5SpSkkxKjuRpTNJQ3KQKVKXhKEpSlBSoSTEptyNKXSTSlKFKUnTSlKVKXSSlKUKUpJ
+ KUpSpSkkpSlKlKSTSlKNKXSTSlKVKXSTSnlClKhKEpTyhSloShPKUoUlaEoTylKVKWhKE8pSlSloShPK
+ UpUpaEoTylKVKWhKE8pSlSloSTymlKlKSSlKUKUpJJJClKTJJJUpdJMnQpSoSTpkqUskkmQpTJJMnQpS
+ k6ZJOAUpJJJPUpJJJJSkkkklLpJk8pKUklKaUlLpJpSlJSkkkySmQTqMp5SUsVEqRKZJTGFIBJOElKUH
+ Kai5JTXegkIrygkpKZNCOwIDCrLElJAE8JAJ0lKhJJJJS6dRlPKSlJinTJKWTKSZJSySdJJSydJOkpZO
+ mSSUumSSSUsknSSUsknSSUsnSSSUpOmTpKUUCxHKBYkpqvTNTvTNSU2GI4QGI4SUxchlEKGUlIyknKZJ
+ S4TyopSiheUpTJJJC6SSSTIF08JkklKKiVIlQKSrWlSBUYSCSCklRKSSLExhSASThJS6RSlMSkpYpSkm
+ SXBkCpKAUgUl9rlQIUpTFJNsYUgEycFJTIJFNKYlJYViVElOVEhJjVKkCownCS4MwpQoAqQKS9RCiVIl
+ RKCGBKUpEJQkpkFMBQCmCkpYqBKmVAhJCgVMKACmEk2vCYhSlRKCbUE4KinSSylMU0pIJWIUSFIpikpi
+ phNCcBJSRpRWoTQitCSGYTwkFJJDHamhTTFBDGE6SZJC6ZJJFSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkp
+ Yqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SS
+ SSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSU
+ ukkkkpSSSSSlJJJJKVCZOkkpZOkkgpZJJJJSkkkklKSSSSUqEoThOklaExUlEoqYkpSmKZFSQFSQwiBF
+ SiFEhTUSkpikol0KBshFSYJIHrBMbwklOVFAN4S9cIhDYCdVxcFL1gnUpMkg+sEvWCVKTJIPrBL1glSk
+ ySD6wS9YJUpMkg+sEvWCVKTJIPrBL1glSkySD6wS9YJUpMkg+sEvWCVKTJIPrBL1glSkySD6wS9YJUpM
+ kg+sEvWCVKTJIPrBL1glSkySD6wS9YJUpMkg+sEvWCVKTJIPrBL1glSkySD6wS9YJUhOApAKuLgpC4JE
+ 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
+ BL7QEktlJVvtAS9cJUpsFRQfXCXrhGlJoShCFwT+qEaKkkJIZtCibQlSkySB6wS9cJUpsJ4VcXhSF4Qo
+ qTQn2oQvCf1ghRUk2pQoesExuCCmZCihm4KBvCSk8pSq3rhL1wnJbSSq+uE/rhKktmUlW9cJeuEqU2U6
+ q+uE/rhJDZSVb1wl64QpTZSVb1wl64SU2UlW9cJvXCSG0mVb7QEvXCSmylCALwpC8JKTQlCH6wS9YJKS
+ QnQDeExyAlSmzKaVW+0BN9oCVJbJUSEH1wn9UI0pnCQCh6gT+oEaKUgCdC9UJjcEqKkqUoBvCj64SpTZ
+ Tqt64T+uEqWthJV/XCXrhKlNhJV/XCXrhKlNhJV/XCXrhKlNhJV/XCXrhKlNhJV/XCXrhKlNhJV/XCXr
+ hKlNhMgeuEvXCVKTpKv64S9cJUpsJKv64S9cJUpsJKv64S9cJUpsJKv64S9cJUpsJKv64TeuEqU2ElX9
+ cJeuEqU2ElX9cJeuEqU2QnCrC8KQuCVKTwkhesExuCFJSp5Vc3hN64SpTaBTgqp64T+uEqU25SVYXhP9
+ oCFKTEKBao+uE3rBKlLFqQal6oS9UIqZgIgQPWCXrhBTYSKrfaAl9oCSmwkq3rhL1wkpspKt64S9cJKb
+ KZV/XCXrhJTYSVf1wl64SU2ElX9cJeuEVNhMq/rhL1wlSmwnCreuEheEqU2wnhVheFMXhCkJCEMhI3BR
+ NoRCl4TgIfqhL1QipMEig+sEjeEqUkKihm4JvVCNKTAKYCALQpi0IEFSaExQ/WCg64IUVJCVGUB14UfW
+ CfSm0CpBVReFMXhAhTYSQPXCb1wm0psJKv64S9cJKbCSr+uEvXCSmwkq/rhL1wkpsJKv64S9cJUpsJKv
+ 64S9cI0psJKv64S9cIUpspKv64S9cJpU2ElX9cJeuEEthJVvXCXrhFTZSVb1wl64SU2UlW9cJeuElNlJ
+ VvXCXrhJTZSVf1wl64QU2ElX9cJeuElJ0kH1wm9cIKbCeFXFwKK18oKZwokKcpikpgnBTFIIKZpFIJJK
+ YkJoU00IKWSTlRKCl5SlRTohS6SSScpdJMkkpdJMnSUpJJJJSkydMkpSSSSSlJJJJKUkkmSUukkkkpSd
+ MnSUpQcpqDklNaxVyVYsVYpKSMVutVK1brSUnCRSCRSUxSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpZ
+ JJJJSkkkklKSSTpKUkmTpKUkmSSUukknSUsUCxHKBYkpqvTNTvSakpsVowQa0cJKYlDKKUMpKRlRKmVE
+ hJTGUpShNCKF5TpoTpKCpSlKEoSXqlKUkoSUqUyUJQkpSSUJQkgqlOmhKEli6SSaEVKlKUoShJSpSShK
+ EkhUpSlCUJLlSlKUJQkpUpSlCUJJVKUpQkktKkkoShJYpMnhKElwWlKUoShJcvKaUoShJCkk8JQkhSUp
+ QlCSlSklCUJKUlKUJQgpeU0pQlCSQqUkoShJcvKSUJ4QSsmUoShBSwUgEwCkAkpm1ECgFMJISBPKiClK
+ SFyUxKYlMkhdJJJBSkkk6cpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJT//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgM
+ RwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJS
+ GxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkk
+ gpZOkkkpZJOmSSpJJJJS4Tyop0lLpinShFSMhIBThIBFSwaiAJAKQSUsQgvMIzlVudCIUgtthU7MmE2T
+ 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
+ kpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJMkpdJMkkpdOEydJSigWI5QLElNZ6Zqd6ZqSmzWjhA
+ rRwkpYoZRShFJTApoUkgElMdqWxFDVLaihDsS2I21PtSSg2JbEfaltSXINiWxH2pbUlINibaj7UtqSkG
+ xLYj7UtqSEGxPtRtqW1Jah2JbEban2pKQbE2xWNqW1JTX2J9iPtS2pKa+xPsR9qW1Jc19iWxWNqW1FSD
+ Ym2KxtS2pKtr7E+xH2pbUkINiWxH2pbUlqDYm2KxtTbUkoNiWxH2pbUVyDYlsR9qW1BCDYlsR9qW1JCD
+ YlsR9qW1JCHaltRtqW1JSDaltR9qW1JSDalsR9qW1BKDaltRtqbakutEGqQaiBqcNSSj2pbUXaltQUh2
+ pwEXalCCmACmAlCeElKSTpklqySSSSF06ZOkpSZOmRSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgq
+ u9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSS
+ SlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsSU2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpJJJKU
+ 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
+ YCuo+yBL7IErU8v9gKX2ArqPsgS+yBK1PLfYD4JfYD4LqfsgS+yBGwp5b7AfBL7AfBdT9kCX2QJWFPLf
+ YD4J/sB8F1H2QJfZAlYU8v8AYD4Jj08+C6oYgSOIELCnj7MEhUrMYtXZ34oAWLlUAJKcaphBWzhBUdoB
+ WjiJKd3G4V5pVLG4VwJpUylSBUFMBNKl1EqcKJCCmCcJiEkVMwpBQBUgUFLpilKUppUskkkmqUkkkkpS
+ dMnSUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSlBymoOSU1rFXKsWKuUlM61brVStW60lJwk
+ UgkUlMUkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKTJ0ySlJJJJKXTpk6SlFAsR
+ ig2JKaz0zUnpNSU2a1YCr1o4SUooRRChlJTFOFEpApKTBTCCHKW5JSRJD3J9ySUiSHuS3JKSJlDcluSU
+ zSQ9yW5JTNOh7ktyKkiSHuT7kkM0lDcluSUkSQ9yW5JSRJD3JbklJEkPcluSUkSQ9yW5FSRJD3JbklJE
+ kPcluSQzSUNyW5JSRMobktySWaShuS3IqZpKG5NuSUkSQ9yW5BCRJD3JbkkM06HuS3JKZpKG5LckpnKS
+ HuS3JJSJKG5IOQSzAUgoByfcklmmUdyW5JK6SjuTSgpmkogqUpIUmKdMghZJJJJC6dMnSQpMnTIpUkkk
+ klSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1OvSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0yS
+ lJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRSUhsVV6tWKq9JTAI7EAI7ElNhqmoN
+ U0lLpJJJKUmTpklKSSSSUpJJJJS6SSSSlJJkklLpJJJKUkkkkpSSSSCVJJJJKUkkkkpSZOmKSliUpTFM
+ kpmHKUoYUgnKZJQmlOCipcBOAkCpApJYuCp3hXSql6IU42Ssu06rUyVlW8pymDTqr1CoN5V7HRU6+OtG
+ sLNx1pVpFSWExCdRKjJpC8JoSSQ4kKhKEkkuJSoShJJLiUqEoSSS4lKhKEkkuJSoShJJLiUqEoSSS4lK
+ hKEkkuJSoShJJLiUqEoSSS4lKhKEkkuJSoShJJLiUqEoSSS4lMgFKFAKaBkpDaNFk5QWrbwsnKU2MqcT
+ KWXYdVp5SyrOVejslTDqr1CoM5V/HQKnYxgtagLJxgtalQSU3GBE0QmlTlVypcplElMiplKUqKYoKSAq
+ QcgpApIT7kxKHKeUqSukmSRUukmSSUukmSSUunUUkFMklFJJTJJRSSQySUUklKITQnTIpUApBMkkpICp
+ AoSQKbSkxKq3nRGVe7hGOinGzSudy3LfzQudy1ZgpzXv1RqHaqq/lGoOqlU7uIeFv4q57D7LoMXhRyU6
+ laMgMRFXI1SzUSmTIIXSTJJKXSTJIqXSUU6Sl06ikmEqZJkySAKl0yZJPCl06ikilmE6gE6ahmkopJKX
+ TJJkUqSTJkVMk6ikghkkmSSUyCmEIIgQKmFvCxs1bFvCxs1Pip5vN7rIsOq183usa06qcKT0HVbuEeFz
+ 1B1W9gnhIqenxOFpM4WViHRabDoq80pCoSkShkplIZyn3ISQSUllNKgnSUulCZOEVLwlCSSSloShJMip
+ eEoTJJKXhKEkkkKhNCSSSVQlCZJJS8JQmSSUulCSSSlwnUU6Sl0xTFMghklCiE6KViFXtCsEqtaU+O6n
+ MyVi5JWxlFYeSVaiENN7tVOp6qvdqiVHVSUp3MVy28Yrn8QrexVBNTqMKJKCwKaqlLJLRRTppNKXhKEk
+ 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
+ WjjI2p3cUrXpWNjLWpTCbS3mlSJCE1OSoqUz0TaKCUptqZQE20JpSlLiQqAlCaUkbSy0SUUkrUy0SUU6
+ VqZJKKSFqZJaKKSVoZaJaKKSVqZJKKSVoZQm0TJkbUylKVApkrUklNKgkipnKcIakEVJRCkAhgqYKaVy
+ zwqGQrryqOQU6KnHyisTIctjLWJkqUFTVLtUekqoTqrNBTrU7WKFtY7Vi4h4W1jpsipv1hGAQWIoVeUk
+ LkJoCRTJvEpfRLRMkjxKX0S0TJJcSl9EtEySXEpfRLRMklxKX0S0TJJcSl9EkyZLiUukmSS4lMkyZJLi
+ UunUUkuJTJJMklxKXSTJIcSl0kySXEpkkopJcSmYCi8Jwk5OBU5+QNFhZi3snhYOYpwVOHkHVVAdVayO
+ VTHKNqb+OVtYgWHjlbmIhxKdmgK6wKlQrjU0lSYKYKEFJMKmcppUEyCmcplFOErUvCUJJJWpUJQEkkrU
+ qAnTJIcSl0oTJJcSl4ShMklal4ShMnRtSoShJJK1KhPCZJK1Lp1FJJTKU0qKZFTKUpUUyNJSJwhypAoK
+ U4Khk8K+5UMnhPgpwcw8rCyH6rbze65/JOqmCEIfqtDFMrKB1WliFIqejwxMLbobosTB7Ldo4UcilsAJ
+ ipKBUSl0kySKl06ikghkkopJKZJkySSl0kySKVJJkklLp1FOkpeEoTJJIXhKEySSl4ShMkkpeEoTJJKV
+ olokkkpWiWiSSSl4ShMnSUoBOVFM4pKauSdFz+a7VbeU7Rc7mu1KkU0S/VaGI7VZM6rUwuUlPRYvCvNC
+ pYg0Wg0JpUtCmAmhSBTCplCiQnlRJQUwIUVIlMipaUpShKElLgp5UYThNKmSSSSapSSSSSlJ0ydJSkkk
+ klKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKUHKag5JTWsVcqxYq5SUzrVutVK1brSUnCRSCRSUxSS
+ SSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSySSSSl06ZOkpYoFiOUCxJTWem
+ ak9JqSmzWjhV60cJKUShlTKGUlMSU0pEqJKSmW5PuQ5TSilLuT7kKU8pKSbktyHKUpKSbktyHKUpKZ7k
+ tyHKUpISbktyHKUpKSbk+5ClKUkpdyW5DlKUlJdyW5DlKUUJNyW5DlNKSkm5LcoSlKSme5LcoSlKSkm5
+ LchylKSGe5PuQ5SlJSTcluQ5SlJLPcluQ5SlJTPcluQ5SlFKTcluQ5SlJCTcluQ5SlBCTcluQ5SlJCTc
+ luQ5TSkhLuTbkOUklJNyW5DlKUkpNycOQpTyklNuT70GUpQSm3pt6DKW5JKXenDkGVIFJScFSBQWlFCS
+ GaSYJ0kLJJ0yCF06ZOkpSZOmSSpJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJT/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxH
+ CAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikk
+ UlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpklKSSSSUukmSSUukmTpK
+ UkkkglSSSSSlJJJJKUkkkkpYhNCklCKmMJ06ZFSpSlMkiplKkChqQRSzJVS9Wiqt6IU4+Ssq0arWyVl2
+ jVEKQsGqv0BU2DVXaAnKdTHWjWVnULQrQKk6YpgUlGQtUkkmTeFS6SZJGlLpJkkqUukmSSpS6SZJKlLp
+ JkkqUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSSpTIKagFJAhSG3hZOWta3hZGWpsYU4e
+ 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
+ JJNUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKTpk6SlKDlNQckprWKuVYsVcpKZ1q3
+ Wqlat1pKThIpBIpKYpJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSdJJS
+ ydMnSUsUCxHKBYkpqvTNTvTNSU2a0YINaMElLFDKIUMpKYFRKkVEpKWSSSRSpOkkkpdJJJJCkydMkpSS
+ SSSlkk6SSlk6SSSVJJJIqXSSSSUpJJJJCkkkkkKSSSSUpJJJJSkkkklKSSSSSpMnTJJUmTpIqUkkkkhS
+ SSSCFJk6SSFkk6SSFkk6SSlkk6SSVoSUoTwkljCSlCUIJYFMpEJiElLBSCaFIBJTNqKENoRWpKZhOkE6
+ SFkydMkhSSSSSFJJJILgpJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJT//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcIDEcJ
+ KXSSSSUpJJJJSkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRSUhsV
+ V6tWKq9JTAI7EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmSUpJJJJSkkkklKTpk6ClJJJJJ
+ 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
+ q0cQoqejwhwt2gaLCwXcLeocITSpshqYtUgQkSFEpjtTbVOQm3BNKmO1LapSEpCbamO1LapbglISUx2p
+ bVLcEpCKmO1LapbgluCIUx2pbVLcEpCcpjtS2qUhLcEipjtShS3BNuCYShaEtqfcEtwQtS0JQn3BLcEV
+ LQlCfcEtwRtS0JbU+4JbgkpaEoT7gluCKloTwn3BLcEVLbUzmqQcEnOCCnNymaLns1uq6PKcIXPZp1St
+ TlHlaOGdVmk6rQwzqkp6TEOi0mrLxOFqMQUuQmhThJBTCEkiVAlC1M0pQ9yW5JTMlRKUp4QUwThShKEV
+ KSSSRUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKTpk6SlKDlNQckprWKuVYsVcpKZ1
+ q3Wqlat1pKThIpBIpKYpJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJJJJKXSSSSUskkn
+ SUpJJJJSxQLEcoFiSmq9M1SemakpsVo4QK0cJKYlQKIUMpKRlRKmVEpKYpJJJy5SdMnSUpJOkktWSSSS
+ UpJJJJCySSSSVJJJ0kqSSSRUpJJJJSkkkklKSSSSWqSSSSUpJJJJCkkkkkqSSSSXKSSTpKWSTpIJUmTp
+ JIWSTpJLVk6SSSFJJ0kkLJJ0klLJJ4SSSoJwmTpJXSTSlKSliolSJUSklSkFFSCSkjUUITUQFJCQJ1EJ
+ 0kLpkpTJIUkknQQsknSQXhZJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJT/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxH
+ CSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIb
+ FVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpklKSSSSUpJJJJSk6ZJBS6SZO
+ kpSSZJBK6SZJK1LpBMnStTIJ4UQpSlaliE0KSYo2pZKUiVElEFS5KYJiU4TwpRCqXjRXSFWvCIS4eSsu
+ 10Fa+WFjXqQBDFtkFXabllboKNXZCdwpd+m9XWZC5+q9WW5Cdwodv7Sm+1BYpyVA5JS4EO79rCX2oLB+
+ 0lL7SlwIt3vtQS+1BYX2lL7SlwKd37UEvtQWF9pS+0pcCnd+1BL7UFhfaUvtKXtqd37UEvtQWF9pS+0p
+ e2p3ftQS+1BYX2lL7Sl7and+1BN9qCw/tKX2lLgU7n2pL7UsL7SUvtJS4Eu79qS+1BYX2kpfaUuBTu/a
+ gl9qCwvtJS+0lLgU7v2oJfagsL7SUvtJS4FO79qCX2oLC+0lL7SUuBTu/agl9qCwvtJS+0lLgU7wygp/
+ awufGSU/2ooe2p2bMoLOycmVUfklU7ryU8QpIY5N0rNss1RLXyqjypAlKx+qvY9qy2q1U6Eip6DHvhad
+ WSubqthXK8iFGYoejbkhS+0hYIyVL7Ume2i3b+1BP9qCwftSX2pN9tHE7hygoHKWMclROSl7auJ2xlKY
+ ywsD7SU/2ooe0rieg+1hMcsLA+1FL7UUfbVbu/agl9qWF9pS+0o+2q3d+1BL7UFhfaSl9pR4FW7v2oJf
+ alhfaUvtJS4FW7v2pP8AagsH7SUvtJS9tVu99qCX2oLB+1FL7SUvbU7v2oJfagsL7SUvtJQ9pVu79qS+
+ 1BYX2lL7SUvaRbvDKTjKCwftKf7Ul7Sbd77WEjlrB+1JjlFH2k27hygofalinJKb7SUvaVbvjLULMvRY
+ oySovySj7KrbGXkSsHLslWb7iVm3mUq4VW0rHaqdLoKG8J2CEeJVu5h2xC3sbIgLlaHwtOm+EN1W9M3K
+ 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
+ ShOVbFOlCYoqtdSCgCpgoIVCYhECiQipgkkQnASUqEoUgFKElI4ShEhNCSbYQmUyFEpKtjKUpikkq108
+ qKSSLZBSAUQigJKY7UxCLCYhJCIqMqRCiQkpQUgEwCIAkpjCYhFhQISTbFPCZSCSrWhMVIqBQtVqlOop
+ wkq2SUJJ0kWtCSeUySlJkimSUunTJwjSl0kkkaUqEoTpJUliVElSKgQlwqXlPCYBFASpTDanAUyFEpUl
+ cIgQwVNqFKSBSTBSTUUxKjKcqBQtVMpTyhhTCFqpkkmTopUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9
+ WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJ
+ JJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTp
+ klKSSSSUpJJJJSkkkkFKSSSSUpJJJBSkkkkKUpJJJClKlPKiVGUqUk3JShynBRUySSCeE4JYwpNCeE4T
+ wpcqtcNFYKDYE4KcbKbKxr610N9crPtx5UwKnCdWUmsIWocVR+yp4IU02SEUEo/2chOKE8EKQGVEgq4K
+ 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
+ EFKCr/2dL7OhYS0IKUFX/s6X2dAkKc17SVVfUSto4ygcRMJCnKrpMrWxK4UmYivUUQmEhLcxxAV5pVWp
+ kKy1RSUzlOmThRlKxCaFNMoypYBSCZOoyErkqBckShkptKZbk4KGptT4hDMJ0wTqRCkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJBSySSSSlJ0ySSl0kydJSlBymoOSU1rFXKPYq5SUlYrdapsVutJScJFIJFJSySS
+ ZJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlkkkklKSSSSUpJJJJSkkkklKTpkklLp0ydJSigWI5VexJTWem
+ aneotSU2WIwQGIwSUs5DKI5CKSmBTJymSClwpKIUk+lqxCiVIlQcUqUxlOHIbihl8JUpuB6mDKoC5HZb
+ KVKbG1NCTXgpEpUpUqQKEXKTXJUpLCYpg5MSlSmJKgVIpkqUtCUJ1EuhKlLwmUd6cGUqUyCIChpTCVKT
+ 7kxKAXpb0qUk5ThqGHqQsCVKZhqlwhG4BDN4SpTYJUCUD1pUhZKVKSJwogp0CELkqJSJTShSlAKQCQUk
+ qUsVEuSeYVd9kJUpPuTgqp6qI18o0pOlCYFSRASoBSCjKUoqZJk0pSnJVKeVApAoqZ8p9iTUUBJTANT8
+ JyYQnuQUu5yGXqBdKYCUlJQ5GYgMarDAmlKVqkogKSYUsSFEhTShMKmAapAKQCeEFMISUiExTghZJJJF
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//R69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJKU
+ kkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsSU2Gqag1T
+ SUukkkkpSZOmSUpJJJJSkkkklLpk6ZJSkkkklKSSSRUpJOmRpSkkkkaUpJJJKlKSSSS4VLpkk6XCpiQo
+ wpwnhN4VI04ClCUJUpSkFFOglkkmlKUVLlDcJUpSStTWfXKEceVfDZUxWE7iU5f2RMcRa+wJemEuNTiO
+ xVD7Mtt1IKGaAnCanJGOpjHWl6IT+iE/3Frmegl9nWn6KXohL3FOZ9nS+zrT9EJeiEvcU5n2dL7OtP0Q
+ l6KXuKcz7Ol6C0/RS9EJe4pzPQS9BafohL0Ql7inM9BL0Fp+iEvRCXuKcz0Evs60/RCXohL3FOZ9nS+z
+ rT9FL0UvcU5n2dL7OtP0UvRS9xLmfZ0vs60/RS9FL3FOZ9nS+zrT9FL0UvcU5n2dL7OtP0UvRS9xTmfZ
+ 0vs60/RS9FL3FOZ9nS+zrT9FL0UvcU5n2dSGOtH0U/pBL3EgOb9mTHFWnsCWwJcbI5X2VL7KtX0wl6YS
+ 41aOWMZP9mWn6YS9IJcaKDmfZ1E461fSCXpBL3FtOT9mS+zLV9EJeiEuNFOWMdSGMtMUhSFIQ9xFOX9n
+ SOOtX0gmNQS9xVOV9nTfZ1qekEvSCPuKpy/s6X2danpBL0glxppy/s6X2danpBL0glxppy/s6X2danpB
+ L0gl7iqcv7Ol9nWp6QS9IJe4qnL+zpfZ1qekEvSCXuKpy/s6X2danpBL0gl7iqcv7Ol9nWp6QS9IJe4i
+ nMGMn+zLT9MJemEPcTTmfZkxx1qbAmNYR9xNOWcdN6C0zUE3ohH3FU5woUhQr/pBSFQR9xVOd9nTHFla
+ gqCcVhRmdooOR9jTfY/JbPpBL0gm8StHIGJCl9mWp6YTGsIiSqcs0KPoLUNQTekE/jVTmfZ1L7OtIVBP
+ 6QS9xVOZ9nS+zrU9IJekEvcVTl/Zk/2ZafpBP6QQ41U5f2ZL7MtT0gl6QQ40U5X2dL7OtT0gl6QTvcTT
+ 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
+ QWqaQoGlL3FOcKE/oLRFKcUhL3FOb9nTfZlq+iEvRCHuKcn7Mn+zLV9EJeiEfcU5X2ZL7MtX0Ql6IS9x
+ Tk/Zk/2ZanohL0Ql7qnL+zJfZlq+iEvRCXuqcr7Ml9mWr6IS9EJe6pyvsyX2davohL0Ql7qnK+zJvsy1
+ vRCXohL3VU5H2ZOMdavohN6IS9xeA5ox1L0FoekEtgS9xcA55oUDjrS2BNsS41+jmHGUDirX9MJekEvc
+ Vo5H2VSGMtT0gm9II8awhzxQpihXvTUhWhxrSGh6CiaFp+kkakPcW05Jx1H7OtY0pvRCPGkBy/s6X2da
+ npBL0kuNeA5f2dL7MtT0gn9IIcaqcv7Ml9mWp6QS9IJcaKcv7Ol9nWr6QS9EJca0hyvs6X2davohL0Ql
+ xracr7Ml9mWr6ITeiEuNIDlfZ0vs61fSCb0glxslOYMZSGMtIVBSFYQ40EOZ9mUTjLV9MJjUEuNbTkHG
+ TfZlrGkJvRCdxqpyvs6X2davoBL0Aj7iacr0EvQWp6AS9EJe4mnMFCkKFo+kE4qCXuJpz/s6X2ZaIrCf
+ 0whxqpyziqBxFr+mEvTCXuKpyBiKYxVqCoKXpBD3EU5X2ZN9mWt6QTGoJe4inJ+zp/s60/STeij7iKc3
+ 7Ol9nWn6Sf0Ql7iKcv7Ol9nWp6IS9EJe4qnL+zp/s60/RCf0ghxppy/syf7MtQVBP6QQ4005X2ZN9mWt
+ 6QTekEuNVOV9nTfZ1q+kEvRCPuKpyvsyX2ZanohP6IR9xa5X2dL7OtX0Ql6IQ41OV9nS+zrV9FL0Qhxo
+ cr7Ol9mWr6IS9EJcaHK+zJfZ1q+iEvRCPGpyvs6X2ZavohL0Qj7iXK+zJfZlqeiE/ohL3EuV9mTjGWp6
+ IS9EIe4uc0Y6Y461PSCY1BLjS5JxlH7MtY0hIUhDiU5YxVL7KtQUhP6QQ4kOScZN9mWsago+kEeJTmDH
+ UhjrSFQTioJcaHN+zpvsy1fSCXohH3UU5P2dL7OtU0hN6IR91DlfZkvsy1vRCXohMOUqcn7Ml9mWt6IS
+ 9EIe6VOT9mS+zLW9EJ/RCPulTkfZkvsy1/RCXohH3UuR9mS+zLX9EJvRCPulTk/Zkvsy1vRCXohL3Spy
+ vsyb7Mtb0Ql6IS90ocn7MnGMtX0Ql6IQ90ocv7Ml9mWp6QS9IIe6UOV9mS+zLV9IJ/SCXulNOT9mTHGW
+ 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
+ l/Z0vs61PRCXohL3FOX9nS+zrU9EJeiEvcU5f2dL7OtT0Ql6IQ9xLl/Z0vs61PRS9EJe4pzPs6kMVaQp
+ CmKgmmanNGKitohX9gTFoQ40tUMhTAUyFAlG1KSlNKaUEspSlMFIBClKSUgEoQoKYEKJCIQmhLhSj2qQ
+ ClCSVIUE6SSCFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClkkkklLJ0ydJSkkkklLqDlNQckpq2KuVYs
+ VcpKSMVutU2K3WkpOEikEikpZJJMkpSdMnSUpJJJJSkkkklKTpk6SlJJJJKWSSSSUpJJJJSkkkklLJJJ
+ JKXSTJ0lKUlFSSUsUCxHKBYkpqvTNTvTNSU2K0YINaMElMShlEKgQgpGU0p3ITnwnxUklMXqq66EI5Cs
+ RisbpsUS9UvXlTFkp3CpK9yq2PhELlVtKHCpY3Qi15CoPKTHkJcKnbrvlG9WVk1WK02xLhU2i9OLFX3q
+ BshHhU3RapepKzfXRGXocKnQBlKVWZbKmbEOFTN74VSy6ErbVm33wjwqboyNUeu2VgjI1VyjIS4VO0HS
+ me5Vq7pCT7EuFTJ1kKHqqtZYq7r4R4VOgb1B2Ss83qO8lDhU3XZSH9plVoJSDClwqbrLpVqqyVnVsKvV
+ BHhU3WFEQmBETTFTEmFAvTWOhVH2wm8Km62xFDlmsuVpj5S4VM7HKjbZCtWnRZ15S4VLi1HrtWbu1Vmp
+ yXCp1GPlFBVWoo4KPClkXKBsUHuhVnWwlSm4LEQGVnstVut0o0pPCZSCZ2iVJXDoUvVAVR9sKs/JhKlN
+ 99yCbZWe7KURkIUp0mulWGCVlMyFbqyQgVOi1qKGqtXcCrLXSoylkAknUSU0qVKaU0pJpUzBUkMFPKap
+ kVEpSmRUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JT//0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcIDEcJKXSSSSUpJJJJ
+ SkkkklKTJ0ySlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKXSKSRSUhsVV6tWKq9JTAI7
+ EAI7ElNhqmoNU0lLpJJJKUmTpklKSSSSUpJJJJS6ZOmSUpJJJJSkkkklLpkkk61KSSSRtSkkkkrUpJJO
+ lxKWSSSS4gpcKSHKW5DiUkTQmBToWpYplIpoSSpJOAnhJTBKUnBCc6EqUmD0QWBZz74QHZkJ3CVO16gS
+ 9Rq593UY7oZ6n5o8BU9EbmqBuC5w9T81E9S80eAqek9YJ/WC5n9p+aX7U80eBa9N6wS9YLmf2p5pftTz
+ S4FPTesEvWC5n9qeaX7U80uBT03rBP6wXMftTzS/anmlwKem9YJesFzP7U80v2p5pcCnpvWCXrBcz+1P
+ NL9qeaXAp6b1gl6wXM/tTzS/anmlwKem9YJ/WC5j9qeaX7U80uBT0/rBL1guZ/afml+0/NLgS9N6wS9Y
+ Lmf2n5pftPzS4FPTesEvWC5n9p+aX7T80uBT03rBL1guZ/afml+0/NLgU9N6wS9YLmf2n5pftPzS4FPT
+ esEvWC5n9p+aX7T80uBT03rBL1guZ/afmm/anmlwKem9YJjaFzf7T8046l5o8C4PReoEvUC58dR81L9o
+ +aPAv0d/1Al6gWB+0fNN+0fNDgVo9B6gT+qFzv7R80v2j5pcC3R6P1Ql6oXOftLzTHqXmhwIsPR+qEvW
+ C5s9T81H9p+aPAi3pxc1SFrVy46p5px1TzQ9tFvT+q1Mbmrmj1TzUD1TzQ4FW9N6wS9Zq5f9qeaf9qea
+ dwJt6f1mpeq1cz+1PNL9qeaHAq3pvVal6rVzP7U80v2p5pcCbD03qhL1QuZ/anml+1PNLgVYem9UJeqF
+ zP7U80v2n5pcCrD03qhL1QuZ/afml+0/NLgVYem9VqXqtXM/tPzS/anmlwKsPTes1L1mrmf2p5pftTzS
+ 4EW9Kbgm9YLm/wBp+aX7R80eBNh6T1gn9ULmv2j5pftLzS4E2HpfVal6gXNftPzS/anmhwKsPS+oEvVC
+ 5r9qeacdT80eBVvS+qE/qhc2Op+acdS80vbRYek9UJeqFzv7S8037S80vaVYeiNoTeqFzp6l5qJ6l5o+
+ 2qw9H6oT+q1cyep+ab9qeaHtqsPT+q1L1WrmP2p5pftTzQ4FWHp/VCXqhcx+1PNL9qeaXAqw9R6zUvWa
+ uY/anml+1PNLgVb0/rNS9Zq5j9qeaX7U80uBFvTes1L1mrmP2p5pftTzS4E2Hp/Wal6zVzH7U80v2p5p
+ cKrD1HrNS9Zq5j9qeaX7U80uBFvT+s1L1mrmP2p5pftTzS4FW9P6oS9ULmP2p5pftTzS4E2Hp/VCXqhc
+ x+1PNL9qeaXAqw9P6oS9ULmP2p5pftTzS4FWHp/VCXrNXMftTzS/anmlwIsPT+s1L1mrmP2p5pftTzS4
+ FW9P6zUvWauY/anml+1PNLgVb0/rBL1guY/anml+1PNH21W9P6rUvVC5j9qeakOp+aXtpsPS+qEvVC5w
+ dS81L9peaXtlOj0PqhN6gXP/ALS8037R80vbVo9B6gS9QLn/ANo+aX7R80uBNh6H1Al6oXO/tLzTHqXm
+ hwI0ej9UJeq1c0ep+ab9qeaXCq3pvVal6rVzH7U80/7U80uBFvT+q1OLWrlx1TzUh1TzS4FtvT+q1L1Q
+ ua/afmmPU/NDgVb0vrBL1guZPU/NN+0/NLgU9P6wS9YLmP2n5pftPzS4FPT+sE3rBcz+0/NL9p+aXAp6
+ b1gl6wXM/tPzS/afmlwKem9YJesFzP7T80v2n5o8CHpvWCXrBcz+0/NL9p+aXAp6b1gl6wXM/tTzTftP
+ zS9tT0/rBP6wXL/tTzT/ALU80vbU9MbwmN4XMnqnmo/tTzS4FPT+uEvXC5j9p+akOpeaPAp6X1wl64XO
+ ftHzS/aPml7aXpBcFIXBc2Oo+akOo+aXtqejFoT+oFzo6l5pftLzTfbS9EbQom0LnT1PzUD1PzR9tT0v
+ qtT+q1cv+1PNL9q+aHtpep9Vqb1mrl/2r5pftXzS9taXqPWal6zVy/7U80v2p5o+2h6j1mpes1cv+1PN
+ L9qeaXtqeo9ZqXrNXL/tTzS/anmh7anqPWal6zVy/wC1PNL9qeaXtqeo9ZqXrNXL/tTzS/anml7anqPW
+ al6zVy/7U80v2p5pe2l6j1mpes1cv+1PNL9qeaXtqeo9ZqXrNXL/ALU80v2r5pe2p6j1mpes1cv+1fNL
+ 9q+aXtqeo9Zqb1wuX/anml+1PNH21PUesE/rNXLjqnmpftPzS9tT03rNTesFzX7T8037T80vbU9L6wTi
+ 4LmP2n5px1PzS9tT0/qtT+q1cyOp+aR6p5oe2p6U3NS9YLlz1TzTt6nPdL21PT+qEjaFzzeoz3Ujn+aP
+ tKdw3BN64WA7qHmoHqPmne2p6MXBL1guc/aPmmPUvND21PSeuE4vC5c9T80h1XzQ9tD1Quan9Rq5YdV8
+ 1L9q+aHtlT0/qNS9Vq5j9q+ab9q+aXtlT0/rNS9Zq5j9qeab9p+aXtlT0/rtS9dq5j9p+aX7T80vbU9N
+ 64T+sFy/7T80v2p5o+2h6j1gl6wXMftTzS/anml7aXp/Wal6wXMftTzS/anml7anp/Wan9YLl/2p5p/2
+ p5pe2p6f1mpes1cx+1PNL9qeaXtqen9ZqXrNXMftTzS/anml7anp/Wal6zVzH7U80v2p5oe2p6f1mpes
+ 1cx+1PNL9qeaXtqemNrUxuauaPVPNRPVPNEY029N64S9cLmP2n5px1LzTvbVb0/rBL1QubHUfNSHUfNL
+ 2029F6oT+oFzo6j5qQ6iPFD202Hod4T+oFz37SHikep+ab7ZVo9AbAom0Lnj1PzQ3dT80RjVo9H6zU3r
+ NXMnqnmm/anmjwJt6j1Wp/VauXHVPNOOqeaHAi3qPWal6zVzH7U80v2p5pcCLen9YJesFzH7U80v2p5p
+ cCLeo9YJesFzH7U80v2p5pe2i3p/WCXrBcx+1PNL9qeaXtqt6f1gl6wXMftTzS/anmlwJt6b1mpes1cz
+ +1PNN+1PNLgTb0/qhL1QuY/anmn/AGp5ocCrem9ZqRuC5n9p+aX7T80uBBL0huCb1guaPU/NR/afmncC
+ HqReFP1mrlB1TzUx1TzQMFPUG5qibguYPVfNN+1fNDgU9QLgpesFyw6p5qQ6p5o8Cnp/WCibgua/anmm
+ /afmlwJel9YJ/WC5j9p+aX7T80vbU9QLgn9Vq5f9qeacdU80vbU9R6rU/qBcyOqeakOp+aHtqej9QJjc
+ Fzx6l5qB6l5pe2p6E3BR9cLnT1LzUP2l5p3Ap6YXhSFwXMDqXmnHU/NI40PUes1L1mrmf2n5pftPzTfb
+ U9N6wTesFzP7T80v2n5pcCnp/WCY3hcz+0/NMep+aXAp6Q3hN64XNHqXmo/tLzTuBT1AvCl6wXLDqfmn
+ /anmhwKt6j1mpes1cx+1PNL9qeaXAm3p/Wal6zVzH7U80v2p5pcCren9ZqXrNXMftTzS/anmlwKt6f1m
+ pesFzH7U80v2p5pcCren9ZqXrNXMftTzS/anmlwJt6f1gm9Zq5n9qeab9qeaXAq3p/WanFrVy/7U81Id
+ U80uBVvT+qEvVC5kdU80/wC1PNDgTYel9UJvVC5r9qeab9qeaPtq0em9UJvVC5v9p+acdS80fbVb0fqh
+ L1QueHUfNL9o+aXtpsPQ+qE3qhc/+0fNRPUvNLgVYej9UJ/VC5o9S8037T80vbVo9N6oT+oFzH7U80/7
+ U80PbVo9L6gS9QLm/wBqeab9qeaXAjR6X1Wpeq1cz+1PNL9qeaXtot6b1Ql6oXNftTzS/anml7arem9V
+ qb1Qua/anml+1PNL21WHpfVCXqhc1+1PNL9qeaXtpsPS+qEvVC5r9qeaX7U80vbVYel9UJ/VauZ/anml
+ +1PNL21WHpvVal6rVzP7U80v2p5pe2i3pfWal6zVzP7U8037T80vbRb04uCkLguXHU/NSHU/NL20W9N6
+ rUvVaua/afmmPVPNL2029N6rUvVauY/anml+1PNL21W9P6zVE3NXNftTzTHqfml7abD0puao+u1c0ep+
+ ab9p+aXAV1h6b1gnFoXMjqXmpjqXmlwFOj0nqhOLAuc/aXml+0/NLgKtHpRYE/qtXM/tQeKX7U80PbWF
+ 6X1Qm9ULmz1TzTftPzR9ta9J6wT+sFzP7T80v2p5pe2p6f1Ql6zVzH7U80j1TzS9tT0xuam9Zq5g9U80
+ 37U80vbU9SLmp/VauXHVPNS/anmh7anpTc1QNwXOHqfmo/tPzR4FPTC4J/WC5gdT81L9p+aXAp6b1Ql6
+ zVzP7T8037U80OBD0/rNS9Zq5j9qeaX7U80uBT0/rBL1mrmP2p5pftTzS4FPT+s1L1mrmP2p5pftTzR9
+ tT0/rNS9Zq5j9qeaX7U80vbU9P6zUvWauY/anml+1PNL21PT+s1L1mrmP2p5pftTzS9tT0/rNT+s1cv+
+ 1PNL9qeaXtqD1HqtTGwLmf2p5p/2p5oe2vBD0ZsCibQud/afmm/aXmncC4EPReqE4sC5wdS81MdR80eB
+ fo9EHhPvC58dR81L9ojxTeBaad7eFE2hYR6iPFQPUfNHgRbvesE4uC5w9R80v2j5o8C0l6YXBP6wXM/t
+ PzSPU/NN9tbb0vrBN6zVzJ6p5pv2p5pcCQXpvVCXqhcz+1PNL9qeaPAvsPTeqE/qhcx+1PNP+1PNDgVo
+ 9N6rU/qtXMftTzS/anmlwIt6f1WpesFzH7U80/7U80uBaS9N6wS9YLmf2p5pftTzS4FvE9N6wS9Zq5n9
+ qeaX7U80uBcC9L6oS9ULmf2p5pftTzS4F9h6b1Ql6wXM/tPzTftPzS4EEh6b1wl64XM/tLzTftLzR4Ft
+ vT+sFIWtXLjqfmpDqnmhwJt6f1Al6gXMjqvmn/avmhwJekNgUTYFzh6r5qJ6p5oiCbek9UJvVC5v9p+a
+ X7T807gTb0vqhL1QucHUfNSHUfNLgVYeh9UJvWCwP2h5pftDzS9tFvQi4KYtC5r9ox3S/acd0DjRYem9
+ UKJtaua/anmm/anmh7aLD0huCXrBc0ep+aX7T80eBVvTC4J/WC5kdT8046n5ocCLel9UJesFzX7T80x6
+ n5pcCrel9YJes1cweqeab9qeaXAq3qhc1P6rVyw6p5qY6p5ocCbD03qhN6rVzR6p5qJ6p5pcCrD03rNS
+ 9YLmP2p5pftTzR4FW9P6wS9YLmP2p5p/2p5pcCHp/WCXrBcx+1PNL9qeaXAh6f1gl6zVzH7U80v2p5pc
+ CHp/Wal6zVzH7U80v2p5ocCnp/Wal6zVzH7U80v2p5pcCnp/WCb1guZ/anml+1PNLgU9N6wS9YLmf2p5
+ pj1TzS4Fz0/rhL12rlj1XzS/avmjwJep9ZqXrBcwOqeakOp+aPtpel9UJC0LnR1HzUh1HzS9tT0QtCRt
+ C58dR80j1HzQ9tDvG0KBuCwT1HzQz1HzThjQ9F6wUheFzP7S80h1PzS9tD1AuCf1mrmB1PzSPVPNM9tT
+ 0xuCb1wuYPVPNN+1PNHgU9T6zUvVauXHVPNP+1PNMOMoeo9VqXqtXMftTzS/anml7ZU9P6rUvVauY/an
+ ml+1PNH2yl6j1Wpeq1cv+1PNL9qeaXtlT1HqtTes1cx+1PNL9qeaPtlT0/rNS9Zq5f8Aanml+1PNL2yp
+ 6f1mpes1cv8AtTzS/anml7ZU9R6zU3rNXMftTzTftTzQ9soep9ZqXqtXLftXzT/tXzQ9soeo9Vqf1QuX
+ HVfNSHVfNLgKren9Rvim9Vq5r9q+ab9qeaXtlNvS+q1L1mrmf2p5pftPzR9sqem9YJvXC5r9peaX7S80
+ faK56X1wn9YLmv2j5p/2j5o+0UvSeqExtC539peaX7S80faK6nofWCf1gucPUvNQPU/NI40F6f1wl67V
+ y/7U8037U803gWvU+uEvWC5f9qeaX7U80uBT1HrBL1wuX/anml+1PNLgQ9P64S9cLmP2p5pftTzR4FPT
+ +sE/rBcv+1PNP+0/NDgU9P6wS9YLmf2n5pftPzS4FPTesE3rBc1+0/NN+0/NLgU9N6wS9YLmf2n5pftP
+ zR4FPT+sEvWC5j9p+aX7T80uBT0/rBL1guY/anml+0/NLgU9P6wS9YLmP2n5pftPzS4FPT+sEvWC5j9p
+ +aX7U80uBT0/rBL1guY/anml+1PNLgU9P6wS9YLmP2p5pftTzS4FPT+sEvWC5j9p+aX7U80uBD0/qtS9
+ QLmP2p5p/wBq+aHAvBel9QJvVC5v9qeaX7T80eBdYek9UJ/VC5sdS80/7S80fbRYek9UJeqFzn7S80x6
+ l5pe2qw9F6oTeqFzh6n5qJ6n5pcCrej9VqXqhcyeqeaX7U80eBNvTes1L1guZ/afmnHUvNLgVb0vrBP6
+ wXN/tHzT/tHzS4EW9ILgpeqFzP7S8037U80OBVh6f1WpvVauZ/anml+1PNDgVYen9VqXqtXMftTzS/an
+ mlwKsPT+q1N6rVzP7U80v2p5pcCrD03qtS9Vq5n9qeaX7U80uBVh6b1Wpeq1cz+1PNL9qeaXAqw9P6rU
+ vVauY/anml+1PNLgVb0/qtTi1q5f9qeaf9qeaXAi3qBc1P6rVy37U80/7V80OBbb1HqtTes1cx+1fNMe
+ qeaXAq3pjc1L1mrl/wBqeaX7U80eBNvUes1L1QuZHU/NSHU/NL211vSeqExtC539peaY9S80fbTo9D6o
+ Ti0LnP2l5px1LzR9tVvSeoE/qBc6Opeaf9o+aHtq0d/1Al6oXPnqPmonqXml7arD0XqhP6rVzR6n5pv2
+ n5pe2i3pvWCXqtXM/tPzS/afmh7aLem9ZqXrNXM/tPzS/afmlwKt6b1mpeq1cz+0/NL9p+aXAq3pvVal
+ 6rVzP7T80v2n5pcCrel9VqXqhc1+0/NL9p+aXAmw9L6oS9ULmv2n5pftPzS4E6PS+qEvVC5r9p+aX7T8
+ 0uBFh6b1gl6wXNftLzS/aXmj7aLel9YJesFzX7S80v2n5pe2q3pfWal6zVzX7T80v2n5ocCrel9YJes1
+ c1+0vNL9peaXAq3pfWal6zVzX7S80v2l5pcBVb0vrNS9YLmv2l5pftLzS9sqt6X1mpes1c1+0vNL9pea
+ XtlVvTeq1L1QuZ/afmm/avml7ZVYen9Vqb1Wrmf2r5pDqnmj7abemFoUhYFzQ6l5og6j5pe2qw9D6oTG
+ 0LAPUfNQPUfNL21aO+bgo+sFzp6l5qJ6n5o+2q3pRa1SFjVzA6p5qQ6p5oe2VW9N6gS9ULm/2p5pftPz
+ Q9sqsPSeqEvWC5v9peab9peaXArR6X1mpvWC5r9peab9p+aXAqw9N6zUvWauZ/afml+0/NLgRYem9UJe
+ q1cz+0/NL9p+aXAmw9N6rUvVauZ/anml+1PNLgVYem9UJeqFzP7T80v2n5pcCrD03qhL1QuZ/afml+0/
+ NLgVYem9UJ/WC5j9p+aX7T80uBVvT+sEvWauY/afml+1PNLgRb1HrNT+s1ct+1fNL9q+aHAi3qvVal6r
+ Vyw6r5qQ6r5ocCren9RqY2tXN/tTzTHqfmlwIsPRG4KBvC5w9T81H9peaeIJt6UXhSFwXMDqPmiDqXmi
+ YJt6YWhP6gXODqXmn/aXmm8CdHoDYEM2hYJ6l5qB6j5oiC4U9B6oSFwXPftDzTftHzTuBRL0wuCl6wXM
+ ftOO6X7U80wwYy9P6wTesFzP7U80v2p5ocCHpvWCXrBcz+1PNL9qeaXAl6b1gl6wXM/tTzS/anmlwKem
+ 9YJesFzP7U80v2p5pcCnpvWCXrBcz+1PNL9qeaXAp6b1gl6wXM/tTzS/anmlwKem9YJesFzP7U80v2n5
+ pcCnpvXCXrhcz+0/NL9p+aPAh6b1wl64XM/tPzS/afmlwKem9cJeuFzP7T80v2n5pcCnpvXCXrhcz+0/
+ NL9p+aXAp6b1wl64XM/tPzS/afmlwKem9cJeuFzP7T80v2n5pcCnpvXCXrhcz+0/NL9p+aXAp6f1wn9Z
+ q5f9p+af9qeaHAl6j1WpeqFzA6r5qQ6p5pe2l6M2hDNwWB+0vNRPUfNOGNT0HrBSF4XNnqPml+0fNH20
+ PS+uEvXC5g9T8037U80PbU9SLmqXqtXKjqvmpjqvmgcanqPVaom4Lm/2p5qJ6n5oe2p6M3hL7QFzR6l5
+ pv2l5p3toenGQE4vC5f9peaf9p+aXtqeo9YJesFzH7U80v2p5ocCnp/WCXrBcx+1PNL9qeaXAp6f1gl6
+ wXMftTzS/anmlwKen9YJesFzH7U8037U80uBT1HrBL1guX/anml+1PNLgU9P6wS9YLmP2p5pftTzS4EP
+ T+sEvWC5j9qeaX7U80uBT1HrNS9Zq5f9qeaX7U80OBD0/rNS9Zq5j9qeaf8AanmlwKen9Zqf1mrmB1Tz
+ SPVPNLgSHpjeFE3hcweqeaj+1PNH21z1PrhL1guYHU/NSHUvNH20vS+sEvWC5wdS8046l5pe2l6T1Qn9
+ ULnB1HzTnqPmh7aHofWCb1gucPUvNRPUvNH21PS+sEvWC5n9p+af9p+aHtoel9UJesFzP7T80/7T80uB
+ D0vrBL1gua/afml+0/NLgU9L6wS9YLmf2p5p/wBp+aXAp6X1gl6wXM/tPzS/afmlwKem9YJeqFzP7T80
+ v2n5pcCnpvVCXqhcz+0/NL9p+aXAuem9UJeqFzP7T80v2n5pcCC9N6oS9ULmv2n5pftPzTeFaXpfVCXr
+ Bc1+0/NL9p+aXCh6X1gl6wXNftPzS/afmjwqel9YJ/WC5n9qeaX7T80uBL03rBL1guZ/afml+1PNLgU9
+ N6wS9YLmf2p5pftTzR4FPTesEvWC5n9qeaX7T80vbS9N6wTes1c1+1PNN+1PNDgU9N6wT+s1cv8AtTzT
+ jqnmlwKeo9ZqibQVzzOoz3VurK3IcCXSLpUCUNjtyKAlVKWTgKW1OAklYBEATBPKBKmUJiE25MXJtqUV
+ EpEpk60qTpk6VoXSSSTUKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFLJJJJKUkkkkpSSSSSl1BymoOSU
+ 1bFXKs2KsUlJGK3WqjFbrSUmCRThIpKYpJ0ySlJJJJKUkkkkpSSSSSlJ0ydJSkkkklLJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSkmTpKWKBYjlAsSU1XpmqT1FqSmwxGCCxHCSmJUCFMqJQUheqdzoV2xZ94T4oLRtt
+ hANpUrQZQgwq3Fala8o7XoTGJzonIT70NxlANkKTXyklZzJUNkK0Gyk5iSkLTCO16A7RD9SElN42IL7F
+ X9VLdKSlzYVNlhUAyUVtSSmxXYi+ogNZCJCFKRXP0WXkPWjcFmXhFTU3mVbosKqbNVaoYgp1KbCjkkoN
+ FauCrRJTn3EqhY8ha19Wiyb2QkpG2ySr1DdyzmDVa+GElNmvGlFGKrtLBCPsCaSpzRRCMyuFYLQlCVqW
+ aFIpwk5BTRvMLMttgrRyVi5DtUaUnqt1WlQ+Vg1P1WrjvSpTesOizbyrr36LPvclSmvOqtUlUt2qsVPS
+ pTq1FWJ0VKp6Pv0SpKO58KhZYrF71n2O1SpTZqsWjQ5ZNJ1WnQkpvg6IdlkKDnwFTuvSpTG+1Z9tpU7H
+ 7kL0y5Gko95KmHFFbjFEOPATVNU3EKdeUQUO6shVdQU0qehxsmVsUWSFy2I4yugxHaJhCnTBUCnZqnLV
+ GUsAnTwmTSpSUp08IKYp08JkVLpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklP/9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxH
+ CAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikk
+ UlIbFVerViqvSUwCOxACOxJTYapqDVNJS6SSSSlJk6ZJSkkkklKSSSSUumTpklKSSSQUpJJJJSkkkkLU
+ pJJJC1KSSSQtSkkkk21LpinTFK1MCoypkJbUrUoIgUQ1ShOBUpNKYlR3JwSlBUkEOUw5PAUs9VLjCtOK
+ p3KWIU52RbCy78ghXspY+RKnACkNuWVXOWVB7SVFtJKlEQpJ9pcUvXcpsxSVYbhEpGIU0ze5N67lf+wH
+ wUfsB8E2gtaPruS9dyvfYD4JfYD4JUENH13Jeu5XvsB8EvsB8EqCWj67kvXcr32A+CX2A+CVBTR9dyXr
+ uV77AfBL7AfBKgpo+u5L13K99gPgl9gPglQU0fXcl67le+wHwS+wHwSoKaPruT+u5XfsB8EvsB8EqCml
+ 67kvXcrv2A+CX2A+CVBTS9dyXruV37AfBP8AYD4JUFNH13Jeu5XfsB8EvsB8EqCWl67kvXcrv2A+CX2A
+ +CVBTS9dyXruV37AfBL7AfBKgppeu5L13K79gPgl9gPglQU0vXcl67le+wHwS+wHwQoKaIvcpjIcrRwS
+ OyC/FITgApiMopfayhPqIQi0p3CE22ftZS+1FVQworaiUuEItMMlyf13JMxyUZuISlQW2h9dyY3uVsYZ
+ S+xHwQoItom9yj67le+wnwS+wHwQoLbaPruT+u5XhgHwT/YD4IaItoG9yib3LR+wHwTHp58ENFW5vrOT
+ +s5aH7PPgl+zz4I6Jtoeu5P67le+wHwT/YD4JUE20PXcm9dy0P2efBN9gPglQTbQ9dyXruV/7AfBL7Af
+ BKgq2h67kvXcr/2A+CX2A+CVBVtD13Jeu5X/ANnnwS/Z58EqCraHruS9dyv/AGA+CX2A+CVBFtD13Jeu
+ 5X/sB8EvsB8EtEW0xc5SFzlb+wnwT/YilSbanrOUTc5XfsRS+wnwQpNueb3JvXctD7AfBL9nnwQoKtzx
+ e5OL3K/+zz4KLsEjsnABVtP7S4J/tTgpvxSFWfUQphEKtN9sKX2sqkQQnaCU7hCrbv2opjkOQmVEqyzF
+ JTTEKtAb3KJvcrowieyf7AfBMICraIvcnF7leHTz4J/sB8Eygi2j67kvXcr/ANgPgl9gPghQVbQ9dyXr
+ OV/7AfBL7AfBKgq2h67kvXcr/wBgPgl9gPglQVbQ9dyXruV/7AfBL9nnwTaVbQ9ZyXruV/7AfBL9nnwS
+ pVtD13Jeu5X/ALAfBL7AfBPACraHruS9dyv/AGA+CX2A+CVBVtD13J/Xcr32A+Cf9nnwQoJtoeu5L13K
+ /wDs8+CX7PPghQVbn+u5L13LQ/Z58Ev2efBGgi2h67kvXcr/AOzz4Jfs8+CVBFtD13Jeu5X/ANnnwS/Z
+ 58EqCraHruS9dyv/ALPPgl+zz4JUFW5/ruT+s5X/ALAfBOOnnwTtE25/ruS+0uCvuwCOyq24panCk2i+
+ 1kJfbT4qtbWWquZTxEJt0hmlTGUSs5gJVuqolIxCrbIyHJ/XcpV4xKMMQqMxCbaxvcoG9yunDKY4R8E0
+ hFtA3uUTe5XzgnwUfsB8E2kW0fXcl67le+wHwS+wHwSACLaQvcpC9yuDAPgpjAPgnUFttL13Jeu5X/sB
+ 8E32A+CGi4ND13JvWcr/ANgPgl9gPglQZGh67kvWcr/2A+CX2A+CFBTQ9ZyXrOWh9gPgl9gPghQQ5/rO
+ S9Zy0PsB8EvsB8EaCmh6zk3rOWh9gPgm+wHwRoKaHrOS9dyv/YD4JvsB8EdFND13Jeu5X/sB8EvsB8Ed
+ FND13Jes5X/sB8E/7PPggaU5/rOTes5aX7PPgm/Z58E3RTni5ymLnK99gPgl9hPgipqC5yXruVo4RHZD
+ dikJwASgOSQm+1lM+ghV3sIT+EKbH2wpfbCqRBTtaSjwhLcOW4qJyHKLKSVYZiEppiFNc3uTeu5XxgE9
+ k/7OPgmaKc/13J/Xcr/7OPgl+zz4JaILR9dyXruV77AfBL7AfBHRDQ9dyXruV/7AfBL7AfBLRTQ9dyXr
+ uV/7AfBL7AfBLRTQ9dyXruV/7AfBL7AfBLRTQ9dyXruV/wCwHwS+wHwS0U0PXcl67lf+wHwS+wHwS0S0
+ PXcl67lf+wHwS+wHwS0U0PXcl67lf+wHwS/Z58EtFND13Jeu5Xv2efBL9nnwS0U0PXcnF7le/Z58E4wD
+ 4JUFNIXuT+u5XRgHwUvsB8EtFND13JvXcr/2A+Cb7AfBKgpo+u5SF7ld+wHwTjAPgloppeu5Rde5aH2A
+ +Ci7BPglQU5pyHJNyXBW34RHZVn4xaiIhSVmWQifbD4rPc0tUC4qURCXQdllR+0kqm2SrFdRKRiFJfXc
+ mde5HZikon2InsmEBDnOvcoeu5aJwD4KP7PPgm0FU0RkOUvtDldHTz4KX7PPghQQ0PtDkvtDle/Z58Ev
+ sB8EqCmmL3Jxe5XBgHwUhgHwSoKafrOTG5yv/YT4JHAPglQU55vco+u5aBwD4JvsB8EaCGj67kvXcr32
+ A+CX2A+CWiWj67kvXcr32A+CX2A+COimj67k/ruV37AfBP8AYD4IUFNH13Jeu5XvsB8EvsB8EtFNH13J
+ eu5XvsB8EvsB8EKCmj67kvXcr32A+CX2A+CVBLR9dyXruV77AfBL7AfBLRaWh67k3rOWj+zz4Jfs8+CW
+ iy2gLnKYucro6efBP9hI7I6KagvcmOSQrLsQhV7MchPoJticshR+2nxQLKyFXIKPCE23/tpT/bCVngFG
+ ZWShwhNtk5TionIcpMxyUZuGSmmIVbUNzlH1nLRGAT2Uv2cfBMNKtzRc5SFzlofs4+CX7PPghoi2h6zk
+ vXcr/wBgPgl9gPglQRbQ9dyXrOV/7AfBL7AfBHRFtD13Jeu5X/sB8EvsB8EtEW0PXcl6zlf+wHwS+wHw
+ S0VbQ9dyXruV/wCwHwS+wHwS0TbQ9dyXruV/7AfBP9gPgm0FW5/ruS9dyv8A2A+Cf7AfBCk20Rc5P6zl
+ eGAfBS+wHwSpc5pucoG5y1DgHwUD08+CKXO9Zyf13K/+zz4JfYD4I0FOeb3KPruWiennwTfs8+CVBTRF
+ 7lMXuVwdPPgpDAPglQU0vXcm9dyv/YD4JvsB8EaCWj6zkxvcr/2A+Cg7BPgjQU0DkOTfanKy/DIVd+OQ
+ jwhShluRBmOVU1EKTaylwhTcGU4p/tDih10kq0zFJS4QpAbnKJucrwwiU/2E+CFBTQ9ZyXrOV/7AfBN9
+ hPghoppeu5N67le+wnwTHBPglQQ0fXcl67lc+wnwS+wnwQpTU9dyXrOVwYR8E/2E+CVKaJucom1y0PsJ
+ 8EvsB8EqQXO9ZyXruWh9gPgm/Z58EKWEtD13Jeu5aH7PPgl+zz4JUEW5/rOS9Zy0P2efBL9nnwRVbQ9Z
+ yXrOV/8AZ58Ev2efBKgq2h6zk3ruWh+zz4JfYD4JUE25/ruS9dy0P2efBN9gPglQVbQ9ZyXruWh+zz4J
+ vsB8EqCbaHruTi9yvfYD4JxgHwR0VbS9dyb13K/9gPgl9gPglom3P9dycXuV77AfBMcA+CNBVtP7Q5L7
+ S4Ky/DIVWyghHhCrX+1kJvtpVV7CEEyjwhVuh9sKf7USqLASrVdJKXCE2k+0OTG9ysMxCUUYJPZCgq2j
+ 67k/ruV77AfBOMA+CGibaPruTG9yv/YD4JjgHwS0QS0PXcl67ldOAfBN9gPgjQW20/Xcl67ld+wHwS+w
+ HwSoKtpeu5L13K79gPgl9gPglQVbS9dyXruV37AfBL7AfBKgm2l67kvXcrv2A+CX2A+CVBVtL13Jeu5X
+ fsB8EvsB8EqCraXruS9dyufYD4JfYD4JUEW0/XcnF7lc+wHwTjBPglQRbUFzk/ruVwYJ8EvsJ8EqCLaR
+ vconIcrpwj4KBwj4I0FW1PtDkhkOVr7EU4wT4JUE21fXcl67lcGCfBP9hPghQTbR9Zyf1nK99gPgl9gP
+ glQXW0hc5S9dyufYT4KLsMhGgutqHIcFA5bgjWYxCqWVEI8ITbI5jk32xyAaypNpJS4QhOMpykMhyZmM
+ SrDMMlLhCEPruTeu5XBhHwS+wnwQoJafruSN7ld+wHwS+wHwQoKc83uTeu5aBwD4Jv2efBCgppi9ymL3
+ K2MA+CmMA+CVBTQN7k3ruWh9gPgm+wHwQoIaIvcpeu5XBgHwT/YD4I0FNE3uUfXctD7AfBN9gPghQU0P
+ Xcl67lf+wHwS+wHwSoKaHruS9dyv/YD4JfYD4JUFND13Jeu5X/sB8E32A+CVBTR9dyXruV77AfBL7AfB
+ Kgpo+u5L13K99gPgl9gPglQU0fXcl67le+wHwS+wHwSoKaHruT+u5XvsB8EvsB8EaCGj67k4vcrv2A+C
+ kMA+CWiLaPrOT+s5XvsB8ExwSOyWigWl67kvtJCO/EIVayghOoMgLL7YQl9tPiqb2kIRlLhCiXS+2lL7
+ WSs9oJVmuolDhDGSn+0OKXrORK8YlHbhEpUFpLUNzlA3uWh9hPgonAPgm0Ftucb3JvXcr5wD4JfYD4JU
+ FwLRF7k/ruV4YB8E/wBgPglQX20PXcl67lf+wHwS+wHwSoKtoeu5P67lf/Z58Ev2efBCgi2h67kvXcr/
+ ANgPgl9gPglQWktD13J/Xcr32A+Cf7AfBCgstz/Xcl67lofYD4JfYD4JUFwLn+u5L1nLQ+wHwTfYD4JU
+ GS2j6zk4ucr32A+Cf7AfBGggloeq5MbnLQ+wHwTHAPgistzzc5N67lfOAfBN9gPglQSC0fXcl9ocr32A
+ +CX7PPglQXAtD7Q5L13K/wDs8+CX7PPglQXW0Re5SF7ld+wHwS+wkdkQAq2qL3KX2goxxCEJ+OQnUFWt
+ 9qKicsoVjCFWdKXCi22csqBynKqASj10FyXCEEsxkuKkL3IrMMlHbgnwQ4Qi2p67kvWcrwwT4J/sB8EK
+ CraIucn9ZyujAPgn+wHwQoIto+s5RNzlo/YD4KJwD4IaKtzTe5N67loHAPgo/YD4I0E20he5TF7lcGAf
+ BSGAfBCgq2j67kxvctD7AfBMcA+CFBVuf67k/ruV77AfBL7AfBGguDR9dyXruV/7AfBL7AfBGgloeu5L
+ 13K/9gPgl9gPghQU0PXcl67lf+wHwS+wHwSoIaHruS9dyv8A2A+CX2A+CFBTQ9dyXruV/wCwHwS+wHwQ
+ pTQ9dyXruV/7AfBL7AfBKlND13Jje5aH2A+CX7PPglSXNNzkvWctL9nHwT/s4+COi5zxc5TF7ld/Z5HZ
+ QdhEJ4pLXGS4J/tRTvxyFXfWQpREKbH2wpfbCqRBTgFHhCm2coqJyChsrJRhjkocIWoze5N67lYGISpj
+ CKaQENX13JG5yujBPgpfYD4KMgIc03OTes5aZ6efBRPTz4IaKc/13J/Xcr37PPgl9gPgnUFNH13Jeu5X
+ vsB8EvsB8EqCWj67kvXcr32A+CX2A+CNBTR9dyXruV77AfBL7AfBKglo+u5L13K99gPgl9gPglQU0PXc
+ l67lf+wHwTfYD4JUFNH13JvXcr/2A+Cb7AfBCgho+u5L13K/9gPgnHTz4JUEOf6zkvWctIdOPgl+zj4I
+ aIc713J/Xcr56efBN9gPglQU0ftDkvtDld+wHwTfYD4JwAS0/XcpC9ytfYT4KQwT4I0EtUXuUvWcrIwj
+ 4KX2IpwAXBqeu5ROS4Ky/EIVW2ghPEQuWOWQonNPiq1jCEIqTgCW6cwpvtTiqjWklW6scuUU4haVvXcn
+ 9ZyuMwSeyKOnnwVYhY5/ruT+s5X/ANnnwS/Z58EqU0PWcm9Zy0P2efBL9nnwSpTn+u5L13K/9gPgl9gP
+ glQU0fXcn9dyvfYD4J/sB8EqCmj67kvWcr/2A+Cf7AfBKgpz/Wcl6zlf+wHwS+wHwSoKc/1nJeu5X/sB
+ 8Ev2efBKgpoeu5L13K/+zz4Jfs8+CSmh67kvWcr/AOzz4Jfs8+CVKaHrOS9Zyv8A7PPgl+zz4JUpoes5
+ L1nK/wDs8+CX7PPglQU0PWcl6zlf/Z58Ev2efBKgpoes5L1nK/8As8+CX7PPglQQ0PWcl6zlf/Z58Evs
+ B8EqCnON7kvXctA9PPgm/Z58EaCmiL3KX2hytnAPgoOwyE8AItr/AGlwTfaylZQQqz2EJ3CFW2fthTfa
+ yqe0orKyUeEKtP8AaXJje5SZjEqw3CJTSAq2mb3JvWctEdPPgl+zj4Jmirc8XORG3OV0dPPgpDAI7IaK
+ tqC1yl6zlbGEfBL7GUaRbRNzkM3uWicI+Cj9gPgjQVbn+u5P67le+wHwT/s8+CWiraHruS9dyv8A2A+C
+ X7PPghQVbQ9dyXruV/7AfBL7AfBCgq3P9ZyXrOWh9gPgl9gPghQVbn+s5P6zlf8AsB8EvsB8EKCraHru
+ S9dyv/YD4Jfs8+CdQVbQ9dyXruV/9nnwS+wHwSoKtoeu5L13LQ/Z58E/7PPghQW253ruTeu5aX7PPgmP
+ Tz4JaKtzfXcnF7lfPTz4Jfs8+Cdom2kL3KQvcrn2A+CX2E+CNBdbU9dyXruVo4RUTiFPACba32hyb7UQ
+ iuxSEB9BCPCFWz+1lL7aVUewhCMo8IVbofbCm+1OKpsBKtVUFyBiFWv67kvWcrbMInsijp58FGaRbn+s
+ 5L13K+cA+CX2A+CGiLaHruS9dyv/AGA+CX2A+CFBVtD13Jeu5X/sB8EvsB8EqCLaHruS9Zyv/YD4JfYD
+ 4JUE20PWcl6zlf8AsB8EvsB8EqCbaHrOS9Zyv/YD4JfYD4IUE20PWcpC9yu/YD4JfYT4JwARbT9dyXrO
+ Vz7EfBL7EfBOoItp+u5L13K59iPgl9iPglQVbT9dyXruVz7EfBL7EfBKgq2n67kvXcrn2I+CX2I+CVBV
+ tP13Jeu5XPsR8EvsR8EqCrafruS9dyufYj4JfYj4JUFW0/Xcl67lc+xFL7EfBGgq2ib3KBvctA4J8FA4
+ B8EdE25/2hykMlysuwSOyE7EITgAq1hluUxmFV3VEIZaQncAVbe+1lMcoqoAUVtZKHCFWzOQ5QN7kZuM
+ SijCJ7JpAVbT9dyXruV77AfBP+zz4JuiraQyHKQvcrf2A+CX2E+CVBVtcXuT+s5WRhHwT/YygQFW1Dc5
+ QNzlf+xHwTfYD4JhARbn+s5L1nLQ+wHwS+wHwQpFtD1nJes5X/2efBL9nnwSoJtoes5L1nK/+zz4Jfs8
+ +CVBNtD1nJes5X/2efBL9nnwSpVtD1nJes5X/sB8EvsB8EqVbQ9ZyXrOV/7AfBL7AfBKkW0PWcmNzlof
+ YD4Jfs8+CVItzTc5N67lpfs8+Cb9nHwSpVueL3KQvcr37PPgl9gPgjQRbUF7kvXcrgwT4J/sJ8EqCraJ
+ ucl6rlf+wHwSGAfBFVtEWuUvXcFcOCfBDfiEI0FwLX+0uCicsqVlBCqWVkI8IXApjmFIZZVMsKkxhR4Q
+ m26MklP67kOuolWmYxKBCba5vcm9ZyvDCJ7J/wBnnwUZAQ5/rOT+u5X/ANnnwS/Z58EqCmh6zkvWcr/2
+ A+CX2A+CVBTQ9ZyXrOV/7AfBL7AfBKgpoes5L1nK/wDYD4JfYD4JUFND1nJes5X/ALAfBL7AfBKgpoes
+ 5L1nK/8AYD4JfYD4JUFND1nJes5X/sB8EvsB8EqCmj6zkvWcr32E+CX2E+CVKaPrOS9ZyvfYT4JfYT4J
+ Upo+s5L1nK99hPgl9hPglSmj6zkvWcr32E+CX2E+CVKaPrOS9ZyvfYT4JfYT4JUpo+s5L1nK99hPgl9h
+ PglSml6zkvWcrv2E+Cf7CfBKlOeb3KJvctE4B8EN2AfBEAJaP2lycZbkd+ER2Vd+OQpBEJZ/bCl9sKqu
+ YQhwUeEKb32spfaXKqxhKs10EpUpRvcoG9yttwyVMYBPZNICGgL3KYvcro6efBTHTz4JuimkL3J/Xcrv
+ 2A+Cb7CfBKgpp+s5P6rlcGEU4wj4I0FNE2uUTc5aH2E+CY4B8EKCHP8AXcl67lf+wHwS+wHwQoKaHruS
+ 9dyv/YD4JfYD4JUFND13Jeu5X/sB8EvsB8EqCmh67kvWcr/2A+CX2A+CVBTQ9ZyXrOV/7AfBL7AfBKgp
+ oes5L13K/wDYD4JfYD4JUFND13Jes5X/ALAfBL7AfBKgpoes5N6zlo/s8+Cf9nHwQpDm+s5OL3LQ/Z58
+ E32A+CFBDSF7kxvcr/2A+CRwD4J1BLmm9yj67lonAPgo/YD4IgBc0xe5TF7lb+wEdlB+GQnABLXOS4Jv
+ thTW0EKq9pCPCFNwZpT/AGwrPEorGko8IU2/tRKb7Q5MyglWG4hKXCFNf13Jeu5XBgnwT/YD4JhAQ0vX
+ cl67ld+wHwS+wHwQoIaXruS9dyu/YD4JfYD4IUENL13Jeu5XfsB8EvsB8EqCml67kvXcrv2A+CX2A+CV
+ BTS9dyXruV37AfBP9gPglQS0fXcl67le+wHwTfYD4I0EtL13Jeu5XfsB8E/2A+CBAQWj67kvXcr32A+C
+ X2A+ChIWlo+u5L13K99gPgl9gPggApo+u5L13K99gPgl9gPgngJaPruS9dyvfYD4JfYD4J1KaPruS9dy
+ vfYD4JfYD4J1BTR9dyXruV37AfBL7AfBGglpeu5L13K79gPgl9gPgjQU0vXcmN7le+wHwSOAfBCgpzzk
+ OCiMpwVyzCIVKzHLSkYhTboyzK28O8lc1U0grcweyYQl6bGMhX2BZ2KdFoNKhkEs4SUS5NuUdKXJUSUi
+ UyaVKJTSlCUKMlSpThKE4TbUuE6ZOngqUkkknoUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKWSTpklKS
+ STpKUkkkkpSg5EUHJKatirlWLFXKSmdat1qqxW60lJgkUgkUlLJk6SSlkkkklKSSSSUpJJJJSk6ZOkpS
+ SSSSlkkkklKSSSSUpJJJJSkkkklKTpJJKUnTJ0lKKBYjlAsSU1Xpmp3pmpKbDEZBYjBJTEqBRChlBSN6
+ p2slXChObKfFBct9SiKoWg+tVrBtVuK0o9oCr2qb7IQS7cnoQEElHqYVJlUq7VSgpVdak+pWmMATuaEL
+ U5NtapvYVs2VyqzqJRU5gaUVjVaNEKBZtSUkrarLGBVWOhWqnykpKKk5qRqxKPs0TTJTlXVLMvrXQXME
+ LIyWwjanL2aq1Q1AcYKNS9FTrUNCuCIWdVZARTfCBUyyCIWPkwrd96zL7ZSUwboVpYtgCx9+qs03Qip6
+ ii4QrHrBc/Vkq0zIlNIU6hsCjvVIXSph8pUputcpE6KsxyMCgQlqZIWJkt1W7eJWVeyU+IS57BBWjQ6F
+ UDNVarEKSkNl79Fn3vVl50VC4oUpHv1R6nqlOqPUUKU6ldiP6mio1lGBSpS9rpVRwkqw7VQ2pUplQ1aV
+ Q0VOlqv1jRMKWFp0WfbJWq9kqq+iUEtFlZJV2nGlErohXamAJEqRsxgo2UgBXCQFVvsEJoU5OTWFnObq
+ tDJsWeTJSKm1jDVbuIsTGGq3cRqjKnSrRSEOvREJURUwcFBTJUCE1S4RAEMKQckpkQoFPKYpJWSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Tr0kkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSS
+ SSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSl0ikkUlIbFVerViqvSUwCOxACOxJTYapqDVNJ
+ S6SSSSlJk6ZJSkkkklKSSSSUumTpJKWSSSQUpJJJJSkkkkqUpJJJLhUpJJJDhUpJJJDhUpOmTpcKlQnA
+ UU8pcKmYCYpSmJSpTByGUUhRhOCWIU2pgERoTwVLEKrc1XiFWvCcCpxMlqyL2LayQsm7lSiamj6UlHqo
+ BSA1Vyhqk9xSajFBV+vDCfHYtKtiBmpo/Ygm+xBamwJiwKP3Fpcz7EEvsQWntCWwJe4pzPsQS+xBaewJ
+ bAj7inM+xBL7EFp7AltCXuKcz7EEvsQWltT7Al7inM+xBL7EFp7AlsCXuKcz7EEvsQWnsCWwJe4pzPsQ
+ S+xBaewJbAl7inM+xDwS+xDwWntCW0Ie4pzPsQ8EvsQWntCW0I+4pzPsQ8EvsY8Fp7QltCXuJcz7GPBL
+ 7GPBae0JbQh7inM+xjwS+xjwWntCW0Je4pzPsY8EvsY8Fp7QltCXuKc0YQ8FL7EFohgUtgS9xTj2YYAW
+ dkYwC6O1uiycpqcMiXnb6gFTcxaeSFnPOqk9xNLMYFbqqBVZhV+hL3FU2accFXq8QJscLSqYgci2mqMM
+ Kf2MLRaxS2JhyIpzPsYTjDC0dicNQ9xbTn/Ywl9jC0dqiQhxqpofZAl9kCvJQlxopo/Ywm+xhaEJ9qXG
+ mnO+xhL7GFpbUtqXGmnN+xhL7GPBaW0JbQlxppzfsY8EvsY8FpbQltCXGqnN+xjwS+xjwWltCW0Jcaqc
+ 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
+ LYQnmEBqlhYZVG1sqy9yCdVIApripEDEZrJRRWnWpo2NVG1i17a1RtYm2pzvTViqtEFeqs1VJKYsrRgx
+ WWUonpIWpolibarT2QgO0StTOsQrlZVFhVuooJbYEpemEzSpF8JiVtoCibA1DsuhUrchKlNmzJhUrsiV
+ VsvlBLyUVL2u3KDKySiMZuVymhNKmWLStvHZAVaimFo1thRlSUaJEpKJTFLykmCdMKlimUoTQgpaU6aE
+ 6SVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//V
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSS
+ UpMnTJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpdIpJFJSGxVXq1Yqr0lMAjsQAjsS
+ U2Gqag1TSUukkkkpSZOmSUpJJJJSkkkklLpk6ZJSkkkkFKSSSRUpJJJFSkkkkVKSSSSUpJJJJSk6ZOgp
+ ZOmSSUvKUppTIKXSSSSSpTBUEgipKXKre7RFJVS8pKczKcsq06rQyXLLsOqcpZnKv44Wew6rRx05Tq44
+ WjWFn460K0lJVEqUqJUZWqSSSQQpJJJFSkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSSpJ
+ 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
+ BSDkxKFLSumSlKUkLpJpSTULpk0pSgpkkoylKSmSZNKUpJZJKMpSglkkmTSihkkoylKcELpJpSlFS6SZ
+ JJS6SZJJS6SZJFK6SaUklLqSjKeUFKKE9ElDeipzcvhc7mcro8oaLnswapKcwfSWthcrLA1WrhcpJejx
+ OFotWficLRagVLFMnKiSkpSUpiUpSUylKVFOkpcqJTpklLJwknTSpSdMnQUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSQUpMkkkpSSZOkpSdMkkpdQcpqDklNWxVyrFirlJSRit1qoxW60lJwkUwSKSlJkkklKSSS
+ SUpJJJJSkkkklKTpk6SlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJS6dRUklLFAsRygWJKaz1Fqd6ZqS
+ myxGCAxGCSlnIZRChFJTApwUxUSUYqZkoFjJU9yUhWQtc+2iVWfjLXIBQ3MCKHEfQQqtlZC3LKwqVtYR
+ U47mFO1hVx1YTsYEVI66yrDaijVsCtMYEFNQUlFbQrrWBEDAkprV0K3XXCkAApghBSi3RVbmSrkyouYC
+ kpwMiorOsqIK6S+kLLvqARU51bNVpYzVUDYKv4ySnToYrJr0Q6BorB4QJU52SxY2QFu5PCxMkIqabRqt
+ PFZKzW8rTxXgJKdemoQjFgCFVYIU3WhJSxACW8BAfcguuQU2n2Ks96EbZUS6U+IUuSk1QlOHQplNqsKw
+ GKpXaFZFoUclI7mrOtCvXWhZl1qASs3lXaAsxtuqvUWhOQ6tTEYs0Vem0I5tEKI3aWreIWda6FdybQsm
+ 63VEFSdjldpKy6nyVp0J1qbYMINlkIh4VK9yCkV1yo2Wynteq5MoqXmUauuVGtsq9UwJpUqqpX6WQgtA
+ CM18JpU36laas+qxXGPUZUmTFNKRTEqCkFEKYTShUJQnSQUxhMpFRQSpJJJJKkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//W69JJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk
+ 6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkklKSSSSUpJJJJSkydMkpSSSZJSkkkklKSSSSUpOkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlwkUgkkpDYqr1asVV6SmAR2KuEetJTZapqDVNJSk6SSSlJkkklKSSTJK
+ XSTJ0lKTpkkFKSSSSUpJJJFSkkkkVKSSSRUpJJJJSkkkklKSSSSUtKUpQlCClpSTwnAQUoKUJgFIJJWh
+ OGp1IJKRuaqWQFouCpZARU4OUFl2crWywsm3lFS1fK0sdZtfK0sZOU62OtBio44WhWElM1EokKJCatLF
+ MpQlCSGKSlCUJKYp08JQkpikpQlCSWKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSWKSlC
+ UJKYpKUJQkpikpQlCSlgppgFOEkNe1ZeUta0aLJygnBcHCy1jXHVbGWsa7lPZAjZytHFWcwarTxQkou5
+ iLXpWTiha9IQK1stTlO0JyE1aUZSBTkJoRWrynSAUgEFMYTqUKJCCl5SlRSARUumTwlCCVpSlPCUJJWl
+ KU8JQklaUpShPCSFpTylCUJKWlPKUJQipSSUJQkhYlRJUiE0JpSxShTDU+xNSihSapFiQakpK1Rt4U2h
+ QtGiIU4ub3XM5p5XS5y5jN5Kt41ORYdUWjlBs5RscaqchDvYXZdHiHRc5hdl0OLwoJBLpsOicqDOFOFX
+ KlkylCUJpQxSTwlCClkk8JQipSZPCUJFCySeEoUUkrJJ4ShNClkk8JQrEVLJJ4ShFTFJShKEwqWhPCkG
+ p9qCmEJoRITEJ4QjSUoShJTFOnhOAgpjCUKcJQkpgpBKEoRSEVp0WRmFa1vCx8xSxXPPZh5WNadVr5h5
+ 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
+ lJ0ydJSkkkklKTJ0ySlJJJJKUnTJIKUkkkkpZJOmSUukkkkpdQcpqLklNWwKuVZsVcpKZMVutVWK0xJS
+ YJFIJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUnTJ0lKUgmThJSxQ
+ LFYKBYkpqPTNUnqLUlNhiKEJiKElLFDKm5DKSmBKE4ojkJwTo7qRl8KJthM8Ku+VZCKTG9ROQqbnFDLi
+ jSqbT71VttUCSgvBRVSzrEwtQ3NKhtKSqbrL1ZZkLLaCjNlJVOq3IRBkLMaSphxQVTpC9Tbcs1rijsJS
+ VToNsU/UVRsqclKlUyufosrIcrlpKzrpKSqQA6q/jKi1uq0MZqKqdajhWTwq9A0Vg8JhTTSyAsfJYty5
+ srMvrlORTkEQVYps2p31KAaQip0GZEBOclUJKaSkqm4bpTB8qu0EqzWxJVM2iUTapsrRCxK6Q1X6Ks+y
+ FbtaqFwKXEhkMiEQZSzyCnAKaZKblmRKpW2ypFpKGaiUrSwD1ZqthAFJRW1EJcSHRryYRTlaLPa0hOQU
+ 0lLO/IlUH2SUSwEoOwyjam1jmStnH4WRjMWxjhG1Nh3CoXhaJEhVra5StTjWNKEGLSfQhmhK1NdghWmP
+ hQ9KEtpCVqT+ona9AAKIxpTSVN2p6v1OWdUFfqCYVNtpUkNiIE1TIBSTBOmlSlElIpigpeUyZOglSSSS
+ SVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//1+vSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKWSSSSUpOmTpKWKrvVgqu9JTXcnamcnakpsMRwgMRwkpdJJJJSkkkklKSSSSUpMnTJK
+ UmTpklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKXCSQSSUhsVV6tWKq9JSMI9aAEetJTZapqD
+ VNJS6SSSSlkkkklKTJ0ySlJ0ydJSkkkkFKSSSSUpJJJFSkkkkVKSSSStSkkkkbUpJJJC1KSSSStTIBOA
+ mBTgoWpfamhSlMSlamKaU5USklfcpByEpNSUkJ0VTI4VohVbxoiFOJlLJt5WxlBZF3KdSmFZ1WljFZTX
+ QVeoshOpTv4xWlWdFh49y0GXpcKnQlQLlWN6gchLhK0tzcluVL7Ql9oS4Shu7ktypfaEvtCXCVN3cluV
+ L7Ql9oS4Slu7ktypeul66XCVN3cluVL10vXS4Spu7ktypeul66XCVN3cluVL10vtCXCVNzcluVP7Ql9o
+ S4Spubk8ql9oS+0JcJU3NyW5U/tCX2hLhKW5uS3Kn9oS+0JcJU3NyW5U/tCX2hLhKm5uS3Kn9oS+0JcJ
+ U3g5T3LPGQp/aEOAoTWu0WRllW7b1l5NspwiVwcrLKyLeVpZL5WXYdVJwsgKqxqtPFWWx2q0MZ6XCgl6
+ DFK1qSsLGtWlVemmJRbqtKlKotvUvtCbwFaS2iU0qqchL1wjwlbbbBUwVSF6kL0OEqtuEqBKreumN6HA
+ VW2JUgVT9dOL0eEqtuSlKqeul64S4SltylKqeul66XCU225TSqvrhL1wlwlVtqUpVX1032hLgKrbcp5V
+ T10vXS4CptylKqeuEvXS4Si23KUqp66XrhLgKrbRKaVW9dN66aYlNtsFSBVL104yEOEqtuSkFUF6kLwl
+ wlVtwFCtdoheugW36IiBU0M0rmswcrcy7ZWFlOlWoRVblPGqLQNUOw6qdJ1U1Kt3cM8LoMU6LmcR8Qtz
+ GuhRSiq3bY7RE3LPZep/aFXMCq29KUqkMhP66aYlVtyU0qp9oS9dDhKLbcpSqnrpeujwlVtuUpVT10vX
+ QMSq23KUqp66XrqMwKrbcpSqnrpeumiBVbblKVU9dL11PGJVbblKVT9dP66PCVW25TyqX2hL7QmmJVbe
+ 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
+ mJU3pSlVRel64TeEobUp5VT1wl66XCUNvcmLlUOQom9LgKm7uS3Kl9oS9dLhKG7KUqn66X2hDhKm5KUq
+ n9oS9dLhKm3KUqp66XrocJU25Tyqf2hL10uEqbkpSqf2hL7QlwlLclKVT+0JfaEuEqbspblT+0JvtCXC
+ VNwuTblTOQm+0IcJQW5uT7lS+0JfaEuEobspwVTF6f10RErm7uThyo/aEhkJ3AUt1zln5J0UzeqmRdIR
+ jApcjNCwMluq28uyViXu1T+FTTDNVoYrVSB1V3HcjwqegwtIW7Q7Rc5i2Qtim7RIxU6wckSqQvT+uouA
+ oLclNKqeul66XCVrclKVT+0BL7QlwobkpSqf2hL7QlwlTclKVT+0JfaEOEqbkpSqf2hL7QlwlLclKVT+
+ 0JeulwlTclKVT+0J/XS4SptylKqeul64S4VNuUtyp+um+0I8Km7uS3Kl9oTfaEuFTe3JblR+0JfaEuFT
+ e3JblS+0JeulwKbu5LcqXrpeulwqbm5Lcqfrpeulwqbm5Rc5VfXUHXo8KmGUdFzubytjJukLDynyUKU0
+ I9y1MLlZg5WphoUp6PEOi0AVmYp0Wg0oUldxUU5SAQUoBTAUQphC1LqJTyolC1MSmTlMlal5STJ0rUuk
+ kkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkkgpSSSSSlJJJJKUkknSUuouUlFySmtYq5VixVykpkxW2
+ KqxWmJKShJOEklLJk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSSUsnSSSUun
+ CZOkpRQLEYoFiSms9M1O9M1JSdiMAhVo4SUjcEMhGIQyElISFAtRiE0IxU1nMQH1K+QhuarMSpzXUqHo
+ LRLEhWE61Od9nTHGWqKgkaglanGOKoHEW0agm9EJWpxxiKbcVaopCmKglanLGMn+zrU9IKJrCVqc4UIz
+ KlZ2KbWIWpE2tOWKwGpi1K1NCytVH0rVcyUI1SjanMbRqrlNcIwpRWMhC1JqhCNCG3RElNJSie2VUsql
+ Xzqhlkogqcp9CEcdaxqUfSTrQ5Rx1H7OtY1BR9IJWpz2UKyymFZFSIGJWlE1kJEIxCg4JpK0tWxkqo+m
+ VolspCqULQ5P2WVJuItcUBTFIQtTkjET/ZFr+kEvSCVqckYikMRaorCkKwhanK+yJjiLY9MJjUErU4L8
+ VB+zLdfUEE0o2pz6qYV+lsJCqEZjYStSQNUXVyiNUwEbU0zQoGhX9qYsStTnHHUTjrR2JGtJTmegptpV
+ 41hIMQShrrVpjEmtRmhMKFwFIJJIFTIFOohOEwqUU0KUJQgphCdPCZJKkkkkkqSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Dr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkk
+ lKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJk6ZJSkkkklKSSSSUu
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSl0kgkUlIbFVerViqvSUwCNWghGrSU2Wqag1TSUpOmTpKUmTpklKSS
+ SSUpJJJJSkkkkFKSSSSUpJJJBSkkkklKSTpJWpZJJJC1KSSSTbUpJOmStSxKbckVFK1JA5PKGpBG1MiU
+ ySZOCVQptChKkCpApIq140Ry5VrjoiAlyMsLFvW3lLFyAp4xQ0y6CjVWwq7wZSbIUgip16b4VxmSsRjy
+ EdthThEKdY5KgclZptKibCncAWup9pS+0rL9QpeoUuAIdT7Sl9pWX6hS9QpcAU6n2lL7Ssv1Cl6hS4Al
+ 1PtKX2lZfqFL1ClwBTqfaUvtKy/UKXqFLgCnU+0pfaVl+oUvUKXAFOp9pS+0rL9QpeoUuAKdT7Ul9pWX
+ 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
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSkkkklKTpk6SligWI5QLElNV6TUnpNSU2a0Y
+ INaOElLFDIRChlJTAhRUyolEKYlQKIVAhSApRlOEiE4CVqZhOmCdK1LFMnTJWpcJwmTpWpcqBUlEpWpg
+ pBNCkAlamSYp1EpWpiQnDJSCI0JWpgGJ9sI4aokJWpFwnBTEJkrUzBTwohTCVqVCiQpqBKVqYkKMKRKZ
+ K1KhOmSStSxUCpFRKBKCoBFa1QaEZqFoXDUipKDihaliU0qJKZK1JAVIFDCdK1JdyiSoyokpWpkdVAhK
+ U6VqYbUoUyop1qXBUgVBOjame5PKHKUpWpJKUqEp5StS5TJiUgUlJWooQWowQKmSZOmTVKCkFEKSaVMk
+ k0pSgpRTFKUyKVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKf/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTp
+ k6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOkpYqu9WCq70lNdydqZydqSmwxHCAxHCSl0kkkl
+ KSSSSUpJJJJSkydMkpSZOmSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpcJFIJFJSGxVXq1Yq
+ r0lMAjVoIR60lNhqmFBqmElLpJJJKUmTpklKSSSSUpJJOkpSSSZBSkkkklKSSSSUpJJJKlKTpkkuFSkk
+ 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
+ JHIpxPRKXolbX2NL7GmGanF9Ep/QK2hhp/saHGpxfQKXoFbf2NL7GjxqcX0Cl6JW19kTfZEvcU43olL0
+ Stj7Im+yJe6px/RKXolbH2VL7Il7qnH9EpeiVsfZE/2RL3VON6JT+iVsfZEvsiHuqcc0lDNC2jiqP2VN
+ ORTlV0arRx6oRW40KzXVCYZqTUiFcaq7BCOEwyUkTqAKkCmlSlEqSiUwhTFOEk4CaYqXCdMkm8CV0yUp
+ J4jSlJJJJ6lJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSClJJJ0lKTJJJKUnTJJKZKLlJRckprWKuUexV
+ ykpmxW2KoxWmJKThJMEklKSSTJKUknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJMnSUp
+ JMkkpdOmTpKWKBYjlAsSU1XpNSek1JTZrRggVo4SUooZUyhlJTEpkimlJSlEp0xTrSwhOE6QCXEpcJJw
+ E8JcSmKZShKEuJTEKSUJ4S4lLKJU4TEJcSmCkEycJcSl1EqSYpcSmIRWlCUgUrUnBTFRDkpS4lMSFGFM
+ poS4lLBPKSYpcSlyVAlIlRJS4lKlIFMnCXEpkEkgpQlxKYEKMIpCiQlaGIRQUNSBQQklQJSlMUlMU4CU
+ KQCClAJ0gnSUxKiVMqBCSmMqQKaEkVLykmThFSydPCSNqWTKSZFSyeUySSlSnCipBJSViM1BYjtQUyhN
+ CkmKapZJJMU1SpTSkUySmUp1EKSKVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKf/0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSTpKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKW
+ STpJKWSTpJKWSTpJKWTpJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pn
+ J2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJk6ZJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlwkUgkUlIbFVerb1VekpGEdiAEetJTYapqDVNJS6SSSSlJk6SSlkkkklKTpk6SlJk6ZBSkkkklKSS
+ SRClJJJJwUumSSTlKSSSRUpJJJJSkkkkksgkUyRQQxKipFRTVMgpgKIUwmlK0JoU1Epqlk0JEpSgpW2U
+ vTCcFSBS1UxFQS9IIkpFyGqkRqCb0wplyaUQSpj6QS9IKYKeVKCVqP0gl6QRJSlOsoR+kEvSCJKUpWVI
+ /SCXpBElKUrKUfpBL0giSlKVlSP0gl6QRJSlKypH6QS9IIkpSlZUj9IJekESUpSsqR+kEvSCLKUpWpF6
+ QS9IIspSlakXpBL0giylKVpRekEvSCLKUpWpF6QS9IIspSlakXpBL0giylKVqRekEvSCLKUpWhF6QTek
+ EaUxKVlfFCawm9MIqZG2S0fpBOKgiJJWpgKwn9IKadCytYekE3pBFSlKyhF6QS9IIkp5SsoRekFE1BHl
+ RJSsoQ+kEhUEWUglamAqCf0giAp5StSL0gl6QRZSlK0ovSCb0QjJpStKL0gl6QRUkrSi9IJekEVJK0Iv
+ RCf0giSnSsqRekEvSCKlKVlSL0gl6QRZSlKyhCagm9II0pJWkIvSCf0giJ0rSi9IJvSCKoylZUw9IJek
+ FOU4KNlSI1BN6QR0oTSVIPSCf0gjJIWVIvSCXpBElNKcChiKgn9IKYKeUrKkfpBN6QRUpSsqRekEvSCJ
+ KUpWVI/SCXpBFlKU0lSL0gl6QRJTylZUi9IJekESUpTrUj9IJekESUpStSP0gl6QRJTyhZQi9IJ/SCJK
+ UoWVMPSCXpBTlLcjqpH6QS9IIkpSlZUi9IJekEWUpRsqRekEvSCJKUpWVIvSCiagjSmRspQ+kEvSCKnR
+ tSIVBS9IIidC0o/SCiagjJkLSgNQS9MIxTJtpRisJemERJIFSP0wl6YRE6cCpH6QS9IIidG0IvSCQqCL
+ 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
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//T69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlkkkklKTpk6Sliq71YKrvSU13J2pnJ2pKbDEcIDEcJKXSSSSUpJJJJSkkkklKTJ0ySlJk6Z
+ JSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlwkUgkUlInqq9Wnqq9JSMI9aAEdiSmw1TUWqaSl
+ JJJJKUkkkkpZJJJJSk6ZOkpSZOmQUpJJJJSkkkklKSSSRtSkkkkbUpJJJLiUpJJJLiUpOmSS4lKlIlMm
+ KHEpYlMnhIBC1MgpgqACkkllKiSlKZGlLFJJJGlLhPKiSoF8IiKksppQDamFoTuBTYShCFoUw8JvCpnC
+ dD9QJvVCcAtKVJC9UJeoEaQlSQvUCXqBKkpUkL1Al6gSpSVJC9UJeoEqUlSQvUCXqBKlJUkL1Al6gSpS
+ VJC9QJeoEqUlSQvUCXqBClJUkL1Al6oSpSVOg+qEvVCVJTJIPqhL1QlSkySD6oS9UJUpMkg+qEvVCVKS
+ pIXqhP6gSpCRJD9QJeqEqXBJCUIXqhP6oSX2khMh+qExtCSrSqQVf1QpiwJLbSplD1AmNgSW2zToPqBP
+ 6gSRaVJD9RN6gSRaRKEP1Al6oSVaVOheoEvUCSrSpIXqBL1AlSbSJIfqBL1Akm0iSH6gS9QJUm0iSF6g
+ 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
+ 2o0pgGqQapgKYCFKQlig5itbVEsQpTTLE2xWyxR2JKQhimGIgapAJKR7UxajQmISUh2pQiEJoRUjITbU
+ WE+1FSHYnDEbanDUVIgxPtRQE8JKQlqaEUhRhJCwCIEwCmAmlSyiVIqJQUqU4UVIJqmSdRToKUmTpk5K
+ kkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Tr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJOkpZJPCUJ
+ KWSSSSUpJJJJSkkkklKSSSSUpJJJJSkk8JQkpZJPCZJSkkk8JKWSTwlCSlkk6ZJSkkkklKSTwlCSlkk8
+ JQkpZJPCUJKWSSSSUpJOmSUpJJJJSkkkklKSSTpKWSTwlCSlkk8JilSl0lGUpSpS6SSSVKUkkkkpSdMk
+ kpdMkkkpSSSSSlJJSmlKlLpJJJUpSSeEySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSdMnSUsVXerBVd6Smu5O1M5O1JTYY
+ jhAYjhJS6SSSSlJJJJKUkkkkpSZOkkpZMnTJKUkkkkpSSSdJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEi
+ kEikpE9VXqy9VnpKRhHYgBHrSU2Wqag1TSUpJJJJSkkkklLJJJJKUnTJ0lKTJ0yClJJJJUpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJIKUknTJUpZJKU0pKXAUg1IFSCCloShSTFFLAplIpQnAqWUSVOFBwTwVInvhVbLo
+ RLTCzr7ITwpI/JhQGSs2y7VQbaSU9TtMyUYXrJqcSrjASgQptG9QN6EWlRLSmrSn9dL11X2lLaUkNj10
+ vXVfaUtpSU2PXS9dV9pS2lJTY9dL11X2lLaUktj10vXVfaUtpSU2PXS9dV9pS2lJTY9dL11X2lLaUlNn
+ 10vXVaCltKSmz66XrqttKfaUlNj10vXVbaUtpSS2fXS9dVtpS2lJTZ9dL11W2lPtKSmx66b10DaUtpSU
+ 2PXT+uq20pjISQ2jeoHJhVHuIVWy0hJIdE5aX2tYrrymF5SpfTufa032pY4uKmLSlSCHWGSitvWSx5Kt
+ VklBbTf9ZMbkAApy0pLSEhuTi5Vy0poKS1tesmN6rwU0FJTY9dN66rkFNBQU2vXTi9VACpAFJTa9dL11
+ X2lLaUUtj103roG0ptpSS2PXS9dV9pS2lJTY9ZL11X2lLaUVNj10vXVfaUtpSU2PXS9ZV9pS2lJTY9dL
+ 1kDaUtpSQ2PXS9dVoKUFFLZ9dL11WgpQUqVbYNygbkPaVEtKKUhvSGQqrwQgF5CKnWbkpzlLI9YhM68q
+ CYVTpPy0A5iyrMgoByCoqKuEu63LlHZkSsCq0lX6nEqQBFOqL0/rKm2USCpAFJzcm9dAgpi0oqT+ul66
+ r7SltKSmx66XrqvtKW0ppU2PXS9dV9pS2lAKbHrpeuq+0pbSpQpP66f11X2lLaUSFNj10vXVfaUtpURU
+ 2PXSN6r7SltKahN6yXrIO0pbCnhScXJ/WQNhS2lFSf1kxvQNpTbSgqk/rpeugbSltKQVTYF6kL1V2lPB
+ TwFNv10xvVaClBSpKY3qByEFwKrWEhNKW79pU25Sx3WkJ23KMhc7gylF2UssWlDfcQoiEukcpIZSxTkF
+ FrtJRAVTtNyFL11Qqko4aVMENj103rquWlNBUgCGx66b1kCCltKeAtKb103roO0pthTJhaWwL1MXqrsK
+ kGlViFtNsXpeuqoBTwUgEgNj103rqvBSgqQL2x6yXrKvBS2lSBTY9ZN6yBtKW0p9KbHrJeuq+0pbSmlT
+ Y9dL11X2lLaUwqbHrpeuq+0pbSmlTY9dL11X2lLaUFNn10vWVeClBTwlsesom5BgpoKelP6yY3IO0qJB
+ SUldehHJVe1xCpvthAhLrNykduUsBt6O29RkKdh2Uguy1muuKA64plJdgZUojciVjV2Eq5USVIAl0PWS
+ 9VBa0pywp6kvrJ/WQNpS2lArS2PXS9dVoKUFBa2fXS9dVoKUFJTZ9dL11WgpQUlNn10vXVaClBSU2fXS
+ 9dVoKUFJTZ9dL11WgpQUlNn10vXVaClBSS2fWS9ZV9pT7SkpP6ycXKvtKcNKSmyLkjcgQUxBSUlNygb0
+ IgoZBSU2PXTi9VdpThpSU2vXTG9V9pUXApKTHITfaFUfKEXkJKp0xkqf2lY5uhN9oRpVOx9qUDlLJ+0J
+ vWJRpkDq/alMZKyBYSjMcSlSnWbepeuqLJKKAU1BTG5QNyGWlQLSktT+spi5VQ0qYaUENkXJjcg7Solp
+ SWpDekL0AtKYNKSG2L0/rqqGlSgooTm5L1kDaUtpRUn9ZL1kDaUtpRUm9ZL1kHaU20pKT+sl6yBtKW0p
+ Lk/rJ/WVfaUtpSU2PWS9ZV9pTwUEp/WS9ZA2lLaUkp/WTeugFpUSCghsi9TFyqAFTAKSGwb0F2TCG+VU
+ tcQmEKbgykVuSsb1DKI20plFNOuclBflws91yqWXlLhK6nW+2IjMqVgC8kq3S8lKiqnabkKXrqiySiQU
+ 8BVNo3qJvVeClBUgCGx6yXrqvtKW0orWz66XrqvtKW0pIbHrpeuq+0pbSmFa2PXS9dV9pS2lMVTY9dL1
+ 1X2lLaUlU2PXS9dV9pS2lFVNj10vXVfaU20p4VTZ9dN66r7SltKelsesl6yBBSgoLk/rJ/XVfaU20oJb
+ H2hP66q7SkGlJLbF6l6yqhpUwCgpP6qY3IJBUSCklMb1B2SglpQbAQghK7KTDKWba8hAF8FJL0DMlE+0
+ LEqvVj1dElN5+TCActZ9tyreuZSU7jMpWG5Cw6XkrQqBKSm/66XrKuGlKCkpObk3rIMFLaUkJvWTG5C2
+ lMWlFSX1kvXQC0ptpRU2RepC9VNpTwUlNv7Ql66qwUoKSGz66XrKvBS2lBa2PWS9ZV9pS2lJTY9ZN66B
+ tKW0oqT+ul66r7SltKCmx66XrqvtKW0pKbHrpvXVfaUtpSS2PXS9dV9pS2lJTY9dP66rbSnDSkls+sn9
+ ZVwCkQUFJXXwguyoQrJCo3PISTTf+1orMuVgG8goteQinhLv/aUN+Us0X6IVlxSVwl0TlojMmVieqZVm
+ lxKCHZF6Z2QqrASE7mlJSU5KQvlVC0qTWlJNt0XJ/WVdrSpbSiFpTesl66AWlNtKesbHrpeuq+0pbSgp
+ sesl66r7SltKKWx66XrqvtKW0oKbHrJesq+0pbSklseul66r7SltKSGx66XrqvtKW0pKbPrp/XVbaUoK
+ SE5vUTeglpUS0pKbAvUhcqoaVMApKbQuTG1AAKUFBKU3KBuUC0qBYUVyX104vVUghDLiElwb/wBoS+0r
+ MNsIZvSXB1TkqJylknIUTekmnWOUkMpZHrFSbYSktLstyUUXrKrJKtMBQWNz10xuQA0pFpSSl9ZL1kDa
+ UtpSU2PWS9ZA2lPtKSE3rJvXQS0pi0pKT+ul66r7SmgpKbPrpvtCrQUtpSU2fXT+uqwaU+0pKbPrpvXV
+ faUtpSU2PXS9dV9pS2lJTY9dL11X2lLaUUNj10vXVfaUtpSU2PXS9dV9pS2lJLY9dL11X2lLaUlNj104
+ vVbaVINKSmx6yG69DIKr2khBCc5Kk3JWW+whJlyVJDttvTPyIWc21DtuSpkAbr8tQGWsiy8pmXElJRDu
+ tyZRBkLLqcSrIBSYyG59oTi9VNpTgFBYW6LkjcqwBTwUkJjcm9dALSm2lFIbHrpesq+0pQUmQNj1kvWV
+ eCltKSmx6yXrKvBS2lJa2PWS9ZV9pSgpLS2PWS9ZV9pS2lJbTY9ZL1lX2lLaUlwbHrJesq+0pbSgyBse
+ um9dVyCokFJaWz66kL1TAKmAUWOm2LkvWVcApQUkgJjeom9BLSolpSXU2Ben9ZVw0p9pSXAJjehHJhAs
+ JCpWWkILnUGUityVhNvKsMtJSpLrHKQnZaz32lVX3FKlOv8Aa0RuTKwm3ElXKnEpUh1Ben9dVGgqW0oL
+ W0L1IXqoAVIApIbXrqJvQIKYgpISm9N66AWlNtKSGwL1IXqsGlSDSkps+sl6yBtKW0pKT+sm9ZB2lNtK
+ KqTeul66BtKbaUVwbHrpeuq+0pbSkutseul66r7SltKBQ2fXS9dVtpS2lBTZ9dL11W2lLaUlNj10vXVf
+ aUtpTgpseul66r7SltKeEtj10vXQNpTbSjSUxvUDkILgUCwkIUltHJSGUsp9pCEMhMIU7wyk5yljMvJU
+ jaVCQVOk7LSGWsh1pTssJKbwlTusyJRhesqkkq4wFKkNk3KBuQy0qBaU4IT+smNyDtKYtKmCEpvS9dAL
+ Cm2FIqbHrp/XVfaUtpTVNj10vXVfaUtpQQ2PXS9dV9pS2lOS2PXS9dV9pS2lFLY9dL11X2lLaUVNj10v
+ XVfaUtpSU2PXS9dV9pS2lJDY9dL11X2lPtKCExuTG5C2FRLCghN66cXqvtKQaUFNoXqXrqqGlPtKSmwc
+ hQOSgOBQHkhJc3PtKQyVmOeQo+qUqS6/2lMcpZBvUTejS4OucpN9qWP65Um2ko0udcZKkMhZjHEqwySl
+ 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
+ xSUxTSkUyCmUp1AKQRUqEoUkkVMITwnSSUpJJMipeUiUyZJSiVGUimQUzCmFAKYQUoqJCmUxTVME4TpI
+ KUknTIKUkkknBSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklP/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZBSkkkklKSSSSUpJJJFSkkkklKSSSSU
+ pJJIIKZBPCYJ5QUxKiVIqJStSk6ZKUrUunUZSBStS6ScJ4RCmCcJyEgipkApQmCkCipiQokIhUSEVMIT
+ wnhJFSoTQnSKFKYFMnKigpeU4UQphNUyAUoSCclJTGEkxco7klM1EpbkxKcpYpk6SSlJFOkkpiUylCcB
+ NUxTqW1IhC1MU4TFIJWpkApQmCeU4KWIQnFEJQnKSIUwLkgVEhOE+lJQVJDBTymkKZSnUQVIJilJipwo
+ kJKYynCYhOEaUyTFKUxRpSkyeE4CSlBOAnDU8IKWTFIlQJSUvKSjKcFNUySSCSClJJJIKUkkkgpSSSSS
+ lJJJIqUkkkkpSSSSSlJ0ydFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJ0kklMXIFiO
+ 5AsSU13J2pnJ2pKbDEcIDEcJKXSSSSUpJJJJSkySSSlJJJJKUkkkkpZOkkkpSSSSSlJJJJKXSSSSUpMn
+ TJKUkkkkpSSSSSlJFJIpKRPVV6svVZ6SmIR60AI9aSmw1TUWqSSlJJJJKUkkkkpSSSSSlJJJklLpJkk4
+ KUkkkjSlJJJJpUpJJJMUpJJJJKkkkklKTpk6IUpMUkkVMCmUyFHagpcFTBQ4TykpJKUqEpwmpZJwEwUw
+ halQhPCKSgWOTgVNO9ZGSVp3uWTklSgqc612qVWpULDqp08qYKdTGZK1aqZCz8NbdIEIFSH0FE0LQgKJ
+ AUdrC0fs6b0FfgJoCVoaPoJegr0BKAjamj6CXoK7ASgJWppegl6CuwEoCVpaPoJegr20JbQlamj6CXoK
+ 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
+ UpJJJK1KSSSStSkpSTJWpUpJkklKTQnSSUpOmSSUumSSSUsQmhSSSUtCcJJJKXSTJJKXTJJJWpSZOkkp
+ aEoTpJKYwlCkklalgE4SSSUumSSSUpJJJJS6ZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmToF
+ SkydMgpSSSSKlJJJJKUkkkipSSSSSlJJJ0lLJJ0xQUtKW5QJUdyCk0pIbSihKlLQolThMQlSmCcKUJwE
+ qUu1ThRBhPuTwFKIUCpFyG4o0pfcnD0Bz4QjbCdwqbu9PuVD11Nt0o8Km5KaUFr5RJQpS8pSolyYOSUy
+ TQnBlShMKmEJwnIUSYQpTOUxchl6iXpUpkXKMptyUoiKmW5Lehl0IL7YTxFTZ9ROHrOOQpMvlLhU6QKd
+ Vq7JRw5DhUzUghF6YWIGKmwEihCxTDpTDFSxCaFOJTwhSmCYlSKgSngKWJUSJTynCkCmG1NtRkxRtKOE
+ oU1IBAlDABEAUgFLQJimMKJUi5Dc9EKWKZRLk4RUyTwpAKUJWpgGogaknkJtpVCiQpblElJCNygQinVM
+ WoqRQpBT2poQUoJ0ySapdMkkmqUkkkkpSSSSSlJJJJKUkkkipSSSSSlJ0ySKl0kySSl0kySSl0kySSl0
+ kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSlJ0ySSlJJJ
+ JKUkkkkpSSSSSlJJJJKUnTJJKUkkkkpSdMnSUxcgWI5QLElNdydqZydqSmwxHCAxHCSl0kkklKSSSSUs
+ kkkkpSSSSSlJJJklKSSSSUpOmSSUukmTpKXSTJJKXTJJJKUmSSSUpJJJJS6RSTFJSKxVnqw9VnpKYhWK
+ 1XCPWkpstUlFqkkpSSSSSlJJJJKUkkkkpSSSZJS6SZOnBSkkkk5SkkkkwqUkkkmKUkkkklSSSSClJJJJ
+ wUpJJIJyl4TwkEiUFMSFFSJUEFLqQUQpgJpSyCdIBJBTFxVewqwUJzZTgpzrhKy8hhW5ZXKo3UqQKcCx
+ mqepsFXraUNrIKmCm5imFr02aLHpMK6y2E6rQ6fqpjaqPrJvWQ9taW96qXqKh66f1kvbKG96iXqKh6yX
+ rJe2VN71EvUVH1kvWS9spb3qJeoqPrJ/WS9sqbvqJeoqXrJesl7ZU3fUS9RUvWS9ZH21N31EvUVL1kvW
+ S9sqbu9LeqfqpG1LgKm36iXqqkblH1kvbKm96qcWKh6ykLkvbKW96iRsVP1UjalwFTb9RN6qpm1R9ZH2
+ ypvi1S9VZwuUhcl7am+bEJ71W9ZRdah7aEeQZWPkhalr5VC1so+2V8XIsZqmYwq6aZKmyhHhZwhYxHaE
+ UVQn2QlwoLOowtKh8LNborVT4S4FhdhliJ6izm3KXrocCwt42Jw9Z/rqQvQ4Fhb4en3qiL0/rocC1vb0
+ 3qKgchMchLgQ3zYomxUftCXro8Cm76iXqKl6yXrI8Cm76iXqKl6yXrJcCW76iXqKl6yXrJcCW76iXqKl
+ 6yXrJcCW76iXqKl6yXrJcCm76iXqKl6yXrJcCm76iXqKl6yXrJcCm7vT71S9ZL1kuBYW7vTb1U9ZL1ku
+ Ba3fUUH2Kp6yg65L22SK975WdbqrL7JVd2qPAyhqOahuYrmyUjUlws8XKfUoCrVab6UP0UuFedmFDIWr
+ QYVOtkK3WYS4WtNv1uRg9UmvhTFqHCxN0PT+oqXrJeslwJbvqJeoqXrJeslwJbvqJeoqXrJeshwMZbvq
+ JeoqXrJeslwLQ3fUS9RUvWS9ZLgZg3fUS9RUvWS9ZLgXN31EvUVL1kvWS4GMt31EvUVL1kxuS4Vrd9RS
+ FqzvWTi9LhQ6YsT71ni9S9dN4EhuF6gbFVN6GbkRFkDcNqb1VRNycXI8KS3hYpb1RFql6qXCsLc3qQsV
+ D1k/rpcKG5ZZoszKMozrpVS10pcKnKvbJQmsVx7ZTNqS4Uhg0aIdrZV0VqD60uFnDmFmqu4wgqLmQp16
+ JcKnaxrIV9tqxKrYVpt6XCh0jYm3qiL0/rJcLHJu70vUVL1kvWS4WMt31E4tVD1kvWS4VOgLUvUWf66X
+ rocC4Oh6iYvVH10vXS4Utzel6ip+sl6ydwJbnqJ/UVL1kvWS4EN31EvUVL1kvWQ4EN31EvUVL1kvWS4U
+ N31E/qKj6yXrJcKm96iXqKj6yXrJcKm96iXqKj6yXrJcC5u+om3qn6yXrI8CW7vTh6o+spC5DgSG+HqF
+ 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
+ 76iXqKl6yXrJcC1u+ol6ipesl6yXAlu+ol6ipesl6yXAlu+ol6ipesl6yXAlu+ol6ipesl6yXClu+on9
+ RUfWS9ZLgS3vUTGxUvWS9ZLgS2HvWfkmUZ1sqra6U8RS5OSyVR9LVa1rJQRTqjwqa9VathuiLXSjekhS
+ mptRqhCk5kJN0SpDpY7oWiyxY1VkK029NMVOkbUM2Kn66ibk3gQ2zYnFipeql6qbwqb4tUxas31lIXpc
+ KHQ9RL1FRFyf1k7gQ3fUTeoqfrJesjwKbnqJeoqXrJeshwKbnqJeoqXrJeslwIbvqJeoqXrJeshwKbvq
+ JeoqXrJeslwqbvqJeoqXrJeslwqbvqJeoqXrJjelwpb3qpvVVD104uR4VN71E3qKp6qXqo8KW2LFL1FR
+ 9VL1kuFc2n2Klc9J1yrWWSnCNJQWmVUe2VacZUQyU8JaLq0I1LU9GVA0Jy5z2sVuoQp+lCmxsIpbdJha
+ FT1msMKwyyEyQtZJ022KXqKgLlL1lEcZYm4bE3qKn6yXrJe2VNz1EvUVP1kvWS9sqbnqJeoqfrJesl7a
+ m56iXqKn6yXrJe2VNz1EvUVP1kvWS9sqbnqJeoqfrJesl7ZU3PUS9RU/WTesl7am76iXqKl6yXrJcBU3
+ fUS9RUvWS9ZLgKm76iXqKl6yXrJcBU3fUS9RUvWS9ZLgKm76iXqKl6yXrJcBU3fUTixUfWTi5LgKnQFi
+ FbZoqvrqD7pS9tTXyjKybRqtK50qm9spwjTNFqBqkWmFZbUp+inUyORawlBFeq1rKEH0YKVLCyxBC3sZ
+ 8BY1Tdq0KrIQpYXYZYpb1nC+FL7QmcK0t/elvVEXpeulwrS3w9P6ioeum9dDgQ6HqJeos/7Ql9oS4FN/
+ 1E3qKj66XrI8Cm96iXqKl6yXrJcCW76iXqKj6yXrJcCW96iXqKj6yf1kuBTd9RL1FR9ZL1kvbU3vUS9R
+ UfWS9ZL21N71EvUVH1k/rJe2pu+omNqp+soG5LgQ3fVTi1Z5uTi5N4VjpB6kHqg25T9dLhU3d6RsVH10
+ vXS4FwT2v0WTlmVbfbKoXulPEWWDlXiShNardjJKTKk6m7Fi0aKFjVdbUovqSpZkc4M1V7GEKBrhHqEI
+ 8LRlu6+M+ArzbFk1PhWRcmmCA3TYm3qp6yb1k3gS3N6W9U/WS9ZLgU3N6W9U/VS9VLhQ3N6feqXrJesl
+ wqbvqJeoqXrJeslwobnqJeoqXrJeslwqbvqJeoqPrJeslwpbvqJeoqXrJesgYpbvqJ/UVH1k/rJvClve
+ oomxU/WTesjwqbvqJb1S9ZOLkuFLd3pb1T9VL1UeFBbfqJeoqfqpesjwrW76iYvVT1kvVR4FwbJeq9rl
+ E2oL7ZREV4aeSZWPeDK1rjKpPqlHhZoucGFWK2FWG46sMoSpe1g1EborBqhQ2wlTHJsUOhadNiyazCuV
+ vhLhYS6jbU5tVEWpG5N4GKTc9RP6io+sl6yXCsb4en9RUPWS9dDhZYt/1E3qqgb1H10uFe6Pqp/UWcL1
+ IXpcC10PUS9RUPXS9dLgQ3/US9RUPXS9dLgXhv8AqJeoqHrpeulwJb/qJeoqHrp/XS4Fhb3qJeoqPrpe
+ ulwIb3qJeoqPrpeulwJb3qJ/UVD10vXS4FN/1VE2qj66b10uBjLcNiQeqXrJxajwobpsQLXyheqhvslL
+ hXBrXmVRe1XbDKAWylws0WoWoT2K96ai6pLhbUXMNaLUyFZNKdtcJcKZNnH0WpS9ZlWiuVvhDhasnTY9
+ ED1QbapeslwMbdNib1FSN6b10vbU3vUS9RUfXS9dH20N71EvUVH10vWS9tTe9RL1FR9ZL1kvbU3vUS9R
+ UfWS9ZD21N71EvUVH1kvWS9tTe9RL1FR9ZL1kuAqb3qJvUVL1lE3pcBU3vUS9RUPXTi5LgKm8bFE2Kp6
+ yY2pe2VNr1E4tVI2pvWR9tToi1TFizRciC5L20uh6iibFT9ZRN6HtqbvqpG1UPXSNyPtqSX2SsfJ1V6y
+ yVTt1R9tDnOZqpsrVj05RWVIGDLBqPr0VR9S2HVaKs+pN4WyGlVXBWxiGFRDIKtVPhHhY5O5TborHqLI
+ rvhGF6XA15N/en3qj66f1kuBiLc3pvUVM3KJuS4FlN31E/qrPN6XrpcC4Oj6qXqLO+0KX2hLgZA396be
+ qPrp/XS4FwbvqJeoqXrJesjwLm76if1FR9ZL1kuBDe9RL1FS9ZL1kOBDd9RL1FS9ZL1kuBa3fUS9RUvW
+ S9ZHgQ3PUS9RUvWS9ZLgS3N6XqKl6yXrJcCW+LE+9UBcpC5L21N3enD1SFycXJvAuDeL1TyXSExvVe22
+ URAsgcjNEysd9eq3LxuVM0yUeArmrTWroZop1UKz6WiHClzbGJq2aq6+pDayCjwIb2Jotql8BYlB2q/X
+ dAS9tjLp+ooGxUzeom5AY1hbnqJeoqXrJvWR9ta3vUS9RUfWS9ZL21N71EvUVH1kvWS9tcG96iXqKj6y
+ XrJcCW96iXqKj6yXrJcCm96iXqKj6yXrJcCm96iXqKj6yXrJe2sLe9ROLFQ9ZOLkvbU3/UUTYqfrJjcl
+ wKbJsTeoqhuUfVTuBTdFif1FRFqf1UuBLd9RLeqfqpeqlwKbm9OLFR9ZL1kOBLeNiE+xVvWUTbKXClhe
+ 6VkZDZWlY6VTsbKFJc9teq1MRkQgNq1WjjMhMIU6uMICugqpQIVoFMKlioqRUUFKSTpIIWSTpJWhZJOm
+ QtCkkkkbQpJJJK1LpJk6BKlJJJJq5SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySSSSlJ0ydJ
+ S6i5SUXJKa1irlWLFXKSmbFaYqrFaYkpMEikEikpZJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSl0ydMkpSSSSSlJ0ydJSiq9isFV7ElNZ6i1SeotSU2a1Zaq1astSUukkkkpZJJJJSk6ZOk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UmTpklKSSSSUpOmSSUpJJJJSkkkklLpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklP/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6BUpMnTIKUkkkkpSSSSKlJJJJKUkkkipS
+ SSSSl0xSSKSkTlCEUhR2oKXaEUBRaEQJKUmSJTAoqZgJjopBDsMBOUifZCEb1XvthUjkap4U64tlOXSs
+ 6q6VbY6QnAKU8qrY+FZeqVqeApgbVOu1VHlSrKJU61T5R96pUlGc6Aoipk+2FEXKlbdCC2/VNU7ddkqw
+ 0ysmi2VpVOkIKZuVex0Ky7hZ+S6EgpG++EL7UFn5N8Kg7LTgp6EZIUxkBc6zLRxlp4CnZdeFUtvVE5SE
+ ++VIApO+9TrvVAvlSa+EaU7dN6tC9YTLoRRkJtKdc3qHrrM9dIXJpCnXZerVdkrFrsWhQ9REKdJpTOfC
+ EHaKvfdCbSkr7wEA5IWZflwqZyynKd37SFIZIWCMklS+0lEKd4ZQS+0hYH2oqQySnUp3hkBTGQFhDJKf
+ 7SUiFO99pCicoLBdlkIZzT4qNTvnJBUfWlYbcuVbpu3JwU6jTKOwKrTqrrdEipkNFF1gCi98BUL8iE2l
+ Nt2QAhnKCxrctAOUU5TvfagnGSFgjJKkMopKehbeCitsBWBXlK9VkSmlTqTKYoDLZRQ6UFKKSSSapSSS
+ SClJJJIKUkkkkpSSSSKlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSk6SSSligWI5QLElNdydqZydqSmwxHCAxHCSl0kkklKSSSSUskkkkpSSSSSlJk6ZJSkkkklKSSSSUpO
+ mTpKUkkkkpSSSSSlkkkklKSSSSUpIpJFJSF6rPVl6rPSUxCPWgBHrSU2Gqag1TSUskkkkpSSSSSlJJJJ
+ KUkkkkpSdMnTgpSSSScpSSSSYVKSSSTFKSSSSSpJJJBSkkkk8KUkkkipdMU6UIKYlNCnCUIKWAUwEgE6
+ aVKSJTEqBKCmRKiVElR3JwSpwCq3AI7nqnfYpQppXQFTc8BEyLlmW3p4U3hfCIMpYxvKXrFWIIdn7Wm+
+ 1LH9YpeqVajELXY+1Jfalj+qUvVKdwhTsfakvtSx/VKXqlLhCnY+1Jfalj+qUvVKHCFOx9qS+1LH9Upe
+ qUuEKdj7Ul9qWP6pS9UpcIU7P2pL7Usb1il6xR4Qp2ftSkMpYguKmLShwhTs/akjkrIFxSNpQ4Qp1DlK
+ JyllG0qBtKdwhTsfalIZSxRaVMWlLhCXaGSkclZAtKRtKHCFOocpROUso2lQNpR4Qp1/tSkMpY3qlOLS
+ jwhTtfakxylkeqVE3FDhCHVORKb1JWWLijMtQMQvi6DQCjNaFTrsVhtijIDOExACC9wCTrFVttQoIKQ2
+ wptvhZzrVEWlGgsLrjJTHKWX6pUTaUqCwup9qUhlLH9UqQtKFBaXYGUkcpZPqlL1SlQWF1DlJjlLL9Qp
+ t5SoIdT7UpDKWTvKb1SlQU7H2pP9qWN6pS9YpUFOx9qS+1LH9YpesUqCXY+1Jfalj+sUvWKVJdj7Ul9q
+ WP6xS9YpUl2PtSX2pY/rFL1ilSnY+1Jfalj+sUvWKVKdj7Ul9qWP6xS9YpUp2PtaX2tYxuKj6xRoLS7f
+ 2tP9qWILynFxRoLXZ+1JjkrI9Yp/VKFBeHV9eU4tlZQtKKy1Kgyh1WOBRQQs+u1WBYhTPFM6EFxCZ1qr
+ vuSoLy2N4CkLoWeblE3JUGtN0/tCb7Ssw2lQNpSoMLq/ak32pZJtKibSlQXB2PtSX2pY3rFL1ihQSXZ+
+ 1JfaljesUvWKVBjLs/akvtSx/WKb1ilQQHZ+1JfaljesUvWKFBlDs/akvtSxvWKXrFKgl2ftSX2pY3rF
+ L1ilQWF2ftSY5SyPWKb1SlQWuscpIZSyDaU3qlNKHaGWpfa1h+sU/rFKkh2jlqJylj+sUvVKVMgdf7Un
+ GSsf1SpC0pUl2hkpHKWQLSmNxRpjdU5ab7Wsc2lR9UpUp3PtUqJvlZAuKkLilSnT9QFGYQVlMuVuq2Uq
+ XB0RChYotfooWPSpmCCwwgmyFG6xVHWpUpvtyIRW5KyPUKkLClSC7IylL7SscWFS9UpUxl1vtSf7Ssn1
+ SkLShTE6v2lMclZnqlRNhSSHT+0pfalkmwpeoUkh1vtSf7Usj1Sl6pSAXOx9qS+1LH9UpesU+lOx9qS+
+ 1LH9YpesUFOx9qS+1LG9YpesUKQ7P2pL7Usb1in9YoUh2PtSX2pY/rFL1ikp2PtSX2pY/rFL1ilSnY+1
+ Jfalj+sUvWKNJdj7Ul9qWN6xS9Yo0udn7UnGUsX1inFxRpLtjLTnKWKLin9Yo0FzqPvlCLgVR9UqbbUl
+ OhWArbAFn1Wq2yxNIUlfCp2EItlio22oUpILIRmZELLNqQtKNLXY+1KJy1km0qJtKFKdf7Ul9qWP6pS9
+ UpwAWF2ftSX2pY/rFL1SjQWux9qS+1LH9UpeqUqCXY+1Jfalj+qUvVKFBLsfakvtSx/VKXqlKgl2PtSX
+ 2pY/qlL1SlQU7H2pL7Usf1Sl6pSoKdj7Ul9qWP6pS9UpUFOx9qT/AGtY3rFN6xSoIdn7Ul9qWN6xS9Yp
+ UFOz9qT/AGlYwuKf1ilQU7H2pMcpZHrFRNxRoKdc5ab7Wsc3FR9YpUFwdr7WnGSsUWlEFpRoLnX9eUjb
+ KzW2lTFqVBLe3AqTYVIWorLUqCW6ITOIQRaoPtSpcu98IXrQgW2qsbSjQQ6bciFP7Usj1SmNpSoLS6/2
+ tIZaxjaUhcUKC0u4MpS+1LEFxUxcUKCwuucpROUsr1Som0oUEOqcpL7Usg2lN6pQoLXZGWn+1rG9Up/V
+ KVBTs/akvtSxvWKXrFKgl2ftSX2pY3rFL1ilQS7P2pL7Usb1il6xSoKdj7Ul9qWP6xS9Yo0FOx9qS+1L
+ H9YpesUaCnY+1Jfalj+sUvWKVBTsfakvtSx/WKXrFGgp2RlKQylii4qQuKBAU7P2lQOUsr1Som0ptJdJ
+ 2Shm+VmutKiLSlS8Ouy2VbrIKxarVoU2pUyB0YCE9oTC3RCstRASxMBIPhV32oJtTqU6AvhN9pWabShm
+ 0oUsLqnKTfalkG0peqUKYy7H2pOMpYwtKf1ShS12ftSX2pY/qlL1ShSHY+1Jfalj+qUvVKFJDsfakvtS
+ x/VKXqlBc7H2pL7Usf1Sl6pSU7H2pL7Usf1Sl6pRpTsfakvtSx/VKXqlGlpdj7Ul9qWP6pS9Uo0h2PtS
+ X2pZHqlL1ShSnW+1JvtSyvVKY2lKlOr9qTjJWR6pS9UpUkOyMpP9qWOLSl6pSpc6xykM5SyzaVE2lKlw
+ db7UkcmVlCwpxYUqXOkbZUmulZotR67UaU6tcI0BUqrFY9TRClKshVnOAT22qlZcjSC2haApfaYWWblA
+ 2lKlrrHLTjLWKbSkLShSHeblqf2pYbbip+sUqQ6zslDOSss3FQNpSpDq/ak4y1j+qUvVKVKdoZaf7WsT
+ 1ikLylSnc+1pvtSxhcU/qlKlOx9qS+1LH9UpeqU8AKdj7Ul9qWP6pS9UpUFOx9qS+1LH9UpeqUqCHY+1
+ Jfalj+qUvVKVBDsfakvtSx/VKXqlKgp2PtSX2pY/qlL1SlQU7H2pL7Usf1Sl6pSoJdj7Un+1LG9UpesU
+ qCXaGUpDJWKLipi4o0EF1jfKE6yVQ9YpjalQZce7eBBKs1Qstluqu02oEBvw2dERCFYQoizRAttTeFZN
+ hY8BC9WFXttVc2p9BpSdIXqX2lZYsKXqFKgxl1PtKf7Ssn1Sl6pSoLXX+1J/tSxvWKXrFKgp2ftaX2tY
+ 3rFL1ilQSHZ+1pfa1jesUvWKFBc7P2tL7Wsb1il6xSoJdn7Wl9rWN6xS9YoUFzs/a0vtaxvWKXrFKgl2
+ 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
+ 6pSoKdj7Um+1LI9UpeqUKC4Ox9qS+1LH9UpeqUqCXY+1Jfalj+qUvVKVBTsfakvtSx/VKXqlKgoux9qT
+ falkeqUvVKVBY7H2pL7Usf1Sl6xSoKdn7WmOUsf1im9YoUFOucpN9pWT6pS9UpUp1xkp/tKyPVKf1ShS
+ XX+0pjkrJ9UpeqUqU6pyU32pZRtKb1ChSXW+0p/tKyRaVIWlNKXUN0qBsBWf6pSFyYVOnWRK0MdYlVuq
+ 1sV8qOSnZqVgKtQZVkBQlKxTJymQQukkkmlSkkkkEKSSSQQsknTJIUmTpJKUnTJ0lKTpJJLlkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKTpk6Sl1FykouSU1rFXKsWKuUlM2K0xVWK0xJSYJFIJ
+ FJSySSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpk6ZJSkkkklKTpk6SlFV7FYKr
+ 2JKaz1Fqk9Rakps1qy1Vq1ZakpdJJJJSySSSSlJ0ySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl
+ 0ySSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Dr0kkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKTpk6BUpMnTIKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKWTJymlFTIFSlDlKUaUyJSBUU7U
+ aUlCBedEZV7zoiApx8t6zjZqr2Ws0jVSAKb2O9alR0WPQYWnU/RSAKbLlUuCO6wKrbYE4BTVeFKoaqD3
+ hSqeJTjFTo0hTtGiHVYFK14hQSCnNyTCqNfqrGQZVVo1TFOnjOWzRwsbFatrHGiRUncNFmZnC1XDRZeY
+ NE0KebzHalZL3GVr5jdSsw1yVLGKlmEo4JT1UoxpgKURUgLykHyk9kKLQpRBSZuqmAmrbKOK5R4FIpTg
+ lG9FOKUOBTAEojQptqRmVJpipVQWlQFWqqV+pkKCUaUlJgLOy3wtF4gLJzCmKcfJsMqu0klFuElTx6pK
+ CmdVRKKaCtHGxZCujDSU8/6BUm0lbhwwkMROtTkCgpGgrbbiBSOIECVPOWVEKlYCF09+JosfJx4QU0K3
+ mVq4hlZra4K1MRqSnZo4VgvgIFOgTWugJKQ5F8LJyL5R8hxWe8ElOUic4uKkxhKLXRJWhRioKaApKgWE
+ LbOLAVS6mEFNBhIV2h6qlsFGqKSnWqerbCs+kq7WU0qbATpgnTVLJJJJqlJJJJKUkkkkpSSSdJSydJJJ
+ SkkkkVKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lMSgWI5QLElNdydqZy
+ dqSmwxHCAxHCSl0kkklKSSSSUskkkkpSSSSSlJk6SSlkkkklKTpJJKUkkkkpSSSSSlJJJJKUmTpJKWST
+ pJKUmKdIpKQvVZ6svVZ6SmAR60EI7ElJ2qai1SSUpJJJJSkydJJSySdJJSySSSSlJ0ydEKUkkknKUkkk
+ mFSkkkk1SkkkkkqSSSSUpJJJOClJJJ05Sk6ilKCmSUqMppQUkBSlQBTgppUuVEhTTgIKQlqGQrRYhPan
+ BTTsMLOyHrRuCyskqQJczIes98kq5fqUAMkqYBSBtZKM2glXaMaVo14UqQGkOH9mKf7MV0IwfJN9i8kf
+ dpaXn/sxS+zldB9i8kvsXkl76Hn/ALOUvs5XQfYvJL7F5Je8p5/7OUvs5W/9i8kvsSXvKef+zlL7OV0H
+ 2JL7El7yXA+zlL7OVv8A2JL7F5Je8p5/7OUvs5XQfYkvsXkl7ynn/s5Uhjlb32LySGH5Je8pwxQUjQVu
+ /Y0/2NH3lPPnHKiccroThKP2JL3lOAMcqQxyt37EpDCS95LhjHKRxyt4YaRw0veU8+ccqBxyuh+xJvsX
+ kl7ynn/sxUhjFb4wvJS+xeSXvKefOOUN2OV0ZwvJCfhpe+h540kJ2tIWtZiwqllW1L3rXxRsdCO16rcI
+ jClxs4TOKr2I41UXMlLjQWkWlO2sq0KpVivHlLjWFoikpzQVsMxEQYaHGtLhfZynFBW59j8k4w0uNYXE
+ 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
+ N2F5ID8SEONLguqIQSCFs248KhZXCYZKYUnVbGIeFk1iCtbE7Jhkp3cfhXAqeNwro4UZKWBUVNyghaF0
+ kySbaFJJJJWpdJMkghSSSSSFJJ0klLJ0kkUrpJk6SVkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSS
+ SlkkkklKTpk6Sl1FykouSU1rFXKsWKuUlM2K0xVWK0xJSYJFIJFJSySSSSlJk6ZJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklLpk6ZJSkkkklKTpk6SlFV7FYKr2JKaz1Fqk9Rakps1qy1Vq1ZakpdJJJ
+ JSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSn/0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmToFSkydMgpSSSSSlJJJIqUk
+ kkkpSSSSSlJJJJKUkkkkpZMpJoRUxhPCeE4CKloUgE8JJylEqtcdFYcVWtTwFOTkhZzhqtW9sqi9mqlC
+ mFZhWm2wFWDE5BCeFJn5Cq2ZKFYSqlhKkAUndkKTMlUDKk0FEqdmvKU35UhZbJRYKqzUlfbuT1CSghpV
+ qhiYp0sVq2aBosvGELVqOiB2UldwsvMK0Xu0WXllCIU4OUNVTaySruTyq7BqrEVNimtFfXonpRLCIUoU
+ 5trEAN1Vm4quHaqcKbVLFdrrVSlyv1vCbIqZilS9FTFgT+oFFxFLAVIjK1EWBGrcCgSVJa61ZYyFCtWW
+ hV5SUgtGixswrcuGixMwJqHFs5VvEGqq2DVWcUwUlPQ4jRC0Q0LMxHaLRD00qU5oUICdzlCUgEpGgIkB
+ ABRAUCFIr2iFi5bFs3HRZGUU4Icot1V3G0VR3KtY/KKnXqOiexsqNHCtBkpKcm2iVXOMtx1IKgcdK1Ob
+ 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
+ JKUkkkkpSdMnSUoqvYrBVexJTWeotUnqLUlNmtWWqtWrLUlLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//S
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SlIJgE6IUumlMU0p4Us5AsRyg2J4U0LQqxZKs2lVw7VSBSwqlOaFZqAKsioEI2lxbMdVH4637KgqdlYC
+ mibQ5P2ZEZiq7sCPUwJ0lNVmIifZFq1VAoxpEKpJThHHhErZCv21gKqdCgENmkwr1b1mMcrdbkqU2nv0
+ WdkmVcJVTICICnFyBqqzdCreQFU7qUKbdboSsfogsKk4EhSgKadzkAO1VmyolB9IhShSaqyFZF8KkGkJ
+ ElIi0t77VCb7Ws8kp2gpnCi3UZkSrtNsrHqBWjQCmSCXZofKvs1CyqCtGpyqzCmVo0WLmNW3YdFjZpUY
+ U4do1RMflDuOqJj8pyHbxStBpVDEatNjElMCkAi7E4ahaWAaibU4CnCaSpp3jRYuWVu3jRYWYE8Kc1x1
+ VvG5VF3Ku4p1RU7eONFcCp450VuUCllKfRBc+EB+RCFKS3OACysm+ES/KlZtz96ehDbkEoIJcVP0S4q1
+ RipKYU0StGjHhGoxoV5lICaVI66oRw2FMNhIhNUxSSTIKUkkkmqXSSSQUpJJJJSkkkklLpJJIqUkkkip
+ SZOmQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdOop0lLFAsRygWJKa7k7Uzk7UlN
+ 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
+ vQsrGC1aQlxNWTfrKMCq7EYJrGzJUUkkkKSSTJWpdJMklal0kySVqZJKKSFqZJKKSVqZJKKSVqXSlMkl
+ alyVEp0oRtTGE4CeE6VqZBOoylKSlyoFOSolK1LJwVFOEbUmapkIbEVNKmjkt0WDltXQZPCwstOtDlFu
+ qNW1QPKNWnWzQR2t0WXeNVsWjRZl7dUWwEFA1XQ4HZYVLdVvYI4SWSehx+FZlVcfhWkwsJYkqKcqJSDG
+ VwphDCkCkUM5USUxKiSlSQuSmlRJTI0uZykohSCSV0kkkkqSSSSWFSSZJJapOmSSQpJJOkpSSUJQgkKS
+ CSSS5kClKimJSpS5KjKYpoTgpcuVPIOitEKpkDRFkDh5msrKcNVq5azHHVKlyakK4BoqlJVsHRKktewK
+ DBqp2FRZylSHWxCtqh2ixMRbNHCDGW2HJiUwTFNpYV5STJIoXSTJJIXSTJJLwukmSSSukmSSSukmSSQu
+ kmSSWFdJMnQUsnSSTCVKClCinBStK8JiE6RRtTAhMpFQKVqZAqYKECiBJK5QLAjoVgStTl5LVh5LVv5I
+ WHlJWlzwNVq4Y4WYDqtPDOoQtT0OLwrw4VDF4V8cIWpi5QUnKKCFJJJIKUkkkkhSSSSKlJJJJKXSTJIo
+ XSTJ0kqTpk6SVkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklKTpk6Sl1FykouSU1rFXKsW
+ KuUlM2K0xVWK0xJSYJFIJFJSySSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpk6Z
+ JSkkkklKTpk6SlFV7FYKr2JKaz1Fqk9Rakps1qy1Vq1ZakpdJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/0+vS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSCaUgUl
+ MwnUQVJFTEqKmQoQnAqXVe4wEclVL3aJ4KnOyHwqgt1Usp6oGzVSAqdvHsWix4hc9RdC0WZGiCW5a4LP
+ ueApWXqhfapoaKZG3VHpuWS63VEqu1Ukih6Wi0KwbBCxKL1YORoq0gpPfYFRdZqh3ZCrerJQQ32PV2py
+ y6nSr1boSU3t2irXnRI2wq9tkogqaOQFTjVXbNUHYngqVW1WBXKixkKw0KQFSB1EoLqIWgQgvCeJKaDq
+ 4QixWnoJKfxKRiqUVlCTSrDCgZKXrpVutkKDCjNKiMlNirRXanLPYVarcoJkFTZsfosbNctKx2ix81yj
+ U5Nz9UfFfqqF7oKlRdBSU9bhuELUY8Ll8bMhXxn+aaVO0XhQ9ULHOf5qBzkQEu2LQp+qFgDN81IZ3mkY
+ qdW+0QsTLeCntzZCzb8ncipG86q3jHVZofJWhjapyncxnaK5Oio43CtEwEqUivshY+TlbVdy36Lnsywy
+ lSkjsuTyi0v3lYZsMq9jXwip6GikFX66mhY9GWAFZGcECp2GwEQPCxRneaKzLlNU6u9LcqTLpRmvlBSV
+ JIJ4TSpZJOmTVLpJkpQUukmlOipSSSdBSkkkkVKSTJIqXTJJklKSSToKWSSSSUpJJOkpZJOmSUpJJJJS
+ kkkklKSSSSUpJJOkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSk6ZOkpYoFiOUCxJTXcnamcnakpsMRwgsRgkpdJJJJSkkkySlJJJJKUkkkkpSZ
+ OmSUpJJJJSkkkklKTpkklLpJJJKUkkmSUpJJJJSkkkklLpJJFJSN6rPVh6rPSUxCOxACOxJTYapqDVJJ
+ SkkkySl0kySSlJJJklLpkkklKTpk6IUpJOmTlKSSSTCpSSSSapSSSSSlJJJJKUkkknhSkkkkVKhPCSSS
+ VwnlRlKUlLlRKdPCYVMITgJ4ThBSlB5RIQ3hOCmncVl5DlpXrKyVJFTnWnVKrlQsOqlUdVMFOvihbFI0
+ WRiLYp4QKk4TFOmKiWlSZOkhSFkk6eEkrJJ0klLJJ0kqUskkklSl0kydKlLJJ0klLJJ0klKTSnTJKUkm
+ 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
+ Z/dYlh1TwubFLlcDtFn0q8OEVI7CmrOqZ6VXKSi7OGFuUN0WNhLdoGiYSsKXaokIqgU0FYUcJQpQlCNr
+ WEJQpwlCVqYpQpQlCVrgxShShKErXMUlKEoStTFKFKEoStTFJShKErWFinhPCeEkMYSITpimEKWSlIpk
+ KSylKVGUpTqUoqJTyklSVgEQBMAiAJKWhCsRigWlKlOdklYOUVuZRWFlI8KmiDqtTDOoWWBqtTDGoQMV
+ PQ4vCvjhUcUaK+OE2lMHKKm5QQpS6SSSClJJJJKUkkkihSZOmRUpMnSRQpOmToJXSSSSSskkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKXSTJJKUkkkkpSdMnSUuouUlFySmtYq5VixVykpmxWmKqxWmJKTBIpBIpK
+ WSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUpMnSSUskkkkpSdMnSUoqvYrBVexJ
+ TWeotUnqLUlNmtWWqtWrLUlLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KTpkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//U69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOiFKTJ0yKlJJJIKUkkkkpSSSSSlJJJIKUnTJIKXTFOmKCmBTSnKZJTMFTBQwphBTIqJCkknB
+ SJypZHCvuCqXMlPCnCygs5wMrZyKpVF1GqeFIKiQrrHlQZQrLKFIFIXOJVawErRNCE7HTwpyXNKkwEK+
+ cZIYyNqR1EhEc8witohM+oppQ0rHkqLJJRn1FSrp1TSpPQFdA0Q6KlbFeiapqvKASSrj60H0klIAyVMV
+ Kw2pGFSNqagrhSDVb9JL0k61NQhCeFeNSG6lOElOY9qAWrTdQhnHRtTQDSjsBVkYyK3HQJUiYCjtCI2l
+ FFSjJUjaFYYEm1ozWKMlSJ40WVltlbb2aLPyKpQU8xkMMqsAQVtX40lVvsiSkFbyEb1nIrcQooxCiFNX
+ 1XJCxytjDKkMMqQKage5PvcrgxCn+yFIqc97yqryStd+IVXdiFBLSqBJWviNVZmPBWjj1wkp0aBojP4U
+ KhoikSipzMkSsXJpJXR21SqdmLKSnl345lOystW+cGeyYdP8kLU5LXOCf1XLVPTz4KBwD4IWpoMscr1D
+ yVJuEQrNWKQkpNSSr1ZQK6oVljYTSpM1TQwphNUpJOmKaVMSmTlMgpdOFFSCSlwnSCdFSyZOmRUskkkk
+ pSSSdJSkkkkFKSTpJKWSTpJKWSTpJKWSTpJKWSTpJKYpJ0klKSSTpKWSTpJKWSTpJKWSTpJKWSTpJKWS
+ TpJKWSTpJKWSTpJKWSTpklKSTpJKWSTpJKWSTpJKYpJ0klLJJ0klLJJ0klLJ0k6SmJQLFYKr2JKa5TsT
+ FSYkpsMRwg1owSUumTpklKSSTJKUkkkkpSdMkkpdMkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJS6RSCRSUieqz1Zeqz0lMAjsQAjsSU2GqSi1SSUpJJJJSkydMkpSSSSSlJJJJKXTpgnRClJJJIqWS
+ TpJpUskkkmqUmTpklKTpk6SlJJJJ4UpOmTpyVJipJQghgUgU5CigpmFJDBTymlLIlMCoEpAoKTKDwnBT
+ ORCmjeFk5IWxesnJCkipyLeUquVK0aqNfKmCnYxCtik6LDxnQtaqzRIhTdlRJQvVCj6qbS1sSnlVxal6
+ qVKbEp5Vf1U/qhClJ5SlA9UJvVSpSeU0oHqpvVSpTYlKVX9VL1UaU2JSlV/VT+qhSmxKUoHqpeqEqU2J
+ SlV/VS9VKlJ5TEoPqpvVSpSaU0oJtUfVRS2JTgqt6qkLUqU2QVKVWFqkLU2lJ5USUE2qJtRpTMlDeVA2
+ obrE5CK5ZOStG56y8hyBXxaNnKg1O86pmprKEzSpAqDVIJKLapctXGcseorUxnpLS7NRVgFUarFYFoQK
+ 0pSoyhm0JjaElqSUpQTYE3qpIbEpwVW9UJ/WCSmzKaVX9YJesEFNiUpVb1kvWRU2ZSlVvWS9ZJLZlKVW
+ 9ZL1kFNmUpVb1gl6ySGzKUqt6yXrJIbMpSq3rBL1gkhsylKresEvWCSmzKbcq/rBN6qIU2C5IOVY2peq
+ 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
+ gAsKeU8qt6oS9YJLWzKUqt6wS9YJKbMpSq3rBL1gkvDZlKVW9YJesEktmUpVb1gl6wSS2ZSlVvWCXrBJ
+ TZlKVW9YJesEFhbMppVf1gl6oRCE5KaUH1EvUTuFcmlMSg+omNqPCpMSolyCbQo+qnCKmxuUgVVFqmLU
+ DFTaBUwVVFql6qaYpTucq1rknWqtZaiIqauSVjZAlal75WXcZT6Q1Wt1WpiNWewarUxAmEKdvGGivBU8
+ fhXAmEKYuUVIqKaVKSSSQUpJJJBCkkkkFKSSSRUsknSSUsnSSSUpJJJJKkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKTJJJKXSSSSUyUXJ1FySmvYq5VixVykpkxW2KoxW2JKTBJIJJKWSSSSUpMnTJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSkydJJSk6ZOkpYoFiOUCxJTVeotUnqLUlNmtW
+ WqtWrLUlLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6IUpMnTJK
+ UkkkkpSSSSSlJJJJKUkkkgpSSSSCl0ySSCliFGFNNCClgpBMkkpnKcKEqQKKlyECxso8qDk4FTm21Sqx
+ o1Wm9soXpp4KmqyhWWUIzGIzWp4kpqmhRNCvbU2xHiU0DjpfZlobEtiPGpz/AEEN9C0ixDdWlxIcl1Cd
+ lC0DUk2pIqYVVQjitEYyESE0lTUfUh+krhao7ULUgbUiitEDUQNStSH00/po4CeEOJTWNSg6pWyFEtRE
+ ktE0qPoq6WqG1P4kNYUqYqCNCdAyUjDFIMUk4TDJSwapgJgpSmcSliFWtZKskobhKXEpzn0SoDGWgWJx
+ WlamozGCKMUK01qIAnAqagxQl9mCuQlCdxKagxwpfZwrCcJWppuxgq1mMFqkIbmSlaXJ+zwjV1QrZrSD
+ IRtSmNRQ1JoUwEiVIzXKiaQVYATwm2lrjHCmMYIwUwUCVIPszVA4oVuU0oWVNI4wTigBWioFOtCHZCUK
+ ZKiUCpQUgohSCCl0k6SapgQmhSKYoKWThMnCSmQTpk6KlJk6ZFSySSdJSySSaUlLpJpSQUySUU8pKXST
+ JJKXSTJ0lKSSTJKXSTJJKUkkkkpdJMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkySl0
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpiUCxHKBYkpruTsTOUmJKbDEcILEYJKXTJ0ySlkydM
+ kpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4TpgnSUieqr1aeqz0lMAj
+ sQAj1pKbDVJRapJKWSTpJKWSTpJKWSSSSUpJJJJSk6ZOiFKSSSRUpMnSTSpZJJJNUpJJJJSkkkklKSST
+ p4UsknTJyl5SlRJTSgpkSolNKdBSkk4CcBNKWEKQCmGqQagpiAmcEUBReEQpoXrJySte8LIyQpAVOTc7
+ VBbZBRLwVTMhSgqdOnIhX68uFz7HkI7bSnKd37Ym+2LDN5TeuUFru/bEvtiwfXKf1ylSHe+2pfbVgeuU
+ vXKVKd77al9tWD65TeuUqU7321L7YsH1yl65SpLvfbPNL7YsH1yn9cpUp3ftif7YsH1yn9cpUp3vtiX2
+ xYXrlN65SpTu/bUvtqwfXKXrlJTvfbEvtiwheU/rFJTufbE32tYnrFN6xQS7f2xP9sWH6xTeuUlO8MxP
+ 9tWD65T+uUlO79sTHMWH65SNxSU7JzFA5axzcVA3FJDqWZUqnbdKqGwlKSUqXBkXSnaUwYSiitLhZQVw
+ 5MXwnLCgvBS4UEthlsK7TkwsaSEVlhCXCi3omZcIn21c+LyExyClwrS75zvNN9u81zxySl9oKXCh6H7b
+ 5pvtvmsAXlL1ylwod45qb7b5rBN5UTeUOFTv/bkvtvmuf9cpxeUuFTv/AG1P9tWB65T+uUuFLvfbU321
+ YXrlL1ylwqd37b5pfbfNYXrlL1ylwqd37al9tWF65S9cpcKnd+2+aX21YXrlL1ylwrXd+2+aX21YPrlP
+ 65S4UO99tS+2rA9cp/XKXCp3vtqX2xYIvKf1ijwqdw5ib7YsQ3FR9Yo8K53xmqLsxYYvKc3FLhS6NuTK
+ pvulVnWEqIJKXCuDba+UTcq7AUcNQ4WQFG8quSrb2Ks9iXCkldj4Vyq+FnEEJbyEuFrzLuMy4RxnDxXO
+ esQl9oKHCxh6T7d5pjmrnhkFSF5S4WQO99t80vtqwfXKXrlLhXO99tS+2rB9cpeuUOFaXe+2pfbVg+uU
+ vXKXCh3vtqX21YPrlL1yhwsgd77al9tWD65S9cpcCS7323zS+2rB9cpeuUuBhLvfbUvtqwfXKXrlLhWu
+ 79sTjMWD65Ti4o0p3xmpHN81g+uUxvKVLg7pzfNN9tWCbykLyjTIHoBmJHMWELypesUaUXZOWm+2LGNx
+ UTcUVhdwZqmM3zXPeuVIXlFTvPzVRvy5Webyq1tpKKmy/IkqdVsrL3ElW6JSSHUa6QgXFFrGijazRBmD
+ mvMFFotgodrNUNshJLvY+TCutzIXOssIRTeUkO6c3zSGcPFc8cgqP2koUxl6UZw8U/24eK5kZJUhklCm
+ IvRnNHioHNCwPtJTHIKFKDunNTfbVheuUvWKFLnd+2pxmrB9Yp/WKQCXf+2pfbVg+uUvXKdSne+2pfbV
+ g+uUvXKVKd/7al9tWB65T+uUKQ7321L7asH1yl65QU7321L7asD1yl65SpDvfbUvtqwfXKXrlKku99tS
+ +2rB9cpeuU5Lv/bUvtqwPXKXrlFLvHNQzmrDN5TG4org7RzFB2VKx/VKf1CnJblt8qk98lMXEqIBKSk1
+ au1nRVKmK2xuiSlWPVOyyFZtBWfaCgpsVXwVo0ZULABIViu0hBFvTMzVM5oXOi8pzkFJBd45qgc1YZvK
+ ibyhS0u59sS+2LC9YpesUOFDvfbUvtqwvXKXrlLhU7v21L7asL1il65Q4Uu79sS+2eawvWKXrFLhS7v2
+ zzS+2eawvWKXrFLhU7v21L7YsL1il6xS4VO59sTjMWF6xS9cpcKHfGan+2hc/wCuUvtBS4UPQfbfNMc7
+ zXPnIKY5BS4UPQHO81H7b5rA+0FL1ylwqd/7al9sWB65T+uUeFLv/bfNL7asH1yl65S4Uh3jmqDsxYnr
+ lMbijwpdZ+VKrvvlZ5tJTF5KXCubTrZUd6ryVISlwqbAep71XAKcyhwpTi2EVl8KgSUwcUuFTsMyoRRm
+ LFFhTm0pcK12vtqX23zWGbio+sUuFa74zfNTGb5rnheVMXlDhQ9B9tUTmLD9cqJvKXCh2jmJhmrCN5Te
+ uUuFT0AzfNP9tXPi8qXrlLhU7pzUvtiwvWKXrFLhS7v2xL7asL1il6xS4VO79tS+2LC9Yp/WKHCl3fti
+ X21YXrFL1ilwqd37al9sWF6xS9YpcKHd+2JfbVhesUvWKPCp3ftiX21YXrFL1ilwod37al9tWD65TeuU
+ aU9AM3zTnN81z32gp/XKNJDs25ioXZUqk64lAc8lFkBbnryUZlkrNYTKuVAor20XSFVsKsRog2MSS1wY
+ Ks1WwqxYnbIRU6teRCsDLhYweQkbSgtLtjNUvtvmsA3FN65QYi9B9t80/wBtXPfaCpC8oLHoPtqX21YH
+ rlL1ygh3/tqb7asH1yl65QpcHe+2pfbVg+uUvXKFLne+2pfbVg+uUvXKVKd77al9tWD65S9co0p3vtqX
+ 23zWD65S9co0tLv/AG3zTfbVg+uUvXKNLXe+2+ab7b5rC9cpesU0hLufbfNOM1YPrFN65TaXPQjNUxmh
+ c565T/aCjS56P7cPFL7cPFc59pKicko0l6Q5w8UwzvNc39pKkMgopej+2+aBdlyFjC8pOtJRSzyb5VEv
+ kp7CShtaSUVN2gq6HaKnQxW9uiSENr1W9SCi3gqi8kFJDqUXwtGrLhc6x5CstuKSHf8Atigc1YhvKgby
+ kh3Dm+aX2xYXrlOLigh3RmJ/tqwvWKRuKFKds5qYZqwjcU3rlCkvQjN80/23zXPi8qXrlCku6c3zTfbV
+ hG8peuUKU7v2xP8AbVg+sU/rFFDu/bUvtqwvWKXrFG0O79tS+2LC9YpesUrS7v21L7YsL1il6xSS7v2x
+ L7YsL1il6xSU7v21L7asL1il6xSU7v2xL7YsL1il6xRQ7v21L7b5rCNxUTeUlpd77d5pfbfNc/65Ti8p
+ WsLtWZcrOvvlVjaSgPcSjbJBmXyUelypAElW6WlK29E6N9jtFCxydg0UbGpWtm1y+CjVXQq72lRBIStq
+ F2qsqEcZiwxYQnNxStTt/bPNOM1YJvKj65RtT0P21N9t81z/ANoKf7QUDqp3vtvml9tWD65S9cpvCh3v
+ tnml9t81g+uUvXKXCp3vtvml9tWD65S9cpcKXe+2pfbVg+uUvXKXCp3vtvml9s81g+uUvXKXCp3vtvml
+ 9tWD65S9co0p3vtqX23zWD65S9cpUp3vtqX23zWD65S9co0p3vtqX21YHrlL1ykp6D7aPFL7b5rn/XKb
+ 7QUUvRfbh4pfbh4rnftBS+0FJT0JzVA5iwftBT+uUrS7LsqUJ2RKzBaU+8lK0t110oTrJQJKWqPEm2Tn
+ KEqW0pixLiTbJtkI7MiFScCEMvISWF2WZasNzFz4tKKLikh3hmJHNWH65UTeUFO2c1N9s81hm8pvWKSn
+ eGYpjMWALipi4pKd37YmOYsT1imNxSU7JzE32xYpuKj6xQQ7ozFIZiwBcVIXlJTvfbPNL7Z5rC9cpeuU
+ lO79s80vtnmsL1yl65SU7321L7YsH1yn9cpKd37Yl9sWF65TeuUqU732xN9sWF65S9Yoqd37Z5pfbPNY
+ XrFL1ilSnd+2Jvtiw/WKXrFKlO59sUxmrn/WKf1yjSnfOb5qtdlysg5BQnXEorSW5bfKg18qnuJVioEp
+ LoluNKFaUVjU1jEG5BzbClW+CiW1qvtISVJ1aL4WhXlwufY4hFFxCDXk9CM3zT/bh4rnftBS+0FCmIvQ
+ /bUvti58ZBUheUqWu99sS+2LD9YpG4oUkO39tS+2rCN5TeuUKXu99t80vtqwfXKXrlKlF3vtqX21YHrl
+ L1ylS13/ALam+2rB9cpeuUqU7321L7asH1yl65Spc7323zS+2rB9cpeuUqWl3vtqX21YPrlL1ylSx3vt
+ vmn+2+awPXKb1ykp6H7d5p/toXOfaCpDIKbaXohmhP8AbFzwyCpfaCjaXdOahOzVim8oZvKK52/tvmn+
+ 2LBFxUxaU5Lp3ZMrOttlQc8lBMlG0p2O1V2oqhU0q/U1K1MrDoqFpWg9uipXMStSGt8FaWPkwsktIU2v
+ IStT0bM2FI5vmufF5T+uULWu4cxL7YsL1yl65QtDufbEvtiwvXKXrlC0O79sS+2LC9YpesUrU7v2xL7Y
+ sL1il65RU732xL7YsL1yl65RU7v2xL7YsL1yl65SS7v2xL7YsL1yl65QS732xL7YsL1il65QpTu/bEvt
+ nmsL1il65SpTu/bEvtnmsL1yl65SpLvfbEvtiwvXKXrlKlO79sS+2eawvWKXrlJTu/bEvtiwvXKXrlFT
+ u/bExzFh+uU3rlFLsvy5VS3IlUDaVBzyU5TOyyVFhkoepRqmJKbVQRidFGpiI5miSmlY6EJt0FEvaqTp
+ BSU69GVC0K86O65lthCKMghBT0/28eKic8eK5o5RTfaimqejOaEM5iwPtJT+uUFO59sT/bFh+sUvWKFK
+ d0Zil9tWD6xS9co8Kx3vtqb7asL1yl65S4VO99tS+2rB9cpeuUuFTvfbUvtqwfXKXrlDhU7321L7asH1
+ yl65S4VO99tS+2rB9cpeuUqS7321N9tWF65S9Yo0p3vtqX21YPrlMbylSXoBmqYzQuc+0FSGQUlPRfbQ
+ ouzQsH7QVE3lFLuHNTfbVgm8peuUVO47MVazKlZhuKgbCUbS3XXyoepKphxKKyUbTbY3KJKYApy1HiVb
+ HcptshDLSmgo8Sbbld8K3XlQsmSEvUIQJtaXdbmKf23zXP8ArlL1ymcLG75zU32xYPrlL1ylwqd77Yl9
+ sWD65S9cpcKne+2JfbFg+uUvXKXCp3vtiX2xYPrlL1ylwqd77Yl9sWD65S9cpcKne+2JfbFg+uUvXKXC
+ p3vtqX21YPrlL1ylwqd77al9tWD65S9cpcKne+2pfbVg+uUvXKXCp3vtqX21YPrlL1ylwqd77al9tWD6
+ 5S9cpcKne+2pfbVg+uUvXKXCp3vtqQzVg+uUvXKXCp6D7b5ob8yVh+uUjcSlwqb12RKpmySgl5KdoJRp
+ kDarcrG7RV62o8aIr7a9xVJzoKuWtVJ7SggpqrYV+rJhZAkIrXkJLXaGYn+2rFNpTeqUKWku83NRBmLn
+ xcVMXFKkPQDMSOasH1ymN5Q4UO6c1QOd5rBN5UfXKXCp6D7b5qX23zXPC8qQvKHCl3/tqX21YPrlL1yl
+ wJd77Z5pfbVg+uUvXKXAp3vtnml9s81g+uUvXKXAp3vtnml9s81g+uUvXKXtqd77Z5pfbVg+uUvXKXto
+ d77Z5pfbVg+uUvXKXtod77aonMWH65S9Ype2p2TlpDLWP6pS9QoVS52xmKYzVg+sVE5BRU9CM4eKkM4e
+ K5r7SU4ySitL0FmbI5WbkZUqicglAfYSjS6LKy2Sp1GVVAJKuUMKLaiW7WdE1inWzRNYxJZMtF7oKJVd
+ CFa0oMkJNKTuU5cK03NXOttIRBeUqUHoPtvmm+2+awfXKf1ymsod37al9tWF65TeuUFzvfbUvtqwvXKX
+ rlJLu/bUvtqwvXKb1ylSne+2pfbVg+uUvXKNId77al9t81heuUvXKK0u79t80vtqwvXKb1ylSHe+2pvt
+ iwvXKXrFKlB3ftif7YsL1in9YoUudz7Yl9sWH6xS9YpUp3Ptib7b5rD9YpvWKVKd37al9t81g+uU/rlK
+ lpd8Zqf7b5rAF5T+uUVjvfbFE5iw/XKRuKSQ7RzEN2YsY3FRNxSZA6VmTKqvtlVS8lOJKTKE7XIzXKuw
+ FFAKS9m56GbUzgVXdKSwt2u+FdryoWIHEIjbSEGIu8MxP9tWF6xUTeUWIvQDNUxmrnBeVIZBSWPRfbUv
+ toXP/aCmOQUmaL0H20eKX24eK545BUftJSXvRHO80323zXP/AGgp/XKaQsLvfbUvtqwfXKXrlKkO/wDb
+ fNL7b5rA9cpeuUqXh3/tvml9t81geuUvXKVJd/7al9t81geuUvXKVLS7/wBt80321YPrlL1ylSHe+2pf
+ bVg+uUvXKNLg7/23zTfbVg+uUvXKNKLvfbEvtiwvWKf1ilTGXc+2KQzFg+sUvXKVId05iBZlSsr1ioG0
+ lKkht2XygmyVXLiU7QSiyxbAcmcUzWqZYk2YtdxTB8Kb2ILmkJKk2q7oVyvLhY0kJvVISaki9GzOjuiD
+ P81zIyCFIZJSpaC9L9t8032xc+MgqfrlKku79sS+2LC9cpvXKXCp3vtqX2xYPrlL1yhwqd77Yl9tWD65
+ S9cpcKne+2pfbVg+uUvXKXCp3vtqX21YPrlL1ylwqd77Yl9sWD65S9cpUp3vtiic3zWH65TG8pUp3Ptq
+ cZvmsH1ykLilwqd/7b5pjm+awvXKY3lLhU7n21OM1YHrlOLylwqeg+2JjmLCF5T+sUeFTufbE4zVg+sU
+ vXKXCp6AZqkc1c+LypeuUeFTq3ZcrMvyJQLLSVUseSlSm0LZKtVPlZVZMrRoBQMWSKd50VC4rQc3RUr2
+ JvCzAtZj4K0sa+FlFpBRq3EJcKwl6GvLgIhzVhC0hM68o8LGXd+2jxUhnDxXOHIKQyShwrXphnDxUvtw
+ 8VzIySpDJKXCh6M5oUTmrA+0FN65S4Vwd05qb7asL1yn9YpcK53ftqf7asH1il65S4VO/wDbUvtvmsD1
+ yl65S4UO/wDbUvtqwPXKXrlDhWF3/tqX21YHrlL1ylwrHf8AtqX21YHrlL1ylwqd/wC2pfbVgeuUvXKX
+ Cp3/ALal9tWB65S9cpcLIHe+2pxm+awPXKXrlLhXPRDNTnNC54ZBSOQUqWF3XZqCc3zWK68oZuKVIds5
+ vmq9uVKzPVKYvJSplCS66UBpkqBkqdbClS9u0K5Oiq0sVkjRKlNe1yriyCjXAqk6QUqU6tGRC0asyAuc
+ Y8hHbcQlTGXoTm+agc3zWCcgqByClTGXoPtqb7asD1yn9cpUh3vtqX23zWD65S9cpUoO99tS+2rB9cpe
+ uUqXh3vtqX23zWD65S9cpUl3vtqX21YPrlL1yhSXe+2pfbVg+uUvXKVId77b5pfbfNYPrlL1ylSx3vtv
+ mpDNXP8ArlOLyiAp6AZqf7auf9cpjkFPBpLvnNUDmrBOQVE5BR4lO8c1L7asD1ynF5StTvjMUhmLAFxU
+ xcUbU74zE/2zzWCLyl65QtLuHMQX5crIN5UDcULU6FuTKo2XygPsJQHOJQtTerskrXw3TCwKZlbmEOEw
+ lT0ONwrgVLG4V4JpUwcoqTlFNUpJJJBSkkkkEKSSSSUpJJJKlKSSSRpSkkkklKSSSQSpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSySSSSl0kkklLqLlJRckpr2KuVYsVcpKZMVtiqMVtiSkwSSCSSlkkk
+ klKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpJJJJSk6ZOkpYoFiOUCxJTVeot
+ UnqLUlNmtWWqtWrLUlLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OipSZOmSUpJJJFSkkkklKSSSQUpJJJJSkkkkFKTpkkFLpJJJqlimUkySlk8pJklMpUSUxKiSipYpoSlK
+ U4KZNCIChgpbk5SWUpQtyQeipOCnQQ9S3pUpmVAhLcmlEKWLUg1PKUooZBPKGXJi9BTMlRUN6W5BSUFS
+ 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
+ aHmvspS+yldJ9hHgl9hHglanm/spS+yldJ9hHgl9hHglbGXm/spS+yldJ9hHgl9hHglax5v7KUvspXSf
+ YR4JfYR4JWl5v7KUvspXSfYR4JfYR4JWh5v7KUvspXSfYR4JfYR4JWyB5v7KUvspXSfYR4JfYR4JWveb
+ +ylL7IV0v2IeCf7CECVheYOIVH7IV1P2AeCX2AeCC15cYhT/AGUrpTgDwUTheSLIHm/shRa8Urd+x+Sk
+ 3EhJe5tWMjmjRaTMaET7OglwLcYlU34hXTuxpQzhgpKLzYxCp/ZCuiGEFMYI8ErYy8wcQqBxCupOCPBM
+ cAeCFrHl/shT/ZCum+wjwTfYR4IrXmvshS+yFdL9hCX2EeCKnmvshS+ynwXS/YR4JfYR4JLw819lPgl9
+ lPgul+wjwS+xDwSXPNfZCn+yFdJ9iHgn+wjwQU819kKb7IV032EJvsQ8EkPNfZCl9lPgul+xDwS+wjwR
+ Wl5r7KfBP9kK6T7CPBP9hHggh5r7IUxxCun+wjwS+wjwQtLyxxCm+yFdT9gHgm+wDwQtLzAxD4JxhnwX
+ T/YB4JxgDwRtTzQxCpDEK6T7CPBP9iHglanmvspS+yldJ9iCicIJWp5s4xTfZSujOEE32MIqedOIVD7E
+ fBdN9iCkMIeCCnnqsMg8LXxaNqvNwwEdlG1NUzobAVkFCaIU5TSpRKZIpIKUkkkgpSSSSSlJJJJKUkkk
+ kpSSSSKlJJJIFSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpdJJJJS6i5SUXJKa
+ 9irlWLFXKSmTFbYqjFbYkpMEkgkkpZJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ l0kkklKSSSSUpOmTpKWKBYjlAsSU1XqLVJ6i1JTZrVlqrVqy1JS6SSSSlkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A
+ /9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZC1KSSSRtSkkkkVKSSSSUpOmSSUpJJJKlKSSSQU
+ pPKilKCl0k0qQQUpMVJMUlIioEqbkIoqXlKVGU4KKmSYlJMUVKJTApimRtSQFS3IQKeU4FSTckHIJKcF
+ FCcOSLkIFIlJTIuQy9M4oZKaSpLuTyhAqQKFqSSlKglKSme5LcoSlKSme5NKilKcpclNKZMUlMtykHIS
+ cIFScFTDkEFPKYVJtyYvQS5MXJhUlL029ClNKSk29IvQNyUoqSl6bcoSmUgUk3J5QgpBShTOUxKSiUCV
+ L7lIOQikFHaU25MXKASKVqUXJt6YhRITrUkD1IPQU4KVqT7ktyECnlG1JJT7kOU0oWpLuTbkOUpQUzlS
+ BQ1IIKSgqYKEEQJtqZymJSTFBTElQJUihkpKVKUqBKUpKSAp5Q5TykpnKYlRlMSipluS3KEppRUklKUO
+ U8pKZylKjKUoKZylKhKUpKZynlQlKUlM5SlQlPKSmUpSoylKSmUpSoylKSmUpSoylKSmUpSoSlKSmcpS
+ oSlKSmcpSoSlKSmcpSoSlKSmcpSoSlKSmcpSoSlKSmcpSoSlKSmcpSoSlKSmcpSoSlKSmcpSoSlKSmcp
+ SoSlKSkkpSoSlKSmcpSoSlKSmcpSoSlKSmcpSoSlKSmcpwUOVIFJTIlAeUUlBeUlISVJhQyVJhSU26yj
+ gqvWUcJKZJJJklLpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEk
+ kikpC9VnqzYqz0lMQjMQAjsSU2Gqag1SSUpJJJJSkkkySl0ySSSlJ0ySSl06ZOihSSSSKlJJJJpUpJJJ
+ NUpMnSSUsknSRSsnSTJwUumTpkVLEppTFMkpICpIYUwU0qXKiU6ZMKloThJOgpSRSTFFLEpoUimTwVLb
+ VLaEgnUgKlQE8BRlNKKme0JbQohylKba1W0JbAlKUpWpbYEtgTylKXEhbYE+wJSlKXElWwJbAnlKUrUt
+ tCWwJ5TSlalbQltCUppStStoT7QmlKUuJS+0J9oTSlKHEpfaEtoTSlKVqX2hLaFHcluStK+0JbQoylKX
+ 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
+ LUlLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSU//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmToKUmTpklKSSSSU
+ pJJJFSkkkkVKSSSRUpJJJJS6ZOmQUxKZOUyClwpBQUggpmExSlMSkpG5BKM5BckpinBTJAoqZpkgUkVL
+ FRUiooqXSTJIqWKSdKE5DIJFMkkUMSokKZTQmFTEKQShOEFKTpJ0lLJk6ZEKUkkknAKUmTpI0paE4CSc
+ IUpdIlKVElMIUolNKYlJRlS6UJwlCSmKcBPCcBFSoSIUwmKeFMIUgmKYFShSRRISBSlApYkJwE6SjSuA
+ pQogp9ySlFqgWqe5MSipGQlCkUkVMU6eEoSUsmUoShJTFSAShOEFLwpBMnQKmQUwoBECapkmKcJFJSJy
+ GUVyE5BTApk5TIqXTpk6SlJinSRUxKZSTIqWTymSSUvKdRSQUySlMkkpeU8qKSSmSUqKSSmUpSoynSUv
+ KUppTSkplKUqMpJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKUqKSSl5S
+ lMkkplKUqKSSmUpSop0lLykmSSUvKUpkklMpSlRSSUylKUySSl5UgVBSCSlyUF6KUJ6SkBUmKJUmJKbV
+ aOECtHCSmSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdMU
+ 6YpKRPVZ6svVZ6SmAR60AI9aSmw1SUWqSSlkkkklKSSSSUpJJJJSkkkklKUlFOiELpJJIqUkkkmlSkkk
+ k1SkkkklKSSSRSpJJMnBSkkkkVMSEoUoTwgpiAnTpIFSxTSkUxTCpeU8qKcJqmSSYJ0VLQlCkknhSoSI
+ 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
+ hRBUpSYisQoEIiiUlrCEoUkkmWKtqW1SCdJkYQkplQKSwrJJJJIXSTJJLgukmSSXLpJJJLCpJJJJCkkk
+ klykkycJKKoShOnSYixTEpyokJLVSlKaEoSXMw5KVGE8JLwvKYpJiizhSeEySSJbKSSShBqyVKeVGE8I
+ FAZSnUQnUZDKF0kydCkqSSSSpSkkkyVKXSTJJUpdJMklSl0kySVKUmKdMlSllIKKcJUpmCnKiClKVKWK
+ iVIpilSlkkk4RpS4TpgnSpSkydJGlLJk6ZKkKSSSRpcGQUwhhSBSXM1Ap5USUlpWTJEpSitVCW1OFIJK
+ Y7UtqJCUJKYbUoU0yS4LQkmJTSkuZJk0pJIXSSSSQVJJJIrCpJJJJapJJJJSkkkkkhSSSSTIFJk6SS5i
+ QlCklCTGVgnBUSmJSWpNyW5ClOCkyBJKeVAFOla9dNKdMUbSqU0pJklLylKinSYyukkkksUknShJCySe
+ EkVLJJ0oSXhZJPCUIpWSTwlCSVkk8JQkhZKE8JJLVlFThRIQKmKUp4ShV5RUoKSYBPCAilUppTpinCKl
+ iUydNCdSlJwEgpBGlKAThqcKSVIY7UoU0yVKYQlCkVEpUpZJJMgpdJJJJSkkkkUqSSSSUpJJJFSkkkk5
+ SkkkkbUpJJJAqUkkkmqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJS6SSSSl1FykouSU1
+ 7FXKsWKuUlMmK2xVGK2xJSYJJBJJSySSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ LpJJJKUkkkkpSdMnSUsUCxHKBYkpqvUWqT1FqSmzWrLVWrVlqSl0kkklLJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/R
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOgVKTJ0yYpSSSScpSSSSKlJJJJylJJJIqUkkkipSSSSSloTQ
+ pwlCCmEJwnIUSgpeUxKaU0pKWKGQiFRISUiKYKRCikpkE6QUoRUwKiVMhQIRUsnSAUgElLQkpKJStCpT
+ SmJTAoWhmlCQToKWhJIpkFLp1FOiFKTJ0yeFKSSST1KSSToqYp08JiEFLSmJSKZMKlJwkApAKIqUE6SS
+ Slk4TJJKZymJTSkiFMSmlShNCkBUsCpSmhJApXlKUydMSqU25IhRISUvuTyoQpAIqZBOnATwipZJIqBc
+ kpmkoBykCkpdNKdMUlLynBQ1IFNUmaiBCaUUFBTNMUkigpg5CciOQnJKYFMkUySmScKIUgipdJJJFTEp
+ lIpklMUk6ZJSkkk6Slkk6SSlk6SSSlJJJJKUkkkkpSZOmSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ0klKSSSSUpJOkkpZJOkkpSSdJJSykEycJKUUJ6MUF6SkBUmK
+ JUmJKbVaOECtWAkpdJOmSUpJJJJSkkkklKSTJJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUuEikEikpC9Vnqy9VnpKYBHYghHYkpO1TUWqSSlkkkklLJJ0klLJ0kklLJJ0klKSSSRCF0kkkVKS
+ SSTSpSSSdNUsknTJKUkkkilSZOknBSySSSKl06ZJBS6ZKU0oFSk0J08KMqYJ05CZBS6dMkkpkmJSTFPC
+ lEppTEplKErp0gFKEVMU6eEklqkkk6SFJJJIKUkkmSUumTSlKSV0yaUpSUySTBOElKTpJIKUkmlKUlLp
+ JkklKShOkglUJQnSSUskklKSlJkpSSUpJMnSUsmKkokIFS0ppTwlCapQUgEwCmAkhYBPCdMSkhdJRlNu
+ RUzTFNKUpKUVEqSiQkpjKUpEJQilcFOCogJwklmkmlKUVy6SjKUpKZJKMpSipkkmlJJC6SZJFS6SZJJa
+ ukoynSQpJJPCaVLJ0kk1SoShKUpSUuAnhNKUpJWKiSnJUCUl4ZApwVAKQSSWSSQTpNea0JQnTSixhaEy
+ lKZJniskkkkvUkkkkhSSSSKlJJJJMgUkkkkkqSSSSYJKSSSSWqSTpJwUpJMkiuDJRhOnTWQMISUoTQgk
+ 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
+ ukmSSXskimlIlMLFJiVAqRUU21q4UgEwCmAlbIFk6RTSja9kkogp5StKxTJEppStSk6QTpWxlSSSaUVj
+ JJNKSVoXSSSRUpJJKUbXhSSSSS5SSSUpKUklKSSlJJSkisKkkyUpIXhJNKUo8K5dJRlKUuFTJMmlKUaU
+ qEoSTpUpaE4STpUpcFPKilKVIXlKVGU0pUplKaUySBCl0kydNUpJJJNUpJJJJSkkkklKSSSSSpJJJK1K
+ SSSRtSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSl0kkklLqLlJRckpr2K
+ uVYsVcpKZMVtiqMVtiSkwSSCSSlkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXS
+ SSSUpJJJJSk6ZOkpYoFiOUCxJTVeotUnqLUlNmtWWqtWrLUlLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Lr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6aVKTJ0yapSSSSIUpJJJPClJJJJwUpJJJFSkkkklKSCSQSUyC
+ kmCdC1MSFAhEKiQhakZTKZCiQkpZRKclQJSUxKikXKMpwCLSBSQw5TBTuFVrkKMKUpiUuFVrQnTEpi5H
+ hVa6iUtyaUuBTEhMApJBAxUuFJME6YQhYqKcpIUpQTwkClKcApSZPKZPAUukmThOUvCSeUxKNKUmhKU4
+ QpS21NtRg1ItUckooSUioEqElC6SjKkELUpMpJFFTFOEyQKkAUzAS2pAqUqSlMC1MQiSmKBCmCcBPCSj
+ ITa0KJCmolKlWxhSCgSlKNKtKCkSh7kxcjSmTihEpyU0I0pYFEBUQFIBClMwUxTJJUpSkE0KQCbSWbUU
+ IbQiAIUpmExTpihSkbkJyK5DISUjKZSIUUqUuE4TBOEqUyTJJI0pZMnSRUsknTJKUkknQUsknSSUsknS
+ SUsknSSUsknTJKUkkkkpSZOkkpSSSdJSySdJJSySdJJSySdJJSySdJJSySSSSlJJJJKUkknSUpJJOkpZ
+ JOkkpZOkkkpSSSSSlJJ0klKSSSSUpJOkkpZSCZSCSlFBejFBekpAVJiiVNiSmzWjhBrRwkpdJJJJSkyd
+ MkpSZOmSUpJJJJSk6SSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUpJJJJSkkkklKSKSRSUieqz1Zeqr0lMQ
+ j1oARmJKbLVJQappKUkkkkpSZOkkpZJOkkpZJJOkpZOknRUsknSStCySSZAqXTpkk1S6ZJJFKkkkklKT
+ JJJwUpJNKSSl00pJklLykmToFS4TpkpTCFLlMkkhSlk6SSNKUmKdMiApinATwnAUgKWQClCiCnlK0LFR
+ TkpkrUpOmSRtFMkpTSmStVLymSSQtVLJk6SVppZOkklaKXCcKKdK1UyTFKUyVqpRTJJJJUnTJ0lUunUU
+ 8oKXSlNKSSlSmlJJJSkySSSl0kySSl0kkkCpUJQnSTVKATpkpSQuSokp5USipiSlKUJQkpcFOCmhOEkL
+ p0ySSVQlCdJJTGEk5TFFctKUpJkkrylKZJG1LylKZOlalJJJJWhSSSSVoUkkmRtC8pJkkrQzCkFAJ5TS
+ UslEpSmKaqliUpSTQkql5SlMkkpRKZPCSKQVBSCaE6SSWQSlNKUpWxSFqlNKSZK1oivKSSSVskVJJ0kr
+ XrJJJJWhSSSSVqUkkkla8FSSdJG1ErJJJJWxFSdMnStbSkikkjxLqWSSSS4kgLhSUU8oWvBUmTpkLUSs
+ nSSQtauE6inStCkkySClJJJJJCkxTpkmQFZOEk6SeJdRITpFG1tsIThPCSNoJUkkkjaxSQSSR4lUzCkF
+ AFPKXElkmKUpiUrSxKZOmStS6SSSVqUkkkghSSSSSFJJJIKUkkkkpSSSSKlkkkkkrJJ0kVLhECGFIFFL
+ IlRJSlRJSUsSmTpkkLp0ySCmSSZKUEKKiVIqKVIpUp00J0aSpJJJFSkkkkqSpJJJJKkkkkKUpJJJKlKS
+ SSSpSkkkkqQulKZJKkLylKZJKlKlOmSSpS6dMnRVS6SZJJSkkkyKVJJJJJteE0J0klWtCSSSbSrXTwml
+ JKlWqE0J5TJUhUJinTJUpYqJUimhKkMUgnhPCVKpQKkCownSpS6SSSVKXSTJJUldJMklSl06ZJKlLpJk
+ kqUukmSQpS6SZJKkLpJkkaVSkpSTIUil5TqKeUqRTJJRlKUqSAumSTIr15TSkmRTa4Kkop0lWoqJUlEp
+ IKycJQkktplKSZJBFKSSSSpFKSSSSpNKSSSQpcpJJJFKkkkkVKSSSSWqTpkkUUyCdRTygldRKeUxSUsm
+ TpkEsgnUU8pJXKZJJBTIJ1EFKUKUuVEpyVFKlLpJkkKUvKaUkyNIXlKUySVIZSlKZJKlUqUkydGlLhSC
+ gnlFTNMSmlMSkpYlNKcpkUqlPKZJJS8pSmSTVrJNKZJJS8pSkmSXLylKZJJK8pSmSSSvKUpkklLylKSZ
+ JDKUkySSwhkkUyZJYYqJUSU6aEqXRFLSknhKEmwJLhSUQnSWkspSUUkqY1FQKmVEhKlAMVMFRhSCVLmY
+ KclRlKUqUpMkkhSrXSTJJUq10kySVIXSTJI0pdJMklSqXSTJI0ql0kySVKXTqKeUkrwmhKUpRUskkkki
+ 15TyopJKtlKaU0pIoUSolOmSUpIJQnRRS4CkAohPKCuFdMlKaULXBeUkySFpXTyopSlamUppTSklalSm
+ SSStS4UgVFKUrUklKVCUpStS5KgU5TJWpZJPCUJIWSTwlCSlkk8JQkpSSSSNqUknhKErUsknhKErUskn
+ hMlalJJJ4StRUnTJ0GMhZOkkhagF4TEJ0yNs4LGEoTp0rSZKCdMnQYypJJMktpdKUySSKXlKUyZJIC8p
+ Jkkl66UpkklLylKZJFC8pJkySV5SlMkkleUpTJJIK8pSmSRW0yBThRTymlFMkxTSko1UqU0pJIppUp0y
+ SKmQUlAJ5RtcuVAlOSmKVqtjKQKUJQlarXlKUkkrVapTpoTpWpSSSSCFJJJJIUmTpQkpZJPCUJKWTpQk
+ ipSSSSNqpSSSSVqVKUpJJWlUpSkklalSlKSSFqVKUpJJWpUpSkklalSlKZJK1KSSSStSk4TQnRtS4Tpk
+ krUukCmSRtTMFKVGUpQtS5TJSmStS6SSSFpWKZOmTVLgpwop0FM0yaUpSUoppSKZFS8pSmSSQvKUpkkl
+ LylKZJJS6SZJFS6SZJJS6SZJJS6SZJFS6SSSVqXTqKUo2pmmTSlKVoXTJpSlG1LppSlMlxKXlKVFJHiU
+ zlKVFKUOJTJJNKSNqUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJk6SmQKeVCUpQtLOU0qMpSlal5TyoSnlK0MpSUZTylal0yUppStFLFKUkyVqpm
+ CnlQTyhalyUxSlMhaVJJJJKUkkkglSSSSSbUkkkkq1JJJJKtSSSSSFJJJJIUnTJJJZSmJTJFJcsSoynI
+ TQkhUpwU0JwEbWkMwUpTBJK1BSZOkjbKJKTFOmStbKVrKQTQnCFtcxZBOmlNKFpAUU0pJIMgVKUpJJL7
+ UnTJJJtSSSSSrUlKSSKFSlKSSNrCqUpSSRtapOmSQtIXTJJJWvWSSShK1KSShKErUpPKZJK1pXSlMnSt
+ bSkpSSQtNKTpkklwUkkkkvBUnCZOjaeJdJNKUoWtJXTJJJLSpJMklawhmE6gCnlK0UuVAqRKiUbXjRin
+ SSStfa6SSSIWlSSSSKFJJJJLgpJJJJNqSSSQpCkkkkqQpJJJJKk4TJJKLIJFME6VMZDEqKkU0JUilwU8
+ qMJ0qTSpSlJKEqXBSRSSSplBYwnATwklSjJcJ0ySFNeQtUppTpkaQIqSSSTmQKSSSSSpJJJBCkkkklKS
+ SSSUpJJJJSkkkklKUgopSkpkSokpSmKSmJTJ4ShJS4UgVEJ0lMpSlRSRUvKZJMkpeU0pJIqXBUgVBPKS
+ mcpFRlKU0pUUydMmJtQUgoqQSQVyoFSlMUVtMVIJk6SaXSTSkkqlJJJJLgpKEkkU2qEk6SSrUkkkkhZO
+ kklawhSSSSVopZJOklaqWTpJJWmlJJJJWvCkkkkrXWpIpJJpWFiUwCklCFLaXaFNRCeUqXhYqBUyolKl
+ 1rJ00J0qVaxTJ4ShKk2uE6YJ0lhUUydMitpSSSSSKXSSTJKpdMkkiuCk6ZJK0qTpkkrUukmSStS6SZJK
+ 1qkkkkbUxJTSpQmhOBUtKSeEoR4lLKSaE8JcSl06ZOhaV0kySVqXTJJJWhZJOmStSkkk6FqUkkkgpSSS
+ dBSySdJBSySdMlSlJJJJUpSSSSKlJJ0klLJJ0ySlJJJJJUknSSUsknSSUsknSSUsknTJKUkkkkpSSSSS
+ lJJ0klLJlIqJSUpOEycJKZKLgphM4JKalgVcq1YqzklLsVtiqsVpiSkwSSCSSlkkkklKTKSZJSkydMkp
+ SSSZJS6SZOkpSSSSSl0kkklLJJ0ySlJJJJKXSSSSUpJJJJSk6ZOkpYoFiOUCxJTVeotUnqLUlNmtWWqt
+ WrLUlLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpskKTJ0yap
+ SSSSIUpJJJSBSkkkk4JUkkkilSSSSClJJJIJXlPKgmlNKEkppUJSBQQyUSpKDkUI3OQHPU7FWeU4KZF6
+ juQS9MHqQLWyHKQeqwekXqQBDa9RMbVTdbCEb08RU3zaom1UDemNyPCpvG1N6yzzcm9ZGlwdMWqYestt
+ yOy1NMUuiHKQVVj5VhpVeQQyKgTCmVXtdCYFMjZCQsVJ9sKDblIFOmHSpgKpVZKtscnKXIUCYUyVXsfC
+ KmZsS3yqTrkm3JwU3wZRWhVK7FYFgSIS2AmKF6oTG1RSjopdygQn3ynGqpyQxhLhTIQnuhAKZ7kpVY2K
+ TXypApMVAuhPKFYYU8VMvUhIXKk+2EP11OAp1BZKIHSsyu6VbrfKaQptBJMCmLoURQuVAqJsSDpSUohN
+ CIBKfailFCW1F2paBFSPYn2qRcFEvCSl4ShQ9QJCwJKZwnhRDwpAoKUApgKIUwmpZNRAoBTCCmSRSSKC
+ UZQyiFDKCmBTJymSUpJJJFS6ZOkilZOmSSUpJJJAqUkmSQQukmSSUukmSSUukmSSUukmSSUukmSSUukm
+ SSUukkkkpSSSSSlJJJJKUkmSSUukmSSUpJJJJSkkkklKSSSSUunTJ0lKSSSSUpJJJJSkkkklLpJkklLp
+ Jk6Sl0kySSl1IKCkElLlBejFBekpCVJigVNiSm1WjhArRwkpkmTpklKTJJJKWSSSSUpJJJJS6SZOkpSS
+ SSSlJJJJKUkkkkpdJMkkpdJMkkpdJMnSUpJJJJS6RTJFJSJ6qvVp6qvSUwCOxACPWkpsNUlBqmkpSSSS
+ SlJ0ySSl0kySSlJJJJKXSlRSlBTKUpUZSSUukknhJSkk8J4RUsknTJKWTJymSUskknSUsnTwnhJTGEoU
+ oShJTGEoTwnhJTFJPCSSlkk8JJKWSTpJKWSTpJKWhOkkkpSUpJklKSTpkkqSSSSUpJJJJSkkkkVKSSSS
+ UpJJJJSkkkklKSSSQUpJJJFSkkkklKSSSQUpJJJJSkkkkVKSSSSUpJJJJSkkkkFKSSSQQpJJJJSkkkkk
+ KhKE6SSlkk6ZJSkkkklKSSSSXKTJ0kksUoUk0JKWSTwnSUxSUkklMUlJJJDFJSSSWlikpJJILFJSSSQs
+ knSQXhZJOkguWhKE6SSFoShOkkhaEoTpJIWhJOkkhZJOkkpZJOkkpSSSSSVJJJJJUkkkgpSSSSSlJJJJ
+ KUkkkkhSSSSSFJJ0klLJJJILgpJJJJKkkkkkKSSSSUpJJJJSkkkklKSTpIqWSTpklKSSSSUpJJJJSkkk
+ klKSTpJKWSSTpKWSSSSUpKUkklKlJJJFSkkk6cpZJOmSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUs
+ knSSUpMnSRUpMknSUsknSSUsknSSUsnSSSUsknSRUqEoThPCKmMJQpJJKYwlCkkkpjCUKSSSmMJQpJJK
+ YwlCkkkpjCUKSSSmMJQpJQkpjCUKSZJS0JQnSSUtCSdJJSySdKElKTJ4SSUsknSSUsknSSQpJJJFSySd
+ JBSySdJFSySdJJKySdJBSyUJ0oRUtCUJ0oSUtCUJ0kFLQlCeEoSUsknSSUsknSSUsknSSUsknSSUslCd
+ JJS0JJ0klLJJ4ShFSyZSShBTFJPCUJKWSTwlCClkk8J4SUxhKFKEoSUxhJShKElMUoUoShJTGElKEoSU
+ xTp4SSUsknSSUsknSSUsknhJJSySdJJSySdJJSySdJJSySdJJSyZShNCClkk8JQkpZKFKEoSUxSUoTQk
+ pZJShKElMUk8JQkpZJPCeElMUlKE0JKWShPCeElMYShShNCSlkk8JQkpaEk8JQkpZJPCUJKWSTwlCSlo
+ ShShKElMYShShNCSlkk8JQghZJPCUJIWSTwlCSVkk8JQklZJPCUJJWSTwlCKlkoTwlCSFkk8JQkpZJPC
+ eEkMYShShKEVMYShSSSUxhKFKEoSUxSTwnhJLGEoUoSSSxhKFJKElzFJPCUJLSskpQlCKxilClCUJJYw
+ kpQlCSWKSlCUJJYwnTwlCSVkylCUJKYpKUJQkhiknhKEkLJJ4ShBCySeEoSUsknhKEkLJJ4ShJK0JQnh
+ KEkrQlCeEoSSsknhKEUrJJ4ShMKFkk8JQmoWSTwlCSlkk8JQkpZKE8JQipZJPCUJKWSTwlCSlkoTwlCS
+ lQlCeE8JKYwlCkkkpjCUKSSKmMJQpJJKWhKE6SSloShOnhJTGEoUoShJTGEoUoTQkpaEk6ZBCydJJBSk
+ kkklKhKEk6SmKdJJFKkkkklLJJ0kkrJJ0klMYShPCUJIWhKE8JQkpZJPCUIqWSTwlCSlkk8JQkpZKE8J
+ QkpaEoTwlCSlk6UJ4QKlkoTwnhNSxhKFKEoSQxhKFKEoSUxhJShKElMUoUoShJTGEoUoShJTGEoUoShJ
+ TGEoUoShJTGEoUkklMYTwnShJS0JQnhKEFLQlCeEklLQlCeEoRUxhKFJKElMYShShKElMYShShKEFMYS
+ hShKElMYShShKElMYShShKElMYShShKElMYShShKElMYShShKElMYShShKElMUlKEoSUxhKFKEoSUxTp
+ QlCSlkk8JQkpZJPCUJKWShPCeElMYSUoShJTFJShNCSVkylCUIqYwkpQlCSmMJQpQlCSmMJKUJQkpikp
+ QlCSGKSlCUJKYpKUJQkhikpQmhJSySeEoSUsknhKElLJJ4ShJKySeEoQUsknhKElLQknhKElLJJ4ShJS
+ ySeEk+KlJJJKVCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUsknShMKVkk8JQmKWSTwlCKlkk8JQkpZJPCUJKWShPCUJKWSTwlCSlkk8JQkpUJQnhPC
+ SGMJQpQlCSmMJQpQlCSmMJQpQlCSmMJQpQlCSmMJQpQlCSmMJQpQlCSmMJQpQlCSmMJQpQlCC9jCUKUJ
+ 4QUwhKFOEoSQwhKFOE0JLWMJQpQnhJDCEoU4TQkpjCUKSUJJYwlClCUJKYwlClCeEksIShShJJTGEoUk
+ klMYShSSSUxhKFKEoSUxhKFKEoSQxhKFOE0JIYwlClCUJJYwlClCUJKYwlClCUJKYwlClCUJKYwlClCU
+ IqYwlClCUIKYwlClCUIqYwlClCUIKYwlClCUIqYwlClCUJKYwlClCUIKYwlClCUIqYwlClCUJKYwkpQl
+ CCmMJQpQlCSmMJQpQlCSmMJQpQlCkCWMJQpQlCcpjCUKUJQkpjCUKSUJKYwlClCUJKYwlClCUJKYwlCl
+ CUJKYwlClCUJKWhJOlCSmMJQpJJKYwnhOlCSmMJ4UoTJKWhKE6eEkMYShShMkpaEoTpQklaE0KSUJKYQ
+ kpQmRQsknSSUsknhKEFLJJ4ShJSySdJJSySdJJSySeEoQUsknShJTFJShKElMYShShPCSmEJKUJQkpik
+ pQlCKmKUKUJQkpjCUKUJQipikpQlCSmKSlCaE0qUmTpJiVJJJJKUkkkkpSSSSSlJJk6SlJJJJKUkkkkp
+ SSSSSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0yZJFK6SZJFS8pSmSSUvKSZJBC6SZJJS
+ 6SZJJS6UpkkFLpJkklLpJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJIUkkkkpSSSZFC6SZJJS6SZJ
+ JK6SZJJK6SZJJS6SZJJS6SZJFS6dRTpKXSTJJKXSlMkkpeUkySKl5SlMkkheUpTJJKXlJMkkpdJMkkhd
+ JMpBJKkoTpJJWSTpJKWSTpJKWSTpklKSSTJKUkkkkpSSZJBTIJ1FKUlLpk6SSmMJwE8J4SUuEzikhvKS
+ kNpVZxRrCq5KSkjFbrVOtW60lJwkUgnKSmKSSZJS6SaU8pKUmTpklLJJJJKUkknSUpOmSSUukkkkpSZO
+ mSUpJJJJS6SSSSlJJJJKUnTJ0lLFAsRygWJKar1Fqk9Rakps1qy1Vq1ZakpdJJJJSySSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSn//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmToFCkkkyFKUkkkiApSSSScpSSSSKVJJJJWlSSSS
+ FqUkkkhalQmIUgnhC1IyEymQmhBCyYqUJQnBCB7VTtbCvvVO9SAKc+x0IPqqV5VSdVKAtbzXypkqrWUe
+ dFNGKEVj4VV9sItxVCxymEVJvWT+qqW9SDk7hU2/US3IDXKYKXClO1ysVvVIORmPQlBTp1PVtjll12K5
+ XYqs4KbhKqXuRS/RVL3JggppXWQhMt1UL3IDXaqQQU69FqvMt0WNS9WhboncCm++9VLblXfcguslHgUz
+ faoi6EIyUMghOEFOgzJhFGWscvITeqU4QS7Qy1NuRKxmvKs1uKbOGiHWZbKssfKy6nFXqiqE4aqbJcql
+ r4R3HRUL3QmiCmDrdUWqyVmvs1ViixScCXWYZCHanqdISt4UkYqc24wqpfqrV4VJwVkQQ2KnrQpesqrl
+ aNCbKCm+H6INt0JE6KjkPhVzFSQ5GqNVbKxjaZVzGfKVKduoyjQqtDtFYL4CVJYPdCq2XwlfbCysi8o0
+ ptvy0P7VKynWklOx5KVKdT7Sm+1KgSUJzyEKU67MqVbqulc8y0ytHHtQIS7TDKKFUqerLSm0pIFMKARA
+ mlS6RTpimpRlDKIUMoKYFMnKZJSkkkklLpJJkUqSSSSUpJJJJCySdJBSySdJJSySdJJSySdJJSySdJJS
+ ySdJJSySdJJSydJJJSkydJJSySdJJSySdJJSySdJJSySSSSlJJJJKWTpJJKUnTJJKXSTJJKXSTJJKXST
+ JJKXSSSSUukmTpKUkkkkpdSCgpBJTJBejIL0lICpMUSpMSU260cIFaOElLpJJJKWSSSSUskkkkpSSSSS
+ lJJJJKXSTJJKXTJJJKUnTJJKXSSSSUpJJJJSkkkklKSSSSUukUkikpC9VnqzYqz0lMAjMQAjsSU2GqSi
+ 1SSUpOmTpKUkkkkpSSSSSlJJkklKShOFKEFMYShSTEpKUnUNyW9JSROhb0vURUkTFD9RLekpmUyhvTb0
+ lJEgh70t6SkwToPqJ/USUmTIXqJeokpKkg+ol6iSkqSF6iXqJKSpIXqJb0lJEkLelvSUlSQt6W9JSVJC
+ 3pb0lJUkLelvSUlSQt6W9JKVJC3pb0lJUkLelvSUlSQt6W9JSVJC3pb0lJUkLelvSUlSQt6W9JSVJC3p
+ b0lJUkLelvSUlSQt6W9JSVJC3pb0lJUkLelvSUlSQt6W9JSVJC3pb0lJUkLelvSUlSQt6W9JCVJC3pb0
+ aUlSQt6W9GlJUkLelvSpCVJC3pb0qUlSQt6W9KlJUkLelvSpSVJC3pb0qXJUkLen3oUlIkh70t6VKSJI
+ e9LelSkiSHvS3pUpIkh70t6VISJIe9LelSEiSHvS3pUtKRJD3pb0qQkSQ96W9Kl4SJIe9LehS5Ikh70t
+ 6VISJIe9LelSEiSHvS3pUhIkh70t6VKSJIe9LelSkiSHvS3pUpIkh7029KlJUkL1Et6VLkqSFvS9RClJ
+ UkL1EvUSpSVJC3pb0qQlSQt6W9KlJUkLelvSpCVJC3pb0qUlSQt6W9O4UpUkLelvR4FJUkL1EvUQ4VJU
+ kL1Et6XCpKkhb0+9HgUkSQ96belwKSpIW9LelwqSpIW9LelwqSpIW9LelwqSpIW9LelwKSpIXqJeolwK
+ SpIXqJeolwKSpIXqJeolwKSpIXqJeolwKSpIW9LejwKSpIW9LegY0pKkhb0t6YpKkhb0t6SkqSFvS3pK
+ SpIW9LekpKkhb0t6SkqSFvS3pKSpIW9LekpKmQ96W9JSRJD3pb0VJEkPelvSUkSQ96W9JSRJD3pb0lJE
+ kPelvSUkSQ96W9JSRJD3pb0VJQpBB3peolakySF6iXqJWpKkheol6iVqSpIXqJeolakqSF6iXqJWpKkh
+ eol6iVqSpIXqJeolakqSF6iXqJWpIkh+om3pWpKkhb0t6VqSpIW9LelakqSFvS3pWpKkhb0t6VqSpIW9
+ LelakqSFvS3pWhKkhb0t6VqSpIe9LelakiSHvS3pWpIkh+ol6iVpSJIfqJeolakiSHvS3pWpIkh70t6V
+ qSJIe9LelakiSHvS3pWpIkh70t6VqSJIe9LelakiSHvS3pWpIkh70t6VqSJIe9LelakiSHvS3pWpIkh7
+ 0t6VqSJIe9LehakiSHvS3pWpIkh70t6VqSJIe9LelakiSHvS3pWpIkh70t6VqSJIe9LelakiSHvS3pWp
+ Ikh7029K1JUkLelvStSVJC3pb0rUlSQt6W9C1JUkLelvStSVJC3pb0rUlSQt6W9K1JUkLelvRtSVJC3p
+ 96VqSJIe9LeipIkh70t6CkiSHvS3pKSJIe9LekpIkh70t6SkiSHvS3pKSJIe9LekpIkh70t6SkiSHvS3
+ pKSJIe9LekpIkh70t6SkiSHvS3pKSJIe9LekpIkh70t6SkiSHvS3pKSJlDelvSQzToe9LekpIkh70t6S
+ kiSHvS3pJSJIe9LeklIkh70t6SkiSHvS3pISJIe9LekpIkh70t6KEiSHvS3pKSJIe9LekpIkh70t6Ski
+ SH6iW9JKRJD9RLeklIkh+olvSSkSQ/US3pIKRJD3pb0ViRJD3pb0kpEkPelvSSkSQ96W9JKRJD3pb0kp
+ EkPelvSUkSQ96W9JCRJD3pb0kJEkPelvSQkSQ96W9JSRJD3pb0kJEkPelvSSkSQ96W9JKRJD3pb0kpEk
+ PelvSSkSQ96W9BCRJD3pb0qQkSQ96W9KlJEkPelvSpSRJD3pb0qUkSQ96W9KlJEkPelvSpSRJD3pb0qU
+ kToW9L1EaUlSQvUS9RKlJUkL1EvUSpSVJC9RL1EqUlSQvUS9RKlJUkL1EvUSpSVJC9RL1EqUlSQvUS9R
+ KlJUyHvS3oUhIkh70t6VKSJIe9LelSUiSHvS3pUpIkh70t6VKSJIe9LelSkiSHvS3o0pIkh70t6VKSJI
+ e9LelSkiSHvS3pUpIkh70t6VKSJIe9LelSkiSHvS3pUpIkh70t6VKSJIe9LelSkiSHvS9RKlJUkH1EvU
+ Q4VJkkH1EvUS4VJkkH1EvUS4VJkkH1EvUS4VJkpQfUS9RLhUmlJB9RL1EuFSZJB9RL1EuFSZJB9RL1Eu
+ FSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZ
+ JB9RL1EuFSZJB9RL1EeFSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZJB9RL1EuFSZJB9
+ RL1EuFSZJC9RLelwqSpIW9LelwqSpIW9LelwqSpIW9LelwqSpIW9LelwqSpIW9LelwqSpIW9LelwqSpI
+ W9LelwpSJIe9NvR4VJUkLelvS4VJUkLelvS4VJUkLelvS4VJUkLelvS4UJUkLelvS4VJUkPelvS4UJEk
+ PelvS4VJEkPelvS4VJEkPelvQ4VJEkPelvS4UpEkPelvS4VJEkPelvS4VJEkPelvS4VJEkPelvS4VJEy
+ HvS3pVSkiSFvS3pWhKkhb0t6VqSpIW9LelakqSFvS3pWpKkhb0t6VqSpIW9LelakqSFvS3pWpKkhb0t6
+ VqSpIW9LelakqSFvS3pWpKkhb0t6VqSpIW9LelakqSFvS3pWpKkhb0t6VqSpIW9LelakqdC3p96CUiSH
+ vS3pUpIkh70t6VKSJIe9LelSkiSHvS3pUpIkh70t6VKSJIe9LelSkiSHvS3pUpKE6D6iXqJUhMkg+ol6
+ iVKTJIPqJeolSkySD6iXqJUpMkg+ol6iNKTJIPqJeolSkySD6iXqJUpMkg+ol6iFKTJIPqJeolwrkySD
+ 6iXqJcKUySD6iXqJcKEySD6iXqJcK1Mkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol
+ 6iXCpMkg+ol6iXClMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXChMkg+ol6iXCpMkg+ol6iXChMkg+ol6iX
+ ClMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpM
+ kg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+ol6iXCpMkg+
+ ol6iXCpMkg+ol6iCUySD6iXqJWpMkg+ol6iVqTJIPqJeolakySD6iXqJWpMkg+ol6iVqTJIPqJeolaky
+ SD6iXqJWpKkheol6iVqSpIXqJeolakqSF6iXqJWpKkheol6iVqSpIXqJeolakqSF6iXqJWpKkheol6iV
+ qSpIXqJeolakiZD3pb060JEkPelvStSRJD3pb0rUkSQ96W9K1JEkPelvSUkSQ96W9BSRJD3pb0lJEkPe
+ lvSUlSQt6W9K1JUkLelvSUlSQt6W9JSVJC3pb0VJUkLelvStSVJC3pb0rUlSQt6W9G1JEkPen3oKZQlC
+ jvS3oUllCUKO9LelSmaShvS3pUpmmhR3pb0qUyhKFHelvSpTKEoUd6W9KlMoShR3pb0qUyhKFHelvSpT
+ KEoUd6W9GlMoShR3pb0qUyhKFHelvSpTKEoUd6W9KlMoShR3pb0qUyhKFHelvSpTKEoUd6W9KlMklHem
+ 3pUlmkob0t6VKZwlChvS3pUpmkob0t6VIZpKG9LelSmaShvS3pUpmkob0t6VKZpQob0t6VKZwnhQ3pb0
+ KUzhKFDelvSpTOEoUN6W9KlM4ShQ3pb0qUzhKFDelvSpTOEoUN6W9KlM4ShQ3pb0qQzhNCjvS3pUplCS
+ jvTb01TNJQ3pb0lM0lDelvSUzhJQ3pb0lM0lDelvRUyhKFHelvSSySUd6W9JTJPChvS3pKZwlCjvS3pK
+ ZQlCjvS3pKZQlCjvS3pKZQlCjvS3ooZQlCjvS3pKZQlCjvS3pKZQlCjvS3pKZQpIe9LekpKkhb0t6SUq
+ SFvS3pKSpkPelvSUkSQ96bekpIkh70t6SkiZD3pb0lJEyhvTb0FJElDelvSUkUghb0t6SkwSQw9Lekpk
+ SgvKdz0F70lI3lCUnOUJSUlYFbrVNjlYY9JTbCdBD1LekpkQmIS3JiUlKTSkSmlJS8pJk6SlJJJ0lKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUnTJ0lLFAsRygWJKar1Fqk9Rakps1qy1Vq1ZakpdJJJ
+ JSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSn/1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpIUmTpkFKSSSRUpJJJFKkk
+ kklKSSSSSpJJOgVLJJ0yapUp5UCmlJTOU4CgCpAoIZQoHRSlQeU8IQ2OhUbnqzaqVoUsVNO3VV9uqsPC
+ gFPFC7BCmTomCdwU0VrUuKoWFaFrVSexTBTXThSLU0J6mQKlvUEySkoeptsVcBEYECluV2K5U9UamFXq
+ mFVZKbIfogXFHDEK1iYFOVcgDlWrmIAbqpApNWUYuQmBTIT1MHOSbqoOUmFJTYayUnVKTHBSc8JwU031
+ IYrVl7woBwUgUplSssrUGOCssIUU1Ja2K5W1V6yFcrVKSlObos7JC1XcLOyWoBTjWGCi0P1Ubm6qNZhS
+ AKdimzREe+QqFVkIjrlLGKlrjKpuCLZaq5sVgKS1jVX6VmMsVyq1MmpvuOizslWTboqdz5VUpaRGqvYw
+ VUCSr+M1BTpUmAnsfATMGihaElNO+yVn2AuV21soYqlFTSbSSrNeMrlVCu10BJTlnH0VeyiFuvqACz7w
+ Agpy9kFWaTCE9wlTrMppS6dL1frdKzKQtCoJpU3GIoQWIwTSpdMU6YpiUZQyiFDKCmBTJymSUpJJJJS6
+ ZOmRUpJJJJSkkk6Clkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlJJJ0lLJJ0ySlJJJJKWSTp
+ JKWSTpJKWSTpJKWSTpJKWSTpJKWTJ0klLJJJJKUkkkkpSSdJJSkkkklKTpk6SlJJJJKUpBRCmElLlBej
+ FCekpAVJiiVJiSm1WjhArVgJKXTJ0ySlJk6ZJSySdMkpSSSdJSySdJJSySSSSlJJJ0lLJ0kklKSSSSUp
+ JJJJSkkk6SlkkkklLpFJIpKQvVZ6svVZ6SkYR2IIRmJKbDVJRapJKUnTJ0lKSSSSUpJJJJSySdJJSgnl
+ MmJQUuShuek4oD3JKZOsQzahPegOekptG5N6ypl6j6iKm/6yXqqjvUg9JTc9VL1VU3pb0lNv1U3qqpvT
+ F6Sm36yXrKkbFH1ElN/1kvWVD1E/qJKb3rJesqPqJ/USU3fWS9ZUvUS9RJTd9ZL1lS3pb0lN31kvVVLe
+ lvSU3fVS9VUt6W9JTd9VL1VT3pb0lNz1UvVVPelvSU3fWS9ZUt6W9BTd9ZL1lS3pb0lN31kvWVLelvSU
+ 3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS
+ 9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLel6iSm76yXrKl
+ vS3ohTd9ZL1VS3peonqbvrJesqXqJeokpu+sl6ypeolvSQ3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLe
+ lvSU3fWS9ZUt6W9JLd9ZL1VS3pb0kt31UvVVLelvSS3fVS9VUt6W9JTd9VL1VS3pb0lN31UvVVLelvSQ
+ 3fVS9VUvUS3pIbvqpeqqW9Lekgt71UvVVHelvSQ3fVS9VUt6W9JcG76qXqqlvS3pLm76qXqqlvS3oIbv
+ qpeqqW9Lekhu+ql6qpb0t6SG76qXqqlvS3pKbvqpeqqW9Lekpu+ql6qpb0t6Sm76qXrKlvS3pJbvrJvV
+ VPelvSS3fVS9VUt6W9JTd9VL1lS3pb0FN31k3qqnvS3oqbnqp/WVLelvSQ3fWS9ZUt6W9BDd9ZL1lS3p
+ b0lN31kvWVLelvTwUtz1U/rKlvS3o2pu+sl6ypb0t6VqbvrJesqW9Lelam76yXrKlvS3pWpu+sl6ypb0
+ t6VqbvrJesqW9Lelam76yXrKlvS3pWpu+sl6ypb0t6NqbvrJesqW9Lelam76yXrKlvS3pWpu+sl6ypb0
+ t6VqbvrJesqW9Lelam76yXrKlvS3pWpu+sm9VU/US3o2pu+sl6qpeolvTJFTd9ZL1lS3peooipu+sl6y
+ peol6iSm76yXrKl6iXqJKbvrJesqXqJb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31k3qqn
+ vS3pKbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3o
+ qbnqpeqqe9Lekpu+sl6ypb0t6Cm76yXrKlvS3pKbvrJesqW9Lekpu+sl6ypb0t6Sm76yXrKlvS3pKbvr
+ JesqW9Lekpu+sl6ypb0t6Sm76yXrKlvS3pKbvrJesqW9L1ElN31kvWVL1EvUSU3fWS9ZUvUS9RJTd9ZL
+ 1lS9RL1ElN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3vWS9ZUd6W9JTe9ZL1lR
+ 3pb0lN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0
+ lN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71
+ kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0FN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71kvWV
+ HelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71k3rKlvS9RJTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W
+ 9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS9RLekpu+sn9ZUd6W9FTe9ZL1lR3pb0VN
+ 71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71kv
+ WVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN71kvWVHe
+ lvSU3vWS9ZUd6W9JTe9ZL1lS3pb0EN31kvWVLelvSU3fVS9ZUt6W9JLd9VL1VS3pb0lN31UvVVLelvSS
+ 3fVS9VUt6W9JTd9ZL1lS3pb0kN31kvWVLelvSU3fWS9ZUd6W9FDe9ZL1lR3pb0lN71kvWVH1EvUSU3vW
+ S9ZUfUS3pKb3rJesqO9Leklvesl6yo70t6SW96yXrKj6if1ElN31kvWVHelvSQW96yb1lS3pb0Vre9ZL
+ 1lR3pb0kt71kvWVHelvSS3vWS9ZUd6W9JLe9ZL1lR3pb0kt71kvWVHelvSU3vWS9ZUd6W9JDe9ZL1lR3
+ p96SG76yXrKlvS3pIbvqpeqqXqJeokpu+ql6qpeol6iSG76qXqqlvS3pJbvrJeqqW9Leklu+sl6qpb0t
+ 6SW76qXqqlvS3pJbvqpeqqW9Lekhu+ql6qpb0t6KG76qXqqlvS3pKbvqpeqqW9Lekpu+ql6qpb0t6Sm7
+ 6yXrKlvS3oqbvrJesqW9Lekpu+sl6ypb0t6Sm76yb1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1
+ lS3pb0lN31kvWVLelvRU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9NU3fWS9ZUt6
+ W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9FTd9ZL1lS3pb0lN31kvWVLelvSU3fWT+sqO9Lekp
+ veql6qpb0t6Sm76qXqqlvS3pKbvrJesqW9Lekpu+sl6qpb0t6Sm76qXqqlvS3oqbvqpeqqW9Lekpu+sl
+ 6ypb0t6Sm76yb1lT3pt6Sm76yXrKjvS3pKb3rJvWVLelvQU3fWS9ZUt6W9FTd9ZL1lS3pb0lN31kvWVL
+ elvSU3fWS9ZUt6W9JTd9ZL1lS3pb0FN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvS
+ U3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb061N31kvWVLelvStTd
+ 9ZP6yo70t6Vqb3rJesqO9Lelam96yXrKjvS3pWpvesl6yo70t6VqbvrJesqW9Lelam76yf1lR3pb0rU3
+ vWT+sqO9L1ErU3vWS9ZUfUS9RK1N71kvWVH1EvUStTe9ZL1lR9RL1ErU3vWS9ZUfUS9RK1N71kvWVH1E
+ vUStTe9ZL1lR9RL1ErU3vWS9ZUfUS3o2lvesl6yo70t6Nqb3rJvWVLelvSU3vWTesqW9Lelam76yXrKl
+ vS3pWhvesl6yo70t6Vqb3rJesqO9Lelam96yXrKjvS3oWhvesl6yo70t6Vqb3qpeqqW9Lelam76qXqql
+ vS3pWpu+sl6ypb0t6VpbvrJesqW9Lelam76yXrKlvS3oWpu+sl6ypb0t6VqbvrJesqW9Lejam76qb1VT
+ 3pb00lTc9VL1VS3pb1Gpu+ql6qpb0t6Sm76qXqqlvS3pKbvqpeqqW9Lekpu+ql6qpb0t6Sm76qXqqlvS
+ 3pKbvqpeqqW9Lekpu+ql6qpb0t6Sm76qXqqlvS3pKbvqpeqqW9Lekpu+ql6qpb0t6Sm76qXqqlvS3pKb
+ vqpeqqW9Lekpu+ql6qpb0t6Sm76qXqqlvS3pKbvqp/VVLelvRU3fWS9ZUt6W9FTd9ZL1lS3pb0lN31kv
+ WVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kvWVLelvSU3fWS9ZUt6W9JTc9ZL1lS3pt6Sm96yXrKjv
+ S3pKb3rJesqO9Leihvesl6yo70t6Sm96yXrKjvS3pKb3rJesqO9Lekpvesl6yo70t6Sm96yXrKjvS3pK
+ b3rJesqO9Leiub3rJesqO9Lekpvesl6yo70t6SG96yXrKjvS3pIb3rJesqO9Lekpvesl6yo70t6Sm96y
+ XrKjvS3pKb3rJesqO9Lekpvesl6yo70t6Sm96yXrKjvS3pJb3rJesqO9Lekpvesl6yo70t6Sm96yXrKj
+ vS3pIb3rJesqO9Lekpvesl6yo70t6SG96yXrKjvS3pJb3rJesqO9LelaW96yXrKjvS3pWpvesl6yo70t
+ 6Vqb3rJesqO9Lelam96yXrKjvS3pWpvesl6yo70t6Vqb3rJesqO9Lelam96yXrKjvS3pWpvesl6yo70t
+ 6Vqb3rJesqO9Lelam96yXrKjvS3pWpvesl6yo70t6Vqb3rJesqO9Lelam96yXrKjvS3pKb3rJesqW9Nv
+ SU3vWS9ZUd6W9RlTe9ZL1lR3pb01Te9ZL1lR3pb0lN71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lR3pb0lN
+ 71kvWVHelvSU3vWS9ZUd6W9JTe9ZL1lS3pb0lN31kvWVLelvRU3fWS9ZUt6W9JTd9ZL1lS3pb0lN31kv
+ WVLelvSU3fWS9ZUt6W9JTd9ZL1lS3pb0FN31kvWVLelvRU3vVS9ZUt6W9OU3fWS9VUt6W9JTd9ZL1lS3
+ pb0lN31kvVVLelvSU3fVS9VUt6W9JTd9VL1VS3pb0FN31kvWVLel6iSm76yXqql6iXqJKbvqpeqqW9Le
+ kpu+ql6qpb0t6Sm56qXqqnvS3pKbvqpeqqW9Lekpu+ql6qpb0t6Km76qXqqlvS3pKbvqpeqqW9Lekpu+
+ ql6ypb0t6Km76yXrKlvS3oqbvrJesqW9Lekpu+sl6ypb0t6Sm76yXrKlvS3pKbvrJesqW9Lekpu+sl6y
+ pb0t6Sm76yXrKlvS3pKbvrJesqW9N6iSm96yXrKj6iXqJKb3rJesqPqJeokpvesl6yo+ol6iSm96yXrK
+ j6iXqJKb3rJesqPqJeokpvesl6yo+ol6iSm96yXrKj6iXqJKb3rJesqXqJb0kt31kvVVLelvSU3fWS9Z
+ UvUS3pKbvqpeqqW9Lekhu+ql6ypb0t6Sm76yXrKlvS3pKbvrJeqqW9Lekpu+ql6qpb0vUSU3fWT+sqPq
+ JvUSU3/WS9ZUPUS9RJTf9ZL1lQ9RP6iSm96yXrKj6iXqJKb3rJesqPqJeokpvesl6yo+om9RJDe9ZL1l
+ R9RL1ElN71kvWVH1EvUQU3vWS9ZUvUS3phU3fVS9VUt6W9JTd9VL1VS3pb0lN31UvWVL1EvUSU3fWS9Z
+ UvUS3oqbvqpeqqW9Leklu+ql6qpb0t6Sm76qXrKlvS9RJTd9ZL1lR9RL1ElN71kvWVH1EvUSU3vWS9ZU
+ fUS9RJTe9ZL1lR9RL1EUN71kvWVH1EvUSU3vWS9ZUfUS9RJTe9ZL1lR9RL1ElN71kvWVH1EvUSU3fWS9
+ ZUd6feklu+sl6ypeolvSU3vWS9VUt6W9JTd9ZL1lS9RPvSU3PVS9VU96W9JTc9VN6qqb0t6Sm36qXqqn
+ vT70FNwWp/UVMPUt6Sm0bU3qqqXqBekpui5P6qo70+9JTbNqG6xAL1EuSUlL1HehFyaUlNkPRG2qnuTh
+ 6Sm+LVMWqgHqbXpKb4sUw9UmvRmuSU2ZTyhAqYSUyTpk6Sl06ZOkpSSdJJSySSSSlkkkklKSSSSUukkk
+ kpdJJJJSkkkklKTpk6SligWI5QLElNV6i1SeotSU2a1Zaq1astSUukkkkpZJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/
+ AP/W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOihSZOmSUpJJJJSkkkkkqSSSSUpJJJNSpOmSTSpdMU6Y
+ oKYlRUimSUpPKQCltRQwJUCUQtUCE8KQuEqtaxW3KvYVPFDm2iFXJV20SqpYp4hC7CiRKg0QpypQFIbG
+ qpYxXXlVrFPEIaTmqCM8IRUlIWATwkFMJUpYMR661FoVisJsgpPVUr9Vaq1GFcY8BVZhSYMEKvc1GNoV
+ O+1RAJaV4VYDVTutQA/VWIhDaYFJwUKyilPpTVeEMGEZ4QiEqUkFkKL7lHahvaUQFLPuUBchvaUPaVIA
+ pvV3K5VasysFXqQmTip0qnq/U5Z1IV6vRUpBTYLtFUv1Ry5V7SgApzbmIIbCuPEoexSgKRAwoveUf00K
+ ytSBTVfYgGxGsYUEsUwCmTbFZrsKrNrVhlZTJhKcWFQc6UQVFI1KqQlGwarRxwqjWQrdJhClOizhJ7JU
+ K3osym0ppvqURVCulsqJYnBSOtsK00gIHCg66ECEpb3gBYuVarN+RKy7nFyFKQF8lWscSqzKiStLGqhA
+ qb1DFfrZCDQyArTQmFTNqIEMIgTSpkmKdMUwpRlDKIUMoKYFMnKZBSkkk6ClJk6ZFSkkkklKTpk6SlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ ZOkpSZOkkpZJOkkpZJOkkpZJOkkpSSSSSlJJ0klKSSSSUoKQUQphJS5QXoyE9JSAqTFEqTElNqtHCBWj
+ hJS6SdMkpZJOmSUskkkkpSSSSSlJJ0ySlJJJJKUkknSUskkkkpSSSSSl0kkklKSSSSUpJJJJS6RSSKSk
+ L1VerT1VekpgEdiAEdiSmw1SUWqSSlJJJJKUnTJ0lKSSSSUpMnSSUsmKklCSkLggPCtFqE5iCmk8IDmq
+ 86tCNSSmkWptquGpN6KKmrtThqs+kn9JJTXhKFZ9JL0klNUhRLVb9JN6SSmmWptquekm9FJTT2lPtVv0
+ UvRSU1dqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1dqW1WvSS9JFTV2pbVa9JL0klNXaltVr0kvSS
+ U1tqbarXpJekgVNXaltVr0kvSTSpq7Utqtekl6SFqau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SV
+ qau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SV
+ qau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpIgqau1PtVn0k/pJ
+ 1qau1LarPpJeklamrtS2q16SXpJWhq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6S
+ Vpau1LarXpJeklaWrtT7VZ9JP6SVpau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqam1LarfpJek
+ laGptS2q16SXpJWtasJ4Vn0kvSStDV2p9qs+kl6ScFwa21LarPpJekilq7U8Kz6SXpJKa0JQrPpJekkh
+ rQltVn0kvSQU1tqW1WfSS9JJTW2pbVZ9JL0klNbaltVn0kvSSS1dqUK16SXpJKau1LarXpJekkpq7U+1
+ WfSS9JJTW2pbVZ9JL0kFNXaltVr0kvSSU1dqW1WvSS9JJTV2pbVa9JL0klNXaltVr0kvSSU1dqW1WvSS
+ 9JNtDV2pbVa9JP6SVqam1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SNqau1LarXpJeklamrtT7VZ9J
+ L0krU1tqW1WfSS9JK1NbaltVn0kvSStTW2ptqtekl6SVqau1LarXpJeklamrtS2q16SXpJWprbUtqs+k
+ l6SXEprbU21WvSS9JK1NXaltVr0kvSRtTV2pbVa9JL0kCVNXaltVr0kvSTFNXaltVr0kvSStTV2pbVa9
+ JL0krU1dqW1WvSS9JK1NXaltVr0kvSStTV2pbVa9JL0krU1dqW1WvSS9JK1NbaltVn0k/pJWpq7Utqte
+ kl6SVqau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJWpq7Utqte
+ kl6SVqau1LarXpJ/STgpqbUtqt+kl6SKmptS2q36SXpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q36SX
+ pJKam1LarfpJekkpqbUtqt+kl6SSmptTbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klN
+ Tan2q16SXpJKau1LarXpJekkpq7Utqtekl6SSmrtS2q16SXpJKau1LarXpJekkpq7Utqtekl6SSmrtS2
+ q16SXpJKau1LarXpJekkpq7Utqtekl6SSmrtS2q16SXpJKau1LarXpJekkpq7Utqtekl6SSmptS2q36S
+ XpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJKau1LarXpJekkpq7Utqtekl6SSmrtS2q16SXpJK
+ au1NtVv0k3pJKau1LarXpJekgpq7Utqtekl6SSmrtS2q16SXpJKau1LarXpJekkpq7Utqtekl6SSmrtS
+ 2q16SXpJKau1LarXpJekkpq7Utqtekn9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9
+ JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0k3pIKau1LarXpJeklamrtS2q16SXp
+ JWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXp
+ JWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXp
+ JWpq7U+1WfSS9JK1NbaltVr0kvSStTV2pbVa9JL0klNXaltVr0kvSSU1dqUK16SXpJKau1LarXpJekla
+ mrtS2q16SXpJWpqwltVr0kvSQtTV2pQrXpJeklamptS2q16SXpI2pq7Utqtekl6SVqa21LarPpJekham
+ ttTbVa9JL0krU1dqfarPpJ/SRtTV2pbVa9JN6SFqasJbVa9JL0krU1dqW1WvSS9JK0Nbam2q36Sb0kbQ
+ 1tqbarfpJvSStLV2pbVa9JL0krU1tqW1WfSS9JK1zV2pbVa9JL0krU1dqfarPpJeklamttS2q16SXpJW
+ pq7Utqtekl6SVoau1LarXpJeklaGrtS2q16SXpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJW
+ lq7Utqtekl6SVrmrtS2q16SXpJWpq7Utqtekl6SNoLV2pbVa9JL0krQ1dqW1WvSS9JK1NXaltVr0kvSS
+ tTV2pbVa9JL0krU1YShWvSS9JK1NXaltVr0kvSRtTV2pbVa9JL0krU1dqW1WvST+ilamptS2q36KXopW
+ pqbUtqt+il6KVqam1LarfopeilamptS2q36KXopWpqbUtqt+il6KVqam1LarfopeilamptS2q36KXpJW
+ pqbU21W/STekhamrtS2q16Sf0krU1NqW1W/SS9JK1NTaltVv0kvSStTU2pbVb9JL0krU1NqW1W/STekj
+ amrtS2q16Sf0krU1NqfarXpJeklamrtS2q16SXpJWpq7Utqtekl6SVqasJQrXpJeklamrCUK16SXpJWp
+ q7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJWpq7U21W/SS9JFTU2pbVb9JL0kVNTaltVv0kvSSU1N
+ qW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2lLaVb9JL0klNTaUtqt+kl6SSmptS2
+ q36SXpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q36S
+ XpJKam1LarfpJekmkqam1LarfpJekhamptS2q36SXpJWpqbUtqt+kl6SVqam1LarfpJeklamptS2q36S
+ XpJWpqbUtqt+kl6SVqam1LarfpJeklamptS2q16SXpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16S
+ XpJWpq7Utqtekl6SVqau1LarXpJeklamrtS2q16SXpJWpqwltVr0kvSStTV2p4Vn0k/pJwKWrtS2q16S
+ b0kbU1oTbVb9JN6SVoau1LarXpJeklamttS2qz6Sf0kLU1dqW1WvSTeklamrtS2q16SXpIWhq7U+1WfS
+ S9JK1NbaltVr0kvSS4lNXaltVr0kvSStTV2pbVa9JL0kLU1dqW1WvSS9JK0tXaltVr0kvSStTV2pbVa9
+ JL0krS1dqW1WvSS9JK1NXaltVr0kvSQJU1dqW1WvSS9JNtDV2pbVa9JL0krU1dqW1WvSS9JK1NXaltVr
+ 0kvSStTV2pbVa9JL0krU1dqW1WvSS9JK1NXaltVr0kvSStTV2pbVa9JL0krU1dqW1WvSS9JK1NXaltVr
+ 0kvSStTV2pbVa9JL0krU1dqW1WvSS9JK1NXaltVr0kvSStTV2pbVa9JL0krU1dqW1WvSS9JK1NXaltVr
+ 0kvSRBU1dqW1WvSS9JOtDV2pbVa9JL0krU1dqW1WvSS9JK1NXaltVr0kvSStTV2pbVa9JL0krU1dqW1W
+ vSS9JK1NXaltVr0kvSStLV2pbVa9JP6KNqam1LarfopeilamntS2q56KXopWpp7Utqueil6KVqae1Lar
+ npJeklamntS2q56SXpJWpp7Utqueil6SVqam1NtVz0UvRRU1NqW1W/RS9FFTU2pbVb9FL0UlNTaltVv0
+ UvRSU1NqW1W/RS9FJTU2pbVb9FL0UlNTaltVv0UvRSU1NqW1W/RS9FJDU2pbVb9FL0UlNPaltVz0UvRS
+ S1Nqbarnopeikpp7Utqueil6KSGntT7Vb9FL0UlNTaltVv0UvRSU1NqW1W/RS9JJTU2ptquekl6KSmpt
+ TbVc9JL0UlNTaltVv0UvRSS1NqW1W/RS9FJTU2pbVb9FL0UlNTaltVv0UvRSU1NqW1W/RS9FJTU2pbVb
+ 9FL0UlNTaltVv0UvRSU1NqW1W/RS9FJTU2pbVb9FL0UlNTaltVv0UvRSU1NqW1W/RS9FJTU2pbVb9FL0
+ UlNTaltVv0UvRSU1NqW1W/RS9FJTU2pbVb9FL0UlNTaltVv0UvRTSpqbUtqt+il6KSmptS2q36KXopKa
+ m1LarfopeikpqbUtqt+il6KSmptS2q36KXopKam1LarfopeikpqbUtqt+il6KSmptS2q36SXpJKam1La
+ rfpJekkpqbUtqt+kl6SSmptS2q36SXpJKam0pbSrfpJekkpqbSltKt+kl6SSmptKW0q36SXpJKam0pbV
+ b9JL0klNTalCtekl6SbamrCUK16SXpJWprQlCs+kl6SVqa0JQrPpJeklamrCUK16SXpIWpqwlCtekl6S
+ Vqa0JQrPpJekhamtCW1WfSS9JK1NbaltVr0kvSStTV2pbVa9JL0krU1dqW1WvSTekjamttS2qz6Sf0kr
+ U1dqW1WvSTekjamttS2qz6Sf0krU1dqW1WvSS9JK1NXaltVr0kvSRtTU2p9qtekl6SNpam1LarfpJekl
+ amptS2q36SXpJWhqbUtqt+kl6SVqam1LarfpJeklamptS2q36SXpJWpqbUtqt+kl6SVqam1LarfpJvSS
+ tTV2pbVa9JL0krU1dqW1WvSS9JK1NXaltVr0kvSStTU2pbVb9JL0krU1NqW1W/SS9JK1NTaltVv0kvSS
+ tTU2pbVb9JL0krU1dqW1WvST+klaWptS2q36KXopWpqbUtqt+kl6KVqam1LarfopeilaGptS2q36KXop
+ WpqbUtqt+il6KVqam1LarfpJeilamptS2q36KXpJWpqbU21W/SS9FK1NTaltVv0UvRStTU2p9qteil6K
+ Vqau1LarXopeilamrtS2q16KXopWpq7U21W/RS9FK1NTaltVv0kvSStDU2p9qtekl6KSmrtS2q36KXoo
+ Kam1LarfopeikpqbUtqt+il6KSmptS2q36KXopKam1LarfopeiklqbUtqt+il6KKmptS2q36KXopKam1
+ LarfopvSSU1NqW1W/SS9JJTU2pbVb9JL0kVNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kkNTaltVv
+ 0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSS1NqfarXpJekkpq7U+1WfST+kkpq7Utqtekl6
+ SSmrtS2q16SXpJKau1LarXpJekkpq7U8Kx6Sf0kFNcBShG9NP6aSmuQoFqt+mm9JJTVDU4arQpT+kkpq
+ 7VEtVw1KBrSU1dqaFYLE2xJSDan2o4rUxUkprhqmGo4qUxUkpE0I7QnFaIGJKU0IgTAKUJKXTpk6Sl06
+ ZOkpdJJJJSySSSSlkkkklKSSSSUukkkkpdJJJJSkkkklKTpk6SligWI5QLElNV6i1SeotSU2a1Zaq1as
+ tSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTohCkydMkpSSSSS
+ lJJJJJUkkkgpSSSSCVJJJJql0xSSSpTEpAJ4TgJKXaEQBRCmCjSGJagvCOSguKeFNaxVXlW3hVLApooa
+ z0IqVjoVZ1qniUJCVEuQ98piVNEqU5yA9ym8oDipwQhg4oRRChkJ3EhjKm0oam1DiUnYrDCgMCOAmGSk
+ zXwittVZTaoJSUnNqq3PKOGShWVJoKnNtcVFkyrD6kmVaqUFSWoKxCVVSOa0eJTTe1QDFZe1QDUuJTAV
+ qL6lbDVF4ThJTnPqQvTVx4QYUgkpautXaWIDArlSZOSm1U1WQIQGFGBVORUpxVaxyM8qpYUgVMSZRGNl
+ V92qtUlO4lJRVKHZQrrAITWNCIklxrKUA1LTtaFVcFZjJCFlSt10KDFdqATJySGIoUXUwr4AhCsAVclL
+ QLITtMKT1AJKbLHKw1yqMCOElNgOTOeEBz4VW3IhNS2LbgFRtvQLcmVXNm5OUkc8uTsrLkq2StCilNKk
+ VWMr1VEI9dQCOGAJpUwY2EUKKkE0qZhTCgFMJhUySKSRTClGUMohQygpgUycpkFKTpk6ClJk6ZFSkkkk
+ lKTpkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkmSUukmSSUumSSSUpJJJJSkkk
+ klKSTJJKXSTJJKZJJk6SlJJkklLpJkklLpJk6SlJJJJKXSTJ0lKSSSSUuFIKAUgkpkUF6KUJ6SkJUmKB
+ U2JKbVaOECtHCSmSZJJJSkySSSlkkkklKSSSSUumSSSUpJJJJSkkkklLpJJJKUkkmSUukmTpKUkkkkpS
+ SSSSl0kgkUlIbFWerNirPSUwCMxACOxJTYapKLVJJSkkkklLpJJJKUkkkkpZOkmSUunUZSlJTIhQLU8p
+ 5SUjLFE1oyeElNf0kvSVmEoSU1vSS9JWYTEJKa3ppemjkJoSUh9NL00aE8JKQekl6SsAKUJKa3pJvSVq
+ E0JKa3pJekrMJQkprekl6SswmhJTX9JL0lYhKEVNf0k3pKzCaElNf00vTViEoSU1/TS9JWIShJTX9JL0
+ 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
+ oUpKZNYjNrQ2K0wJKYipP6aMAnhJSHYltRSopKYQmhSShJSySeEklKTpkklLpJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpdJJJJSkkkklKTpk6SligWI5QLElNV6i1SeotSU2a1Zaq1astSUukkkkpZJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJT//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmRQpJJJJSkkkkFKSSSSSpJJJBKkkkkFKSS
+ SSUpOEkgkpkEpSSRCGJKGUQoZTwpG4KrcrblSvKkCHMyHwqDrNVbyVQLdVMFJmOlGHCDU1WQ3RShCB6A
+ Vae1B2KUKRbZSNatMqlE9FG1OaWJ2tV11KgKoTSULVtRgEzWQpkKMlTFFrEoUKxUFESpsMrlNZWrFbdF
+ G4QEAVOXa0BQZEp73QUBj9VKFOpUEYt0Vah0q5yElNOxqDwrdjVWcISUuCovKjKaZRBUieJUAxWA2VMV
+ qQFSFjYRmmFLZCG/RNkVJ22I7Hys0P1Vql0qrJTadqFUuMK2NQqeSEApputgo9N6zrnEFRrtIKkCnpKs
+ gQpPvCxqrypuvKcAps3XKo65AstJVcvKmCnQZdqr1Nyw2PKt12kJslO2L9EC29UvWMKvZcVCUtp10lTr
+ fKzBYSVcodKSXSrCKdAh1cIruEVNW58LLvtK0bwsu9hKSmo60yp1PlBcwynYCElOrQ4LQqtAWIywhFGQ
+ QmlT0DcgIgvBWA3JKsV5BKaVOyLJRGulZ1Vkq7UZTSptNRAhMRgmlK6Yp0xTCpGUMohQygpgUycpklKT
+ pk6ClJk6ZFSkkkklKSSTpKWSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOkkpZJOkkpZJOkkp
+ ZJOmSUpJJJJSkk6ZJSySdJJSySdJJSkkySSl0kySSl0kySSl0kySSl0kySSl06ZJJS6SSZJTIKQUApBJ
+ TIoT0UoL0lISpMUCpMSU260cIFaOElMkySZJS6ZJMkpSSSSSlJJJJKXSTJJKXSTJJKXSTJJKXSSSSUpJ
+ JJJSkkkklLpJkklLpJkklLpFJIpKRPVV6svVZ6SmAR60AIzElNlqkoNUklLpJk6Sl0ySSSlJ0ySSlJJJ
+ klKSTpQkpZJPCUJKVKeUySSmcpSoynlJS8pikkkpYpk6ZJSyeUySSmQKeVGUpSUzlNKjKUpKZSlKjKeU
+ lLylKjKUpKXlKU0pIqXlJJJJSpSSTIqXSSSSUpJJJJSyUpJJylSkkkkpSSSSVKUkkklSlJJJJUpSSSSV
+ KUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpUpSkkkpUpSkkkpSSSSalSdMkkpeU
+ kySSFJJJJIVKUpJJIXlMkkkpSSSSSV5SlMkkleUkySSV5SlMkkleUpTJJKXlKUySSl0kySSF5STJJIXS
+ TJJIXSSSTSpSSSSapSSSSSlJJJJLlJJJJJUkkkkpSSSSClJJJJKUkkkkpSSZJJC8pSmSSUvKUpkklKlJ
+ JJJSkkkkkrykmSSUumlJJJSpTpkkVq6SZJJS6SZJJS6SZJFS6SZJJS6ZJJJSkkkklKSlJJJSpSSSSUuk
+ mSSUvKUpkklLpJkklLpJkklLpJkklLpJkklLpkkk4KVKUpJJ6lSlKSSKlSlKSSSlSlKSSSlSlKSSSlSl
+ KSSSlSlKSSSlSnlMkgpdJMkkpdJJMkpdJMklSl0kydJSkkkklKSSSSUpJJJJSkkkk0qUkkkgpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJIUkkkkpUpSkmSUvKUpkkkrylKZJJS8pSmSSUvKUpkklLylKZOkpUpSmSSSvK
+ UpkklLylKSSSl0kySSl0kySSFJSkkkpUpSkkkpSSSSSlSlKSSSlSlKSSSlJJJJIUlKSSSlJJJJJUkkkk
+ pSSSSSlJSkkkpUpSkkkpUp0ySSl0kySCl0kySSl0k0pJKXSTJJKXSTJJKXSTJSkpdJKUySl0ySSSlSlK
+ SSSlSlKSSSlSlKSSSlSlKSSSlSlKSSSlSlKSSSlSlKSSSl0kySeFLpJkkVLykmSSUukmSSUukmSSUukm
+ SSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUulKZJJS8pJkklLpJkklLpJkklKlKUkkkqlKUkySV5
+ SlMkkheUpTJJKXlKUkkkKlKUkklKlPKZJJSpSlJJJKpSlJJJSpTymSSUukmSSUukmSSUukmSSWrpJkkl
+ LpJkkkLylKZJJS6SZJJS6SZJJS6SZJJK6Upkkly8pSmSSUvKSZJJS6SZJJS6SZJJC6SZJJC6SZJJS8pS
+ mSSUvKUpkkkrylKZJJK8pSmSSSqU8pkkkrylKZJNK0rylKZJBavKUpkkkrylKZJJS6SZJJS6UpkklLyl
+ KZJJS8pSmSSUqUkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpKUyUoJXlJNKSSl0kySSF0
+ pTJSkpeUpTSkkpdJMkkpeUpTJJKXlKUyUpKZSlKZJFC8pSmSSUvKUpkkkrylKZJJS8pSmSSUvKUpkklL
+ ykmSSUvKZJJMkpSSSSiJUpJJJJSkkk6Klkk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSQUpJJJPClJJJJylJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJklLpJkklL
+ pJkklLpJkklLpJkklLpSmSSUvKUpkklLpJk6Kl0kyScFLpJkklLpJkkFLpJkklLpJkklLpJkklLpJkkE
+ LpJkklLylKZJJS8pSmSQUvKSZJBK6SZJJS6UpkkkrylKZJJS8pSmSQUvKSZJPCl0kySepdJMkkpdJMkk
+ pdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdKUySCF
+ 5SlMkgheUpTJJKXlKUySSl0kySKl0pTJJJXlKUySSl5SlMkkpdKUySSlSlKZJFTKUpTJJKXlKUySSlSl
+ KZJFS8pSmTpKVKUpJJJVKeUySBUvKUpklCVq8pSmSTbUqUpSSStKpSlJJG0qlKUkySl5SlJMlamUpSmS
+ QUvKUpkklKlKUkkrWrymlJJK1KlKUySVqXlKUySVoXlKUySVqXlKUydK0rylKZJJS8ppSTJWleUpTJIq
+ XlKUySVqXlKUySVqXlKUySVqXlKUkyVqXlKUySFqXlKUydG1KlKUkyFqXlKUySNqXlKUySVqXlKUySFq
+ XlKUySVqXlKUydFSpSlMnStSpSlMkhal5TymSUoUvKUpkk5S8pSmSSUvKUpkklLylKZJJS8pSmSSUqU8
+ pkklLylKZJJSpSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk9SkkkklKSSSSpSkkkk
+ qUpJJJClKSSSSpSkkkkqUpJJJKlKSTpJUpZJOklSlkk6UJUpZJOklSlkk6SVKWSShKEVKSShJJSkylCa
+ EEsUlKE8IJYJKUJQkpikpQlCSGKSlCUJKYpKUJQkhikpQlCSmKSlCUJKYp08JQkhZJOkkpZJOkkpZJOk
+ kpZJOkkpZJOkkpZJOkkpZJOkklZJPCSCVkk6SSlkk6SSlkk6SSFkk6UJKWSTwlCSlkk8JQipZJPCUJKW
+ STwmhJSkkoShJSkk6SSlkk6SKlkk6SSlkk6aElKSTwkkhZJOmhJSkk8JQmFSySeEklLJJ0klLJJ0kkrJ
+ J4ShJSySeEkkrJJ0klLJJ0kVLJJ4ShJSySeEklLJJ0kkLJJ0klLJJ0klLJJ0klLJJ4ShJCwUgmTpKXlK
+ UySSV5STJJKXSTJJKXTJJJKUmTpklKSSSSUpMkkgpSeEgpQkpinlKEySmUp5Q5TgpKZFCeiqDgkpqWIB
+ KsWBVikpKwq1WVTYrdaSmwCnJUQnSUsVEqSUJKYpQpQmSUsknTJKWSSSSUpOmSSUukknSUpJJJJSySdM
+ kpSSSSSl0kkklKSSSSUpOmTpKWKBYjlAsSU1XqLVJ6i1JTZrVlqrVqy1JS6SSSSlkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklP//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOkhaFkk6ZK1KSTpkVKSSSSSpJJJKlKSSSSp
+ KkkkkqUpPKZJKkMpSlMkjSlEoZKkUNyKmDyqdolWnIDxKeChzLq5VY06rWdVKH6CeJKaLKoRxWrAqhS2
+ JwmpourURUr5rSFSf7imsypGFSO2uEQMS9xTSdSgmpaZrQn1o+4pzyyFEhW3sQixNM1UgDVYqanbWjsZ
+ CiMlUlZwh38IoEIdglASVTkZDZVZjDK07KpQhTqphJVMscQr7eFWqZCuMCJkqkb2yqtjFoliBZWm8Sqc
+ xwhRCs2VoexITVS7AigKLWqcKUTVSxQHhWCFEslNlJVNPZqrVLYUxSjMrhVZSVTNo0Ve9kq2GqD2SkJK
+ pwr6SSgCghbr8aVAYilElU5rKipmorSbjKYxk8SVTjOoJUfs5W59lS+yJ3GqnEFBRW1ELW+ypvsyBmqn
+ MNZQX1ErYOOonGURkpx20mVeorhWhjIrKYS4lMqhCKQk1sKcI8SmpYyVTsolaxZKiaZR4lOE7FUPsy3T
+ jJjjBDiU4RoKiaSt04qj9kStTitpKtVVFaIxERuNCbakFLCr9QUWVQjsbCaSpMxFCG1ECbaV0xTqJQUw
+ chlEchFBTEqKcpklLp1FOkpdMnTI0pSSZJKlLpJkkCpdJRSQUySUUklMklFJJTJJRSSUySUUklMklFJJ
+ TJJRSSUySTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKUmSSSUpJJJJSkkkklKTpkklLp
+ JkklLpJJJKXSTJJKXCmFBSCSmRQXopQXpKQlTYoFSYkpt1o4VetWAkpkmTpklKTJJJKUmTpJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSl0kySSl0kySSl0kySSl0kySSmSRTBIpKRWKs9WbFWekpGEdiCEZiSmw1SUW
+ qaSlk6SSSlJJJJKUkkkkpZJJJJS4TqKeUlMkyaUpSUpJJOkpSSSdJSkkkkFLJJ0ySlkydJJSySSSSl0o
+ ThJJTFKU5UUVLpJAJ4SUtKUpEJkVMgpQmCIAkphCaEQqBRUsmSSSUpOmToqWSSSStSkkkkLUpJJJK1KS
+ SSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkyVqUkkklal0kkkrUpJJJK1KSSSStSkkk6R
+ KQsknTFNtNLJ0yQStVLpJJ0LQskkkja1SSSSVoWSlIpkLUvKSZOErUukknStKySdJK0rJJ0krSsknSSt
+ SySdJG1LJJ0yFqUknSStCySdJG0KSSSSUpNKRTJUpdJMFIIUpSZOmSXKSSSSSpJMkklkkkE6Slkk6YoK
+ WSSTJUhSdMklSF0kydJSkkkkqQpJJJJKkkkkqUpJJJJKkk6ZJSkyeExCK0qlNKRTI0hlKdME4CVKUknS
+ QSsmTpkVKTpkkkrpJk6SlJ4SThKlLQmKmolJTGUpTFIJKXSTwmISQqUpTJwipdJJJBSkkydFCkyeEoSp
+ SySUJJBS6SSSdaVJJJI2pSSSSVqUkkklalJJJIWpSSSSVqUkkklalJ0ydK1LFNKRKGSlamcpwUMFECVq
+ XSTwolC1Lp0ycJWpSZOVEpWpUp0ycJWpdJJMlal0kySSl0kkkqUpJJJKlKSSSSpSkkkkqQpJJJGlKSSS
+ SpSkkkkqUpMnSQpSySSSVKUkmTpUlSSdKEqUskpQmhKkrJJJkqUukmThKlLpJ0kqUsmUiolKlLSmlMVE
+ pUpnuTyhqQSpTMJ0gFKEqUxSUlElKkKSTSlKVKXSSCdKkLJJ0yVKWSTpkqUpOmSSpSkkkkqUpJJJKlLp
+ JJJUlSSSSVKWSSSSpSk6SZKlLpJk6VKUmlOolKlLylKiklSmUpJk6VKUnTJ0qUtKaUioFKlM5ThDBRAl
+ Sl0xUkxSpTFKUkyVKXlKUySVKXlKUySVKXlKUySVKXlKUySVKXlKUySVKXSlMklSl5TyopJKZJ0ydG1K
+ SSTJWpSUppSlK1KlKVElJK1M5TqIUoStSyUpFMlal06iFJK1KSSTSlalJJkkrUvKUpkyVqXlPKhKcJWp
+ knTBShK1LJlIhRKVqWlKVEppStSSU6gFJK1KSSSRtKkkkkrUpJJJK0KSSSStSkkkkLQpJJJK1KSSSStS
+ kkkkrXLpJSklaVJJJFK1LJJimQtTJNKZNKVoZSnlRCcJWhdKUkxStaqU8qKcJWhkkkklalkpTJJWpdJM
+ klaV0kydK0qSSSStKkkkyVpXSlMklal5SlMklal5TSkmStC8pSmSStC8pSmSStTKUkydK1KSSSStKkky
+ SVpXSTJJWldOmTpWlSSdJNJWlZJJJC1qkkkkrSpMnTJWpSSZJK1LpJlIJWpSSeEoStTFJOQmStSkkydK
+ 1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSTJWpSSScJWlSeEgFKErUxhNCnCYhK1MEpTlRKV
+ qUnUVIJWheEoUgE8JWphCScpkrQsnTJ0rUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStKkkkkrUpOmTpcSl
+ JJJJbqUkklKXAhSSZJLgUvKaUlEpcCmUpSoJ0uBLOUpUU6XApdOopwlwJXSSlKUuBSkyUpkuBS6SZJLg
+ UukmSS4FLpJkkuBC6SZJLgUukmSS4FLpJkkuBC6SZJLgUukmSSpS6SZJJS6SZJJS6SZJJK6SZJKlLpJk
+ kkrpJkkqUukmlJJSkydMQlSlSlKZIJKZJJBOkhZMnKZKlKTpgpBJSyeE6dJTGE0KaYpIYppSKZJTKUky
+ dOSpJJJFSkkkkFKSSSSUpJJJKkKSSSSpSkkkkFKSSSSUpJJJKlLpJkpQpS6ZJMlSV0kySCl0kkkkqTpk
+ kkqSSSSpSkpSTIhC6UpJk61LylKZOlalSlKSSVqVKUpJJWpUpSkklalSlKSSVqVKUpJJWpUpSkklalSl
+ KSSVqVKUpJJWpUpSkklalSlKSSVqVKUpJJWpUpSkklalSlKZOlalJJJJpKFJ4SToWhZJJJK1KTJ0oStL
+ ElKUioFK1M5TyoBSCNqZJkk6VqWTSkUyVqXlOop0rUukmSRtS6SZJK1LpJkkrUukmSStS6SZJK1LpJkk
+ uJK6aUkxSu0FeUpUUkuG1rOUkwTocCl0k0pwUuFK8JoUkxS4VzFJMU4S4UrwmUgExCXCpjKUpiopcKmc
+ p5UQnCXAhdJJOlwIWSSSS4FqkkkkeFSkkkkuFSkkkkOBSkkkkuBK6ZJJLgUpJJOlwJWTpJJcClkkkkuB
+ SkkkkuBS6ZOklwKWSTpJcClkkkkuBSkkkyXApdJMklwKXTwkE8JcKloTKUJkuFSySdJLgUsknSS4FKhK
+ E4ClCXCpgmUioFLhUukmTpcKlJJJk4BS6SZJOpC6SZJKlLpJkkqUukmSQpK6SZJKlLpJkkaUukmSSpS6
+ SZOlSlJJJJUpSUpJihSlSlKikEqUzTpgnSpKyUpKKVKZSlKjKeUqUvKSaU6VKXSTJ0rQpJJJK1KSSSSt
+ SkkkkLUpJJJK1KSSSStSkkkkLUpJJOlalJJJkrUukoypBK1LpJBJK1KTJFNKNqXSTSklal0kkkbUpJJJ
+ K1KTpkkLSumlMSmJTbSylOoAqYKVqXTJ0xKVqWSlNKaUrQylNKaU0pWpnKSgCpBG0Mk6YJ0rQtCSdMla
+ lkkkkLUpJJJK1KSSSStSkkk0o2pdJNKUpWpdJNKSVqXSTJJWldJMlKFpXSUZSlC1MkkwKdG1KSSKilaF
+ 06inStS6SaUpStS6SjKUpWplKaVGUpStTJJMkjal0kySVqXSTJJWpdJMklal0kySNqXSTJJWpdJMklaF
+ 04UU4StTKEoTgpEpKWTJEqMpUpkkoynlJS6SSZKkrppSTJUpeUkydKkrpJkklLpJkpSUukkkkpSSSSSl
+ JJJJIUkkkkpSSSSSlJJJSkhSSZKUlLpkkklKSSSSSpJJJJS6ZJJJSkkkklKSSSSUpJJJJSydJJBS4TqK
+ eUlLlQKlKYpKYpwknSUumcnUXFJTWsVZys2FVikpkxW61VYrVaSk4TpgkkpdJMlKSlJJpSSUpMkkkpSZ
+ OkkpZJOkkpSdMkkpdJMkkpdMkkkpSSSSSl0kkklKSSTJKXTpk6SligWI5QLElNV6i1SemakpsVqy1V61
+ YakpdJOmSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6BUpMnTJqlJJJ
+ IqXTJ0yKlJJJIqUkkknKUkkkkpSSSSSl04CYKQSUqEoUkySmBCE4IxQ3BJSBwUCEZwQyipHtS2KaZFDA
+ tTbVNKElMNqcNUk4RtSwapBqcKSNqW2qDmIiYopaj2Ifpq4WptiRU121ooYiBikAoypFtUHMVghRISCm
+ o6tR9JWi1NtUoUhbWjMYpBqIAiVLbUN7EdRcEwqaD60L0lfcyVD00gpqipP6atitOWKQKafpqQrVjYnD
+ UJKRCtTDEQBTAVaSkOxLYjQlCQUh2JemipKUKYBikGKQThOUoMCRYE8piU5TAtCiWqZKaU0qYbEtimkm
+ IYbE21TSSUwhSATwpAIqUApBqYKUoqVtS2hKUpSSttCW0JSluSUvtCW1NuSlBS8JwmlOCgVMwiBCCIE1
+ TJMU6YpKRuQiiuQ3IKRlMnKZFS4Tpk6SlJJJIqWSSToqWShOnTSpaEoTpJqloShOkkpaEoTpJKWhKE6S
+ SloShOkkpaEoTpJKWhKE6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6ZJSyZSTJKWS
+ TpJKWSTpJKWSTpJKUkknSUsknSSUpJOkkpYKQTBSCSlFBejlBekpAVJiiVJiSm1WrAQK0cJKXSTpklKT
+ J0ySlJJJJKUkkkkpdJJJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSgkU6SSkNirPVmxVn
+ pKYBGYghGYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSTpKUnTJ0lLpJk6SlJJJIKUkkmSUp
+ MnSSUxSTpklLylKZMkpeUgEoUgEVLgKe1IKUpKRFqjCIVAoqXClKhKRKKly5QJTEqKKmcpwohTASUuAn
+ hOE6CmBCZSKigpZJOkgpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZOkkkpSSSSSlJJJJKWSTpJKWSTpJKW
+ SSTpKUkkkkpSSSSSlJJJigUhUqJKRTJq5ScJk6VKZJ0ydKlpUkkklS0rpoTpJUhiQmhTTJUpjCkAknSp
+ SoSSTEpUpSSZKUqSukmlJKkqSTJSlSV0kySVKXSTJJUhkkop0qUyTJpSlKkLppSlNKcFKKZKUk5DIKQC
+ iFIIUkLwmhSTJLgxhKE6YpLgsUycpkkrgp5UUkqUuSokpJkFLynTBOEVpXSSSSQsnTJIIXSSSSUpJJJJ
+ Sk6ZJJK6SZJJKk4TJwlSl4SITgp5RWFgWpoU0kVMQFKEkpSUpMUpTSklZMnSQUpMnSRSslKSZJS8qQKg
+ nSUylMSmSSUpOAkApBJS4CRCcFKUlMCEoU0ySGKYqSYhJTFOEoThJC4CeEgnlFTEhNClKYlJTFJJJJKk
+ kkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkiUk0JKYkqMKZCaElLAIrQohTBQUuQokKcqJSUxThKE6SlJ
+ iE6aUlKATwlKUpKWKiSnKiQkpUqQUYUgnBS6SSSdalJJJJKUkkkkpSSSSVoUkkklalJJJJWpSZOmStSx
+ KaU5CjCVqXlKU0JQlal5TymSStLMJ1CU8pKZJJpTyglUJoTpIpYpJ4TFK1KlKUyZJTKU0pkkrUqE0KQU
+ gErUwDVMNUgE4QtSwCSdRJSQsSoFycoZRtCtycOUYTgJWhmCpgqACkkpeUkyUpKXTJJJWpSSSSVqUkkk
+ lalJJJJWpdJMkkldMkkkpSdMklalKMp00JKVKkFEBSCCmUJiE8pSkpgQmUymRUxThPCcBJSgFKEgE6Cm
+ JCGQikqBSUjhSBSSASUylIpQlCSlkoTpJKWhKE6SKloShOkkpaEoTpJKWhKE6SSloShOkkpZJOkkpZKE
+ 6SapQTpk6CliVGVIhNCSlpSTwlCSmMJwFKE4CSlAKUJgpSkpiQoEKZKiUlLJSkmSUuSmlMkkpdOmClCS
+ lkylCUJKYJwnhKElMgpBRCeUlLlRKeUxSUwITAKRSSUoBSTBOkpRTJFMilSdMkkpdJMkkhdJJMkhdMkk
+ kpSSSSSF0kkkEqTSkmKS4KlOCoJwklnKSYJ4SUsmUoTFBSyUJJwkpQCkAkFIJLVoTEKSZJaWEJAKSZBC
+ 6SaUpSUsUk6ZFSkk6SSVJJJ0krJJ0ySVJk6SSVkk6ZJSkkkklKShOnSQxhMppkkMYSUkklLJ0kklLpk6
+ SSVkykmhJLFOlCSSQpPKikklnKUqMp5TStK6SZJCkLpJk6VKXTJ0kqUxKZSTJUpQUgopwUqUyCdRlPKV
+ KWITEKUqKVKWhJOklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKWTpJJUpSZOklSloTgJJJUuXCdNKYlK
+ lMpTFRlKUqUuVAqSRCVIYKQTQnCVIZhPKiClKVIUSoynKZJSk6UJQlSl0kkkqUpJJJKlKSSSSpSkkkkq
+ UpJJJKkqSSSSpSkkk6ClJk6ZPipZNKchMVKhSdRUgUlLwmhSCSSmO1OApJ0EsYTEKaiklilKRTIqXlNK
+ YpoSUvKdRAUgkpdJJJJSkkkklKSSSSQpJJJJSkkkklKSSSSQpJJJJSkkkk0qUkkkmqUkkkkpSSSSSVJJ
+ JJKUkkkklSSSSSlJBJOElLwkQnBSJSUjITKZUSElKBUlEBSCSlJQlKeUkKhJKUpSUpKUyUJIXlMSlCUJ
+ KYlJOmSUqE6QTpyVkk6SSlkk6SSlkk6SSlkk6SSFkk6SSlkk6SCloTwkkkpSYp1EpKWJTSkQmhBS8pwV
+ GFIJJZBPCiCpSgpUJk8pkkrJSkQlCSV06inlJS8JQlKUpKWSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkpTSELymlNKZClLykCmhOAkpkF
+ KFEKUpKYkKBCKSolJTCE4ClCeElLJJ4SRpS0JoUkkqUxhMpFMlSlkk6SSlkk6SVKWSTpJUpZJOkipZJO
+ klSlkk6SVKWShOnCQUx2pbUQBKFKFhYQokqZUCipaU4coFIJLglDkxKiE6S4KlOE0JwkuSBMUwKeUFMS
+ E0KSdFDEBPCdIpKYp0imSWlSdMkktUkkkkhSdMkkpSdMkkldMkkklSSSSSVJ0ySSl0kySSlJJJJKUkkk
+ kpdJMkkpdJJMkpdMkkkpSSSSSlJJJJKXTpkklLpkpTJKXTpk6SlJJ0klKCdJMSgpYlQKclQJRUuFJRCk
+ ElLpkkkkKSSSStSkkkkrUpJJJK1KSSSStSkkkkrSpJJJK1KTJ0xStSkyRTJWpknCiFIJWpdMQnTJWpiQ
+ kAnThK1LgJ4SCdC0sCFGEQqMI2piknhKElLJ08JQgVKTpkkwoXSTJIKXSTJJKXSTJJKXSTJIKXSTJJKX
+ STJJKXSTJpSUylMmlJJS6cJk6SmSUqMpEpKUSmTSlKKl04TBOElMkkkklLJJJklKSTSlKSVFRKeUyalQ
+ UwVBOClSmcpimlKUqUpPCSdKkMYShTTQlSmICkAknSpaukmlNKVKXTJpSSpS6SZJKlLpJkkqUumSTJUp
+ dJMnSpSkkkklKTJ0klKSSSSSsmJTpkqStKUpJIUpkCnCinBSpTJKEgnSpDGElJRJRpSxTEpEqJKVKUSl
+ KiSklSmUp0wCmAlSlk6UJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJ0kkLJSkmKIUvuTFyiUyepkXJpU
+ U4CKmQKkFEJwgpkkmlPKSVQlCUpwkpaE8JwnhJLGExUyFEhJTFJIpklMk6inQUukmSSUukmSSQukmSSU
+ umSSSUpJJMkhdMkkkpSSSSSlJJJJJXSTJ0lKSSSSUpJJJJSkkkklKSSTJKXTJJIKUnTJJKXTJJJKUnTJ
+ JKZKDlJQckpr2KuUexVykpIxWq1UYrVaSk4TqITpKUkmSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklLpJJJKUmTpklLp0ydJSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JTJMnTJKWSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSU//0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmToFSkydMmqXTJJJKUkkknKUkkkipSSSSKlJ
+ JJJylJJJJKXTgqKSSmcp5UUklKJQ3FSKGUFMCVAlSKgULUsUkySFqUkkkhxKUnCinCHEhmE8qKRKQmpe
+ UpUCUwKlBXJQnhRaVNG1KhMnKgSmlSiU0piU0pBS8J4TBSUwUqE8plElIqZymJUJTyoyVLwnASCdIFSo
+ TEJ0xKkBUxITJymQkVLhSChKeVAVMkk0pSkFKTJJKUKXCdMnRtSlEqSiUrUxSCScBNJUvCUJwEoUZKGM
+ JQpQlCVqWTpQkjalJ0ySNqUmTpkbUtKUpJkrUvKUpkkrUyBUwhhTCFqSBECG1ECCmSYp0ikpG5CcjFCc
+ kpGUykVFJSk6ZOipSSSSKlJ0kkVKTJ1EppUvKUqKSaplKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS
+ 8pSmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUumlJJJSkkkklKSSSSUpJJJJS6SZJJS6
+ SSSSl0kkklKSSSSUuFIKIUgkpcoL0YoL0lICpMUSpMSU2q1YCr1qwElLpJJJKWTJ0ySlJJJJKUkkkkpd
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKQ2Ks9WbFWekpgEZiCEZiSmw1TUGqaS
+ lJJJJKUkkkkpSSSSSlkkkklKSSTpKUknSSUpJJJJSkkkklKSSSQUpJJJJSkydMkpSSSSSlQnhIJ5SUtC
+ dOmRUvKRcolRKKmRcoymSARUuE6QCdJTAhKFJIIqUApBIBOkpaUxKRUUlMpTJk6aVKSShJBSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpQkpSSSSSlkk8JQkpZJJJJSkkkklKTpk6SFJk6UIrgwShT
+ hKEaZGMJQpwmISpBWTpJJUtWSlJNKVLSylJRlKUqQylKUySVIVKUpJkqQvKSZPCVJWSUoShKksUk8JQl
+ SVkk8JQlSmKSlCUJUpinTwlCVKWSTwlCVKUmUoTQlSGKZThNCICGKSlCUJyFApwU0J0KXBeUpTJJUvCp
+ SlMlCVLlSmTwlCVJUkknSpSoTQnToUpjCSdJGlhWSTpJUtKySdJKkLJJ4ShKkLJJ4ShKkrJ0oShKkrJJ
+ 4ShKlyyUp4TEIUpUp9ygUklhSSlKiE6SF5TbkxUUkspSlRThJK6dMApJKUmTpJJWhJOnhJLGEoU4ShJT
+ CEoU4ShJTFKVKFEhJS25PuUSEoSQylPKiAnSQyTJSlKSlJJSkkhaUxcnIUSEULbk8ptqcBBK6ScBPCCW
+ KSeEoSUsknhKEFLJJ4ShJSySeEoSUsknhKElLJJ4ShJSgE8JAKYSUwLVEhFKgQkpHKQcnLU0JKZAqQUA
+ FMJKXhKE6RSUwKiSpkKBCClpSBS2pAJKZBOAmCmEVLQmhTUSm2pZJKEoQ4lKSTwlCXEpZJPCUJcSlkk8
+ JQjxIWSTwlCXEpZJPCUJcSlkkoTgJcSlQltUgnlLiUw2piESVEpcSmBCiVMqJCHEpjKUpEJoR4krgqQK
+ hCkAhxJZgp1EBSCXElSUJ0kuJLEhNCnCUJcSkcJQpwkQlxKYJ5ShJLiUvKeVGEkrQylMSmTSlaFQltTy
+ pBHiQxDFIMUwpJcSke1MQipiEuJCEpkQhRIS4lMUk8JQlxKWSTwlCXEpZJPCSXEpZJOklxKWSTpQhxKW
+ STpJcSVkk6aEeJSk4CQCkEOJS0JQpJFLiUwJTSpEKBalalSnCaFIBLiUyAUgEwTylxKUokqRKgUuJTEu
+ USUiE0JWpkFMBRARAlxKVCYhTUSlxKYFJOQmhLiUpJPCUJcSlkk8JQlxKWSTwlCXEpZJPCUJcSlkk8JQ
+ lxKWSTwlCXEpiknhPCdalBOAkE4RUqE+1KUpSUralCW5KUlLEKJUiVApKWLk25MVFJTPcnlQAUwElKSh
+ PCeElMIShThKElLAJwEk6SlJJJJKWTJ0klLJSlCUJKVKaUoShJSpTSnhKElLSlKUJQkpeUkoTwklZJPC
+ UJKWSTwlCS1ZJPCUJIWSTwlCSFkk8JQlalkk8JQklZKE8JwEl4Ywn2qSdJcxATwnTpJYkKBRSoEJKRkp
+ ApyEgEFMgU8poTFJYV5TyoJwktLKVElShMQksYylKUJQkpdJPCUJKWSTwlCS5SSUJQklSSUJQklSSUJ4
+ SSsmTwlCSlkk8JQkhZOlCUJKUklCSSFkkoSSUpPKZMkplKdQlPKSWSSQTpJWhNCklCSWBTKcJoSSxTp4
+ TwitKySeE0JUtUnTQnSpSkkkkqUpMnTQlSlkpShMlSmUpSopJUplKUpkkqUvKSUJQlSlJJQlCVKUklCS
+ VKUkkklSlJJJJUpSSSSVKUkklCFKUlKUJI0pSUpkkqXrymJTwmhKksZThPtThqVIUE8KQapbUqQiISUy
+ FEhKkLJJJJUhScBIJ0qUqEoTpFKlMUk5TJUpSSSUJUpZJPCUJUpZJPCSVKWSTpJUpZJPCUJUlSSSUIUp
+ SlCYKQRUxIUCioZStawSBSKZK0swU8qAUoStTKUtyiklaWUpSmSStKkoTwpAJWphCW1EATwlaUcJkQhR
+ IStTBJPCSVqWSTwlCVqWSTwlCVoWSTwlCVoWSTwlCVoWSTwlCVqWSTwlCVqWSTwlCKlkk8JQjSlkk8JQ
+ kpZJPCUJKWSTwlCSVkk8JQklZJPCUJJWSlPCYhJStyW5RITQkpJKeFEKQSUqElJMQkhiSoypkKBCSlbk
+ 4KjCQSQkCkAhgogKCGUKJClKRQUiKjKmQoQiFLgqSiAnTlLpJJJJUkkkkhSSSSSlJJJIKUkkkkpSSSSS
+ lJpTpQkpZKE8KQCCmMJtqmmJSSwITFSJUSlSlpTbkiEoRpK4KmFABEAQpSoShTASKVJRFRJU3IZCVKVu
+ TgqMJwEKQzBTpgE8JKUmTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWS
+ TpJKWSTpJKWSTpJKUmTpQkpjKUp4ShKlLBSASAUwlSltqUKYSKFKYFRJUioEI0pW5OCownASpTMKYCgF
+ OUKUqFEpyVAlGlLEptyYpoSpDKUkwCkAlSlJJ4TQlSlJJQlCVKUklCUJUpSSUJQlSlJJQlCVKUmTwlCN
+ KWUgU0JIUgsgUpTJkrWFcqJCklCVqCOE4apwnASteGIan2qQClCVrgjhMiEKBCVrmMppSITQlaWUp5UQ
+ E8JWpeUpShKErWlSZPCUJWtKySeEoStYsknhKErQsknhKErSsknhKErUsknhKErXBZJPCUJWlZJPCUJW
+ pZJKE8JWpZJPCUJWpZJPCUJWpZKUoShK1KlJJKErUpJKE8JWpZJPCUJWpSSeEoStSkyeE0JWpaUpSKZK
+ 1LypAqEpwUrUzCkoAqSVqUVElOVApWpYlRUoShK1LKQSAUgErUsmUoTQmkoWSTpQhxKWSTwlCPEpZJPC
+ UJcSlkk6SXEpZJOklxKWSTpJcSlkinShLiSwKSlCfahxKYhOn2pQlxJWlNKchRhLiUvKcFRhOAlxKZgp
+ 5UQFIBLiUpKFKEoS4lMYSATpApcSl4TEJ5SJRtTAhRUyowihZJPCeElMUlKEoQUxSUoShJTFJShKElMU
+ lKEoSUxSUoShJTFMpwmhBTFOE8JwElLBOpQmISUxTEqRCiQipjKQTwnASUoKQTAJ4SUvKaUkkVKlMknh
+ JTFNKlCaEUhZJPCeEaXMUlPaokJUpaU4ShOAlSFBPKaEkqQylKVFJKlLylKZKEqWrEqMqUJtqVKWlSBT
+ AKQCVIUknSSpSySeEoSpSySeEoSpKySeEkqUsknhKEqUsknhKEqUpMnhKEqSskkkhSVQlCkAnhKlI0pU
+ iFGEqUuCpSoBOlSFyVElIpoSpS0pipQn2pUpHCcBS2pwEqUoBThMFJKlMSmKkVEhGlLJJQnSpSkkoShK
+ lKSShKEqUpJKEoSpSkkoShKkKSSSSpSydKE4SpS21LaphJFKPalCImSUwhJSTEIqYymlOQokJKX3KQKh
+ CcBJKUFSQwphBTJRKkmKCmBTKRUUlKSSSSUpJJJJS6SZJJS6ZJJJSkkkkEKSSTJKXTJJJIUkkkklSSSS
+ Sl0kydJSkkkklKSSSSUpJJJJSkkkySlJJJIKUnTJ0lLJJ0ySlJJJJKZKDlNQckprWKsVZsVcpKZsVqtV
+ WK1WkpMEikEklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUmTpklLp0y
+ dJSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JTJMnTJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//1OvSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmToFSkydMm0pSSSSKlJJJIqUkkkipSSSSKlJJJI2pSSSSNqUknSSUpOkkkpiUMoh
+ UCgpEVAohUCmqYpJ0kFLJk6ZNUpIJJJtKZJikkUgFMCkE5TBTBLNpRAUIKYKcpkSoEpyVEoKYlJIpJBS
+ 4KlKgnlShS5KYlKUyJUsnCZOoipmCpShhSlIKXJTFJMpApYpJ4TQgVKSShJQFSk6ZJEKXSTJ1IFLp1GU
+ pSUyTFKUklLQnASTppUuEk0pKNCkkkklKSTSlKcpdJNKUoqUmSlJFSkydJJSySSSSlwphQCkEFJAiBDC
+ mEFM0xSSKSmJQiiFDKSmBTJyooqUkkkipSSZJFTJOop0VLpkkk0qWSTpJqlkk6SSlkk6SSlkk6SSlkk6
+ SSlkk6SSlkk6SSlk6SdJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSyZSTJKWTJymSUpJJJJSkkkk
+ lKTpk6SlJ0ySSl0kkklLpJJJKUFMKAUwkpdBejFBekpAVJiiVJiSm1WjhArRwkpkmSSSUpMnTJKUkkkk
+ pSSSdJSkkkklKSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpFJIpKQ2Ks9WbFWekpgEZiCEZiS
+ mw1TUGqaSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sl0kkkVKSSSQUskkkkpSSSSClJ0ydJSkkkklKSSSSUt
+ KUpQlCSlwU6YBOipYpk5KjKKlQnATSnBRUyASTSkSkpYlKVElNKKkoKeUIOUg5FS5TQnlKUlLJ0xcFHc
+ hwqZpKG8Jb0uFTNJQ3pb0uFTNJQ3pb0uFTNJQ3pb0uFTNJQ3pb0uFTNJQ3pb0uFTNJQ3pb0uFTJJR3hL
+ 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
+ pSlwIZSnUNyW9OEUM0lDeEt6PChmkob0t4Q4VM0lDeEt4S4VM0lDeEt6XAVM0lDelvS4FM0lDelvQ4FM
+ 0yjvT7kuAqZQnAUQ4KQcEuFTJMU28KJelwqUUyiXpbkuAqZQnATBwT7kuFK8Jki5RL0eFS8pKBelvR4C
+ hmE6gHKW8IcKmSZRLwomxOEVwSJ5QDam9VHhK9sSmKD6qcWJcKEidQD1IOQpC6Yp9yiXJUpSSaUtyVIZ
+ BPCjuT70qQyhKFHeEt6VIXhJRL0xelSGcpSh70t6PCpIkh70t6VKSJIe9LelSUiUqG9LelSmcp5Q96W9
+ KlJEkPelvQpSRIqG9MXpUlclKVAvTbkeFKYFTlAD1LehSmZUCUxsQjYiIqSylKrm1OLUeAobEpwgh6mH
+ ocKUgCeFDem3oUpnCZR3hMXo0hnKeULem3pcKkspIYen3pcKmaSjvS3pUpkko70t6VKZJKO9LelSmSSj
+ vS3pUpkko7029KlM0lDelvSpDNKVDeluSpTOU25R3JpSpLPcnlD3Jw5GlJJSUQ5OHIUpUJiFKU0oJYwn
+ ASJTbgipmFIFC3p96CkkpiVDeol6FKZkppUNycFJTJOmCdJSkkkkFKSSSSUpJJJJSkydMghSSSSSlJJJ
+ IKUkkkipSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkydMkpSSSSClJ0kklKSSSSUsnSSSUuoOU1FySmrYq5V
+ ixVykpmxW61UYrdaSkwSSCSSlkk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkk
+ kpSZOmSUunTJ0lLFAsRygWJKar0zU70zUlNmtWGqvWrDUlMkydMkpZJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1evS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkkVLpJkkVMk
+ kySSlioFTKgUlMCoFTKgUFMUk6UIKWTKUKJCClkyeEyCl5SSTgJBS0JQpwlCeFME8pyFFOUvKSQCkAgp
+ jCaFOExCIUwSTkJoUwUpPCQCkAkVMYShThMQoSpilKRCZAKZJ1EKSkClQlCdPCRUxhMpQmKhKlkydJIK
+ WSTpoUoUpKUoTJFS8p0ykAmlSkk8JoTSpUppSTJql5SlJJFSpTSkkipUpSmSRUvKSSUIqUnShKElLJKU
+ JoQUoKQTAKYCSlwiBRAUwE1SkinhMUlMCoFEIUCElIymhTITQiphCUKcJoRUwSUoShFSwTpQnhFSkk8J
+ QmlSySUJQgpSSUJQkpSSUJQkpSSUJQkpSSUJQkpSSUJQkpSSUJQkpSSSSSlkk8JQkpZJPCUJKWSTwlCS
+ lkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZNClCUJKYwlClCUJKYwlClCUJKYwnTwnhJTGElKEoSUskpQlCS
+ mKSlCUJKWCkE0KQCSlihPRiEF6SkBUmKJUmJKbVaOECtHCSmSZOmSUsknTJKUkkkkpdOmTpKUkkkkpZJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6RSSKSkNirPVmxVnpKYBGYghGYkpsNU1BqmkpSSSSS
+ lJJJJKUkkkkpZJJJJSk6ZOipdJJJJSkkkkFLJJJJKUkkkgpSdMnSUpJJJJSkkkklLwnhMlKSl0xSlRJR
+ UsSoEpyowipcFSCYBEDUVLJiibVBwRCkTnQguthPa6Fn3XQiptnIAUftYWLdlwqjs6O6SnpxmDxS+1jx
+ XLfbz4qQzj4pwU9KcsKJywuc+2lN9sKmACnpPtYS+1hc39sKX2wp3CFPSfawl9rC5v7YUvthQ4Qp6T7W
+ EvtYXN/bCl9sKXCFPSfawl9rC5v7YUvthS4Qp6T7WEvtYXN/bCl9sKXCFPSfawl9rC5v7YUvthS4Qp6T
+ 7WEvtYXN/bCl9sKXCFPSfax4pfax4rm/thS+2FHhCnpPtYS+1hc39tKX20ocIU9J9rCf7WFzX20pfbCl
+ whT0v2sJfawub+2FL7YUuEKek+1hN9rC5z7YUvthS4Qp6P7WE32sLnDmFROaUeEKek+2DxTfbB4rmjml
+ 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
+ 9rCX2seK5v7YUvth8UuEKek+1jxS+1jxXN/bCl9sKXCFPS/ax4pfax4rmvthS+2FLhCnpftYS+1hc19s
+ KX2wpcIS9J9rCb7WFzn2wpfbClwpekGWE/2sLmvthT/bClwhL0RywoOygsH7WUxyinCIQ7Zyk7clYByl
+ JmUjwhD0bMhGF6wqslG+0aJhil1jkgIZywsa3LhVXZvmkIhT0Yywn+1hcyM0+Kl9sKXCFPRHLCb7WPFc
+ 4cwqP2wo8IQ9MMsKQywuZGYVIZhQ4Qp6T7WEvtYXOfbCm+2FLhCnpPtYS+1hc39sKX2wpcIU9J9rCX2s
+ Lm/thS+2FLhCnpPtYS+1hc39sKX2wpcIU9J9rCX2sLm/thS+2FLhCnpPtYS+1hc39sKX2wpcIU9J9rHi
+ nGWFzX2wpxmFAxCHpftQSOUFzn20qJzSoyFPRnLCX2seK5o5pUPtx8U1L1IzB4qQzAuVGcfFOM4+KSnq
+ vtg8Uvtg8Vy4zj4p/tx8UEvTfawm+1hc39tKcZhSU9H9rCX2oLnRllSGWUFPQfagmOUFgHLKj9tQU9EM
+ gFHZbK5urLkrTxr9yCnaYZU4QKTKsgIKYlMpEKKSlJ0ydBSySdJBSySSSCFJJJJKWSTpklKSSTpKUkkk
+ ipSSSSSlJJJ0lLJJ0klLJJ0ySlJJJJKUkkkgpSSSSSlJJJklLpJk6Sl1FykoOSU1rFXKsWKuUlM2K3Wq
+ jFarSUnCSYJ0lKSTJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklKTJ0ySl06Z
+ OkpYoFiOUCxJTVemanemakps1qw1V61YakpkmTpklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1uvSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTohSkydMjSlJJJIUpSSSSClJJJIKUkkkhalJJJJWpSSSSVqUnhJOEbUqEoUgEoR
+ tTAhRIRSFAhJSEhRIRiFGEVI4S2okJ9qVKRbUxaj7UxahSUBam2o+1NtS4VIdqcNRdqcNS4VMA1ItRIS
+ hLZCEtUdqOWqO1K1Iw1SDVMNUgErUj2pi1FhIhEFSAtUdqOWptqmBUiDVINUw1OAkSpjtTFqJCRCgJUg
+ LVGEctTFqQKkMKQCntThqeCpiAnhTDU+1IlSIhMQikJiFCSpFCUIkJw1EFSPaltRg1PsUgKmvtTbVYLE
+ 21IlSHapBqJtThqYSphtTFqNtSLUrU1y1LajlqbYlSUO1LajbEtqNKQbU21HLUxajSEO1Lai7UtqKkW1
+ OGou1OGo0pFtT7UXan2oUpFtTbUfam2pKRBqkAp7UoQUsApgJgpBNUqExTpikpgQokKZTEJKYQmhThPC
+ SmEJtqJCUIqRbUoRIShFSOE8KcJQjamEJQiQltQKkUJQi7UtqCkUJQi7UtqSkUJQi7UtqSkUJQi7UtqS
+ kUJQi7UtqSkUJQi7UtqSkUJQi7UtqSkW1Lai7U+1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHaltR
+ tqW1JSHaltRtqW1JSHaltRtqW1JSHaltRtqbakpFCUIkJQkpHCUKcJ4SUjhKFOEoSUwhKFOEoSUwhPCl
+ CUJKYwlClCUJKYwlCnCUJKYwnhPClCSmBCA8KyQgPCSmsQpMCRCkwJKbFaOEGsI4CSlJlJMkpZMnSSUs
+ kkkkpdOmTpKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSkNirPVmxVnpKYBGYgh
+ GYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSk6ZOipdJJJJSkkkklLJJ0yClJJJIKUnSSSUpJJJJSkkk
+ klKlNKYpklLykUydFTGE4CeFIBFSgEQBMFIIqUQgvRiUGwpBTRvKyMly1r1k5ITlOLkOKouJK0rmSUBt
+ ElJTUa1xR21OWjRhStCvp8jhEKcEUuS9Jy6P9neSb9n+SkEkPO+i5L0nLof2f5Jfs/yR4lPPek5L0nLo
+ f2f5Jfs/yS4lPPek5L0nLof2f5Jfs/yS4lPPek5L0nLof2f5Jfs/yS4lPPek5L0nLof2f5Jfs/yS4lPP
+ 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
+ SSSSSlJJJJKXSSSSUpMnTJKXTpk6SligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSmSZOmSUskkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkp//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOnBSydJMnKUkkkmlSkkkk0qUkkkmlSkkkk1S
+ kkkklKSSSSUunBUUpRCmYKlKGCnlFTIlRJSlRJTlKKZKUyKmQTgKIUgUUrwlCUpIqWhNCdJFS0J4SSSK
+ lkkxKUqIoXhKEgnTULQknTFFSkkyScFKhKE6SkCmMJJymKJUpOopwoJKXhKE4ToBTCE4ClCcBSBSwCUK
+ SRSKmBCiQplRKhKmMKQCSkEQpcBPCQUlIFMCFEhEKgUCpjCkEyQKYVMwlCYFPKIUtCUJ0k8LloShOknK
+ YkKJCkUySGMJoTpIqUnCZOEVMgnhMEpSUuklKaU1SiopymQUpOop01TJMSkmKSlimSKaUlLqQCiCpApK
+ XhPCaU8pKWhNCeU0oqWhPCUpSipeE8JpSlBS8JQmlKUlLwlCaUpSUvCUJpSlJS8JQmlKUlLwlCaUpSUv
+ CUJpSlJS8JQmlLckpeEoTbktySl0k0pSkpdJNKUpKXSTSlKSl0oTSlKSl4ShNuS3JKXhJNuSlJS6aEpS
+ lJS0JQnSSUxhPCSUpKWhKE8pSkpaEoTylKSloShKUpSUqEoSSSUqEoTylKSlQnhNKcFJSxCA8KwUB6Sm
+ uQnYEinYkpsMCOAgsRwkpSZOmSUsmTpklLJJJJKXTpk6SlJk6ZJSkkySSl0kySSl0kySSl0kySSl0kyS
+ Sl0kySSl0kySSl06YJFJSKxVnqzYqz0lMAjMQQjMSU2Gqag1TSUpJJJJSkkkklKSSSSUskkkkpSdMnRU
+ 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
+ QtSD0QnFQRJSlFTD0gl6QU5SlJTAVBSFQTgqYKRJUxFISdSEUFM4ptlLnZFYCxsloC2so6LBy3qRDVMS
+ jMVPfqrFTkCuCS3hZt3K0bDos67lMZGFQkrZw65WPSNVvYIRU61FIhWRQE1A0VhBCD0QpCkKZKeUUMRU
+ FL0gluS3oIV6YTGoJ96bektYmoJvRCJuSlFCL0Ql6IRZSlJSL0gl6QRJSlJSP0gl6QRJSlJSP0gl6QU5
+ SlJTD0gl6QU5SlJSP0gl6QRJSlJKP0gl6QRJSlJSP0gn9IKcpSglj6QS9MJ9yW5FLE1BR9AIsp2lFSA4
+ 4VPJoAC1iqWUNEAp5jLZErMOhWtnd1jPOqKG9QVeHCzMcrQB0QUitCExoJU7SoVnVJTq4lYK2qKRCycM
+ rcoOiSmfohQNQRyUMuQUw9IJeiFPcnlFSP0Qm9EIspSgpF6IS9EIspSkpF6IS9EIspSkpF6IS9EIspSk
+ pF6IS9EIspSkpF6IS9EIspSghF6IS9IIspiUQph6YS9MJ9yW5O1XK9IJekE4cpbktVMPSCb0giSlKFlS
+ P0gl6QU5Tgo2VI/RCf0AigqSFlTUdQFWtpC0nKtaEQUuLkVQsi9sLdyQsTJRU1WcrVw+yyWnVamGdQkp
+ 6LF4V0Kji8K8EwqYlMncmSUpMnTIIUnTJIKUkkkkhSZOmQUpJJJBSk6ZJFS6SSSKlJJJJKXSTJ0lKSSS
+ SUpMnTJKUkkkkpSSSSClJJJ0lLJJ0klLJJ0klKUXKag5JTVsVcqzYq5SUyYrdaqsVqtJSYJJBOkpZJJJ
+ JSySdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklKTJ0ySl06ZOkpYoFiOUCxJTVema
+ nemakps1qw1V61YakpkmTpklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSl0kySSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mToqUmTpkrUpJJJK1KSSSQUpJJJBSkkkkqUpJJJKlKSSSSpSySdMlSlJ5TJJKXTJJIqWSTpJKUnTJI2p
+ lKUqKSVqXSTJJWpdJMklalFJOkgpSdMnQpSkySSKlkk6SSlJJJI2pZNCkklamMJAKSSClBOmSQpTJJMk
+ iplKaUySSlFMnTIUpZSCZOlSlwU8qEpSipkSmKaUklLJ0kkKUpPKZJKlMpSlRSRUylNKZJJS6ZOmRtS0
+ JQnSStS0JJ0krUpJJJK1KTpJkrUpNCdOgpZKE6SSlkxCkkUlIyoEohQnJKVKkHIRKUpKTbk29ClKUlJd
+ yfcggpwUlJdybcoSokpKS7kt6DuTbkl4DYDk+5ADk+5FfwpdybchlyYuQYpaJdyfcgbk4cgx2m3JbkLc
+ luStcEm9NvQi5NuQtKbelvQQU8o2hIXpvUQyVGUlJw9PuQAVIFFcE25NuQtyUorqTbktyCCnlJcIpdyW
+ 5DlKUlGKTcm3IcpiUmGWiTelvQiU0oLbTb0+5BBUgUFWm3JShgp5STbPcluQ5TSilLuTbkOU0pKS7kty
+ FKUpKS7ktyHKUpKtJuS3IcpSkpJuTbkOU0pKS7ktyFKUpKS7lMOVcFTBSVaYlBeVKUN5SUiJUmFDJU2F
+ JTaYjhV2I4SUumSTJJUkkkkpZJOkklZOkkkpSZOmSUsknSSQskkkkpSSSSSlJJJJKUknSSUsknTJKUkk
+ kkpcJFJIpKRWKs9WbFWekpgEZiCEZiSmw1TUGqaSlJJJJKUknSSUsknSSUsmTpJKWTpk6SlJJJIqUkkk
+ mEqXTJJIWpSdMklaVJJJJWpSSSSeFKSSSRpS6YlJMQkpYlNKRCaEFMgphQCIECVLpJJkLUuShPKmUJ6I
+ KmrcVlZK1Lll5KkBU5No1T0jVPbylTynhTs4a26eFiYi2qTokVNhQKkolNCFkk6ZJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJS0pSmSSUpJJJJSk4TKQSUuE6ZIpKXlKVGU0pKZKJCcJ0lIy1DcEchDeEkNC9Y
+ 2UtnIWNlJMkXLtOqiwp7eVBvKDOG2wo7FWrVliVoLbpC08cLOpC06ElhdCsIyDWjBJYWJTKRUUlpUlCS
+ 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
+ lkUC1FJQrEkuZkhYeUFu5Kw8pFTRHK1MPkLLHK1MPkIWp6LF4V4cKji8K+OE0qYOUVJyihalJJJIWpSS
+ dJJCkydMkhSSSSKFJk6SSlkk6SSlJJJJJUkkkkpSSSSSlJJJJKUnTJJKUknSSUsknSQUsnSSSUpJJMkp
+ dJMnSUuouUlFySmtYq5VixVykpkxW61UYrbElJgkkEklKTJJJKUkkmSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmSSUukkmSUpJJJJSk4TJ0lKKBYjlAsSU1Xpmp3pmpKbNasBV61YCSl0ycqJSUukmlJJS
+ 6SZOkhSSSSSlJJJJJUkknhJKkydJJSkkkklLJJ0kkLJJ0ySlJJJJKUkkkglSSSSSaUkkkkqlJJJIWqlJ
+ JJJWqlJJJJWhSSSSKFJk6ZFCkkkklKlKUkkkqSSSQUpJJJJS6SSSSVJ0kklLJJ0klKSTpQkpimUiolJS
+ pSlMkipknTBOAkhSZShMQkpZMnKZJSpSTJ0lLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJ0klLJ0kklKSSSSUpMnSSUsknSSUsknSSUsknSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklLpkkklKTpkklKSSSSUukkkkpZJOkkpSSSSSlkkkklKSSSSUsnSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJkklKSSSSUpJJJJSkkkklKTpk6Sl0ySSSlJJJFJTByE5FchO
+ SUjKSRSSUpMnTJKUFIJgnSUuolSUSkpiVFSKjCLJErgpwVFOjTJbKUySSFMEipOkmQpiXlKUySFLwsUk
+ 8JQhSVBPCQCkEaQxhNCJCUJUhHCSkQolGl4K0pJJJ1LgVwpKIUglTICuknCSNKKyiVIpkGvJilCdJCmN
+ QCkEyeUKSunUZSlCkrlMlKSK5ZJJJJSydJJJSkkydJCkkkklKTJ0klLJk6SSlgphRUgkpkhvREN6SkJU
+ 2IZU2JJbVaOECtGCSmSZJMkldJMkkpdJMkkldJMkkpSSSSSlJk6ZJCkkkySlJJJJKXSSSSUpOmTpKUkk
+ kkpZJJJJSgnKYJ0lInqq9Wnqq9JTAI9aAEetJTYapqDVNJSkkkklKTpk6SlJk6ZJS6ZJJJSkkkklKSSS
+ SUpJJJNKlJJJJqlJJJJJUkkkipSSSSeFLJ0ydOUuE8JgU4KSli1NtU0iECphCeU5USmFK8pBRUgEKUuQ
+ hvCNCi8IhTn3BZWSti8LJyQpApyLeUqeU9o1T0jVShTr4i2qeFj4gWzSNEipOoqcKJUaFkykkihikpJJ
+ KYpKSSSmKSkkkpikpJJKYpKSSSlkyklCSmEJQpwlCSmEJQpwlCSmEKQShOkpSYqSYpKYFMpFMkpcJ0wU
+ klLIT0VDekpz8hY+SFs3rHyUqXxcq0aqDQi2cqDUKZwmYFZYEFgR2JUgtuladCzKlpUJUsLo1owQa0cJ
+ LCxKgUQhQISWlaU4KinCVLCylMUgnSpDFMpQlCVKYpJ4SSpKySeEoSpKydKEkqSpJPCSVJWSTpJUpZOk
+ klSlJJJIUpZJOmTgtKySeEgEULodiNCHYNEF4czJKybytfJCyLxqjTIGo5QcikKLgjTIGo9QadUSwIQ5
+ Qpc6GMVtYxWHjFbWMlS11KijhV6lZCC0rhJOAkQkxlZJOkkxFZJOmQWFSSdMlSFJJ0kqXBZJPCZKl4Uk
+ nTJUyBSYp08JUosISAU4ShCmEqCeUyUpUhRTQnTopYQkpQmKS5UppSTwilZOE4ClCS5BZwsnLWxbwsfM
+ RCXDv5QW8ouQdUJnKNJbTBoh2orOEK5KlNYnVXsU6rOJ1V/EOqVKegxQtFgWficLTYNE0oWKiiEKCSGK
+ kEycIUhcJ0gkhSlioypFRKVIVKeVFOEqQWUp0ydClq0pSkkjSlSlKSSVKVKUpJJUlUpSkkjSVSlKSSVK
+ XlKUySVJUSoEqRTEIpWSATgKQCSlwFGzhECHZwkEuRm91zmVyuizO653K5TqU028q9S5URyrdSNJbDjo
+ gkaopUANUqU2sYardxVi4w1W5jBBTfadEiU7QkQmpYJ0oTgJFCySkkghikpJJKYpKSSSGKSkkkhikpJJ
+ KYpKSSSGMJ08JQkpjKaU5TJUpUpJwE4CKVoTqUJikliUxUiolFK0pwU0JwEkryoOKkoORS1risvJC07V
+ m3o0lyL2qoWq/cFUcEqUswK0xV2o7EKU2ayr9Cz61foSpDp0q41VKVbagUMioqRTIIVKUpkkKWr7kpUU
+ kqQvKSQUgEqWsYShEAShBDBJOQmQpSkkkkqUsknSRpSySdJKkrJJ0kqSskknSpKySdJKlLSmJTlMQnAL
+ goFPKYBShFe1ruFlZIWvaNFlZITgpy3qCLYNUOEUIrFSsKvWBUbOUlL1HVa+IserlbOH2SU7WOFdaqmP
+ wrjU0qXlRJUiokIIWlSBUYUgEkMk6QSQUsknSSQsknSSUsknSSUsknhKEkKSSShBSydJJJSk0J06FIYw
+ nhSShClMElIhNCNJC0pSkkjS5iUgE8J2hFIXhV7xorcIF40SC5wMxZFh1WvmrEtOqNJTVlHJ0VSoq12R
+ pLVuQmcolqEzlKlOxh9lvY/CwcLst/G4SpTbCYlSCYpqGMpiUimSpaolMnTgIUhiApgJAKQCFLSuE6ZO
+ EqWrEJoU0oQpSOE6kQmhKl4WSShPCVIKySeEoSphKySdJKkBZJOkjTKFkk6SVJUkkklSFJSklCNJC0pi
+ U8KLgkyBrXu0WDmnlbeRwsLMKNMgce06qVPKhbyp0pUyhv1jRJ6evhJ6NLJMGcrVxCstg1WniJU1y7dB
+ 0RyVXo4VhBCFyYKbgmASQuFJMAnhJSkkkklKSSShJSydKEoSQpJOkklZJOkklZJPCUJLlkk6UJJWTQpQ
+ nhK0FhCSlCYpLCqU0pJIrCqUyeE4CS1QSKkAmcEF4atqzb1p2hZt4Twyxcu5UrAtC4Kk8KS2xFqOCdoU
+ 3BJoRtlTVBaFAVKoK/QFGWrN0aFfrVGgK/Wm0wp2qRTNUimJYFRUyoFFSpTyop0VKJTFOmQUskpQnhBT
+ EJwUoSSpC8p0wUkKUsknSSpKySdKEqQsknhKEqUsknSSpSySdJKlLJJ0kqUspBMnSUGLys7JK0XrOyVJ
+ FmDjZHKqRqrmQNVVhSBkBZAINoVgBBuCNptoP5RaBqhvGqNjjVC1W7OIFr1BZeIFr1BNKLTBSSAUgEwl
+ YWEJoRtqiWoWxFGnTkJQisUknATwgtYpKUJQkuDFJShKEl4YpKUJQklinTpQkpikpQlCSCxSUoShJjYp
+ 08JQkpiUxU4TEJKRlNKmQownJCgUpShKElwZAqLypAJnhJLmZR0WFknVb2WNFgZQ1UiWoDqrdSptGqu0
+ hJTJ40VN41V940VKwapKSY41W9h9lhY/K3sMcJpU69fCmVGsaKZCiO6EaSeEoTkKSShPCCFkk6SSlkk6
+ UJKWSTwlCSlkylCUJJYpKUJQkuDFJShKEksUk8JQktKySeEoRWrJlJKElrFJSShJTFJShKElwWTFThMQ
+ kvCCxZuVwtSwLNyhonheHAyuVQnVaGUNVnEapy+2zSVbB0VOkK2OEErEotPKEUegaoIt1cULVr4Wdiha
+ jBomFaWUoZKIQhkIBjLElIJQpAIsZUFJIBOgpZMpQlCS5ikpQlCSmKSlCUJIYpKUJQkpZJPCSSlkk6SS
+ lkk6SSlk0KUJ4SSwhOpQkQlaWMpSnITQklUpJAKUJJCCwKheFpPCo3hPBXORcFTer9wVGwJ4SgcUMuUn
+ oRRSmYVbpKosV6hG1zpULRqWfQFpVJklhbLVJM1TUJDEwKScpJUpZJOklSlkk6SVKWSTpJKWSTpJKWST
+ pJKWSTpJKWSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpOEycJKZhBu4Rwg28IBTi5ndYt3K28sLFuGqniv
+ CNqKTohtCmRopFzUvcqwfqjXqqOU1DsYZ1XQYvC53C5XSYg0QKG+wKRCkwaKRChtCKEyIQokIoYppUoT
+ QktWlKUoTgJIVKdIBShBCySlCaElLJlKEoQQxSUoShJSySeEoRUxSUoShJTFOnhKEkrJipQmhFTBKVIh
+ NCKl5SlNCkAgoLJ1IBOQhbKGtadFjZhWzcNFi5g5TwvDhX8odfKLfyhs5RXtth0ULSpsGiHaElIJ1Wji
+ crOA1WlhjVBDv4nC0GqhiDRaLQmlaVimUiEyCwrJJ0oSWFZJOmSWqSTpQklZJPCUJJWSTwlCS4LJJ0kl
+ zFNCnCUJLSxAUglCeErWKTFOmQUsUydJFLFMpwmhFLFOnhPCVpWTFThMQgtKNwVa0K4Qq9oT4ljcfJCy
+ L1s5QWNfypLbWJrI1aB3R6wg27ShEYVABTYErY5N6grVoWVQtagIFgLbapFJgUiFGVhRpSpEJiElhWlP
+ KjCSLGVyU0pQnASWrhSATAKSaWQKShOkgvWhKE6SLEVoShOkgtWhKE6SK8LQlCdJJcFoShOkguWhKE6S
+ SixKiVNRIRYywKcJ4UgEULFAtVohVrggvDl5BWdYVoZCzbEaZAgcUB6OQg2BGmUNclGqKAUWpKkutjFa
+ tBWRjLWoSpYW8xFCGwIoCC0qSUoTQgxlZMpQlCSFkk8JQklZJPCUJKYpKUJQgpikpQlCSmKSlCUJKYpK
+ UJQkpinTwnSUslCdOkpjCSdMipUpSkkkpZNCnCUJKWapFIBIoKamRwsPLW3kHRYmUnUhzHDVEYFE8qbE
+ 6mWC7+FSsKu2cKhadUmwGdJ1W5hlYFJ1W7hHhFbJ3aeFYVejhWUwsRYylKRUSUmGS8pkykAkxsYSU4TQ
+ lalkkkkkLp0wThJcFJJ0kF4WSTpJLlkk6UJJWSTwkkpZJOkktWSTpILSsmKkmISQwJUS5ScFCE8JVKk0
+ JAIjQkSvCxCqZI0V8hU8kaIRLIHnM0crGeNVt5o5WLZynrklJVwO0VKpWhwkpi8ynqGqi5EqGqSnWxAt
+ qjhZGIFs0jRNLGU6gUSFEhMCwsEk8JQihZJPCSKFkk8JILwsknSRSsknShBSySeEklLJJ0kVpWTpJ0Fq
+ kk6SSmMJAJ0klKTpkpSSoqJTpkkrKQSAUwEiVMCg2KwQgWhJc5mSsTKW3krDykaU0hytTD5CyxytTD7I
+ Up6LF4V8cKhi8K+OE1TByipOUUCpSSdMmqXSSSRQpMnTIoUkkkkhSSSSKlJJJJKUkkkglSSSSSlJJJJK
+ UkkkkpSSSSSl0kkklKSSSQUpJJJJSySSSSlJ0ySSmSg5SUXJKa1irlWLFXKSmbFaYqrFaYkpMEkgkkpS
+ SZJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSk6ZOkpRQLEcqvYkprP
+ TNSemakptVo4VetHCSmRUSU5USkpUpwoynBSUyCdRBUpSWqSSSSSpOmSlJK6SaUpSSunTSlKSVJ00pSk
+ hSSUpSkhSSUppSUpJKUySl06ZJBIXSTJJLrUkkkkq10kySCrXSTJJUi1JJJJUi1JJJSihdMlKSKFJJJS
+ gpSSSSKlJJJIJUklKUpKXSTSnlJK6SaU8pKUkmlKUlLp1GU8pKUVEpyVElJSySUpIqZBSCiFIJKXTFOk
+ UkMSoqRTJKWSTpJKUknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkp/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklLpJkklKSKSRSUwchORXITklMEkikkpSZOmSUoKQUQpBJ
+ S6iU5TFJSyaE6SeFWtCZOUyfSbXCdRlOChSwlkmSlJClikkk4QpkCoShOE6FL2KUpFRJSpjLOU8ocp5R
+ pauVEp0kU2xSTwkjS4FQUgoqQRZQyCdMFJKkksFEqZUShTDJZJJJClikpSTFKlKlKUySaVMgU6ZOmrwp
+ JJJJKySSSSlJJJJIXSSSSUpJOkkpZMnTJKWUwoqQSUyQnoiG9JSEqTFEqTElNqtHCBWjBJTIpkimSSpJ
+ JJJSk6ZOklSSSZJSkkkklKSSSSQpJJMkpSSSSSlJ0ydJSkkkklKSSSSUpMnTJKXCSQSSUieqz1Zeqz0l
+ MAjsQAjsSU2GqSi1SSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkkVLpJJIqUkkkmFSkkkk1SkkkkUqSSSRUpJ
+ JJOClJk6YpylpTgqJSCSkoKkoNU0FMSoFSJUCUwqXCI1CBRGlBSUKD1KVB5Tgpp3rJyVqXlZGS5PCXNt
+ 5SqOqHa7VQrsgqYKd7Ectil+i5vGuhalWRogQp1t6iXqj9oTHITKWlv70t6oeul66NIb+9LeqHrpeulS
+ m/vS3qh66XrpUpv70t6oeul66VKb+9LeqHrpeulSm/vS3qh66XrpUpv70t6oeul66VKdDelvVD10vXQp
+ Tf3pt6o+um9dKlN/elvVD7Ql9oRpTf3pi9UfXTHISpTeL029UTem9dFToB6fes8XqXroUpvF6E96rG9C
+ felSlXvWRkuVq69Zl9kpy6LVsOqZpUHmSkxKmcNxhRmlVmFEDkqQW/U5aND1issV6m2EqWF3Kno4esqu
+ 9HF6aQtLeL1AvVQ3qBvQAWluF6beqJvTfaE6lhdEPT71nDIUhehSHQ3pt6o+ul66VKbu9LeqPrpeulSW
+ 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
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/0+vSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJ
+ JJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSTJKYuQnIrkFySmJTJFJJSkkkySlwpBRCcJKXUSpKJSUpJJJPCFiolSKaE9SwTpQnAQQpJ
+ PCSFqEVlIJkpTbZRBknUZTyla/gWKgVMlNCVsMosYTgKQapbUbWUwhOpEKJRtVLJinTFG1wWTgqBKQKV
+ s0QmBUpQg5TBStcYrlRTkpkLYpRUnhIJSha3hWKinJUZStHCvCUJBSQtXCskkmlNTTJJNKSSVJJ0ySFJ
+ JJJKUnTJ0lLpJJ0kLJipJklMVIJlIJKUhvRShPSUgKmxQKmxJTarRgg1o4SUopk6SSVkkkklKTpk6SVJ
+ k6SSlkkkklKSSSSQsknTJKUkkkkpSdMnSUpJJJJSkkkklKTJ0ySlwkUgkUlInqs9WXqs9JTAI9aAEdiS
+ mw1SUWqSSlJ0ydJSkkkklKSSSSUpMnTJKUkkkiFLpJJIqUkkkmlSkkkk1SkkkkUqSSSSUpJJJPClJJJJ
+ ymMJwE8JQgpkEpTJiUlLOKGSnJUEwqZgojUIIzAgpmoPRQFFwRCXOvCyclq3bmLMyK08KefuaZVcSCtK
+ +pVDWpQpnS8hXq7SqLGwjt0T6tDc9dL11ULlEvR4FpbvrpeuqW9LelwIbvrpeuqW9LelwJbvrpeuqW9L
+ elwKbvrpeuqW9LelwKbvrpeuqW9LelwKbvrpeuqW9LelwKbvrpeuqW9LelwKb3rpeuqW9LelwKbvrpvX
+ VLelvS4FNz10/rqjvTh6XApu+smNyqbktyXAptesl6yqbktyPApui5SFypBymHIcCmybkJ9yEXIL3JcC
+ F7LZVR5lTJlINlHgXxQbJRGVFWmVSjtpS4GYFqCtIthXjUhPrS4EEtcGEdj4Qy1IaJcCwt1lqKL1RBS3
+ pe2tJbpvUDeqheoF6XtrC2zel6yp7ktyXAtbouUhcqQcpByXApu+sm9ZVNybclwKbnrJvWVTcm3Je2pu
+ +sl6yp7kt6XAluesl6yp70t6XAluesl6yp70t6XAlu+sm9ZU96W9L21Nz1kvWVPeluS9tDd9ZI3KnvTb
+ 0vbU2jcom9Vi5R3IiCm2L1IXqkCnDk720N711B16q7lAuQ9teGdlsqsXSncZSaJS4GQMmCUYMT1MVpta
+ bwsgc6ytVXVlbL6lVfSjwpaLGkK3U6E3pQpBsJcCGyy2EUXqkDCluS9taW8L0vXVHen3pe2xluesl6yp
+ 70t6HAxluesl6yp70t6XAsbnrJesqe9LelwIbnrJesqe9LelwLm56yXrKnvS3pcC4Nz1kvWVPelvQ4GQ
+ Nz1k/rqlvS3pcCi3fXTG9U96YuS4GMtk3JC1VZTgo8C1ti5S9ZVAUxclwJbZvUfXVMvTb0eBc3hepC9Z
+ 4epb0fbS6AvT+us8PUg9L20tt9srPvdKMXSgvEo8CWg9slFqYi+nKsVVIGCV2M0Q7mLQZXoh21oUlxLG
+ aqdWhVq2pCDITuBDeoshW23LOYYRg5DgU2zcoG5Vy5DLkuBDZ9dIXqmXJt6HAhvi9P66oh6feh7aG76y
+ f1VSD1IOS4FNv1UvVVaUxclwLS2vWTesqhcm3pe2huesl6yp70tyXtqbnrJesqe5LclwKbnrJesqe5Lc
+ lwJbnrJesqe5Lcl7am56yXrKnuS3I8CW56yXrKpuTbkuBTd9dL11S3pi9L20tw3oZvVbcmlHgU2henNy
+ qAp5S4ErXPlULGElXiJUfSlLgU1aqir9VcBSqpVtlUBDhS07GaKha0ytm2tULakuFTUrJBWlRbCohkIz
+ DCdwKdVt6c3qgHp96XtqbhvUTeqm9NuTTBTb9dL11T3JbkOBDc9dL11T3JbkuBTc9ZL1lT3JbkuBDc9Z
+ L1lT3JbkuBDc9ZL1lT3JbkuBTc9dL11T3JbkuBTc9ZP66pbk+5LgU3RcnFyo70+9LgU3vWSNypb0t6PA
+ ptm5QNyrFyiXJcCW16yQuVTckHI8CW8L1MXrPD1LelwJbxvQ3XKrvTbkeBKV9kqu8ypTKW2UuBTVc2VE
+ VlXRVKkKUuBLTFacsV30lF1aHAppxCIx0KTmJg1HgU2a7IRxaqbVOUOBDa9dIXqmXJt6XtrW+L1L1lQD
+ 1IPQ9tDdNyiblU3pi9D20Nr1kvXVMvTb0uBa3hen9dUN6cPS9tDe9ZL1lT3pbkOBTc9ZL1lT3JbkuBTb
+ 9ZL1lU3JtyXAluesl6yp7ktyXAluesl6yp7ktyPApuesl6yp7ktyXAluesl6yp7ktyXApuesn9ZUtyfe
+ l7a5ui9Mb1T3pi9L21WltuVG18orzKruEo+2q2AJJVitsqDGK7VUmmCkJZoqttS2PS0VeylDgU5GyCrF
+ WiK6pIMhO9tSZlhCMLSqwCkh7aG0LlMXKlKfcl7am76yXrKnuS3pe2hueul66p70t6Htqbnrpeuqe9Le
+ l7aG56yXrKnuS3Je2pueul66p7kt6Xtqbnrpeuqe5Lch7am566XrKnuS3pe2pu+umN6p70t6XtobRuUf
+ WVbcmlH21NoXKYvVLcnDkeBLe9dL1lS3pb0eBLc9ZMblU3Ji5LgS2jcmF6qFyQcjwJb4vULLZCqhycmU
+ fbXILzKqhklW3NlJleqXAlVNatGvRTprVk16JtJce+tUSyCtu+pUX1aoiNoR0aLTpshUWMhWGaJ3Apvi
+ 5I3qnuUS9D20W3Teom5VN6behwIbnrJxcqO9SD0uBDe9ZMbVVD05chwLUrrVD1kFxQyUOBDbF6kL1Q3J
+ w9L21N/10vXVIPT70vbXhueul66p7kt6XtoLc9dL11T3ptyXtsJbvrpeuqW5Lcl7ag3fXTeuqe5Lcj7b
+ IG566XrqnvS3Je2lueul66p7ktyXAhueupC9UN6W9L20h0PXTG9Ud6fej7a8JbbJVC7VWTqhuZKXAyBo
+ FhJR6qyjtpVmqlAwZQjawwh2NWiKtEG2pDhWScsiCi1PhSsrQwITuBrlv1XQji9ZzSihyXApum9R9dVN
+ yYuS4FNz104vVDcnD0DBTf8AXS9dUg5PuTDjQ3PXS9dU9yW5L21Nz10vXVPcluQ9tDc9dL11T3JbkvbU
+ 3PXS9dU9yW5L21zc9dL11T3JbkPbXBueul66p70t6XtpbvrpeuqW5PuS9soLbNygblXLlElH21hbPrKQ
+ uVSU8o+2tLb9dL11TLk29L21reF6RvVEPUtyPtpDYfbKrvfKRKiRKPtssUZ1UNqOGKYqR9tsRamwpemV
+ fFKRpS4GRoBsIjTCM6uEIthHga00rLEdtqphEBS4GFuC5P6yqbktyXAluesm9ZVdyW5DgU2fVS9ZVpTF
+ yXAps+spC9Ui5LehwKb4vUvXVAPT70uBDdN6ib1UL1EvS4FNz10vXVLelvQ4FN310vXVLelvS4FN310v
+ XVPeluS4FNz10vXVPclvS4FNz10vXVLelvS4FN310vXVLelvS4FN310vXVLelvS4EN310/rqjvThyPAl
+ tm5V7LJUZUHao+2vBRPMpMCltlHrrSMF4KzWIVrCtBlSjZSmcK+3EsYUqxBV62lCFcI+2q01LoVttsKm
+ 0QiSl7a22166kMhUS5NvQ9tYXRGQkchZ4epb0vbYy3Dem9dVNybch7a1u+ul66pbkt6XtobvrpeuqW9L
+ el7aQ3fXS9dUt6W9L214bvrpeuqW9Lel7aW766XrqlvS3pe2lu+ul66pb0t6XtrS3fXS9dUt6W5L21jd
+ 9dN66p7025L21Nz10vXVLcluS9tLd9dP66o7k4cne2ub3rp/XVLcn3o+2lvC9OblRD0+9H20s7rJWbbq
+ rbzKA5sp3tpQMbqrlTVCutXa600wpKB7TCo2sK2XVaKrbSgIJc1gIKv0PhCNUKTRCPtrXRZenN6ohyfe
+ h7aG366XrqnuS3JvtobvrJeuqW5Lch7aG76yXrqluS3Je2pueul66p7k25L21N310vXVLelvS9tLd9dL
+ 11S3pt6Ptqb3rpeuqW9PvQ9tTd9dL11S3pb0PbKm766b11T3pb0fbWlueul66p70t6Ptobnrp/XVLelv
+ S9tDc9dL11T3pb0fbU3PXT+uqW9Lej7aQ3fXS9dUt6W9L214bTrlXsfKjKidUvbXhrv1UWsko5YiV1pe
+ 2uWrrRSzRWa6lN1WiZwpcmxsIbTBV66pVHMgo8CGxVbCttvWa3RFDkvbWl0PtCYXqjvSD0PbWF0BemN6
+ pB6cuQ9tjLYN6j66rkqMpe2VNwXqXrqjuT7k721zd9dL11S3pbkvbU3fXS9dUt6W9D20N310vXVLeluS
+ 9tTd9dL11S3JbkPbU3fXS9dUtyW5L21N310vXVLclvS9tTd9dRN6qbk25L20tv11IXqlKcOS9tTeF6Xr
+ qlvUS9H21ze+0JfaFn704ej7aW469V32yh7lA6o+2lYulICVINlHZWj7aUGxQdWr4qUXVJcCXPLVJuis
+ OrUNid7abZMfCsstVUCFIGEDBaS3hcn9ZUg9LehwMbc9ZL1lT3pb0uBDc9ZL1lT3pb0uBTc9ZL1lT3pb
+ 0uBTc9ZL1lT3pb0uBTc9ZL1lT3pb0uBTc9ZP6ypb0+9LgU3PWS9ZU96belwKbvrpeuqW9LelwKbvrpeu
+ qW9LelwKbvrpeuqW9LelwKbvrpeuqW9LelwKbvrpeuqW9LelwKbvrpC9Ut6W9LgU3/XUH3KpvTOclwKY
+ XvlUzqVYfqoBklOEWUMqmq2GaKNVauNr0Rpc5t1apur1WxbWqb6kOFCCoQr1dkKsGQiDRLhQ2vXUTeq5
+ KgShwobovUxeqAKIHIcKG8Lk/rKkHJ9ybwobRuTeuqpcolyXChueun9dUd6W9DhQ3vXS9dUd6W9LhU3v
+ XS9dUd6W9LhQ3vXS9dUd6W9LhU3vXS9dUd6W9HhS3vXS9dUd6W9LhU3vXS9dUd6W9HhU3vXS9dUd6cPS
+ 4FN710/rqjvS3oe2tb/2hMchUDYm3pe2pveunF6ob0t6Xtrw3H3yFQvfKkXoThKXtsgLTe0kotNZRhVK
+ s1Upe2vUxmiHaxX21aIdlaHApyHs1RKTCPZUhhsI+2i2/TbCsi9ZjXQiB6XtrSW6b03rKnvS3Je2sLc9
+ ZL1lT3JbkvbWluesm9ZVNyW5L21rc9ZL1lT3JbkvbS3PWS9ZU9yW5L20tz1kvWVPcluS9tIbnrJesqe5
+ Lcl7a5uesnFypbk+5A40Fu+ul6yp70tyHtobZuUTcq25RLkvbU2/WTi5U9yfcj7aW56yb1lV3Ji5L20t
+ r10vXVMuTb0fbU3RepesqIcn3I+2tLcN6E+5Vy9QLkfbWL2PlVXNlG5U21yl7baxtZtRVhtasspRhShw
+ Npz3MhBdotGypU7GJcDFJgx0K3VbCpgIrUvbYS6Db0/2hUtyYvS9tYW766Y3qlvS3Ie2sLc9dOLlTDlI
+ OQ9tYW6LlP1lSDlLcl7aG0blE3KsXKJcniDIG16yXrKpuS3I8C5t+sl6yqbktyXAxlt+sl6yqbktyXAt
+ bfrJesqm5LclwLg2/WS9ZVNyW5LgXNv1kvWVTcluS4Fzb9ZI3KpuS3JcCmybk3rKruSlHgYy2xcpi9Ud
+ yluS4EN03oNl0quXqDnJcC8LWPlC5UiJUmsS4GQLBspOrVllaL6SHAyBy3VKAYQtN1KEaUeBLXZorLHw
+ obISiEuBaW025TF6pSn3JcDGW766XrqluS3IcDGW766XrqluS3JcCG766XrqluS3JcCm766XrqluS3Ic
+ Cm766XrqluS3JcCm766XrqluS3JcCm766XrqluS3JcCm766XrqluT7kuBTc9dMb1U3Ji5LgU2/WUhcqQ
+ cphyXApueqmNqrbkxcjwKbPrJxeqZcm3pcCm+L1L7Qs7en9RL21Oh66Y3SqIeph0o8Cmdr5VG3VWnaoT
+ mSjwKazW6qzWxOytW66k0xZYNV9eio21rbfVoqd1KHC2A5TWQVeoMIZqgorBCPCtLoVWwjesqLTClvS4
+ WMtk3IZuQC5QLkOBiLaFyIL1Q3KQelwLG/66ib1T3pb0uBTaNyb1VV3JSlwIbXrJesqsptyXAkNv1kvX
+ VTcluS4F4bfrpeuqm5LchwLm566XrKnuS3JcCW366XrqpuS3JcCG366XrqpuS3JcCG366XrKpuS3JcCG
+ 36ycXqnuS3JcCG8L1L11n70/qI+2pum9Q9dVC9NuR9tcG566BbdIQdyi4yl7bIGreS5VRWSVeLJUmUJe
+ 2uYUVlXNmiJVTCOa9E3gS5drFWAIK1balUdVql7amdDiFoV3QFnsbCM0wj7bGW8b1E3qoXqJch7bGW56
+ 6XrqnuS3Je2UNz1kvXVPcluS9sqbnrJesqe5Lch7a4Nz1kvWVPcluS9tc3PWT+sqW9Lcl7am76yb1lT3
+ JbkvbU3PWT+sqW5PuS9tYW36yXrqnuTFyXtobfrpeuqe5PuTuFTc9ZL1lUDk+5GlNr1UvVVaU0pUltes
+ nF6p7k29KlN8XqX2hZ3qJeolwpdA5CE+6VT9RLfKFJZWvlUbBKtnVQLJTSFNeuvVa+GyIVWqrVamMyE0
+ pdTGEBXQqtIhWQoypYqKkVFBSkkk6ClJJJIIUkkmSQpJJJJCkkkkVKSSSSUpJJJBKkkkklKSSSSUpJJJ
+ JSkkkklLpJJJKUkkkgpSSSSSlkkkklKSSTpKUouU1BySmtYq5VixVykpmxWq1VYrVaSkwSKQTpKWSSSS
+ UsknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUpJJJJSySSSSlJ0ydJSiq9isFAsSU1Hpmq
+ T1FqSmxWjhArVgJKUVFSKiUlMUxUioFJSxKjKcqKCF5SlMkkpeUpTJJKXlKUySSWUppTJIqXlKUySSmU
+ pSopJIZSlKikiplKUqCUpKZylKhKUpKZSlKjKSKmUp5UEkkM5SlQlKUlM5SlQlKUkM5SlQlKUlM5TSop
+ IJZSlKinQSvKUqKSKmUpSopJKZSlKZJJS8pSop0lLylKikkllKUqKSSmUpSopJKZSnlRSSUvKUpkySWU
+ pwVBSCSkoKmENqKElMgnSCdJSyZSTJKWTpJJKUkkmQQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSSUwcguRnITklI
+ ykkUklKTJ0ySlBSCZOElLqJUlEpKUkmThOCCvCUJwnT1rGE8J0xKCQpMUxKYuQZQolRLlEuQ3PQZ4hLv
+ S3qsbEwtQXkNwOUwqjbEdj0mvNsNCnCG1yJuRYWJCGQiEqBKKmMKJClKi4pKCNyjKZ7kIvSbEGw0ogKq
+ tejNekyFMmUN6fcgxlmmJUd6g6xBFMi5RDkB1qYWoIptgqarMsRQ9BDMqMpi5NKK0swnCiFIJKXSSTpI
+ WTJ0ySlJ0ydJS6dMkkhdMUkklLKQUVIJKXKE9FQnpKQlSYolTYkps1o4QK0cJKXTJ0ySlkk6SSlJJJ0k
+ rJJ0klLJJJJKWSTpkkKSSSSUsknSSUsnSSSUpJOkkpZJOmSUpMnSSUoJ0kikpE9VXq1Yqz0lIwjsQQjM
+ SU2GqSi1TSUsnSSSUpJOmSUpJJOkpZJOmSUsknSTgpSSSSKlJJJJpUpJJJNUpJJJJSkkkkQpSSSSeEqS
+ SSRUuE6YJ5SUsVAqZTEIFSIhNCJCW1MKlmhFaoAKQQUklRLlAuQ3PTgpVjln3lWLHqhe9PCmleqjka56
+ rTKeEs2hEUGCUcMU0VISoEqwa0M1KcUsKKUpRfTS9JO0WopSlF9NL00NEopSlF9NL00tFIpSlF9NL00t
+ FIpSlF9NL00tFIpSlF9NL00tFIpSlF9NN6aWikcpSp+ml6aWikcpSiemm9NLRTCU4Kn6acVpaKYylKn6
+ aXppaKRynBU/TSFaWilgphOK1MVpaKRFAerhrQH1paIapRGFJzIUQYR0XRbtZCstIWayyFYbalozBtkh
+ BeVH1ENzkqCCxcoSkTKcNR0WlUqJKJsTGspaLCiJUZRfTKXpFLRaUacIgqKkKktEIgnlF9IpvTS0QjlK
+ UT0ym9MpaKYSmlE9MpemUtFI5Typ+mU/plLRKNKUT0yl6ZS0SjSlE9MpemUtEo5SlE9MpemUtFI5SlE9
+ MpemUtEI5SlE9MpemUtFI0yL6af00dFIgE6KKlL0kdENcqJVk1KDqkNF4aymxSLIUQIR0ZA26laaVRY6
+ FYD0wgMgTOIVd8J3WoDrEQApRCiQm3SpASjopiVFG2Sl6SWi0oUkU1JvTKGjGUUpSieml6ZS0WFHKeVP
+ 0yl6ZS0WMJSlT9MpemUNFME0onplL0ylolHKUonplL0ylouDCUpU/TKXppaLwwlNKJ6aXplLRJRynRPT
+ TiopaMZRJwi+ml6aOiEcqJKIWKJYUtEoSU0onplOKijolgE6KKipekUtEoJUgUT0ikKyjolYFRJU9kIb
+ hCWiVwrFRCpboRq7ECAl0mkKFhQW2KNlibwhKK0quSnssQt0p4pCZrkQOQWCUdrClohUqJRRWka0NFNY
+ pkc1JvSKGiEUpSi+kU3ppaIYAqYKQrKkGFDRC8piVMMS2I6IQkppRTWUvTS0QjSRPTS9NLRSNJE9NL00
+ tFI0kT00vTS0UjSRPTS9NLRSNJE9NL00tEo0pRPTKXplHRKKUyN6RS9IpaKRBSARBUpipLRSCEkf01A1
+ paJRqbYQ3CFD1IS0S36yFYBCzGXKy22U0gKbDyqdqI6xV3vSACUZCQCQ1RGslP0UxSRvSTGpLRSJNKL6
+ aXplDRCKUpRfTKXpoaIRSlKL6aXppaKRSlKL6aXpoaKRSlKL6aXppaIRSlKL6aXppaKRJSi+ml6aWikU
+ pSi+ml6aWiEUpSiekUvSS0UwlKVP00vTKOiWEpkX00vTS0UiSRfTS9Io6JQpSjekmNRS0SilPKn6RTem
+ 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
+ S9MpaKRylKJ6ZS9NDReEcp5U/TS9NLRKOUpRPTS9NLRKOUpRPTS9NLRCOU8qfppemUtFiOUkT00/pIGl
+ Ikkb0kvSURUiTgqfppbElMZSlS2J9iSUZKgSjGtMa0lICVGUY1FN6RSSiBUgVP0il6cIJUCpAqBEKBdC
+ YVN2ohaWOVi1WarVxnymFLs1I4VagyFaCiKmJTKRUUlKSSToIUkkkgpSZOmQQpJJJJSkkkkUKSSSSUpJ
+ JJBKkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkgpSSSSSlJk6SSlJJJJKXUXKSi5JTWsVcqxYq5SUyYrda
+ qsVqtJSUJ0gkkpZJJJJSkkkySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTJJJKUkkmSUunC
+ ZOElKKBYjlAsSU1XqLVJ6ZqSmxWjhAYjhJSiolSKiUlLFRKkVEpKYFRUimQUsknTJKUkkkkhSSSSSlJJ
+ JJKWTpk6KVJJJ0lKTJ0ySlkk6SKlkk6SSlkk6SK1ZJOkkhZJOkkpZJOkipZJOkkpZOkkgUhSSdJBcskn
+ SSQtCUJ0klLQlCdJJS0JJ0kkrJJ0ySlJk6SSlkk6SKlJJJJKUmTpklKUgoqQSUkaihCaihJLMJ0wTpKU
+ mSTJKXTqKeUkqTJ0yatUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkp//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSTpklKSSSSUwchORXITklMCmTlJJSyZSTJKUnCYKQSUpRK
+ kmKSmJTSkU0pWpmCpShgp5S4lALlyGXpnuVdz0OJkjFMXpi9Vi9LehxM8YJXPQXvSJQnlDiZ441nWKAs
+ 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
+ vQS9xYXI+zKQxlq+gpCgJe4pyfsyY4y1/RCY0hN40uOcdR+zrXNKj6CPEpyvs6cY61RQnFCXGlyvsyX2
+ Za3oJ/QCHGpx/sqX2VbHoBS9AJcaXEOKoOxoW6ccIL6EhJTz9tMKlY2FvZFULHyGwnWprsOq1cRyyGnV
+ aeI7hMKXocc6K2FSxjorwUZUxKipOUUELpk6SClJJJIKUmTpJIWSSSSUpJJJFCkkkklKSSSQSpJJJJSk
+ kkklKSSSSUpJJJJS6SSSSlJJJIKUkkkkpSSZJJS6SZOkpdRcpKDklNexVyj2KuUlJGK1WqjFbrSUmCRS
+ CRSUskkkkpSZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSSUpOEycJKUUCxHK
+ BYkpqvUWp3pmpKbDEcIDEcJKUVEpyolJSiolOSolJSyZOUySVJJkkkKSTJJIVKUpJklLpJk6ClJJJJLg
+ F0kkkl1KTpkkrTwrpkk6Vq4VkkkkbQQpOmSStbS6SZJK1UumSSStFKSSSStNKSShJG08K6SZOha7hUkk
+ kgrhUklCeErVwqTJ4ShG1cKySSSVopSSSSSKUkmSSVSkkkySKXSTJ0VLpkkklLFJJMkheVIFQUgkpK1E
+ CE1FCSmYTpgnSUpRTpklKlJMnSUukmToKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkp//9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJkklLpJkklLpJkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS6ZOmSUwchORXITklMCkkUklKT
+ J0ySlBSCiFIJKUmKdMUlMCmU4ShNKmICRU4UXBNXBrWFVXuVm1U3oM0VtymChgIrGoNiK8KDgjbVFwQb
+ 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
+ ul66VJbWiWiq+ul66VJbWiWiq+ul66VILa0S0VX10/rpUsLZ0S0VX10vXSpTakJiQqhvTeulSW0YSACq
+ +upC9FLaACeAqwvS9dBTZ0TaKsb1E3pUltghTBCoeupjISIU3DCDYAg/aEN96QCmtlDRYOWtnIslYuTq
+ pbU0QdVp4Z1CzgzVamGzhNKnfxOFfCo4ogK8OEwpYuUVJyimoXSTJSgpdJMnSUpJJMkhSSSSSlJJJIqU
+ kkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpJJJBSkydMkpSSSZJS6SZOElMlBykouSU1rFXKsWK
+ uUlM2K1WqrFaYkpMEkgkkpSZOkkpSZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpJKW
+ SSSSUpOmThJSiq9isFV7ElNV6i1SeotSU2GI4QGIwSUoqJUioFJSxTJyopKUkkkilZJOmhJRWSSSQWKT
+ JJJKUkkkgkKTpQkkyBdOoylKS8BdMlKYlJNLynlDLlHegqk0ppQt6kHSkghnKZJJK1tKSTJ0rRSpSlJR
+ JStVM5Tygl8KBuhK0gNqU0qr66kLZSXU2JSlBFifela6k0pIW9L1ElUmlPKrm1N6ySqbMppVf1k4tlJF
+ J5TIYen3IopmmUZTykhdMkkitUmTpkkLpJJJKXTJJJIWTJ0yKFKYUFMJKSNRQhNRWoKZhOmCdJSlEqSZ
+ JSySdJJSydJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklP/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJMkpi5CciuQXJKYFJIpJKUmTpklLhSCinCSl0ydMkpQCk
+ AmCkCmlIVCG9EJQLHKO14a1pVN5R7nqk9+qFs0QmYrDAqbHq0x6TPEJigvKmXID3IWzxDBxTAobnKIeh
+ bLTdrVpgVGt6sssQa2QJy0ITmhM65BdcjbXIZHRMHIe+U41StYQmD0i6VEBS2o2oBC/VV3hXC1BexK23
+ BqzCmx6TmpmhK2Wm0x6NuVdgRoQtaxe9V3OlFeEAhC0UtEojWqAUwYTSVUnZoihyqeopCxIFZINqVIID
+ HSjtVqLTmkaEVqg0IgT2JmFJRCdBSiolSKikpiUykmSQpJJOkpZJOmSUpSCipBJDNCeiob0lICpMUSpM
+ SU2q0cIFaOElKSTlMkpZJJJJS6SSSSlJJJJKUkkkkpdJJJJSySSSSlJJJJKUkknSUpJJJJSkydMkpSSS
+ SSlwkUgkkpE9VXqy9VnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZJJJSkkkkVKSSSSUpJJJNK
+ lJJJJqlJJJJKUkkkipSSSScFKSSSTlLpiUkxQUsSoynKYBBTIKUKICIAmFLGEgE5UZQUkBTEqG5KUQpH
+ aJWdkVytRwlV7K5UgKnn7qFXFMFbllEqs7HUoKmtV7VdZaQhCmEQVlFSX1il6pUBWU/plKkL+qUvVKXp
+ lN6ZSUv6pS9UpvTKXplJS/qlL1Sm9MpemUlL+qUvVKb0yl6ZSpS/qlL1Sm9MpemUqUv6pTeqUvTKXplK
+ lK9Up/VKj6ZS9MpUpn6xS9YqHplL0ylSmfrFN6xUfTKXplKlMvWKXrFR9MpvTKVKZesUvVKj6ZS9MpUp
+ f1Sm9UpekU3pFKlL+sUvWKb0yl6RSpS/qlRNpS9Ip/SKVKRPcSq72SrvopeglSQ5holIY61RjKQxkl7m
+ ChTFULS+zpGhJBaAZCK0wrBoUTSkhTbSFMWlQ9IpxUUlpZeqVE2FS9IpGopIRmwpvVKkaiomopIV6pUh
+ aVEVFSFRSUuLCn9QpekUvTKSV/VKXqlR9MpemUkr+qUvVKb0yl6ZSSy9UpvVKb0yl6ZSUv6pS9UpvTKX
+ plJS/qlL1Sm9MpemUkL+qUvVKb0yl6ZSUv6pS9UpvSKXplJC/qlL1So+mUvTKVLSz9VIWlRFZUhWUkMh
+ cVF1xS9MqJqKFLggteSqj2yrxqKj6CVLmkKlP0VdbQjNoRXhyH48oRxlunHUDjIJchlUK1XIVo4yXoJI
+ YtsKILCmFJUhUUlK9UpeqU/pFN6RSWlXqlL1Sl6ZS9IpLVeqUvVKXpFL0ikhXqlL1Sl6RS9IpIV6qXql
+ L0yl6RSUr1Sl6pS9IpemUkq9UpeqUvSKXpFJcr1Sl6pS9IpekUlLeqUvVKf0il6RSWreqU/qlL0im9Ip
+ KZesU/rFQ9IpemUaSz9YqJtKb0yl6ZSpSxsKj6hUvSKXpFJKwsKmLSo+kUvTKSWRtVew7kX0yn9KUaU5
+ 7qZTsohaAoUxQklpirRCtolagpTGiUlOC/FTsp2radjIRxkFNep5arIvKh6BCcUlJDP1SU+8phUVP0ik
+ pjvKY2FT9IqJqKSGBtKXrFOaio+kUkMhcU4uKj6RTiooKZ+qU/qlRFRT+kUVL+oUvVKb0yl6ZSQv6hS9
+ UpvTKXplJS/qlL1Sm9MpemUlL+qU3qlL0yl6ZSUr1Sl6pS9MpvTKSl/VKXqlN6ZS9MpKX9UpeqU3plL0
+ ikpkLSpCxQFZUgwpUpf1ExtSLFAsKFKZ+sUjaShbCpCspUlHYdypvplaQqlP9nlJTkjGRG0QtQYyf7Ok
+ lyXUoRpWycdDOMklzWMhWq3EI32dL0SklkLipesVD0in9IoUpl6pT+qVH0il6ZRWll6pS9UqPplL0ykh
+ l6pS9UqPplL0ykpl6pS9UqPplL0ykpl6pS9VR9MpemUlMvVS9VR9MpemUlMvVKXqlR9MpemUKUy9UpvV
+ Kb0yl6ZSpCvVKb1Sn9IpvSKVJV6pT+qU3pFP6RSUv6pS9YpvTKXplJSvVKXqlL0yl6ZRUt6hS9UpekUv
+ SKSV/WKY2lL0im9IoqYOeSgPEq16RS9BJTmPplDOOtj7Ol9mSS5AohTFcLTOMonHSS0A2ERhhWTQm9FJ
+ SmWEIwtKEKipCspUpJ6pTG0pvTKRrKVIUbSm9YpjWUvSKVIZC4qXqlQFRUhUUkL+qUxtKl6RUTUUlLeq
+ UvVKY1FN6RSpDMWlP6pURWU/plJS/qlL1Sm9MpemUlL+qUvVKb0yn9MpUpf1Sl6hTemUvTKSV/UKXqlL
+ 0yl6ZQUr1Sl6pS9MpemUkq9Up/VKb0ym9MpUpf1Sn9UqPplL0ygUshal6xUNhS2FNSs+yVUs1Vs1lR9G
+ UlND05U21K62hGbQipzjRKrvxlufZ1F2MlanBGPBR62bVouxlH7PCSkbHkIwtKYUlSFJSQr1Cl6pUvSK
+ iaikpb1SnFpUfSKf0ykpl6pS9UpvTKXplJS/qlL1E3plP6ZSQv6pS9VN6ZS9MpKX9VL1E3plP6ZSUr1E
+ /qFN6ZS9MpKX9QpeoU3plL0ykpXqFL1Cl6ZS9MpKV6hS9QpemU/plFCvUKf1Sm9MpvTKchl6pTeqU3pl
+ N6ZSSv6pS9QpemUvSKSmJeUhYQpekmNRSSuLioPtJSNZTekUqU1LW7lWOPJWqKJUhjpJcxlEI2xX/s6X
+ oJKcmymUIY+q2TjpjjJKaFTNqussIT/Z4T+kUlMvWKibSl6RS9IpKY+oUvUKl6RTekUkLi0qQuKH6ZT+
+ mUqQk9YpvVKh6ZT+mUlLm0pjaU/plN6RSQt6pSFpS9IpekUlMhaU4tURWU/plFeGXqpvVKb0yl6ZSUV/
+ VKXqlN6ZS9MoMRZeqUvVKj6ZS9MpKDL1Sl6pUfTKXplJlDL1Sl6pUfTKXplJRZeqUvVKj6ZT+mUlq/ql
+ MbSm9MpjWUkK9Up/WKj6ZS9MpUlTrJVS1u5XPSKXoSgvDkuolO2iFq/Zk4xkmQOcKlF1S1Ps6icdJbJy
+ hUrFYhWzjpehCTCVmWEKRuKb0imNRSpQUbSkLSm9IpemUqXBn6pTG4pvTKb0ilS5XqlL1Sl6RSFRSUyF
+ pT+qUwqKf0ikgr+qUvVKXpFP6RSWLeqU3qlP6RS9IpKW9UpvVKf0im9IpKW9Up/VKb0in9IoLgr1Sl6p
+ S9IpekUly4tKkLSo+kU/pFJTL1il6pTemUvSKSFeqU3qlL0il6RRWlXqlN6pT+kUvSKSxXrFI3FN6RS9
+ IpJYusJQX6qx6RS9BJcGg5koRplanoJ/s6TLFyPQTiha32ZN9nRXuYKoRWthXvs6XoJLCgYSEZthCf0U
+ vSKK1mLin9YqHpFP6ZQUv6pTeoUvSKf0ikpXqlP6pTekU3plJDL1im9YpvTKb0yhSl/VKb1Sm9MpemUq
+ Uv6xS9YqPplL0ylSmXqlL1Sm9Ip/SKVKV6pS9UpekUvSKVKV6pS9UpekUvSKVKpXqlL1Sl6RS9IpUql/
+ VKXqlN6RS9IpUpXqlP6pTekUvSKNKX9UpvVKXpFL0ilSleqVIXFR9IpemUqUzNpQnulT9MpxUhSGk+uV
+ AUrRFCkKEVBzxUhvplavoKBoSZA4jsdOymFrHGUfs6SmtUNqstsIT+hCf0ikpXqlSFpUfSKcVFJaWfql
+ MbSl6ZTGsoLFjaU3rFI1lN6RSQy9Up/VKiKin9IpKX9UpvVKXpFL0ikkK9Up/VKb0il6RSZAv6pS9Upv
+ SKXpFBS/qlN6pS9IpekUkr+qUvVKb0il6RSQVeqUvVKXpFL0ikxlf1Sn9UqPpFOKikhf1Sl6pS9IqJrK
+ apf1Sn9UqPplOKyipf1Cl6pS9Ip/SKK4LeqUxuKRqKiaiiuRWO3Ko+jctAUqYoRS5IxUdlELTGOn9BK0
+ ua6tV30ytg0IZx0rU5TaoVur2qx9nT+ighQtISNpS9IpvSKCFeqU3qlL0il6RQWq9Up/VKb0il6RSUv6
+ pT+qVH0in9IpKX9UpeqUvSKXpFJS/qlL1Sm9IpekUVK9UpeqUvSKXpFJKvVKf1So+mUvTKKl/VKXqlN6
+ ZS9MpKX9UpeqU3plL0ikpf1Sl6pTekUvSKSF/VKXqlN6RS9IpKX9Up/VKb0il6ZSUv6pT+qU3pFL0ykl
+ f1Sl6pS9MpvTKSlG0oD3bkY1FL0Ulznvq3If2Zawx1IYySnLZRCJ6S0fs6XoJKcs0p21QtL0FE0JKazD
+ tRxaQkaU3pFJDI3FR9UpemUvSKSFeqU/qlN6RS9MpIZesUvWKj6ZS9MpKX9UpeqUvSKXpFJSvVKXqlL0
+ il6RSUr1Sl6pS9IpekUFK9UpeqUvSKXpFJSvVKXqlL0il6RSUr1Sl6pS9IpekUlK9UpeqUvSKXpFJSvV
+ KcWlN6RT+kUlMhaU/qlRFZT+mUkr+qUvVTemUvTKKleqUjaUxrKY1lJKzrSgvcSimopekUVNRzZQzVK0
+ PQT+gkpzDSm9Bav2dP8AZ0kuSKERtcLR+zpjQlamo3RHa8hT9FL0ikgri0p/VKj6ZS9MpUtpl6pS9UqP
+ plP6ZSpS/qlL1Sm9MpemUqUv6pS9UpvTKb0ylSmXqlL1So+mUvTKVKZeqUvVKj6ZS9MpUpl6pS9UpvTK
+ XplKlKNpTG0pGspvSKVKV6pS9UpvSKXpFKlL+qUvVKb0il6RSpS/qlL1Sm9IpekUqUv6pS9UpvSKXpFK
+ lL+qUvVKb0il6RSpS/qlL1im9IpekUqUy9YqLrSU3pFP6RSpTXf7kA0ytEUqQoSXBzRTCn6Sv+gn9BFc
+ 5L8fch/ZNVtjHT/ZkkOXVRtV6t21G9CFH0kEL+qUxtKXplN6ZSpC3qlL1Sl6RS9IpIW9UpesUvSKj6RQ
+ Qv6xTesUvSKb0ilSl/WKXrFN6RS9IooX9UpeqU3pFL0ikpf1Sl6pTekUvSKSl/VKf1Sm9Ip/SKSV/VKX
+ qlN6RT+kUlK9UpvVKXplL0iklb1SmNpTmoqJqKKlesU4uKj6RT+kUFMvWKRtKb0in9IoIW9UpxaUvSKb
+ 0ikpkLin9cqHpFL0ylSVOtJVawblZ9IpxQklzHUSkKIWr9nS+zpJc4VKLqZWn6CcY6SnI+zKxVVtWh9n
+ T+hCSkVby1F9YpjVCiaylSmRuKb1Sm9MpemUqQy9UpeqU3plP6ZSUr1Sl6pTemUvTKSFeqUvVKb0yl6Z
+ SUv6pT+qVH0in9IpKX9UpeoUvSKXpFJKvVKb1Sn9IpvSKSleqUvVKb0il6RQQV/VKf1So+kUvSKCxl6x
+ TeqU3pFL0ikkK9UpeqUvSKXpFJcFeqUvVKXpFN6RRSv6pT+qVH0yl6ZSSy9YpjaU3plL0iisko2lDc8l
+ E9IpekkxNV7ZQXUytEUqXoJNjG5XoJxTC1PQTegi2Lc30lIVwr/oJeggxSLVYIR22EKXopekUmJmLil6
+ xUPSKf0yhSGXqlL1Cm9Ip/SKKleqU/qlN6ZS9MoKX9UpvVKXplN6ZSUv6pS9QpvTKXplOpcv6hS9VN6a
+ b0ylSl/VKXqlN6ZS9MpUxlf1Sm9UpvTKXplKkL+qUvVKb0yl6ZSpIX9UpeqU3plL0ylS8L+qU/qlR9Mp
+ emUaXMvVS9UqPplL0ylSiy9UpjaU3plL0ikxlb1SnFpS9IpekUkMvWKi60lL0il6RSpIQP1QSyVe9FP6
+ CS8Od6SiaZWn6Cf7OkyByDjqTaIWr9nS+zpKLRYyFYa6EX0E3pJMZULSl6pS9IpekUkK9UpeqU3pFL0i
+ kpf1Sl6pTekUvSKSqV6xS9YpvSKXpFJS/rFL1im9IpekUFMvVKXqlN6RS9IpIX9Up/VKj6RT+mUqUv6p
+ T+qVH0yn9MpUpf1SmNpS9MpvTKVKV6pS9UpekU3plJTL1il6xUfTKXplJS/qlN6pS9IpekUlK9UpvVKX
+ pFL0iipb1Cm9QqXpFL0iipYWlS9YqPpFL0ikli+wlVXt3K56RTihJDmilFbUr4x1MUILg5zqZVd+LK2/
+ QTHHQpkcNuLBVqpuxaBx1A0wlSFmWkInrlC9IpemUqWpDeVE2lN6RS9IpUhf1Sl6pS9IpvSKVIZeqUvV
+ Kj6ZS9MpUhkLSnFpUfTKXplGlM/VKXqlR9Mp/TKFKX9UpeqU3plL0ylSV/VKXqlN6ZS9Mo0pf1UvVTem
+ UvTKVKX9Upeqm9MpemUqUv6qXqlN6ZS9MpUpf1Sl6hTemUvTKVIX9UpeqU3plL0ylSmXqlP6pUfTKf0y
+ mlCjaU3qlL0im9IpqlG0oNj5RfSKY1Isoc+1m5V/s8la3oSnGMkuc5lEI3orQbjqXoJWlyXUqLaoK1XY
+ 6h9nSUgqEK4x5CZtCn6RSYysbioG4qTqihmooLCv6pT+qVH0yn9MorV/VS9UpvTKXplJQX9UpeqU3plL
+ 0ykuC/qlL1Sm9MpemUly/qFL1Sm9MpemUlL+qUvVKb0yl6ZSUV/VKf1So+mUvTKSwr+qUxtKXplL0ykh
+ Y2lN6hT+kUvSKCVvVKf1Sl6RS9IpJX9YpesU3pFN6ZSUv6pTeqUvSKXpFFK3qlP6pS9IpekUlK9YpjaU
+ /pFL0iklBYZVR9e5aXopvs6VocxmPqtHGphGZjq1VVCbaU9DYCtBBYIRQhamJUVMhNCbamKSltShBCyS
+ eEoSUpMnTIqWSSSRUpJJJFSk6ZOgpSSdJJSySdJJSydJJJSkkkklKSSSSUpJJJJSkkkkFLJJJJKWSSSS
+ UpOmTpKXUXKSi5JTWsVcqxYq5SUzYrVaqsVqtJSYJJBOkpZMnSSUskkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSl0kk6SlkydJJSk4TJ0lLFV7FYKBYkpqPUWqT1EJKbDEYILEYJKUVAqZUSkpgUxU
+ ioFJSpThQlOCnLmaRTAp5SQWJUSpFNCSxikpQnhBTEKQCUJ01cFKBKdxQLHwkyBkXpb1Udaoi1BmAb29
+ MXqqLUxsQX0mc9CdagvsVd9qFppui1GZZKyRarFdyFrSHUDk+5U22pzahaym1uUgVTFqMyxK1U2EN5Th
+ yi9K1U1rHwqj7oVm4KhaErXiK4vRmXSqGqNWULZOF0W2Ke9Vq0cBG0cLLemNiRahP0TlUp9sILr1Cwqq
+ 5ySKbovRmWys1pVqpJbTfa9FDlWYjBFBCYFSBQgphJYQzCdRCkEUEKTpJ0VhWTJ0yS1SZJJJCk8JJ0kM
+ U4SSCSErUZqC1GakpmkkmSUpOmToKUmTpJWpZJJJFKkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpJKWSTpklMHILkZyE5JSMp
+ JFJJSkydJJSgpBRCkElKTKSiUlKSlJMmkJUSgWFGKC8JtLgWjcqT1o2MlVnVIUyxkgYrLEzalYZUhTPG
+ TAoT1b9NDfWm02IyaD0OVaexC2JUyGa7CjhxUGMRxUlTVnJA95Qi4q26lDNCXCwGSNhlWqwoMqhWGNhG
+ ltsg1ShOEiUqUCwIQXhFcVXsclTahJE5RCg96GLEqZeJvMKOFSrsVpjpSpYZKe1BcxWeVAtTaRxNYtUC
+ rRYhuYhwq4mqSVJpUzWnaxIRWykmqVtgVetqtMCsRakykAUwohSCcxswnUQnSUopinUUlKTJ0kkKSSTp
+ KWTFSTFJCykFFSCSmaE9EQ3pKQlTYoFTYkptVowQa0cJKUmTpJKWSSSSUpJJOkpSZOmSUpJJJJSk6ZOk
+ pZJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUumKSRSUisVZ6svVZ6SmAR2IAR2JKbDVNQapJKXSTJ0lK
+ SSSSUpJMkkpSZOmSUpOmSSUukkkipSSSSYVKSSSTVKSSSRUpJJJJSkkkk8KUkkmRUpJJMgpUJw1OFMBJ
+ SwCdShMUwpRkoZKm5DIQUqVMIYU2ohSQBMWSpNUwE8KarqkI0K+WqJYpAVND0E4oV3YltR4lNQUJ/RVq
+ EoStTV9FL0VahKEuJTU9FL0VahKErU1fRS9FWoShK1NX0UvRVqEoS4kNX0UvRVqEoS4ktX0UvRVqEoS4
+ lNT0U/oq1CUJcSmr6CXoK3CUJcSmp6CXoK3CUJcSmp6CXoK3CUJWpqegl6CtwlCXEpp+gl6CuQmhLiU1
+ PQS9BW4ShK0NT0EvQVuEoS4lNT0FIUq1tShLiSGuKVIVI8J4Q4l6D0kxqViExCVoaxqUTSrRCaEuJDW9
+ BOKFZhOAlxIa/oJjSrSYhC1rUNKiaFbIUYTuJTWFCkKEeFIIcSmv6KY0q1CRCXElqeil6KswlCPElrei
+ l6KswnhLiU1fRS9FWoShLiS1fRS9FWoShLiU1fRS9BWoTwlxIavoJegrUJQhxIavoJegrcJiEuJTTNKj
+ 6KuEKMI8SwtYUogpRgEQBDiQ1/QUTQrkJiELXBomhN6CulqiWp3EuaoqRBWiwnQ4lwR+mkakVOlaUBpC
+ b0VYTIcSmv6Kf0UdJK1IPRTeirKUI2tLW9FL0VahKErWtX0UvRVqEoS4kNX0UvRVmE8JcSmr6KXoq1CU
+ JWpq+il6KtQmhK0tb0UvRVmEoStLW9FL0VZhPCXEpq+in9BWYSS4kNX0EvQVpKEOJDV9BN6CtwmhHiS1
+ fQTegrcJQlxKanopeirUJQjxJavopvRVuEoS4ktT0EvRVvam2pcSmuKk/po+1NCXEpFsThiJCcIcSkfp
+ JjRKsAKQCXEppnHS+zq7CYhDiU0/QS9FWiFEo8Smv6SXoo6dLiQ1vQS9BWk8JcSGp6CXoK3CZDiU1vRS
+ 9FWEkeJTX9FL0VZhKEuJTW9FL0VZhKEuJTW9FL0VZhKEuJDW9FL0VZhJLiU1fRS9FWoShLiU1fRS9FWo
+ ShLiU1fRS9FWoShLiU1fRS9JWYShLiU1DUmNKt7UtqPEpqeipClWdqcBDiSgFKkKkYBSAQ4lIRUpekip
+ IcSUBqUTUrKZLiS1TSm9BWoSR4ktb0EvQVlJLiU1vQTeirSUJcSC1fRS9FWYShHiWtb0UvRVmE8JcSmr
+ 6KXoq1CUJcSmr6KXoq1CUJcSmr6KXoq1CUIcSmr6KXoq1CUJcSmr6KXoq1CUJcSmr6CXoK1CUJcSmr6C
+ XoK1CUJcSmr6CXoK1CSVqavoJegrUJQlxKavoJegrUJQjxJavoJvQVuEoS4lNX0EvRVqEoS4lNb0k/pK
+ xCUJcSmv6SiaVahMQlxLmmaVA0K4QltR4lNP0FIUK0GqW1LiU1PQS9BXNqbalxIafoJegrcJQlxIawoU
+ hQrATocSmv6KY0q0olK0NU0JvQVopoR4lNb0E/oqyAnhLiU1fRS9FWoShLiU1vRS9FWoShDiU1fRS9FW
+ YShLiU1vRS9FWYShLiU1vRS9FWYShLiS1vRS9FWYTQlxKa3opeirMJ4SJS1fRTeirm1Lam2lp+im9FXC
+ 1R2pWpripFbUiAKQStTH00xrCLKYlK1Nc1BRNIVkqKVqQChSFCMFMJWprmhQNKuFQKVqanopeirCcBG0
+ Nb0EvRVuEoStTU9FP6KtQlCVqavopeirUJQlamr6KXoq1CUJWpq+in9FWYShK0Nb0UvRVmEoStLW9FL0
+ VahKErQ1fRT+irMJQlaGt6Kb0VahNCPEpq+il6KswlCXEpr+in9FWIShLiS1vRSNKtQmhLiU1PQS9BW4
+ ShHiU1RSpCpHhPCXElB6SXpKxCUIcSkHpJekrEJkrU1zSm9BWUkrU1fQS9FWoTQlxKavopjSrUJQjxIa
+ nopeirUJoS4kNb0U/oqwnS4lNf0U/oI4UkOJTW9BL0FZShLiU1fRTeirRCaEeJcGt6SXoqzCUJcSi1vR
+ S9FWYShLiYy1vRS9FWYShK1Breil6KswlCXEyhreil6KswlCXEotb0U/oqxCUJcSxreil6KswlCXEhq+
+ in9FWISS4koBSnFSOkhxLghFSf0kZJLiZAi9IJjUjpIWtLXNKb0VZhNCPEwlregomhW4TQlxJDU9BN6C
+ uQltS4l4anoJegrcJwEuJLU9BP6CtwnhG0tT0E/oK1CUIWtLV9BP6CspJWsavoJegrUJoStTV9BN6Ctw
+ lCVqanoJegrUJ4StIavoJegrUJQla9q+gn9BWUkrU1vRS9BWUkrU1vQS9BWUkrWFregl6CspJWta3oJv
+ QVpJK1Nb0EvRVlJK1wa/opekrEJQlbIGv6SXpKxCUJWvtr+il6KswnhK1panoJegrcJoS4lrV9BL0VZh
+ JLiU1vRS9FWEkuJTX9FL0VYSS4lNf0U3oqyklxKa3opvRVqE0JcSmr6KXoqzCSXEpr+in9FWITwlxKa3
+ opeirMJQlxKa3opeirMJQlxKa3opeirMJQlxKa3opeirMJQlxIa3opeirMJQlxKa3opeirMJQlxJa3op
+ eirMJQlaGt6KcVI8JQjaEQqT+miwnQtQRemompHSStkDXNSj6SswlCNpa3opegrMJ4StDV9BL0FahKEr
+ QWt6KY0q1CaErYy1DSl6CtQlCVqa3op/RViE6Voa3opeirKSVpDW9FL0VZSQtkDW9FL0VZSStLW9FL0V
+ ZhKErU1vRS9FWYSStBa3opeirKSVrC1vRUvRRwpQha1reiomlWiFEoWhq+ipClGThK0ohSn9FHCkAja4
+ NU0JjQrkKJCNrmp6KkK0chMjaWAYn9NTThC1IvSUTUrCUIWprekm9FWoTQjaGt6Kb0FaTIWhq+gl6Csp
+ IWhq+gn9BWYShK0Nb0E/oKwnStTX9BL0FYTo2pregl6KspJWlregm9FWkyNqavopeirKaEbS1vRT+irC
+ eErS1vRS9BWYTpWhq+gn9BWYShK1Nb0EvQVqEoStTV9BL0VahNCVqa3op/RViEoQtTX9FL0VYhJK0tb0
+ U4pViE8JWlAKlIVosJ0rUh9NL0kZJK1IPSTGpHTJWprmlR9BWUoRtDW9BP6CswlCVqa3opeirMJQlaGt
+ 6KXoqzCSFqa3opeirMJQlamt6KXoqzCUJWpreil6KswlCVqa3opeirMJQlamt6KXoqzCUJWpreil6Ksw
+ lCVqa3opeirMJQlamt6KXoqzCUJWprein9FWIShK0oPRS9FWITwlamt6Kj6KtQlCVqavopeirMJQjamu
+ KU/pKxCUJWlD6SXpI8JQhakHpJjUrEJoStLWNKb0VZhKEbQWr6KXoq1CUJcSxq+il6KtQlCXElq+il6K
+ tQlCHEpq+il6KtQlCPEpq+il6KtQlCXEpq+il6KtQlCXEpq+il6KtQlCXEpq+il6CtQlCXEpq+gl6CtQ
+ lCHEpq+gl6CtQlCXEpq+gl6CtQlCXEpq+gl6CtQlCXEpq+gl6CtQlCXEpq+gm9BW4TQlxKavoJxQrMJQ
+ lxKa4pUhUjwlCXEkIfSS9JGhJDiSiFafYiJJcSkRrUTUjpJcSEHopvRVhJLiQ1/RS9FWUkuJDV9BL0Fa
+ ShLiQ1fQTegrcJQjxKanoJvQVuE0JcSGr6Cf0FahKEuJTV9BL0FbhKEuJLV9BL0FahKEuJTV9FL0VZhN
+ CXEpreil6KspJcSWr6CXoK1CeEuJLU+zpegrcJ4S4kNT0EvQVuEoRtTU9BL0FbhNCVoavoJvQVuEoStL
+ U9BSFKsQlCVpQekl6SPCUJWlB6ScVI0J4StSH00vSRoToWprmlRNKtJoStTV9FL0VZhKEbQ1/RT+irEJ
+ 4QtTW9FN6KswlCVoavopeirSSNqa3op/RViE8JWlr+il6KsQnhC0tb0U3oqzCUJWpq+il6KswlCVrS1/
+ RS9FWYShC1jV9BL0VahKErSGr6KXoqzCUI2uDW9FL0VZhKErS1vRS9FWYShK0tX0EvQVqEkbWSa3opei
+ rEJQlbEg9JP6SNCUJWzwQeml6SNCUJWzWh9JL0lYhKErY5Nf0U3oK1CUIWxtX0E/oKzCSVqa3opeirKS
+ Vqa3opeirCSVqa/opvRVlJK0tX0UvRVmE0I2lreil6KswnhLiU1fRS9FWoTwlxLC1PRS9FW4S2pcS1qe
+ gl6CubUtqXEuDT9BL0Fb2pbUuJeGp6KXoq3tShLiS1PRS9FWoTwlxKLV9BP6CtAJ4S4mMtX0EvQVqEoQ
+ tDU9BL0FbhKEuJc1hSl6SswlCVrg1/SS9JHhJK14Qekl6SPCUJWktc1JvRVmE0I2xlreil6CtQmhK0Nb
+ 0EvQVmE8JWlq+gl6CtQlCVqavoJegrUJQhamr6CXoK1CUJWpq+gl6CtQmhG0NX0EvRVqE0JWpreil6Ks
+ wkhxKa/opeirCUJcSmv6KXoKzCUJWpregl6KswlCXEpreil6CswlCXEpq+gl6CtQlCPElq+gl6CtQlCV
+ qavoJegrUJQlamr6CcUqzCUJWhB6SXpo8JkrXBDsS2IqSVrkJrUTUrEJQjaGt6CXoK0AnhC0NX0E/oK1
+ CUJWpq+gm9BW4TQlaGp6CXoq1CaErQ1vRT+irMJQlxKa3op/RViEoStTX9FL0VYhKErU1/RS9FWITwlx
+ Ka3opeirMJQlxKa3opeirKSXEpreil6KspJcSmt6KXoqyklxKa3opeirKaEuJTX9FP6SOkha0ofRS9FW
+ AnhC1BqGlN6KtFRStkCAUqQqRgFKErXoRUn9NGTJWpAak3pKwkAlakIpUvRRgpIWsLWNCgaFbKiUQWMt
+ T0E3oq3CaEbWtX0U/oqzCUJWpreil6KswlCVrw1vRS9FWYShK0tb0UvRVmEoStLW9FL0VZhKErQWt6KX
+ oqzCeErWFq+il6KswnhK1NX0U/oqzCUJtpa3opvRVqEkrS1fQS9BWoShOtTV9BL0FahJK0tb0E3oK1CU
+ JWpq+gl6CtQlCVqa3oJ/RViE8JKQCqFINhEhMU1KwUgVBOCgpmE8KIKeU1TKEybcolySGRTKJcmlJTJM
+ lKcIqWhKFKEoRUwhJShMUVLJ0ydJS6SZOgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSZOmSUpJJJJ
+ Skkk6SlKLlNRckpq2KuVZsVYpKZsVutVGK3WkpMEkgkkpSZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpdJJJJSkkkySl04TJwkpYoFisFV7ElNV6iFJ6i1JSdiOEFiOElLFRKmVApKYlDcE
+ UqJCSkJTIham2p65YFSlRhJJBZSnChKcFBYWYCeFEFPKCl4TFPKYoLgheVTtcrlipWhNZYtV7lEOKdwU
+ mslBnC7SU5JRG1qRrQXhqPJVZ8q89irurQTTWEo1cqQqViulBBDFpKckqwKVF1SDGhDijsehFkKbRCSm
+ 2xynMoDCigoKR2NlU7WK84qtYkyRDRLFJjVNyYFJkps1hWWBVGOVhj0QghKQq9iKXqvY5ORTWsCrkI7z
+ KHCSFmNVusIDQjsKK1ssRAVXDlMPSWlsAogVdjlZZqitLIBThTa1S2orCihMpuCGUVpVKSinCS1dMnSS
+ WlQTpJ0kMU4SSCSEjUdqCxGakhkmTpFBSydJJJSkkkklLJJJIpUkkkilSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpJKWSKdMkpg5Cc
+ iuQnJKYFMnKSSlkk6ZJSgpBRCkElLqJUlEpKWlNKRUCUFMpTESmBUgklE5koZqVmEtqS4NcVIorRA1PC
+ ayAoy1Be1WHIFhQZ4lqPCFCLYUGdUmQlPWFbYyVUqKvVJNeZX9KVE0q0AmISYWn6cJbYVhzUMhFSNRKJ
+ CbaioIXBVrArxYhPrSbMHKsBQQCtCypB9JJkLGqVdrCDXUrdbEFhLIBPCIGpiEFtoihOIRHlVbHIKtkS
+ E7SFVL1Nj0gglvMVloVSoq4wKQMEmYCkkAkitXTpkklKTJ0ySFJJJJKXSSTpIWTFSTFJTFSCZSCSl0N6
+ IhvSUhKmxQKmxJTarRwgVo4SUumTpklKSSSSUpJJJJKkydMkpSSSSSlJ0ydJCkydMkpSSSSSlJ0ydJSk
+ kkklKTJ0ySlJJJJKUkUkikpE9VXq09VXpKYhHrVcI9aSmy1SUGqaSlJ0ySSl0ydMkpSSSSSlkkkySl0k
+ kklLpJJIqUkkkmFSkkkk1SkkkklKSSSRUpJJJOClJk6ScpiUk6UIKXCIEMKYKCmSYpSmlMKmJCgQiJiE
+ FIoUgpQlCKWQKmChSpApwUllMVDcnlSAKXJUSUxKaUaUvKaU0pIFS8pSkmQUukmSSUvKUpkklLylKZJJ
+ S8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpk0pKZSlKjKUpKZSlKjKUpKZSlKjKUpKZSlKjKUpKZSlKjK
+ eUlMpSlQlKUlM5TyoApwUEs5TEpJJKYkppTlMkhUp5UEpSQzlKVGU6SFEqMp4ShJS0qQKaE8JKXlKUyd
+ JcpJJJJKkkkkrUpKUkkrUqUpSTJWpeU8qKdK0LylKZNKSmUpSoylKSFyUySSVrCoKQKilKFoZ7kpQ5Tg
+ pJDOUimClCVrkZUSUQhQIStctKeVFOkleU0pJklLykCkAnhJS4KeU0JJIZSmlMkkheUpTJJIXlKUySSl
+ 5SlMkkpeUpTJJKXlKUySSV5SlMmSUylNKilKSGUpSopJKZylKikkplKUqKSSmUpJkkkrpJJJWpdJMkkp
+ dRKkmhK1MUgpQmhJTIFSBUE0pKSbkxcoSlKSlyVElJMkpUpSlCSSF5TyopJKZSlKinSUqU8poSSUylKV
+ FKUkspSlRlKUkMpSlRlJJS8pSmSSUylKVFJJDKU0pkklLylKZMkplKeVFOCkpknUQVJK1LJpTlRKFpXl
+ PKinSUuSmLkioFJLPclKgFMJJXlNKdMUkqlKUySSl5SlMkkgrylKZJFC8pSmSSQvKUpkklLylKZJJS8p
+ SmSQUvKUpkklLylKZJJTKUpUUklMpSlQlKUlM5SlQlKUlM5SlQlKUlM5SlQlKUlM5SlQlOiplKeVCUpS
+ UzlMSmlMSklclMSmKZJK8pwoqQStLIKUKIUgUkKTFSTFK1MCmlSKiQlaFpSlKEySmUpiUySKFSkCmhJJ
+ TMFKVFJJTOUpUZSlJTKUpUUkLUylKUySSl5SlRTpJXlNKSSSlSlKSZJS4KkFFOCkkM0ioylKCVFMkkkp
+ aU0pyFApKZbktyGnCSmUpSkmSUyBUwUMIgCSlEqBKIQokIqYSpApoThJTKUpSSSUqUpTJJKXlKUyUpIX
+ lKU0pSkpeUpTSkkpeUpTJJKXTyop5SUvKUpkkkKlNKSZJCpSlMkkleU8qKSSmUp5UZSRUvKUpkklLylK
+ ilKSmUpSoymSUz3JtyjKSSmW5KVFJJTOUpUU6Sl5SSTpWpZMU6YpWpaU0pyE0IKVKeVFPCSmUp5UQE6K
+ lSlKSSSVSkkkkgqlKUkklhVKUpJJKCpSlJJJmCpSlJJJRVKUpJJMapSlJJBC0ppTwmKSlSlKZOEkheU0
+ p4USkyBfcnBUE4SWlnKUpoSKDGVSnBUU4RtQZJJJIWyBSdMnCIXLpJJJyVpSlJMktK8pSmTJMa8pSmSS
+ QulKSSSlSlKSSS4KSlJJJeqU0pJklKlKUySSl5TyopJLCylKUySS1eUpTJJKXlPKinSSvKUpkkl4XlKU
+ ySS9kCnlRSlBDKU0ppSSQqU0pJklKlKUySSl5SlMnQUvKUpkklKlKUkklLSlKeEoQUqU8poTpKVKUpJJ
+ KVKUpJJKUkkkipUpSkkkhSSSSKlJJJJKUkkkkpSSUJ4RQpNKeExSUFSlKinCTIGUpJBIpKVKUpikEVLy
+ lKSSSiqUyScJMRUmUoSISUxlNKcpklKlKUkkkhUpSkkgyKlKUkklLykmSQUvKaUkkkFUpSkkksK4KcFM
+ E4QKxRKiVNRITVME4KUJAIqDIFTBUApBFcGUpiUkkVwYlRlSKaEUrSnBTQkkplKeVFOgpeU0pJkFKlNK
+ dMgtVKaU6ZJCpSlJJC1LylKZOipUp5TJ0VKlKUkklKlKUySKVSkklCKVJJQnhJKkkoTpKUkkkkpdJJJJ
+ SkydJJSySSSSlkk6ZJSpSlJJJS8pSmTpKVKUpkklKlNKSSSlSlKScJKUnShPCSlkk8JQkpiknhMkpSUp
+ JIKVKUpJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJSkkkpSdJJJS6UpJJKVKaU6ZFSkkkkkqlPKZJJS8p
+ SmSSUqUpSSSUtKeUydAoUkmSTVLpJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJCkkkkFKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkoSRSpJOkm2pZKU6ZJKkkkkkLSlKSSSFSlKSSSF5SlMnSQqU8pk6Cl5SlM
+ kkhYlNKcpkrUvKeVFOlamUpSmSSUvKaUkkkrSmlOmSSqUpSSSUqU8pk6SV5TymSRBUvKUpk6ehZKUkkk
+ rSlKSSSFpSlJJJSpSlJJJKpSlJJJS6UpJJKVKSSSSlJJQnSUpJJJJSk0p0ySVJJJJKVKUpJJKXlKUkyS
+ l5TSkkkpUpSkkktKpSlJJBjVKUpJJLgqUpSSSXKlJJJJcpKUkklKlJJKEVklpSlPCUJMS0p0kkmeCyQS
+ Tosq6SSdBjkpJJJJiVKaU6ZJKpTSkmSSqUpSSSSqUpShOklaUpTpkFLpSmTpKXSTJ0mMrpJk8pLV0k0p
+ SkvC6ZKUpSXhSSaUpSSpJJJFRVKeUySTGV5SlMkkheU0pJJJVKUpkklwXlKUySS8LylKZJJRVKUpJkmM
+ rylKZJJS8pSmSSXBeU8pkklLylKZOkpeU0pJJKUlKSSSlpSSSQUslKdNCSlk6UJ4SUpJPCUJKWlKU6UJ
+ KWSShKEVKSlKEklKSlJMipeUpTJJKXlKUySSl5TSklCSlkk8JQklZOlCUJKXlPKZJJS8pSmSlJSpSlMk
+ khUpJJwkpSScBPCCFkylCYpKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkpSSSUqUpSSSUtKUp0oTStKgU8p
+ AJIIYkppTlNCTKGQKlKiFJK1yiVElOmSSqU8pkklLyluUUxKTGWe5NuUJSBRY0kp1AFSCSF0kkySl0ky
+ SS8LpJkkkrpJkkUrpJkkkLpJkklhXSTJJKCpSlJJJcqUpSSSSpKUkkVKlKUkkVKlKUkklKlKUySSl5Sl
+ MkkpeUySdBTGEoUoShBSyUp0xQUtKaU8JoQUtKQTwnARUoKQTAKSSlwklKaU5SiolOSokpKUkEycJKXT
+ pk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKWSSSSUukmTpKXUXKSi5JTWsVcqxYq5SUzYrV
+ aqsVpiSkwTpgkkpSSSZJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklKTJ0ySl0
+ 4TJwkpRQLEcqvYkpqvTNTvUWpKbDEcIDEcJKUVAqZUCkpZKEk4RUtCYhSTFPC8IyFAohUCEkFiknhNCD
+ EVAqQKjCkEFBkCkUwTlNK8InqnardhVK0prNFCeUWsKuXao1bkGwG2xqdzVFjknuTV4QPCAYRLHKs56a
+ V6ZoCtVgLPbYrNdqCwt0AKDwFAWqD7EmNi5RBUHPUQ5BTZaUQFV2lGakpk4oD0chBeEmWLUeUPcp2Ks4
+ oMrZY9WGOVFhVypEIKUlBeUeEF4TwsQEpAJEKTQihdoRAE7WogaktLCE4RNqQaisLOtW6yqzArDEVpbb
+ SpSgByfeisLNyC4KcymhFYUcJwpQlCS0qSTJJLSunTJ0lqycJk4SQkajNQWozUlM0xSSQUpJMnSUpJJM
+ gldMkknBKkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klP/0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSZJS6ZOmSUwchORXITklMCkkUySl0ySSSlBSCiFIJKXUSpKJSUwKiQiJ
+ oRUwAUgE8J0qSuAnhNKeUqValEpyUxQpImwcgPCsEKDmptMsZtCwIO1XnsQvTSpf7jGoK7UgMYrLAlTF
+ KSdqcqITyjTHxLEIZCKokI0q0UJAKZCZGlwK0KDmoiZyVM8S1HsQtisvCHCVLzJixqssahtCOwIUxGa+
+ 1Qc1GASIQpbxtJ7FVsrWk5iEapQpXG5ZqKmyorQ9BSFEJUoyQ1MhXGBRayEQCE5jJZJJk6S1SSSSSlkk
+ kklKSTpJKUnTJ0lKTJ0ySFlIKKkElLoT0VDekpCVNigVNiSm1WjhArVgJKUknTJJWSTpklKSSSSSpMnT
+ JKUkkkkpSdMnSQpMnTJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJFJIpKRPVV6tPVV6SmAR60AI9aSmw1
+ TUGqaSlJJJJKUkkkkpSSSSSlkydMkpdJJJFS6SSSSFJJJJpUpJMkmqXSSSSSpJJJIKUkkknhSkkkkVKS
+ hJOkpSdJMgpRKaUxTSmFTMFOhgqYKapdMQnShEJYFJSITQnhSgnSATwpApZNCnCUI2pgkpQmhMKlkk8J
+ QkhZJPCUJKWSTwlCSlkk8JQkpZJOkkpZJOkkpZMpJQkpiknhKElLJJ4ShJTFJShNCSlkk8JQklZJPCUJ
+ IWSTwlCSlkkoShJKk0p4TQkpcFSBUIUwElWyCdIBShJVsCFEohCiQki0ZTJyE0JItcKQUApgJIXATwnA
+ UoSUwhKFOFEpJYpJ0kkrJJ0oSSsknSSSsknShJSyZPCUJKWSTpQkhZJPCaEkLJJ4ShJFqTpQkktWTFSh
+ MQghgUgpEJgEks2ogQwpyiuUUIqZKGUkqTwmCmAkuYwlClCaElKCdMnSUpMpJQkpikpQlCSGKSlCUJIY
+ pKUJQkpikpQlCSmKSlCUJKYpQnhKElLQlClCUJKYQlCnCUIIYQlCnCUJKYQlCnCUJKYpQpQlCSWMJ08J
+ QkpZJPCUJKWSTpIKWTpQkipdMU6YpKYlRKkQmhJSySeE8JKWTwnhPCSmMJoU4TQkhhCSlCUJKWATgJAK
+ QSUtCYhTTEJKYJlKEoQSxSUoShJSySeEoSQsknhKElLJJ4ShJCySeEoSUsknhKElMUk5CaElMgU4KiFI
+ JKXUSnSSSsE6QTpKWKgUQqBCSVgphRCkEkrqJKcqJSStKUqJSCSWYKdRCmAktKoShShKEUMYShPCUJKW
+ hKE8JQkpaEoTwlCCloShPCUJKWhKE8JQkpaE0KUJQkpimUoShJTFJPCUJIWTKUJQkpiknhKElLJJ4ShJ
+ SySeEoRUpJOlCSlkk8JQkpZMpQlCC5ZKUoShJS8p9ygmSUk3JSoSnCKmSSYJ0kLQlClCZJS0JoUkoRQx
+ hNCnCaElMUk8JQkpZJPCeElLJJ4ShJSkk8JQgpZJOkklZJPCUJKWSTwlCClkk5USiAlUpSmSTuFLIKQC
+ iApgIUpiQoEIxCGQlSkUKQCeE4CXCpUJQpQlCXChYKQUVII8KmSiUkyVKWSSSSpS6SSSVKWSSShKlKSS
+ hJKlKSSShKlKSSSSpSkkkkqUpJJJKlLp0wToUpSYhShNCCGEJKUJoSUsknhKEVLJ08JQgpZKFKEoSUxh
+ NCnCaElMElKE0JKWSUoShJTFJShNCSlk6UJ4SUukmTpKUkklCKlimhShNCSloTgJ4TgIKWATwpQlCSWM
+ JlIhMipZJPCUJKKySdJJjKyUJ0klBaEoTwlCTMFoShPCSCitCSeEkmMrJQnShJDFMVIhMQkhinAShSAS
+ SFoTEKaYhJkCOFIBPCkAggqATEKcJiEmIok4TkJoSSF5TEpJikyBeVIFDUgiFwSSkogpSnJXJTSmJSSW
+ lUppSSSYyukmSSQukkkkhdJMnSpcFJkkkqXqTJ0oSSsknhKElLJJ0klpWSTpQksWTpQkkpSSSSSlJJJJ
+ MgUkkkkutSSYpk0oZSkop0ELpk6UJWlZJPCUJWpZJJJBCkkySSl06ZOkpSSSdJSkySSSlJJJJKUkkkkq
+ 1JJJIqtSSSSSFJJJJKUkkkkpSSSSKl06ilKKGSiU6iUVBiSnCZOEmQMwkUgkUksSkCkUwRUyBSJSTFKk
+ FUpwVFIFKmMpAUiogp5SpCxTJ0ySVJJJJKCkkkkKZAukmSSUukmSQUumSSSQSpJJJJjJXThRTgoUhkmK
+ Up0KQxhJPCSVJCyeUyaU6lwZylKjKQKNLgyTQnTwlSWMJoU4TQkpikkUyVKXSTJIUhdJJJCkKSSSQpCy
+ SdJKlLJ0kkaUpJJJKkKSSSTqSpJJJKlKSSSSpcumSSSUpPKZMkllKSjKUpKZJSoylKSmUpKMpSkplKSi
+ nSUumSSSUpJJJJFqSSSSUpMnTJKtSSSSSrUnCZOkq2QSTJ0lLpkkySVJJkklKSSSSpCkkkkqUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSTJKXlKUySSWUppTJpSUylKVGUkUMkpUZSQSySlRSSUylOop0lLpJk6Sr
+ UmTpkCpSZJJNQukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukkkkpdJMkkpdJMkkpdJMkkpdJMkkpd
+ JMkkpdJMkkpdJJJJSkkyScBaV0yaUkeFS6SZJLhUpJJJLhQpJJJLhQpJJJLhQukmSS4VMpTSmSS4ULpk
+ kkuFSk6ZJLhUvKeVFJLhSySTJ0OFSkydJLhSsknTJcKVJJJkuFS6UpkkeFTKUpUZTpUheUySZJS6SZJJ
+ C6ZJJJVqSSSSVak6ZOkq1JJJJJtSdMkkq10kySSV0kySSl0ySSSlJJJJKUkmSSUvKSZJJSkkkklLpJk6
+ S0rpJJIUsUkkkjSQpJJJKl4UkkklS5SSSSVJUkkkkxSUkkkkxLJJJJM8FkgkkizMkkySDFJlKaUySVMa
+ pSlMUyVKXlJRTo0ldJMnSpcF06ZOlS5ZMnhKE0qWSShKE1Ck6aEklhXlKVFJJaylKVFJFcGUpSopJLwv
+ KUpk6S5UpSlCSSiulKZJJiK8pSmSSWrpJkkly6SZJJcF0kySK8LpJkklFSSdMkxFSSSdJSySeEoSXKSS
+ SSUpJJJBS6SZJJS6SZJJS6SSSSlJJJIKUnSSSUpOkkipZJJJJSkkkklLJJ0yKlkk6ZJSkkkkVLJJ0klL
+ JJJIJXSSSSVakkkklKTSkkUkqlNKZMkpeU8pkkrUuFIKIThC1MwnUQnlK0LlRKUpkrUpJMklaF0kySVo
+ XSTJJWpdJMklal0kySVqXSlMkhaV0kydK1LpQknSWlSZIpkqQpMnSSplCk8qKSVLmSZIKUJUliknhIhG
+ lMSolSIUSEqYyxJSBSIShGmMsgVIFQCkEqQylKVFJKlMpSlRSSpcF5SlMklS5eU8qKSNKXlKUySVKK8p
+ SmSSpYV5TyopwlSgyTpgklS5dJJMlSVJJJI0pSSSZKlKSSTI0pdJMklSlJJJJUpSeUyZNpTKUpUZTSgp
+ nKShKUpqmaUJgVIJKVCeE6SSlkycqJKSVSlKiSknKXlMknASUtCcJ4TwkhZOkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkgpSSZJJSkkkySl0kydJTJQcpKLklNaxVyrFirlJTNit1qoxWq0lJwkmCdJSySSSS
+ lJk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUmTpJKUnCZOkpYoFiOUCxJTVeotT
+ vTNSU2GIwQGI4SUoqJTlRKSlkpTFMSiplKYlQlKU4LwulCSdFBWhNCmmQYSwhPCdMmqtcJFJIoLwUFio
+ 3K/YFSuamlmiWkTqpscouYna1NbMW2x6dzkNgUyEF6CxVXq49qrPakutCCjschBqNWxClkimDkxKm1ic
+ sQphJa5UmhENak1iVKtdgVhrVBjUdoSpXEttQnsVmEN4SpkjJzrWKo9i0rGqq9iVM4LXYIVupBDUZiNL
+ SWwFBzZUmqcJLLaxrUgxH2pQii0YEJ5ScYQi9FaSm3KQKrB6KwyitJbLQjtCFWFZYEVhK0JIkJiEVpLA
+ KQKZJGlhK8pikmSpbakkySS22SdRUkqUskEkglSErUZqCxGahSmSYp0xSSpOmSSUumSTIKXSTJ0UqSSS
+ RUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//0+vSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6S
+ Slkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSZJJJSkkkySmLkJyK5BckpgUkikkpSZOmSUuFIKKcJKXTJ0xSUskmKaUQpeUpUUyc
+ lnKUqKdBaV5STJwEFi4CRCcBPCDJFE5iGWKyQokIL0QYiAJ4ThFYV0k0p5RWqSTSmlFKimSlJFeFQmIT
+ p0mUIXNUNiOQmhJcUYaitCQCkgwyXCRKaVElJYuU0KJKUpqUgCeFAFSlJS5CinlJJCkkkklLpJJJKWST
+ pJIWTpJklLpJkklLpJJJKWUgoqYSUuUJ6KhPSUhKmxQKmxJTarRwgVo4SUyTJJkkrpkkklKSSSSSpMnS
+ SUskkkkpSdMnSQskkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUkUkikpE9VXq09VXpKYBHrQQj1pKTtU
+ 1FqkkpSSSdJSydJMkpSSSSSlkkkklKSSSRCF0kkkVKSSSTSpZJOkmqUkkkkpSSSSSVJJJJ4UpJJMUVKl
+ KUxKaUFMwU6gCphAqYkKMIkJiEwqYKQTQnCCmYUoTBSCIUtCaFIobinhS6UoReo+qpAEtiU8qsLFL1Eq
+ UmTIe9N6iaQhKkh703qIUhKkheol6iVKSpIfqJeolSkiSH6iXqJUpKkheol6iVKSpIW9LelSkqSFvS3p
+ UpKkh70t6VKSJIe9LelSmaShvS3pUpmkob0t6VKZpIe9LelSmaShvS3pUlmmUN6W9KkJE0KO9OHJUllC
+ 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
+ SSUpJJJJSkkkklLpJJ0lLJJJJKUnTJ0lLFAsRygWJKaj1Fqk9RCSmwxGCCxGCSlFQKmVApKYlMU5TFJI
+ YpwElIJ4XBQCdIJ0kSWUSU5UUGAqJTSnTIKXBTqKkEFwYuEqtZXKuQoOams8HOdUkKldNaQrQbIaza1I
+ sVjaouCC4FqPaqz2q48IDgkvQBiPXWmaFZrCDHJk2tSNSOwKe1JgLTNSWxWi1RLElIQ2FIaKZaokJKWL
+ kNzlIhBeiyRRvcq7iiPKASkzhcIzAgsVqtspILJrVOEVrEixBYUJKgXKbmoLgUVrB70EuUnBQhJBZN1V
+ upqr1hXamorCnrarDUJgREVpZEqJKYpkVhXCkAmaiBOWlgWqJCKUNyS1gkkUgkhcKSiFJJSyQSThJSRq
+ M1BajNSSyTFOmQUskkkglSSSZJS6dMnRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJT/AP/U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSTJKUkkkkpg5CciuQnJKYFJMUklLp
+ kkklKCkFEKSSl0xTqJSUsU0J08IrgxhKFKE8Ir6YwnhSSQYZLQlCdJBjtSSYlKUF4LJMUgnhJdbAppTk
+ KCS1nKSiFKElLFRlTIUYTlwWTpAJ4RXhaUpSITJMgZJJgpBFcVJJ4TEINeRYkqJUiE0IMdsUoU9qfagu
+ tiE4KUJIKXlOop0VLpJJJKXSSSSUpJOkkpZMnTFJSkkySSl0kydJClMKAUwkpdDeioT0koCpsUSpMSU2
+ q0cIFaOElLpk6ZJKkkkklKSSSSSpJJJJSySdJJSkkkkkLJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSl
+ JFOmKSkT1WerNirPSUwCOxACOxJTYapKLVNJSydJJJSkkkklLJJ0ySlJk6SSlkkkk4IXSSSTqUpJJJMK
+ lJJJJqlJJJJKUkkkklSSSScFKTFOknKYFMpwmhJSwUwowpBNUySITAp0wqYwnASThBTIJ5TJnFFSznQq
+ 1lsJ7Xws++6E8KSPvQvtCz7chA+0qQKdlt6ILljsvR23KQC1Ol6yb1lnm5N6yeIIdH1kvWWd6yXrI8CL
+ dH1kvWWd6yXrJcCnS9ZL1lm+sl6yXAp0vWS9ZZvrJeslwKdL1kvWWd6yXrJcCnR9ZL1lnesl6yXAp0fW
+ T+us31kvWS4FOl66XrLN9ZL1kuBTpesl6yzfWS9ZLgU6XrJess31kvWS4FOl66XrLN9ZL1kvbU6XrJes
+ s31kvWS4FOl6yb1lnesl6yXAp0fWS9ZZ3rJeslwKdIXKYuWWLk/rpcCrdT1lE5CzDkoL8pH21W6pyVH7
+ UsV2Wo/a0eAIt3RkqYyFgtykZuSl7aLdn1kvVWY29SFyXtqt0PVS9VUPWUTcl7ardH1k/rrM9dL10vbU
+ 6RuUDcqHrJvWS9tLf9ZL1ln+ql6qXtrnR9ZL11neql6yXtpdH1k/rLN9ZL1kvbU6Xrpeus31kvWS9tTp
+ eul66zfWS9ZL21On66XrrM9ZP6yXtodL10vXWb6yXrJe2tJdP10xvWb6yXrJe2i3QN6gb1RNqb1EvbS6
+ AvRBesv1E4uQ9tLqi9I3rMFyf1kvbU6BuUTcqBuTeqj7aXQ9VL1VQFqXrJe2l0PWT/aFluyIQnZUJe2l
+ 2ftKf7QsL7WpDLS9tLuC9P6yx25SIMlD21OkbkxvWcb0xuR9tTo+ul66zfVS9VL21Ol66XrrN9VL1kvb
+ U6Xrpeus31kvWR9tTpeul66zfWS9ZL20Ol66XrrN9VL1UvbU6Xrpeus31kvWS9tTpeul66zvWTesh7an
+ R9dN66zvVS9VD20Oj66f11m+ql6qXtodL10vXWb6qXqpe2l0/XS9dZvrJesl7anS9dP66zPWT+sh7anS
+ 9dL11m+sl6yPtqdL1k/rLM9ZP6yHtqdH1kvWWd6yXrJe2p0fWS9ZZ3rJjel7anT9dL7Ssg5KgcpL20O1
+ 9pUTkrFOWm+1Je2p2TkJeusgZKkL0fbU6ouUhcswXKYuS9tTo+ql6qz/AFUvVS9tTfNyiblRNqibUvbQ
+ 3vWT+ss/1UvVS9tIdH10/rrN9VL1k3217peul66zfWS9ZL21Ol66XrrN9ZL1UvbWul66XrrN9VL1kvbU
+ 6Xrpeus71kvWS9tDo+ul66zvVS9ZL21Oj66XrrO9ZL1UfbQ6QvUhcswXJ/WS9tTpeumN6zjcom9L21Ol
+ 66b1lm+snFqXtpdH1kvWWf6qXqpe2l0PWT+qs71U/rJe2l0PWT+us03qByEvbS6wvTi9Y/2lOMpL2wl2
+ hcn9cLG+1pfbEvbCnXN6gb1l/apS9eURjWl0vXS9dZvqpeqne2h0vXS9dZvrJesh7anS9dL11m+sl6yX
+ tqdL10vXWZ6yf1kPbU6Xrpeus31kvWS9tTpeul66zfWTesh7aXT9dL11m+sl6yXtqdL10vXWb6yXrJe2
+ h0vXS9dZvrJesl7anS9ZL1lnesl6yXtqdH1kvWWd6qf1UvbU6HrJess/1UvVR9tToesl6yz/AFUvVS9t
+ Toesl6yzvVS9VL20Oj6yb1ln+qn9VL21N/1lIWrP9VL1UPbXOmLlL11lG+FE5UIe2p1/XTHICxjlqJzP
+ NH2wp2ftAS+0LE+1qQy0vbCHZ9dMbllDJlSF6PtqdE3KJtVH1UxtS9tTe9ZOLln+ql6qPtqdMXJ/WWZ6
+ yXrpe2p0vXS9dZvrJesl7anS9dL11m+sl6yXtqdL10vXWb6yXrJe2p0fXS9dZvrJesh7anS9dL11m+sl
+ 6yXtqdH10vXWb6yXrIe2p0fXS9dZ3rJvWS9tTpeun9ZZvrJxcl7anS9ZL1lnesl6ydwIdH10vXWb6yXr
+ JcCnRN6Y3LO9ZP6qXApv+spC1Z4tTi1LgU6QtUxas0XJ/XQ4FOgbVE3LOdkILslLgVbri9TF6wvtakMx
+ LgU7hvUDesoZcpfaJS4FW6RvTeus31kvWS4FOn66f11l+un9ZLgU6frp/WWZ6yXrJcKnT9ZL1lm+sl6y
+ XAp0vWS9ZZvrJeslwKdL1k3rLN9ZL10uBTpeul66zPXS9dDgU6JvUTes43KPrI8CQ6frpxesz1U4tR9t
+ Lp+sl66zvVS9VL21Oj6yb11n+qm9VL21Oj66f11m+sl6yHtqdP10/rrM9ZP6yXtodP103rrN9ZP6yXtq
+ dH103rrO9ZN6yXtqdL1kvWWb6yXrJe2p0/WT+usv10vXS9tTp+ul9oWUchROSl7anW+0JfaFjHJTfakv
+ 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
+ kkkklLpJJJKUkkkkpScJk4SUsUCxWCq9iSmo9RCm9RCSk7EYILEcJKWKgUQqJCSmBUSpkKJSSGKkFFOE
+ 5cGYTFKUxKSJLFJRlSCDXK8JiEQBMQgpGkCkVGUFySUioApwUGaBUknUSg2gsShuKkVAhJcheq7lac1B
+ cxJKIKxWUENRmNSpZItpjkUFAYEUI01iWaeFAFTBSpFq2qJYiJFGlcTWcxAexXHBBeEaZIFz7Gqu5q0H
+ sVc1o0zgomNV2lqCxit1NhNIQSnYxSNakxETFpLTfUgPqV9wQntRW25j60LYtB7EEsRQSiY1WqwhtYjM
+ EIrSU7VNDBUgUaWEsoS2pAogCdS0liAnlOQolFFqJUCUimSRaySdJKkLp0ydKlLJwmThKkpGozUJqM1J
+ K6YqSiUErJJ0yVJUmTpkE0uE6YJ0Fqk6SZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJT/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkySSl0kySSl06ZJJNLpJkkl
+ UukkkktulJJJJKtSSSSSVJJJJKUkkkkpSSSSSlJJkklLpJJJKUkmSSUukmTpKUkkkki1JJJJKtSSSSSa
+ UkkkkmlJJJJKpSSSSSqUkkkkhSSSSSlJJJJKUkkkkpSSSSSlJk6ZJSkydJJVLJJJklMXITkQoZSUjKSc
+ pklKTJ0ySlwpBQlKUlM5TFNKaUlLpwoynlJcCySTSlKK+15TSmlMkwyZSlKinQY6XJTJJBBeAzCkoAqc
+ pJpi4KBCmSolJVKAUgEwTykqlEKMKRKZFcFAJ4TAp5RXBiQowplRRXgqAUgohSCSSV0iEpSSYJMYTwkn
+ QWKATwkCnlBLEhQIUyVEoJYp0kkVLpJkpSUyTqKUpKZSlKjKUpKXlMU0pSkpSZJJJS6SZOkhcKYUAphJ
+ TJCeioT0koSpsUCpMSU2q0cIFaOElKSSSSSpMnSSUpJJJJKkkkklKSSTJKXSTJJIUkkkkpSSSSSlJ0yS
+ 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
+ rFL1yrBxCm+yFLiUg9YpesVYGIVL7GUOJTV9YpesVa+xHwS+xHwS4lNX1inFxVn7GfBOMMpcSmv6xS9Y
+ qz9kKX2QpcSmt6xS9Yqz9kKX2Mo8SWt6xS9Yqz9kKX2Q+CVoavrFL1irP2Q+CX2Mo8Smr6xS9Yq19jKb
+ 7GfBLiS1vWKXrFWfsZS+xnwS4gpresU3rFWvsZS+xlHiCGr6xS9Yq19jPgl9jPggZBLV9YpeuVZ+xlMc
+ MhNtNNb7QQl9rIT2Y5aqVoLUbXCLaOYU32wrMc8hRDyla7gLqfbCnGWVmgkorASlauFvDJKkMgoFdRKt
+ MxiULQsLyn9co4xCpfYz4JWhr+sU3rFWfshTfZChara3rlL1yrH2QpfZClamv65S9co/2QpfZClaEHrl
+ L1yj/ZCn+yFK0U1/XKXrlH+xlP8AYylaGv65S9co/wBkPgl9kKFqpB65S9co/wBkKX2Q+CVppB65S9co
+ /wBkKX2QpWpB65S9co/2Q+Cf7GUrU1/XKXrFWRhnwT/Yj4IWghq+sUvWKtfYym+xnwStFNb1il6xVg4Z
+ SGGUrZAg9YpjeQrX2M+CFbikJWuajskhQ+2FQvqLVReSCiuEbdVuaVP7YVjNeUYOKKTAug7MKh9rKoyS
+ psYSkwyDebkkoovKBVQSrjMQpLKYeuUvWKsDEKX2QpWjha/rFL1irH2QpvshStXCg9YpesUf7IUvshRt
+ cAg9YpesUf7IUvshStNIPWKXrFH+yFL7IUrUg9YpesUf7IUvshStSD1il6xR/shS+yFK1pCD1il6xR/s
+ hT/ZClaAGv6xT+sUf7IUvshQteg9YpesUf7IUvshStTX9YpesVY+yFL7IUrU1/XKXrlWPshTfZClakHr
+ lN65Vj7IUvshStDX9cpeuVY+yFL7IUrS1/XKf1ijjEKl9jPgmkqahvIQjlEK3ZiEBULqS1BSRuaVapyy
+ VikEFWKHFNU9LRkStGmyVg4rlsY5TSqnSYZRQgVqwEFUsVEqRUSglaUpTJJKZgp5UAU4KSl0xCeUklWx
+ hPCdJJSydJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklLJJJJKUnTJ0lLqLlJRckprWKuVYs
+ VcpKZsVqtVWK1WkpMEkgkkpSZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJ
+ SkydJJSk4TJwkpRQLEcoFiSmo9RapPTNSUnYjhBYjBJSiolSKgUlLFQKkVEpKYpBIpIrwV5USU8qJSWl
+ aVNpUIUgkwkJgUiVAFIlBVMXIZKmVAhBNKBUwoAKYSZYs1Ep5TFBsCTAhNCkQnASXcYRlqGWKzCiQknj
+ DXFaI1intUwElkpKDU8KQTFFrlinBTFMkpnuS3KCSKFyVAqSUIr4lCWyoGtWIS2o2zCSAMRWiFLanhNK
+ jJmCn3KCSZS22RKgUkoRpFoyFAsRoS2orbRBimGqcJQihgU0qZChCK1m0ozSgAIrSitSqBCeUxKKGBCZ
+ OSmStVLJJJJWil06QTpWqlkgE8JwErXM2ozUJqKELUyTFKUkrXLJJJ0ksUykkgpYJ0oSQQukkmSQpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1uvSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTJKXSTJ0lKSSS
+ SUpJJJJSkkkklLJJJJKUmTpJKWSSSSUF0kkyLKAvKdRTpKI0XTqKdBqzK6ZJJJYCpJJJJmCkkkklykkk
+ kFKSSSSSpJMkkldJMkkpdJMkkldJMkkskunTJJNeRXTJJJLolSdMkk2QukmSSSumSSRUpOmSSQVJ0ySC
+ 1dJMkgtUkkkkpSSSSSlJJJIrgukmSRSukknRSxUSiFQKKkZQyikIZCS1gQmUiE0IIYpipwmhBTBMpkJo
+ QUxSTwnhBSyeUoShOClJ00JQnKtSSeEoSUsnShJBVKSTpQklSeUySSl5STJ0kqSlJMgpRKaU8JQkpaU8
+ pQlCSlkk8JQki1k6UJQii1SlKSZJC8pSmSQQvKUpkySmUpSop0VKSTpQglZJPCaEkrJJ4ShJSyZPCUJK
+ WTpQnhJSySeE8JKWTpQlCSlBTCiFIJKZIT0VCekpAVNigVNiSm1WjhArRwkpdMkkkpZJJJJS6SSZJS6Z
+ JJJSkkySSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhIpBIpKQ2Kq9WrFVekpgEdiAEdiSmy
+ 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
+ Fe0S0S4lU0fsgS+yBXtEkuJVNH7IE/2QK6klaGl9kCX2QK7oklaGj9kCX2QK8klaGj9kCX2QK8klamj9
+ kCX2QK8klamj9kCX2QK8klamkMQKf2MK4IU00lIcm/EELEzMcCV1N/C57OPKcEvO3VwUqhqpXu1UKjqk
+ l18ULZx1i4pWzjoJdGtHCBWjBBSiUyRSCCFQmhSShBDGEk8JQghZKUiolJDKU8qEqQSUySTJ0kqSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSdMnSUuouUlFySmrYq5VixVykpmxWq1VYrTElJgn
+ TBOkpZJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJS6SSSSlJk6ZJSk6ZOkpYoFiO
+ UCxJTWeotTvTNSU2K0YILEYJKWKgVMqBSUxKiVIqKSlkydMkpSSSSSlQknTJKpeUpTJJKpSUJJ0lLQkk
+ kkpdJMkkq1J0ydJNqSSTpI4isnTJJKteUkySSlJJJJKUlCdJJS0JQnSSUpJJJJVqSSSSVaySdJJVrJ0k
+ klWqEkkklWpJJJJS0JoUkklLQkE6ZJS8pSopJKXlMkkkpSdMnSUuE4TBOElMgnATBSCSmQUgohSCSmQK
+ dRCdJS6SSSSlJJ0klLJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklP8A/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkydMkpSdMkkpdJMkkpdJMkkpdJJJJSkkkklKTJ0klLJJ0klBZJOmRZQsnSTpJO
+ yydJJBqTUkkkktCkkkkmULJ0kklykkkklKTJ0kkrJJ0kkrJJ0kkrJJ0kFLJJ0klslk6SSTXkFJJJJLoq
+ STpJNgLJJ0kUrJJ0klLJJ0kkLJJ0kFiySdJJCkydJJSySdJJSySdJJKySdJFdagnTJwipSiVJMUlIyFA
+ hFKgQihhCaFOEoQUwhNCJCUIIRkJtqJCUIIR7UtqJtT7UlItqW1G2ptqIUh2pbUbaltTlItqW1F2pbUE
+ otqW1F2pbUlIoShF2pbUkooT7UXaltSUihKEXaltSSihKEXaltQUi2pbUXaltSUj2ptqLtS2pIRbUtqL
+ tS2pKRQlCJtS2pIRQlCLtTbUkIoShE2pbUlIoShE2pbUkIoTwp7UtqSmICeFKFKElyOEoRIShJSPaltR
+ YS2pKRbU+1E2p9qSkW1Lai7U21JSPalCJCaElMITQiQlCSmEJwE8KQCSmJQno5CC9JSAqTFEqTElNpiM
+ EFiMElLpk5UUlLpJkklLpJkklLpJJJKWSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcJF
+ IJFJSGxVXq1Yqr0lMAjsQAjsSU2Wqag1TSUpJJJJSkydMkpZJJJJSk6ZOkpSSSSKlJJJIqUkkkmFSkkk
+ k1SkkkkVKSSSSUpJJJPCVk6SScpcJ1CU8oKZJk0p0lLFRJUlEphUxJSCUKTQgpcBRc1GDUzmohTnXhY+
+ Uty8LFywpAlxbuU9B1Sv5Uajqpgp3sI8LeoOi53Dct2h+iBCm9KiVEPS3hRUhdJR3pbwjSGSSjvCW8JU
+ pkko7wlvCVKZJKO8JbwlSmSSjvCW8JUpkko7wlvCVKZJKO8JbwlSmSSjvCW8JUpkko7wlvCVKZJKO8Jb
+ wlSmSSjvCW8JUpkko7wlvCVKZJKO8JbwlSmSdQ3hPvCVKZFCepbwhveEQEhoZPCwM0creyXCFhZh5VmK
+ Xn8kaqiRqtHJGqpEapyGzi8rosHssDGGq38I8JpU9FjcK81Z+M7RXmvChmFJISUd4T7wo1KKiUi8KBeE
+ aQzCmEEPCmHhIhCVJQ3hLeE2lMkyjvCW8JcKmSSjvCW8JcKmSSjvCW8JcKmSSjvCW8JcKWSSjvCbeEqU
+ zSUN4S3o0pmkobwlvSpSUKSEHhS9QIUpkUMpy8IZeEQFMk4KFvTh6NKSynCGHhOHhCkpSqt/COXhVr3i
+ EYhTiZvdc5ljVdHmGZXPZSkpTkvGqLSNUzxqi1DVLhS6WKt3FWJjLaxilwqdehXGqjS5W2vCYQpMmKjv
+ CYvCbSmaShvCW9KlM0lDelvSpTNJQ3hLelSmaShvS3pUpkko7wm3pUpmkob0t4SpTNOob0t4SpTNJQ3h
+ LeEqUzSUN6W8JUsZpKG8Jb0qQzSUN6W9Kks0lDeEt4SpIZpKG8J94SpcGSdQ3hPvCFKLCxZeUtGx4WZk
+ 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
+ pdJMkkpdJMnSUpJJJJSkkkklKSSSSUpOmSSUukmSSUukmSSUukmSSUumSSSUpJJMkpSSSSSlJJJJKUnT
+ JJKZJ1FSSUuFIKIUgkpkFIKIUgkpkE6iE6SmSSZJJS6SZJJS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJSySSSSlJJJJKUkkmSUukmlKUlLpJp
+ SlJS8pSmlNKSmUpKMp5SUySTApSiyhdOopSkosklGUpQa0mSSjKUpLAySUZSlJlDJJRlKUlzJJRlKUlM
+ kyUppSSukmlKUkrpJpSlJLJJRlKUlMklGU8pLZLpJpSlJgK6SaUpSXRXSTSlKTOF0k0pSklkkmlKUULp
+ JpSlBaukmlKUkLpJpSlBC6SaUpSQukmlKUkrpJpSlJSkyRKiSiuZSnBUJUgUVMkxSSKSmJUSpFRKSlk8
+ JJJKXhKEk6SFoShOkmoUAnhIKSSGMJQpJIhLGEoTpSnKWhKE8pSgpaEoTylKSloShPKaUkqhKEpSlBKo
+ ShKUpSUqEoSlKUlKhKEpSlJSoShKUpSUqEoSlKUlLQlCdJJC0JoUkkkMYTQppJKYQmhTSSQw2pQppklM
+ YTwnSSXLQnhJOkpaE8JJ0lLQlCeUpSUtCUJ5SlJTGEoTpklLQmhSTJKWhPCSdJTEoD1YKA9JSAqTFEqb
+ ElNitGCExGCSlFRUkySlkkkklKSSTpKUkkkkpZOkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlwkUgkUlIbFVerViqvSUwCOxACOxJTZapqDVNJSkkkklKTJ0ySlkkkklKTpk6SlJJJIqUkkkipSSSS
+ YVKSSSTVKSSSRUpJJJJSkkkk8JUmTpJymKSeE0IKXCdMnQUpRIUkkwqYwptCipNQUlCZ6QKg9ycFNPIK
+ xMsrZvKxsoSnhLiXnVDrOqPe3VAa3VTBTqYtkLZpvgLAo0Wgx8BOU632hMclZptKgbSm0tdX7Sl9pWT6
+ xS9UpUp1vtKX2lZPqlL1SlSnW+0pfaVk+qUvVKVKdb7Sl9pWT6pS9UpUp1vtKX2lZPqlL1SlSnW+0pfa
+ Vk+qUvVKVKdb7Sl9pWT6pS9UpUp1vtKX2lZPqlL1SlSnW+0pfaVk+qUvVKVKdb7Sl9pWT6pS9UpUp1vt
+ KX2lZPqlL1SlSnW+0pfaVk+qUvVKVKdb7Sl9pWT6pS9UpUp1vtKf7Ssj1Sn9UoUp1TkoT8lZxtKG+0pw
+ CmxfkSsjJtlGteSs+6SpguaV75VSdVasYSg+kUUJ6HQVs4lsLHqrIWjQCECp6Gi+ArbclYdbyEb1Soyp
+ 1/tSX2pY/rFOLim0p1jkpjkrL9UpeqUkOn9pUhkrJ9UpeqUEOuMpL7Ssj1Sn9UoKdb7Sl9pWT6pS9UpK
+ db7Sl9pWT6pS9UpKdb7Sl9pWT6pS9UpKdb7Sl9pWT6pS9Uopdb7Sl9pWT6pS9UpUp1vtKX2lZPqlL1Sj
+ SnW+0pfaVk+qUvVKVJdb7Un+1rHNxTesUCEOwcpROSsj1inFpQU6v2lOMlZYsKXqFOU6v2lIZSyTaU3r
+ FKlOx9qQLcnRZ/rFDfaSiAlbKvlYuQ+VdvJKzrmkpymo52qJW5QLCpsYUkuhRZC1qLoWLUCFeqJCSndq
+ yFZbkrFY8hFFpTCp2PtKY5KyvVKb1ShSnW+0pfaVk+qUvVKCnW+0pfaVk+qUvVKSnW+0pfaVk+qUvVKS
+ nW+0pvtKyvVKXqlFTq/aUvtKyvVKXqlKkOr9pS+0rK9UpeqUaU6v2lP9pWT6pS9UoUl1vtKX2lZPqlN6
+ pSpTr/aU32lZPqlL1SlSx1vtKf7Ssj1Sl6pSU6/2pL7Usn1Sl6pQU632lL7Ssj1Sl6pSSHX+0pfaVkeq
+ U/qlGlzrfaU/2lZHqlL1ijSi6VmSs7IyJQn2lU7XkpwDEUWRbKzrHo9pJVR7SnLorb0Vj0EMKI1pSbUX
+ RosWrj3QsSoEK9U4hArZu/VkI4yVissKn6xTCGqXVOUm+1LINxTesUKSHY+1J/tKxxcU4tKDKHX+0pfa
+ Vk+qUvVKKC6v2lL7Ssn1Sl6pSpY6/wBpTfaVk+qUvVKVKdb7Sl9pWT6pS9UpJdf7Ul9pWR6pS9UpUp1/
+ tKX2lZPqlL1igh1vtKX2lZPqlL1ikp1vtKX2lZPqlL1Skh1vtKb7Ssr1Sm9UoodX7Sl9pWT6pS9Uoqdb
+ 7Sl9pWR6pT+qUqU6v2lN9pWX6pTeqUaSHV+0qJyVmeqUjYUaXN2zIVK65Qc8qvYSU8LkN1qoWvVmwEqq
+ 9hRXBruKLUdU3plEZWUUuni2QtvGyIXP0ghX6nkKKS0u+3KSOUsgXFMbimUtdb7Sl9pWR6xS9YpUp2Pt
+ KX2lZHrFL1ilSnX+0pfaVkesUvWKVIdf7Sl9pWR6xS9YpUp1/tKb7Ssn1il6xSpDrfaUvtKyPWKXrFKl
+ Ov8AaU32lZPqlN6pSpTr/aU/2lY/qlP6pSpTr/aUvtKyPVKXqlKlOv8AakvtKyfVKXqlKlOt9qT/AGpZ
+ HrFL1ilSnW+1JfaVk+sUvWKVKdb7Sl9qWT6xS9YpUp1vtSX2pZHqlL1ilSQ6xylE5SyjcU3qlGl4b9mS
+ s/IvlQdYVVtJKKmrkWSs97lbtBKquYUkLMK0KHwqLWFWqgQkp2se+FpVZKwanEK0ywoKdwZSf7UscWlP
+ 6xQpTrnJUftKy/VKb1Skh1ftKcZKyvUKXqlBDrjJT/aVkeqUvWKFKdf7Sl9pWR6xS9YpKdf7Sl9pWR6x
+ S9YoKdf7Sl9pWR6xS9YpKdf7Sl9pWR6xS9YpKdf7Sl9pWR6xS9YpKdf7Sl9pWR6xS9YpKdf7Sl9pWR6x
+ S9YpILrHJTHJWT6xTesU5Dr/AGlL7Usj1il6xSS7H2pL7Usf1il6xSpcHX+1JvtSyPWKXrFGlzsDKTOy
+ Vki0pzaUaS2MjIlY2VdKs2vJWZfJTwhpXWaoIfqp2NJUBWUVNul61Me2FkVMIV6qQkgu5VerbchYtbyE
+ cWFBDrDJS+0rL9QpeoUKQ6oyVIZKyRaU4tKFIdcZKX2lZXqlL1Sm0p0zkqJyVmG0qPqlJTrDJUhkrIFp
+ T+qUlOt9pTHKWUbSom0oJdb7Un+0rI9UpxaU4BLrfaUvtKyvVKXqlGlOr9pS+0rK9UpeqUKQ632lL7Ss
+ n1Sl6pSpDrfaUvtKyfVKXqlCkOt9pS+0rJ9UpeqUqU632lL7Ssn1Sl6pSpTrfaUvtKyfWKXqlGlzrfaU
+ vtKyfVKf1SlSXUOSq9uQqRtKE95TgEqvvWbbai2uJVKyU5LF1iYPQyCkAUlNuuxXqLVlsBVuokIIdym9
+ XGZKxKnkKwLCmlDr/aU32pZRtKb1Smodf7Ul9qWR6pT+qUqU632lL7Ssn1Sl6pThFc6v2lP9pWT6pS9U
+ pGKnW+0pfaVk+qUvVKaQh1vtKX2lZPqlL1Sgp1vtKX2lZPrFL1Skh1vtKX2lZPqlL1Skp1vtKX2lZPql
+ L1SjSHW+0pfaVk+qUvVKVKdb7Sl9qWT6pS9UoUp1vtSX2pZHqlL1Skp1/tSX2pZHqlL1imqdf7Um+1LI
+ 9YpesUkuv9qT/aVkC0p/VKcFOm7JVa3IVQ2FCe8qWKVX3LLvsVi0kqhaCVOChrWPQpRHMKYVlAlfFjKc
+ FEFRTioqIswSUvhauPfCy2VkK3WCEEF3KsuEcZqxGuIUt5QK0u19tTjOWHvcn3uTaWF3PtyX25YfqOTe
+ o5Clru/bk4zVgi1ykLXIId4ZiX2xYosKf1Ckh2ftiY5qxzYVE2FJTs/bU321Yu9yXqOSU7X21L7asXe5
+ Le5JTtfbUvtqxd7k29ySXb+2pfbVib3Jb3Iodv7al9uWJ6jkvUckp2vtqX21YvqOS9RySna+2pfbVi+o
+ Ut7kVO39tTHNWL6jkt7kqU6z8xVLsqVTLnIT5KcFBHkXys6yyVatYSqrqikzRYNfqr1FsKm2oqzXWQky
+ F16MiFo1ZkLCrBCOHOCDXk7ozkjnrDNjlH1HJtMTu/bkxzViCxykHuSpLrnMTfa1lbyluKKQ64zFMZqx
+ d5T7ygyB2vtqX21YvqFLeUkl2ftqX21Y28pbykxF2ftqX21Y28pbyktdn7al9tWNvKW8org7P21L7Ysb
+ eUt5SXOz9sT/AGxYu8pbylSnZ+2pfbVjb3JjY5Kkuz9tS+3LDNjk3qOQpTvDOUhmrAFrkRtjkqU7LsuV
+ TvyZVXeShvkpwUgyLZWVc9aNtZKpWUEpyGnvR6rIUTQVJtJCSnTx8iFp05cLCrYQrTCQkp32ZyIM9YAe
+ 5P6jkwhTvHPTfb1g+o5OLHIUp3vtqX21YYscpeoUlO19tS+2rE9Qpeo5BTt/bUvtqxPUcl6jklO39tS+
+ 2rE9RyXqOSU7f21L7asT1HJeo5JTt/bUvtqxPUcl6jkVO39tS+2rE9RyXqOSQ7f21L7asT1Cn9RySna+
+ 2pvtqxt5T7yip2PtqX2xY+8pbyip2PtqX21Y5eVHeUqXO4M1I5qxBYVLeUqS3b8qVkZN8othJVK1hKeK
+ S0rbJKg1+qI+kqApKKG7RdC1sfJhYldZCt1yEFPQ15iL9tWE17lPe5NIU7X21L7asXe5Le5Clrs/bU/2
+ 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
+ 9vWB6rkvVcih6AZ6kM/zXPeo5P6rkF4eg+3+aX7QWB6rkvVchS53/t/ml9vWB6rkvVckgu/9vS+3rA9V
+ yXquSWu/9vT/AG/zXP8AquS9VyS4PQfb/NL7f5rn/Vcl6rkku/8Ab0vt/msD1XJvVcktL0H2/wA0vt65
+ /wBVyf1XJLXf+3pfblgi1yXquTSl3xnp/wBo+a542uUTc5NS9H+0fNOOo+a5r1nJxa5FT0x6j5qtfnSF
+ jC1yg97iiF8WWXkysi2ySrNoJVV1RKc2oMGuR2uUG1FGFRSZJbKD1YrthA9MqQYQk0cjqUZMLQrzYWCw
+ EIwc4JMQd8Z6f7f5rB9Ryb1XILw7/wBvTfb/ADWD6rkvVcgl3vt/ml9v81g+o5L1HIKd77f5pfb/ADWD
+ 6jkvVckp3vt/ml9v81g+q5L1XJId77f5pfb/ADWD6jkvUcip3vt/ml9v81g+q5L1HIod77f5p/t/msD1
+ XJeq5JT0H2/zS+3rn/Vcl6rkEvQfb0vt65/1XJeq5JT0H29L7euf9VyXquSQ9B9vS+3rn/Vcl6rklPQf
+ b0vt65/1XJeq5JT0H29L7euf9VyXquSU9CM/zU/2h5rnBa5P6zkqU7d+fIWHmZW5QfY4qnaHOSXNa2yS
+ iUO1UDSSVYooMpJdjDdwt7FcsLFrIW3jCEEutUdEVAqR01DFwUCEQlRKCkZCjCIQokIIWThMnQQyCdRT
+ yghdMkkipSZOkilSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sl1FykouSU1bFXK
+ sWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kk
+ klKTJ0ySlJ0ykElLFAsRygWJKar1Fqk9RakpsMRggsRwkpYqJUyolJTAqJUyFEhJTAplIhNCSlkk8JQk
+ pZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWTpQnh
+ JSySeEoSUsknhKElLJJ4TQkpSSUJJKUkknSUsknSSUsknTJKUkkkkpSZOkkpZJOkkpZJOlCSlkk8JJKU
+ pJk6SlwnCYKQSUuFIKKkkpcKSiE6Sl06ZJJS6SZJJS6dMkkpdMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSl0kkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpkk6SlkydJJSyZOmSUpNKSZJS8ppTSlKSl5SlRl
+ NKSmUpSoylKSmUpSoSlKSkkpSoSlKLICzlKVCUpSUUkpShylKTXkklKUOUpSWhnKUqEpSkyBJKaVCUpS
+ XM5SlQlKUlJJTSoSlKSWcpShylKSUkpSoSlKSmcpSoSlKSWcp5Q5SlJBSSlKHKUpMJCSUpQ5SlJISSlK
+ HKeUmUM5TyhylKSrSSlKHKUpItJKUocpSki0kpShylKSEkpShylKSkkpShylKCEkpShylKSkkpShylKS
+ mcppUZSlFNsgpBRCkEkskiUyRSSsSokpyokpJXSlRlKUkM5SlQlKUkJJSlDlLcktSgp5Qg5PuSQklMXK
+ BcolySUm5NuQ5SlJKTcluQpSlJSXcluQpS3JKS7ktyFKUpJS7ktyFKaUFJtybchSnlJSTcluQpSlJSXc
+ n3IW5KUlJdyUocpSkpJKUocpSkpJKeUKUpSUllKUOUpSQklKUOUpSUklKUOUpSQklNKhKUpKZymlRlNK
+ S5nKeUOUpSUklKUOUtySkspShbktySkkpSh7ktySmcpShylKSkkppUJSlJTOU4KHKkCkpkUJ6KUJ6SkB
+ UmKJUmJKbLEYILEYJKUUycpklLJJJJKUnSSSUpOkkkpZJOkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJS4SKQSKSkNiqvVqxVXpKYBHYgBHYkpstU1BqmkpSSSSSlJk6ZJSySSSSlJ0ydJSkkkkQpSSS
+ SKlJJJJpUpJJJNUpJJJJSkkkklKSSSTwlSSZOipUJ4SCdJTFJOVGUCpdJMFJMKmKcFIpk1TKVBxSUSnJ
+ a12qzb65Wq9sqs+qU8KcG2iUEY63HY8qH2ZTAqc6uqFaawq03HhEFCNqaJYVE1laPopegm2tc30il6ZW
+ l6Cb0ErU53plL0ytH0EvQStTnemUvTK0fQS9BK1Od6ZS9MrR9BL0ErU53plL0ytH0EvQStTnemUvTK0f
+ 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
+ xdqv01QjioBEa2EErsEKcplElBS5clKHKcIKZymKQShNWrJJJIIXSTJ5SQukkkiFKSSSRSpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJ0ydJS6i5SUXJKatirlWLFXKSmbFaYqrFaYkpME6YJ0l
+ LJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJk6SSlJwmTpKUUCxHKBYkp
+ qPTNUnqLUlNhiOECtHCSlFRKmVEpKYEKJCmQmISUwITQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQ
+ pwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJ4UoTwkphCUKcJQkphC
+ UKcJQkphCUKcJQkphCaESE0JKYQlCnCUJKYQnhShKElMYShShKElMYTQpwlCSmEJQpwlCSmEJQpwmhJT
+ CEoU4ShJTCE8KUJ4SUwhKFOEoSUwhPClCeElMYUgEoUgElLAKQCQCcBJSgnShPCSlk6eEklLJJ4ShJSy
+ dJJJSkySSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/
+ /9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6S
+ SSSlJk6ZJSyYpyolJSxTJyolJSimlIpikpUppSlNKSl5SlRlJJS6UppTSkplKUpkkV4XlKUySSivKUpk
+ kmGS8pSmSSWheUpTJJLwvKUpkkkrylKZJJS8pSmSSSvKUqKSS5lKUqKSSmUpSopJJZSlKZJJBXlKUyST
+ EV5TyopJJDKUpUUkl4ZSlKikkplKUqKSSGUpSopJIZSlKikkllKUqKSSGUpSopJIZSlKikkplKUqKSSm
+ QKkFAKQSUzCkFEKYSSumKdMUlwYlQKmVApJWlNKRTJKXlNKaU0pLV5SlQlKUlpSByfchSnBSQklKVEFO
+ klUpSkkglUpJJJKUmlOkkpaUk6SSlkk6aEkqSSSSUpMnhJJSpSlJJJS8pSkkkpUpJJJKVKeUySSl5SlM
+ kkheUpTJklMpSlRSSUylKVFJJTKUpUUkkrylKZJJS8pSopJKXlKUySSl5SlMkkpeUpTJJKZSmlJJJS4K
+ mChqYSUzQ3qaG9JSEqTFAqbElNliOECtGCSlymTlMkpZJJJJSk6ZOkpSSSSSlJJkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUuEikEikpDYqr1asVV6SmAR2IAR2JKbLVNQappKUkkkkpSZOmSUskkk
+ kpSdMnSUpJJJFSkkkkVKSSSTSpSSSSapSSSSSlJJJJKUkkknhKkkkkVLhIlMkUFLEqKcpkipkFIKIUwo
+ ypYhMQpJigpjCYhSSRCUZaomuUVOE8KQeil6CsgJ4TwVNX0UvSVghRTlIfTS9NGhPCC1B6aXpo+1KElI
+ PTS9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS
+ 9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS9NHhKElIPTS9NHhKEkIPTT+kjQpAJJDX9JL0
+ lYhIhJc1vSCXpBHITQkpEKwpCtEAThJCP01E1KxCUJKapqTekrW1NtSQ1/TS9NHhNCSkHppvTR4ShJCD
+ 00/po8JQkpB6aXpqxCUIqa/ppemrEJQkpr+ml6asQlCSmv6aXpqxCUJWpr+ml6asQlCVpa/ppemrEJoR
+ tSD00vTR9qUJWpB6SXpKwGqW1NKGt6SXpqztUSEFIdiYsRoTQipAa03pqxCW1FSAVKXpo0J4SSgNaiag
+ rEJQipr+kE4qCNCcBJKIVKXpooCUJqkBrUTWrJCiQkpr+mn9NH2pQkpB6aXpo8J4QU1/TS9NWIShJTX9
+ NL01Y2pQkhr+ml6asQmhFSD00vTR4ShJSD00vTR4ShFTX9NL01Y2pbUlzX9NL01Y2pbUlNf00vTVjalt
+ QWFr+ml6asbUtqSGv6aXpqxtS2oKa/ppemrG1Laklr+ml6asbUtqK5r+ml6asbUtqKi1/SS9JWdqW1K2
+ Itb0UvRVraltStdFq+kmNStEKBCNtmLX9JL00eEoRWzQ+ml6aOAnDUGrJr+knFSshqfagkNb0kvSVram
+ LU1lDV9NL01YhLaiEIPSS9NWNqW1OtDX9JL0lY2pbUrU1/SS9JWIShC1Nf00vTViE+1K1Nb0k/pKxtS2
+ pKa/pJvTVnaltQQ1/SS9JWNqW1JDX9JP6aPCUJIQeml6aPCaEkIPST+mjQnhJTXNSia1aIUS1JLX9NOK
+ 0banDUUhDsSNaPtS2pLw1jWoGtWy1QLEVwa4rUwxF2KQaklF6aXpo4anhC0Nf0kvSViEoQtDX9JL0lYh
+ NCNqQekl6SPCUJWhB6SXpI8JQkpB6SXpI8JQkpB6SXpI8JQkhB6SXpI8JQlakHppemjwlCVqQ+ml6aNC
+ dC1IPSS9JHhJK1IPSS9JHSStSH0kvSRoShK1IPSS9JHhKErUg9JL0keEkrUg9NL0keEoStLX9JL0lYhK
+ EbXNf00vTR4TQjakPpJvSR4ShJCD0k/pI0JQkpB6aXpo8JQkpB6SXpKxtShC0IPTT+mjQlCSkPppemjQ
+ lCSkHppekjwnhJDX9JL0lYhKElIPTS9NHhKEFIPTS9NHhKElIPTS9NHhKEkoPTS9NHhKElIPTS9JHhJJ
+ TXNSialahRISQ1fSTipWdqcNSQ1vSS9JWtqW1JLV9JL0lZ2pbUUhrekn9JWNqW1JcgFakK0aEoQSi9NR
+ NSOlCSkAqCkKgiwnAStKP0gmNSOmhC0FrmtN6asEKJCNrUHppvTRoTwihD6aXpo+1LakhB6aXpo8JoSU
+ h9NP6aLCcBJSL00vTRoTwgprmtQNatEKJCSWt6aXpqxCW1OBU1/TS9NWNqW1G0tf00/po+1LahaEHppe
+ mj7U+1K0Nf00vTVjaltSWtf00vTVjaltQU1/TS9NWNqW1JTX9NL01Y2ptqS5r+mnFaNCeEkoxWpemiAK
+ QCCUBqTGpWYTQklreil6SswmhJTX9JSFSNCUJKReml6aNCUIIQGtN6SsQlCahr+kmNSswmISCmsa03pq
+ yQowpQVyD00/po0J4StSD00vTVjaltQtTX9JL01Y2pbUkNf00vTViEoQU1/SS9NWIShFDX9NL01YhNCN
+ qQeml6aPCW1K1IPTS9NHhPCCkHpJekjwnhMKmv6SXpKxCUJimv6Sb01Z2pbUEtf0k4rVjalCKkHppemj
+ QlCeEoDWmNSPCUJ9qa5pTeirUJoStcGuKlMVIsJwEFzAMUw1OkghaE8qJTEpLUgKmCgSnBQWlPKiShyl
+ KS1mnCHKcFBDOE8KG5PuSUvCSjKYlJTOUpQ5SlJSSUpQ5SlJKSUkOUpSSkSQ5SlFSRJDlKUlM5SlQlKU
+ kM0lCU0oqZkptygSopKTByeUIKQKSGZUSE0piUmWK8KQQ5TyiupLKYuQ5TFNYpMi5R3KJCaEmNIHKYKE
+ ApBJLNKE0ppSSGSdQlKUmQM06GlKSSkSQ5SlJiKRJDlKUlqRJDlKUlwSJlCUpSSkTKEpSklmnlDlKUlJ
+ JUSVCUySWZKUqKSCmYKlKGnlFCSU0qEppRpLNJQlKUlJE6HKeUKUzlKVAlRJSpCTcmlBJTgpKSykhgp5
+ QUzSUJSlBTNJQlKUlM0lCUpSUzSUJSlFTNJQlKUUM0lCUpRUzUSmlMkpdKUyZC0JAU8oadK0simKSUIr
+ lk4KaEkUs5SlDlNKCU0pShSlKSEspiVCUklMk6glKSCkSQ5SlBCRJDlKUkJEkOUpStCRJDlKUrUkSQ5S
+ lJKRJDlKUkpEkOUpSUkSUJSlJBZplGUxKSGcppUCU0pJSylKFKUpLkspKAKeUksklGUpQUzTyhylKSkq
+ SFuS3JKSptFCUxKSGcpShFybckhLKZQBTpIZJwhpwUVJQnQwU8pKZFMokppSSkTKMpEpJXJTSoEppSUl
+ lOhSnlJTNJQlKUFM0lCUpSQzSUJSlBDNJQlKUlM0lCUpSUzSUJSlFLNMoymlFLMqJTJIpVCQCSSKWQTq
+ CdJTKUlFMgpknBUEkEJAVIOQZTygtS7ktyDKaUEJtyaUKU8ohTOUlFJOUySlRSStTKUlBJK1MklFJK1M
+ klFJJTJJRSStTJKVFJJK5TJJQjalBTBUEkkpJTEqEpSgpklKhKaUlJZSlClPKSmZKiUySKl04KgkkpIC
+ nlQCdBLKU0qKZJTOUpUEklM5SlQSStjLOUpUEkLWs5SlQSQtcGcpSoJJWuZylKgkla5nKUqCSdamcpbl
+ BKEmMs5TSowkitZJJkklwXhPCjKeUF4ZQmUZSlJeF0lGU0oqKSUpQ1IIMZZylKYBKEkMpSlQSlJLOUpU
+ JSlJTKUpUUkkMpSlRSSUzlKVCUpSUzlKVCUpSUzlKVCUpSUzlKVBJC1M5SlQTFC1JNycOQU4KVqSymJU
+ EkbUopkkoRtK4CmAogKQSSumKRUSklRTKJKaUVJAnQ5TygUFJKUqEpSmUhnKShKUpUhmkoSlKVKZpKEp
+ SlSmaShKUpUpmkoSlKVKZpKEpSjSmadDlPKVKZpKMpSlSmSUqEppSpSSU0ocpSlSkiShKdKkrwmhJMUq
+ SyCkChymlKlJpTaIcpSlSmeiWihKaU6kJJCeUHcnlKlJUyhKdJS8JkkxRUukokppQUzTocpwUFM0oTJJ
+ KXhMQkkUVMSEycpoRUpJJKEVKSShKElKSShKElLpJoShJS6SUJIKUkklCSFJQlCUJJC0JoUk0I2vDHan
+ 2qSUJWpaE4CeE4CFrVQnAShJC0KhOmTShaGSZRlNKFoZSlKhKUpWpJKeUKU8pWlIkoSlKNpZpKEpSklm
+ koSlKKmaShKUpKZpKEpSkhmkoSlKSmaShKUoWhmnlDlNKKEwcnlAlLcghMShuCjuTEossWLgowpEpkWY
+ LgKQCiFMBBbJcBOlCUIMBXBUkNOCkxlmnUZS3JIZpIe5LcguDNJQlNKS5IkoSlKSCzSUJSlJDNJQlKUk
+ hmkoSlKS5mkoSlKCwsklCU8pLWaSjKRKKVFMCokqEpKTgqUquCnlFNpi5DLkMlRlEBISyExCgCpSnM8W
+ JCQakSnBRZGQaFKEwKcprWmxKaUioJMYSAqQKEFIJLgklMopILmUpSopIKZSkopJKZSlKikkhkkopIqZ
+ SlKikiplKeVBKUlM0lCUpQXM0lCUpSUzSUJSlFDNJQlKUlM0lCUpSUzSUJSlJTNJQlKUlMwpAoQKkChS
+ 5mSoOKYqDkkqJSBUITgIJZymKcBKElMYUwEwCkE1TIBMQnlMSgtYlMnJUZQQqUpTJwEELynSAShEKUnS
+ STkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSdMnSUuouUlFySmrYq5VixVykpmxWmK
+ qxWmJKTBOmCdJSySSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSl06Z
+ OElLFAsRygWJKar1Fqk9RakpsVqwECtHCSlFMVJRSUsmhOnSUxhKFKE8JKYQlCnCUJKYQlCnCUJKYQlC
+ nCUJKYQlCnCUJKYQlCnCUJKYQlCnCUJKYQlCnCUJKYQlCnCUJKYQlCnCUJKYwlClCUJKYwlClCUJKYwl
+ ClCUJKYwlClCUJKYwlClCUJKYwlClCUJKYQlCnCUJKYQlCnCUJKYQnhShKElMYTQpwlCSmEJQpwmhJTG
+ E0KcJQkphCUKcJQkpjCUKUJ4SUwhKFOE0JKYwlCklCSloTwnhJJSoTwknSUqE8JJJKUkkkkpSSSSSlkk
+ 6ZJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/
+ 0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSS
+ SSlkxTpikpYpinKiUlLFMU5TFJTEpinKYpKWKZJMkpSSSZJSkkkklLp0ydJKkkySSiukmTosZUkmTpIU
+ kkkglSSSSKVJJJJJUmSSSSpJJJJKkkkkkqSSTpKUkkkkgqSTJJLV0kydJSkkkkkqSSTJKUkkkkhdJMkk
+ pdJMkildJMkkpSdMkkhdJMkkgqSSSQQuFMKAUwgpIFIKIUwkkKSKdMUGQMCoFEKgUlzAqKmQmhFDApip
+ kKJCKGJTKRCaElhWhSASAUgEVqwUkkyaUhdJNKUoLl0k0pSkpdJNKUoqXSTSlKSF0k0pSkpdJNKUpKXS
+ TJSkpdMlKUoqXSTJSkpdJNKdJSkkkkFKSTJJKUkkkkpSSSSSlJJJJKUkkkklSSSZJSkkkklKSTpJKWST
+ pJKWSTpJKUkkkkpQUwoKQSUyQnlEKE9JSIlTYhlTYkptVo4QK0cJKUUycpklKSSTJKXTpkklKSSTJKXS
+ TJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEikEikpDYqr1asVV6SmAR2IAR2JKbLVNQap
+ pKUkkkkpSZOmSUskkkkpSdMnSUpJJJFSkkkkVKSSSTSpSSSSapSSSSSlJJJJKUkkknhKkkkkVKTJJkFL
+ pQknQKlBSTJiUwqXJTSokpAoKZJFOEiEglgSmBTuCgnhSUOTyhhThShSxKaU5CaEVLgqQKiAnTVrJNKZ
+ OhaFJJJIpUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKVKe
+ VFKUFM5TEqMpILlyVGU8JEJWpaU4KYhMihmCpShgqQKSmUpFMkihYpk5TQkpZJOmRQunTJJKXSTJJKXS
+ TJJKXSTJJKXSTJJKXSTJIJXSTJJKUnTJJKZBSlQBTygUFclRJTqJQQsknhKEVLJ0oSRSqUpTFMipeUpT
+ J4RUpPKUJQglUp5UUklMpSTJIJXSSSQQpJJJBSkkkklKSTpJKWSSSRUpJJJJCkkydG1KSSSSteFJJJIW
+ oqSSSSWFSSSSCFJJJJJUkkkkpSSSSNrlJJJkUFdPKinRYyylNKZJJdFRKgVJRKLYCySUJJLZLhSCgpBC
+ 2sWYTyogpSmqDKUxKaUyDIF0kySISunUU6cpdMkmSUunUUklMkpTJIKXSTJIWhdOopJKZJKKdJaolRJT
+ lRKSFSlKikkpmCpAqAUgkpkolOmKVqWThRTgorgzCdRBUgUlyxCYhSlRKS4LQnhKUpRSuoynTFBCpTSk
+ mSQvKUpkklLylKZJJC8pSmSSUvKUpkklLylKZJK0LylKZJK1KlKUoShK1LylKaEoSUvKUpQlCSlSlKUJ
+ QkpUp5TQlCSl5SlNCUJKVKUpQkkpUpwUycBJK6SSRRSsSoynKZFSpSlKE6SFpSlJJJS6dMnCSF0kkkFL
+ JpTlRKKl5STJJKXlKUydJSpSlJJJSpTymSQUvKUpkkkqlPKZJJSpSlMkkpeUpTJJKXlPKinSUVwpKITp
+ LWSZJRJQSvKSjKcJLgySTJ0krJiVIqJSStKeUycBBSpSlIhRKSmUqUoYUkkLkqJKcqJSQpSCiFMBK0Lw
+ knATkJWhGVElTIUCjalSnBUE4SUzBTyopJKXlMkmRSpOmTooUkkkkpdJMnQUpJJJJCkkkkLQpJJJK1KS
+ SSStSkxTpkrSsUkkkkrhTCgFIJLmUppSSKSVpTSkVEpKZSlKikhamcpSop0Fq6eUySCF5TSmTJBS5KZM
+ kpAuC6dRTpJXSTJJpKGSSZJC1LpSmSRUukmSRUpJMkipdJMnSUpJJOkhSUpJk0qXlKVFJRWlnKSYJwla
+ V0ydMUrUxJTSkUyeCpeU4KinCkUylMSnUSgUhaU4KiUk21zOUpUQnSQVFRTpklpUkkkha0rp0wThJapK
+ U8JiErQtKUpQlCClSlKUJQkpSSeEoSSsknhKEkrJJ4ShFKySeEoSUskpQlCKlkk8JQkhZJPCUJKWShJK
+ UVLwkkCnSQGJUSVMhQISZorSnBTQnCTIWQTwmCkChbXmttS2p0pQY1QklKaUlKJUZSJTIWuDKUkydK2Q
+ LpkkkrSVJJJJWxFSSSSVrVJJJI2uCkkkkrXKSSSStSkkkyVpXSTSnBQtS8J4TAp5StSkyUppRQpJJJFS
+ ydMkipkCnlRlKUlMlEp0xSUwKQUoShBSgnSSTVKSTpJKWSSSQUpJJJFSk6ZJFSkkkkUKSSSRUukmTppK
+ lQkklKjtCk6ZJK0hdOoynlOtK6YpSmlG0rFMnSRtKySeEoStS6SSUoWpSSSSVoWSSSTbQpJJJK0LpJkk
+ LQukmSStS6SSSVpUmTpkbSpJJJG1LpJJk4FBXSKSeE5DApiiQokIJYJ05CZBK4UgohSCVrl0ydMgpYpp
+ TpkLUqU4KaE4CVqXTFPCRCVoRlMFIhMAlaGQUwEzQpwjaGEJKRCiUrUuClKZNKNqXlIFRlOEUsgkUgnR
+ SwKipkKMJKUnSSTVKSSSQtCkkkkkKSTpIKWSTpQlalk6UJJWpSSUJ4RSxSTwmRtKkkycIpXSSSKKVJJp
+ SlJS6SSdJS0JQnSKCGKSdMha1SaE6UIIWhOE8JIWpSdNKUoWpdMkklalJJJJWpSSSZG1LpJkkrUpJJJK
+ 1LpJkkrUukmlKUrSukmlNKVpZJoSCdK1MSE0KcJoStTGE4CeE4CVqVCUKUJFG1MCEycqBKVqZSnlDlOC
+ lakiZMCpIWlaEoTpJWpaEoTpIWxlaEoTpIWtWhKE6SFrgtCUJ0krXLQknSStKyUJ0k60lcBPCaU8o2xF
+ aE0JyU0o2hSSSSNrgxTSpQmhK1wWlNKlCUIWyBZJPCUJWoqCmAoSpAoWxlIAkQohyW5K0KKgnJTIWldJ
+ Mklal0kySNoXSTJJWpdJMklal0kySVqXSTJShal0k0pShal0lGU8oWpUJwEwUgjalQknUSUrUpOokpSi
+ ClmFJQBUgU61LlQKkVEogpYFMnKZOtS6SSSchSSSdKlLJJJJUhSSSSVKUkkklSlJJJJKUkkkkpSSSSSl
+ 0pTJSjSmUp1EFOEKUpMpJklMUk6ZFK4Ugop0FLpinTJJYlNKcqKKlwVJRCmAkpZMVOExCCEaUqRCaEVL
+ hSCiFIIKXTFOmKCmJUVIqKapcKQUQpgJKXSSSSUqU0pimlJTJKEwKeUVKhKEpSlG1KhPCaU8pKVCUJSl
+ KSlQlCUpSkpSSUpIWpSSSSSlJQkkkoLJJJkl66SZJC1Mk4UAVIFNJWskkgkhaFiolOVEptoUmSSCFoUl
+ CkAlCFqYwkpQmhG0qSlJJG0qSSSRtKkkkkrUpJJJK1KSSSStCkkkkrQpJJJC1KTwmCknAoYkKJRCEMhP
+ QxlKUoTwkyxYkplIhNCNs4ZNRmhCaitQWSZwmITyokoW1ysUxSJTSlawqJUSUiokIWtXlSBUIUgkvDKU
+ pTJJLl5SlMkkgrylKZJJavKUpkklwXlKUySCV5SlMkktKpTymSStavKUqKScEKKZPCUIqWTpJJyWJCaF
+ OEoSXBiEiU5CiU4NmC0pwVFOEWQpAVKUMKQQak1yowppkGMLAJ06SS8KTJJIJUkkkglSSSSSlJ0ySSl0
+ kkkVLJJJIoUkkkklZJOmQSpJJJJSkkkkUKSSSSUpJJJJSkkkklKSSSSUoKQUVIJLl1EhSlRJQStCcBJT
+ CCVQmIU1EoKYJApFJNQvKiSnTEIIYlJPCUIIKgpgKITgpIZQkmlKUQpSSSSclSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlkkkklKTpk6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUskk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdSCinCSlFAsRygWJKar1Fqd6Zq
+ SmxWrAVetHCSmSinTJKWTpJJKXCdJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSTpKWSSSSUukmSSUukkkkpSZOkkpZJOkkpZOkkkpSSSSSlJk6SSlkk6SSlkk6ZJSkydJJS
+ kkk6Slkk6ZJSkkkklKSSSSUpOmSSUySTJJKXSTJJKXSTJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Tr0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUukmSSUpIp0ySmJCYqcKJCSmBUSU7lAlJSi
+ mSlJJSySSSSlklKEoSUwSUiFEpKUnTKQCSVQlCmAnhJSOEymQoFJbSkkydJVKSSSSQumSTFJK8pKEqQS
+ UyhKFIBOQilHCSkVBJcpOmTpKUkmTEpKZSlKhKkCkpdPCQUoSRTFJSIUSEkUpJJJJFqhKFIBPCSkcJKZ
+ CiQkhZJJJJcFJJ0oRTSySdMkmlJJk4SRSoShSATwktIYQmUyFEoLVAqYKEpgoKTAqYKECpgoWuASSkog
+ qSFrwGJUCiFCcUl9LFRSJTSkql1Ep5TSnIpSaEk6KwhQCdJKUWOlFRJTkqKaVwCkkk8ILqWSlPCZJCpS
+ lMkkpeUpTJIqXSSTpIWSTpklKTpBPCKlkk8KKSl0kySSl5SSTJKXSTJJKXSTJIKXSTJJKXSTJ0lKSTJJ
+ JXSTJJKXSTJ0lKTpkklLpJk6SlJJJJKUkkkkpSSdJJSk4TJwkpcoL0YoL0lISpsUCpsSU2q0cIFaOElL
+ pkkklLJJJJKXSSSSUpMnSSUsknhJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhIpBIpKQ2K
+ q9WrFVekpgEdiAEdiSmy1TUGqaSlJJJJKUmTpklLJJJJKUnTJ0lKSSSRUpJJJFSkkkk0qUkkkmqUkkkk
+ pSSSSSlJJJJ4SpMnSRUxSTpQgpQUkwUggVLJippiEwqRFOFIhNCapkCnJUEiUUrOUYTkppTwpk0Igahh
+ yKHBSKX2ptiluCW4IaqYbU0KZcFHcEVpWhKEtwS3JUpUJQn3JbkqUtCUJ9yW5KlLQlCfcluSpS0JQn3J
+ bkqUtCUJ9yW5KlLQlCfcm3BKlKhKEtwS3BGlKhKEtwS3BKlKhKEtwS3BKlKhKEtwS3BKlKhKEtwS3BKl
+ KhKEtwS3BKlKhKEtwS3BKlKhNCfcEtwQpQWhSATbgnDglS5cNS2pbgn3BClMS1RLVMuCiXI0hjCcBLcE
+ g4I0pkAnhMHBPvCFKVCUJbgluCSFtqaFLcE24JIWhKEtwTbgipeEoTbgluCSl4ShLcEtwSUqEoS3BPuC
+ SloShPuCW4JJWhKE+4JbgkpaEoT7gluCSloShPuCW4JKWhPCbcEt4QpBXhKEtwS3BCkKhKEtwS3hGlLw
+ mhLeEtwSSxITQpFwUS5FSgFIBQ3KQcillCUJByfcgpiQmhOXKJcipcBOAmDgnDghSl4ShLcEtwQpSoSh
+ LeEtwQpS8JQm3BLcEqUvCUJt4S3BKlLwmhLeEt4RpSoShLcluCVIVCUJbgluCVKCoShNuCW8I0vC8JQm
+ 3hLeEKUV4ShLcEtwSpYVQlCW4JbkqQqEoS3JbglSVQlCW4JbglSlQlCW4JbglS5UJoS3BLcEaQVoTwm3
+ BLckxleEoS3Jbkl0VoTQnLk0otgKhKEgU+4JLZLQnhLcluCFNaS8JQluS3IUoKhKEtwS3BKmQKhKEtwS
+ 3BKkqhKEtyW4IppUJQluS3BJVKhKEtwS3BJSoShLcEtwSVS8JQluCW4IUiloShPuCW4JUqlQlCW4Jbgl
+ S1aExapbgluCVIphtS2qchNuCVKpQapAKIcFLeEqVSoUSE5eFEvCVKpYhJMXBLcE6lwDIKSgHJ96FLgG
+ SZNvTF6NLgF06hvThyVJplCeFEOUg4ILSralCfcE24IIVCban3BLcEqUtCUJ9wTbgjSlQlCW4JbglSFQ
+ mhPuCbcEqUqEoS3BLeEqQvCUJt4S3hKlLwlCW8Jb0qUvCUJtyW9KlLwlCbeluCVKXhKE29PvCVKVCeE2
+ 8JbwhSlQlCW8Jt4SpS8JQlvCW8JUpUJ4Ud4T7wlSV4ShNvCW4IpWIShPuTbgkpUJQluS3pIVCUJbk4ck
+ pW1PCQcE+4IKVCYhPuCiXBJCxCaE+4JtwRUqE8Jbgn3BJSoShPuCW4JKWhKE+4JbgkpaEoT7gluCSloS
+ hPuCW4JJWhKE+4JbgkpaEoT7gluCSVoS2p9wS3BBTGEoTlwUS4IoXhOobwnDwlS1lCYhLcExclSVQnAU
+ dwUg4JUuDIBShRDgn3BBcqExCfcFEuCSlQnATbwnDglSly1RIUtwUS5KlLQnATbkt4SpS5CiWqW8JtwS
+ paoNUwFDcE4eEqQlASIUA8J94QooUQhlqmXhRLgiFMCEoTlwTbgjSlwE8Jg4J9wSpSoTQnLgmLgklUJ4
+ TbwnDgkpeEoS3BLcElKhKEtwS3BJCoShLcE+4JIWhKE+4JbgghaEoT7gluCVKWhKE+4JtwSpSoShLcEt
+ wSpK21KE+4JbgkuVCeE24Jt4RSySKjvCYvCVJXKjCYvS3o0peE8KIcn3IUplCeE24JbwhSGUJQm3hLeE
+ OFaohNCfeE24JcKloShPuCW4Jy5aE8Jbgn3BJK0J4S3BPuCbSFoShPuCW4JUpaEoT7gluCVKWhKE+4Jt
+ wRUtCUJ9wTbgipUJwE24KQcElK2p9qfcExcEFUsQokJy8KO8JUpeEoTbwnDgmcKlwFIBMHBPuCXCleEx
+ CfeE28JcKmJCiWqZcExcE4RSxhSATbglvCcpdMQmL0xelSVQlCbcnBQMUrwlCeUxKVIKxTJEqO5LhWld
+ PCjKkClwrSuApgKIKkHIUtXhNCW5LclwoWhKEtyW5LhUvCUJbktyXCpUJQlKW5DhSqEoSlKUuFKoShKU
+ pRpKoTwmlKUqUvCUJbktyVKVCUJbktyVKVCRCW5NuRpCxCgpkqMpUhQUwoSnBSpTKExCW5IlKmWLGEoS
+ lOClS9UJ00p5QphmpMnlOlTExhKFNJCksITQpEppRpcFQlCUp5S4WQKhKEpSlCklUJQlKUo0xFaE8JSl
+ KVLVQlCUpSlS4KhKEpSlKlyoShKUpSpSoTEJ5TSlSVoSSlKUOFS6dNKUpcKlJJpTgo0peE8JAp5SpTGE
+ xCmSoko0pikkSmlKlM0oTAqQKVIWhKE8pShSloShKUpS4VKhKEpSlDhUqEoSlKUuFSoShKUpS4VKhKEp
+ SlGlKhKEpSlKlKhKEpSlGkKhKEpTygQpaEk8piVHwoWSSlKUeFKoTwkCnlHhStCaFKUxKPCuWTgJpTgo
+ 8KV4ShIFPKFIWhNClKaUqUtCUJ5SlLhQVQlCeUpQ4ULQlCeUpQ4ULQlCeUpQ4ULQlCeUpS4VLQlCeUpR
+ 4UrQlCeUpS4UrQlCeU0o8KloShPKaU4BC4ClCjKW5GkMoTEJtyfchSVoTbVKUpSpcxhPCeUiUKSsmKYu
+ US5LhUySQ96cOS4VJAFIBQBRAUOFS8JiE8qJclwoYEJgEi5R3I8KEzVNBD1MPS4UMiFAhOXKJcjwqVCY
+ hKU0pcKlQnASlOClSWQCeE0pbkqSsQmhIuSlGlKhKEpSlClLwlCUpShSFQlCUpSlwoVCUJSlKXCpUJQl
+ KUocKlQnhNKUo8Kl4ShNuT7kuFKiFEpy5QLkeFKk4UJUgUeFLOExCQKRKVJWKZOSmlKlLhSCgCpApUpl
+ CaEpSlCkLQlCeUpQpatCeEpSlLhQqEoSlKUOFS0JQnlKUuFS0JQnlKUuFS0JQnlKUuFS0JoUpTSlwqWh
+ KE8pSlwqWhKE8pSlwqWhKE8pSlwqWhKFJJLhSwhKFNMUuFKwCkFGUtyPCpklCjuS3JcKl04UdyW5LhUk
+ TFR3J9yXCpiQhkI0poQ4VIYTgIkJQlwpWAUgEgnlLhUqEoSlKUuFSoShKUpQ4WMqhKEpSlLhWqhKEpSl
+ DhXBUJQlKUocK5UJQlKUo8KVQlCeUxKPClZMkSlKPCxFSUJwnRpCwCeEpSlKlwVCUJ5TgpUuC21NCnKY
+ lKl4YwolOSokpcKSsUkpUghwsZUE8JwnQ4UMIShSJTSlwpWhKE8pSlwqWhKE8pSjwoWhKE8pSlwqWhKE
+ 8pSlwqWhKE8pSlwqWhKE8pSlwqWhMQpSmQ4VMYTgJ06HCpQCkAmBTylwqUQoEKcqJKPCpgUykUyPClcI
+ gQwVIFHhUzTEJwU8pUlEWpQiFMUVMIShSTSnKVCUJSlKSFQlCUpSkpUJQlKUpIVCUJSlKSlQlCUpSipU
+ JQlKUpKVCUJSlKSliE0JyU0pKUFIKMp9ySmSUJtyfcgpYhKE8pSklaE8JSnlJKyRCeUxKSmBTJyVGU5T
+ MBTAQwVMOTSpnCYhLcolyCliFFIuUdydSGYCkAhhyICgQpeExCeUiUFMCE0KRKjKVKXAUgFEFSDkqUvC
+ YhPuTEoUpiQmhOSlKVKWhOlKUo0pSSeU0o0pdJNKeUqUpJKUpSpSkkpSlKlKSSlKUKUukmlPKVKUmSlM
+ SlSlJk25IFGl4ZQlCcFOm0pjCcJSlKHCtZBOo7kpQ4UKITEJ5SQ4UMYTgJ08ocKFAJ4SlMXIcKlQmhIu
+ TbkuFKoShPKUp3ClaEoTylKXClaEoTylKPCpaEoUpSlLhUxhKFKUpS4UMYShSlKUOFDGEoUpSlDhUsAn
+ hKUtycIqUQoEKRcolyfSFoTwo7ktyPCyRC5CiQnLlGUeFmAZBECECphyaYrZBISoFPuTEoUwEMUk8pSl
+ TGQqEoSlPKXCiloTwlKeUKXhaEoTylKVLloShPKUpUghaEoTylKVLaWhKE8pSlwrgFoShPKUpcKaWhKE
+ 8pShwrSFoShPKRKXCtpjCUJEptyNIZAJ9qYOUwUUMS1NtRJTFJLGEoSJUS5OXhRUCnLlElODZitCcBNK
+ kCiuK4CkAogqQKa1ZrwlCUp5QWALQlCeUpSXhaEoTylKCVoShPKUpUmloShPKUpUqloShPKUpUqloShP
+ KUpKpaEoTylKKKWhKE8pSkqloShPKeUEsYShSlKUlMYShSlKUkMYShSlNKKloShSlKUlMYShSlKUlMYS
+ hPKUpJWhKFKUpQSxIUSpkqJKSVgphQlTCCWSiSnUSgpiSkExThNUyCUJBOgtWhNCdMghZKUkkkKlJKEk
+ QpkkmSTkrpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklKSSTJKXTpkgkpkouTqLklNaxVyrFir
+ lJTNitMVVitVpKTBOmCSSlJJJklKSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOkkpZ
+ JJJJS6cJk6SligWI5QLElNV6i1SeotSU2a0cIFasBJSkykmSUsnTJ0lLpJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpZJOkkpSSSSSlJJJJKUkknSUsknSSUsknTJKUkkkkpSSSSSl0kydJSkkkySl
+ 0kySSl0kydJSkkkySl0ySSSlJJJJKUkkkkpSSSSSlJk6ZJSkkkklKTpk6SlJ0ySSl0ySSSlJJJJKUnTJ
+ JKXTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kySSlJJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//V
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSYqSiUlIXIRRXIRSUsnTJ0lKSTJwkpkEkgkkpYqMJykElKAUwEgFKEFKCRKYlQLklLkqCUpwk
+ lUJiFMBM4JKRkpSmcoSktSgpFRCmAkpjCcBShKEkswUiUOUxcilkSoppThJcuAnhOAnhJTAhRIRCFEhJ
+ SNSCUJ0lMwphCBUwUlMoUSFKUxSQWBSCchMixsgU8ocp5QQzKiU0pSglZPCZOivCk6SYlFeqUyaUkVLp
+ wmCkEkLhOoymJSWlkSoFNKcaprGsAphqcBEDU1KwCkApBqeEFwWCklCRSZAxcUB5RHlAcUF4CxKQKgpA
+ IpZSmTwlCcpQThNCScGKS8piUkyLGqUkoShNKQunTJ01cpMnSSUxITQpkJoRQxhOEoTpIUnSTIoUmlIl
+ RlJTMFOoApwUUMimSlMkpSSSSSlJJJJKUkkkkpSSSSCVJJJJKUkkkkpSSSSSVJJJJKUknSSUpJJJJSkk
+ k6SlJJJJKXSSSSUpJJJJSlIKKkElKKE9GKE9JSAqTFEqbElNmtHCDWjBJSkk6ZJSydJJJSk6ZOkpSSSS
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhIpBIpKQ2Kq9WrFVekpgEdiAEdiSmy1T
+ UGqaSlJJJJKUmTpklLJJJJKUnTJ0lKSSSRUpJJJFSkkkk0qUkkkmqUkkkkpSSSSSlJJJJ4SpJJJFSkky
+ SCl08qKUoFTOU6HKcFMKmUJoTgqQCCkZCiQjkIbgkEoHGEN1kKdhhULrITwpOciE32sBZN2RCqPyipQp
+ 6H7aPFL7b5rm/tRUhklOpT0JzU32xYP2gpeuUaWu99sS+2LC9cpvXKNKd77Yl9sWD65S9coUp3vtiX2x
+ YPrlL1ylSne+2JfbFg+uUvXKVKd77Yl9sWD65S9cpUp3vtiX2xYPrlL1ylSne+2JfbFg+uU/rlKlO79r
+ S+1rC9cpeuUVO79rS+1rC9cpeuUlO79rS+1rC9cpeuUlO79rS+1rC9cpeuUlO79rS+1rC9cpeuUlO79r
+ S+1rC9cpeuUlO79rS+1rC9cpeuUlO79rT/a1g+uVIXlKlO6MtP8AagsL7QUxyiEqXPQfagn+1Bc79sS+
+ 2+aVKei+1BROUFgjMT/aiUqQ7ZylH7WsY5BUDeUaU7n2xOMxYHrlOLylSnfGWn+1rBF5UvXKFIdw5aic
+ xYhvKgbylSHcOYl9sWCbyl65RpTvfbEvtiwvXKXrlClO99sS+2LB9cpeuUqU732xP9sWD65S+0FBTvfb
+ E/2xYH2gpfaCkp3/ALYl9sCwPtBS+0FBLv8A2wJvtiwftBS+0FJTvfbEvtiwftBS+0FJTu/bE32wLCN5
+ TfaCigu+MxSGWsAXlTF5SQ7hy0xy1ieuUxvKVKdv7Yn+2LB9cpxeUaS7v2tL7UsQXlS9co0p2vtKcZKw
+ /tMJfa0qS7wyQn+0hYAzPNP9s80KU7hyQhnKWMcpQOSUaU7f2tP9sWF65TeuUKU732xL7YsH1yn9coKd
+ 37Yn+2LB9cpeuUlO99sS+2LB9cpeuUlO99sS+2LB9cpeuUkO79sS+2LC9cpeuUlO79sS+2LC9cpeuUqU
+ 7v2xL7YsL1yl65SpTu/bEvtawvXKXrlGl4d37Wl9rWF65S9cpUou79rS+1rC9cp/XKCwu59rS+2LD9cp
+ euUkO59rS+2LD9cpeuUku59sS+2LD9cpeuUlO59sS+2LD9cpvXKS4O79sS+1rC9cpxeUaQXdGWpDKWEL
+ ynGQUqYy7oyQn+0hYX2pP9rRpdF3PtAUTkhYhy1E5aVNmLuHKCb7WsI5SX2kpUtm7v2tOMpYQvKkLyhT
+ Vk7n2pL7UsT1yl65QpQdo5aicxYpvKgbykyB3PtiX2xYHrlOMgpLg7/2wJ/tgWALyn+0FJLvfbAl9sCw
+ fXKXrlJTvfbEvtiwfXKXrlJTvfbEvtiwfXKXrlJTvfbEvtiwfXKXrlJTvfbEvtiwfXKXrlJDvfbEvtiw
+ ftBS9cpId77Yn+2BYH2gpfaClSHe+2DxTHMWCcgqJyClSHf+2hP9tXP/AGgpfaCjSnoPtqicxYP2gpeu
+ UqS7v2tOMtYQvKkLynUl3BlKX2pYYvKf7QUqXO39qTfagsM5JUftaNLg74yQnGSFgDLUxlpcK53ftKY5
+ axDkqByCmELC7v2xL7YsD1yl65TVrvfbEvtiwfXKXrlFTvfbEvtiwfXKb1ykh3vtiX2xYPrlL1ykp3vt
+ iX2xYPrlL1ykp3ftiX2xYPrlL1ykh3vtiX2xYPrlL1ykp3xmJ/tawReVIXlJTufa0vtaw/XKXrlJTufa
+ 0vtaw/XKXrlJTufa0vtaw/XKXrlJTufa0vtaw/XKXrlJTufa0vtaw/XKXrlJTufa0vtaw/XKXrlJTufa
+ 0vtaw/XKXrlJLufa0/2xYPrlL1ygp3vtiX2tYX2gpvtJCSnf+1Jxkhc/9rTjM80lPQfaQn+1BYAzPNOc
+ tJTunLAUTmrBOSVA5BQQ7/21L7Yuf9cqQvKSnf8Ataf7UsMXlS9cpKdr7Wl9rWIbyom8pKd37Yl9sWCc
+ gpvtBSU7/wBsS+2LA+0FL7QUlO/9sS+2LA+0FL7QUlO/9sS+2LA+0FL7QUku/wDbEvtiwPtBS+0FBTv/
+ AGxL7YsD7QUvtBSU7/2xL7YsD7QUvtBSS7xzFA5ixDeVE3lOCC7n2xOMxYPrlSF5T6Wu99rS+1rDF5T+
+ uUqS7X2tOMtYfrlL1yhS4O8MxP8AbFgfaCl9oKFLneOYmOYsL1yl65SpLujLUhlhYH2ghN9qISpD0X2s
+ JHJC54ZikMzzSpLunJCgcsBYhy0J2UUaQ7/20J/tgXOfaSpjIKFLXoPtiX2xYPrlL1yjSHeGYpDMXPi8
+ qQvKFId/7YmOWsL1ym9cpUp3DlqP2tYhvKj65RpTvDMUhmLAF5T+uUqU7pzFE5ixDeVE3lGku79sTjMW
+ D65Ti8oUh3vtif7Z5rB9cpeuUFO99sS+2LB9cpeuUlO99sT/AGxYPrlL1ygh3vtiX2xYPrlL1ykh3vti
+ X2xYPrlL1ykp3vtgTfbFheuUvXKKnd+2JfbFg+uU/rlKkh3vtib7WsL1yl65Rpc7v2tN9rWH65TG8o0l
+ 3ftaX2pYP2kpDKRpLvfaQn+0LCGWpDLSpTufaUvtKxPtSY5KVKdo5ab7YsQ5BUDeUKQ7v21P9t81z/rl
+ IZBQpa9D9sS+1rAF5UvXKVKd77Wl9sWD9oKb7QUFzv8A2xL7YsD7QUvtBTVO/wDbAn+2LA+0FL7QUFO/
+ 9sS+2LA+0FL7QUVO/wDbPNL7Z5rA+0FL7QUkO/8AbAm+2LB+0FL7QU4BLvfbEvtiwftBS9cp1Kd77YnG
+ YFgfaCl9oKXCp6D7aFE5qwftBTHIKHCp3TmJvtiwfXKXrlIhTvjLTjLWCLyn9cpqnf8AtgS+2+awPtBS
+ +0FBLvfbfNL7asD1yl65RU7/ANsS+1hYP2gpfaSiAl3vtYS+1hYByioHLT+FT0X2oKQyJXOtzPNHrykq
+ S7wuUxasduSpjKTSp1/VTG1ZYylMXyhSm+bFE2qn6qibUVpbvqpxcs82pvWSWF0/WT+ssz10vXQpDpeu
+ m9dZpvTG9KkOn66XrrL9dL10kOr66f1lli9SFyVJdL1k/rLN9ZL1kqS6XrJess310vXSpLpesl6yzvWS
+ 9ZKkuj6yXrLO9ZL1kqU6PrJess71kvWSpTo+sl6yzvWS9ZKlOj6yXrLO9ZN6yVKdH1k3rLON6j66NLS6
+ gtTi1ZgvUxelSA6PqJ/UWd9oS+0pUzxdHen3rNGSpDISpeXQ9RN6io+umNyFNebf9VL1lmm9RN6FMbqe
+ uEvWWV9oT+ulSXTNyj6yzvXS9ZGlwdH1U/qrN9ZP6yTIHR9VL1Vneul66VJLo+ql6qzvWS9ZKmIuj6qX
+ qrO9ZL1kqWuj6qXqrO9ZL1kqXB0fVS9VZ3rJeslS50fVS9VZ3rJeslSnR9VL1Vnesl6yVJdD1UvVWd6y
+ XrJKdL1UvVWd6ycXJKdH1E4sVAXJ/WSpToCxL1FnHIUTkpcKnSNqibVmnKUftKNKdI2peqs37QnF6NKd
+ IWp/VWd6yXroUp0fWTess7103roUp0vWTess7103rpUh0/WS9ZZnrpeuhSnT9ZL1lmeul66SnT9ZL1lm
+ eun9dKlOl6yb1lm+ul66NKdL1kvWWb66Xro0p0vWS9ZZvrpeulSHS9ZSFyy/XS9dAhTq+sm9VZgvUhcm
+ IdD1UvVVH1kxuSS3/WS9dZpvQzkI0l1vXTesskZCm29GlzqixSD1nNuRBejSXQDk+9UPtATHJCFKbxsU
+ DcqDslBdkJUh0vXS9dZfrpC9KkF1fWS9ZZnrpeugtdP1kvWWZ66XroKdP1kvWWZ66XrpIdP1kvWWZ66X
+ rpKdP1kvWWZ66XrpJdP1kvWWZ66XrpJdP1kvWWX66f10VOn6yf1VmC9S9dOpDoeql6yz/WUTcjSHR9ZL
+ 11m+sm9dKkup66f11leun9dNpcHV9dRNyzPtCb10qS6RuUDaqHrpesipv+qpCxZ4tTi5JTptsRBassZC
+ X2lClOobVA2rMOUm+0yhSHQNqb1FQF8p/VRWt8WqXrLO9VN66KnS9ZN6yzTemN6VKdL1kvWWX66cXpUp
+ 1BcpesssXqXrpUl0vWTG5Z3rpvWRpLo+sl6yzvWS9ZKlOj6yf1lm+sn9ZClOj6qXqrO9ZL1kqQ6PrJeq
+ s71kvWSpDpesl6yzfWS9ZBTpesl6yzfWS9ZJTpesl6yzfWS9ZJTpesm9ZZ3rJesjSXR9ZN6qz/WTi5Kk
+ t/epB6z/AF0jkJ1JdH1Ujasw5KX2lCkuibU3qrP9dL1kqU6Hqpess71kxuSpTpeun9dZfrpeuhSHU9ZP
+ 6yyxenF6FLXT9ZL1Vm+ul66SHR9VP6qzfXS9dJTpeql6qzfXT+ugp0fVS9VZvrpeulSnS9VL1Vm+ul66
+ VKdL1UvVWb66XrpUp0vVS9VZvrpeulSnS9VL1Vm+ul66VKdL1UvVWd66XrpUl0fWT+uFlm9R+0JUp1vW
+ CXqrKGQiC9Kkuh6ib1FRN6gchFTo+ql6izPtKX2lJTp+qm9VZ4yE/rIqb/rJeus43KJvQS6gvTi5ZPrq
+ QyEKU6vrBL1VmC9P66VKdH1UvWWd66b10aU6XrJess310vXQpTpesl6yzfXS9dJjLpesl6yzfXS9dBY6
+ XrJess3103roLw6frJess310vXSXB0vWS9ZZvrpeukudL1kvWWb66XrpynR9VIWrP9ZL1kWIukLU/rLN
+ 9dMb0KQ6JuTess03pvXRpcHUFymLVlC9SGQlS4Op6qRtWZ9pTfakqZA6JsUTYs/7Sl66Si3/AFE/qqh6
+ yib0mMul64S9cLJOQmGQm0h1/WS9VZYvUhekp0vVS9VZ3rpvXSS6Xqpeqs310vXRQ6Xqpeqs310vXRpT
+ peql6qzfXS9dKlOl6qXqrN9dL10qU6Xqpeqs310vXQU6Xqpeqs310vXSU6Xqpeqsz104vQU6fqpeqs31
+ k/rpKdH1kjas310vXSU6BtTeqqHrpesilv8AqqQtWd6yXro0l0xapC1ZP2lL7UlSnX9VN6iyxlKQyUeF
+ LomxQNqo+uom9KkN/wBZN6yzjcl6yCHS9ZL1lm+sl66SHS9ZL1lm+sl6ySnS9ZN6qzvWS9ZFTo+ql6qz
+ vWS9ZJTo+ql6qzvWS9ZJTo+ql6qzvWS9ZJTpeql6qzvWS9dJToeqm9ZZ5vUTekp0vWT+usv10/rpKdP1
+ 0/rrL9dL10qS6nrp/WWV66cXoUp1fWS9VZgvTi9KkugbE29Uhcn9VFTdFikLVnm+FE5MJKdI2qJtWYcp
+ N9pRAQ6JtTeqs/7Qn9ZOpToC1SFyzfWTG9AhTqeumN6yjkKJyE2lOqb0vXWV66cXpKdQXKQuWWL04vSU
+ 6nrJess310vXSpTpeqm9VZvrpeukp0/WS9ZZnrpeulSnT9ZL1lmeul66VKdL1kvWWb66Xro0p0vWS9ZZ
+ vrpeulSnT9ZL1lmeul66FKdP1kvWWZ66XrpUp0/WS9ZZnrpeuhSnT9ZMbVm+ul66Kg6Pqpxas71032hG
+ l4dUWp/VCyftSX2pClOqbU3qrMGSpeuhS10fVS9VZ3rpeukh0fVT+ssz10vtCah0/WT+ssv7Ql9oQQ6Z
+ uUTcs03pjekp0fXS9dZnrpeukl1Ben9dZXrp/XRS6nrpessv10vXRS6nrJ/WWV66f10qU6nrJessv10v
+ XSpTqesl6yy/XS9dJDqesl6yy/tCX2hBDqeul6yy/XS9dJTpm9Mb1mG9QN6ICnV9dN6yyxepi5PpTpeq
+ n9RZ4vT+uizQb+9NvVD7Ql9oSZ6b/qJ/VWd9oTfaEGOTp+sl6yy/tCXroUwF0/WTess3103rpUxl0/WT
+ i5ZfrKQuSpa6frJess3103rpUvDqesl6yy/XS9dClzp+sl6yzPXS9dKkF0/WS9ZZnrpeulSHT9ZL1lme
+ ul66VJDp+sl6yy/XT+ukudP1kvWWZ66XrpLS6nrJjcsz10vXSpYXRNyb1lneum9ZNKHTF6mL1k+ul9oQ
+ Q7HrpG9ZH2hOMhJLpm5RNqoC9L1k4Lg3/UT71nevCQyE5twDo71Les8ZCc5CK8jRv+om9VZzslQOSg1J
+ up6yXrLK+0J/XQpiDqesl6yy/XS9dBeHU9ZL1ll+ul66S51PXS9dZfrpfaEEup66XrrL+0JfaElOp66X
+ rLL+0Jeukp1PWS9ZZf2hL7Qip1PWS9ZZf2hL7Qip1PWS9dZf2hL10EOp66XrrL9dN66ap1fXS9dZXrpe
+ ukp1fXS9dZXrpeuih1fXS9dZXrpeukp1fXS9dZXrpeukp1fXS9dZXrpeukp1fXS9dZXrpeukp1fXTi5Z
+ P2hOMlJc6/qpvUWWMlTbkSgl0g9EaVQZbKtVvlBLYTFJpUiEFIiE4UiE0IIUEpTqJQQqUkySCF08JJ0E
+ LQknSRClkkkk5KkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0klKSSTpKUouU1BySmtYq5Vi
+ xVykpmxWq1VYrVaSkwSSCcpKWSSTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkk
+ lKTJ0ySl06ZOkpYoFiOUCxJTVemanemakpsVqwFXrVgJKXTJ0ySlk6ZOkpdJMnSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6ZJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/
+ 1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmSSUumKdRKSkTkIorkIpKWTqKdJSkkkklMgnTBJJSxSCRTJKZgqW5DCSalclDJTlQJStcAyCm1B3
+ wnFqVrxFshM5BFqf1JStJis4KEKe6UgkxkKaEUBRAUwElUpRKkVEpKpgVAohUSEk0xCmFGEphFNJQU8o
+ O9PvSTTMlJQlKUkUzTFNuSlJNLSnDkxUC6Ek8KcOTyqosRGvlJbIJioFSGqRCLCUZTSnITIKXlKUyYlB
+ TOU4KFuThyLIAlTFRBTpzIAsnCUJQiqmQTqITpIpRUCVMqBCCwhZTaoAKYQLGlaiAoIdCXqJhTTZBTqs
+ LVMWoWuATKJKh6igbQhbIAycUFwTOtCGbQlbKAzhTDUEWhEFgRBUQl2piFH1AmNgTgimRCZRNgTb04Mc
+ gyShRDlIFOYqXhPtThSTCuARwmhTKgSmppdJRBUgUUUqExUkxSRTFJIpIoUmSSRQsVFSTQkhScJQnRQp
+ JJJJSkkkkkKSSSSUpJJJJKkkkkEqSSSSUpJJJJSkkkkkqTpkklLpJkklLpJJJKUnTJJKXSSSSUukmSSU
+ ukkmSUupBRCkElMigvRkJ6SkBU2KJUmJKbNaOEGtGCSl0ycpklLJJ0klKSSSSUukkkkpZMnSSUskkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcJFIJFJSGxVXq1Yqr0lMAjsQAjsSU2Wqag1TSUpJJJJSky
+ dMkpZJJJJSk6ZOkpSSSSKlJJJIqUkkkmlSkkkk1SkkkklKSSSSUpJJJPCVJJJIqWSSSCSlJQpAJ4TSpg
+ knIUUwqZAqYKGCpAoKSShuKeUN5RS17iszIctC4rLySnhTm3uVQyVYtOqgxslTBSzKiVZZjkqzjUArUq
+ xQQnKcX7MUvs5W/9kCicUIWtcL7OUvs5W79lCX2UJWpwvs5S+zlbv2UJfZQlanC+zlL7OVu/ZQl9lCVq
+ cL7OUvs5W79lCX2UJWpwvs5S+zlbv2UJfZQlanC+zlL7OVu/ZQl9lCVqcL7OUvs5W79lCX2UJWpw/s5S
+ +zlbn2UJfZQlanD+zlL7OVufZQl9lCVqcP7OUvs5W59lCX2UJWpw/s5S+zlbn2UJfZQlanD+zlL7OVuf
+ ZQl9lCVqcP7OUvs5W59lCX2UJWpw/s5S+zlbn2UJ/soStThfZynNBW39lCZ2MEQpwH1kKpaSFvX0QsfK
+ ZCeuc59xCH9oQ7zCq7tUVOnXdKu1EuWVQZK2sRkoISsqJU/s5WjRjyFbGKEFOF9mKcYxW79lCX2UIWhw
+ /QKXoFbRxgm+zBK1OKaCmOOVt/ZgnGKErQ4X2YpfZyt37KEvsgQtThfZyl9nK3PsoS+yhC1OF9nKf7OV
+ ufZQl9lCVqcP7OUvs5W59lCb7KELU4n2cpfZytv7KE/2UJWpw/s5S+zlbn2UJfZQhaXD+zlL7OVufZQl
+ 9lCVqcP7OUvs5W59lCX2UJWpwjjlN9nK3fsoTHFCSC4goKcUlbP2VL7MnIcf0Sm9ArZ+zJDGRU432cpx
+ jlbQxQpDFCKXFFBUXVELdOMFVux4RtThWy1U33QtLKrhY2Rokpn9pU23ys0v1R6jKSXSY8lHa0lV6BK1
+ KKpSUgFJKmMcrTqx5VgYoQU4n2cpfZyt77KE32UJqnC+zlL7OVufZQl9lCCnD+zlL7OVufZQl9lCSnD+
+ zlL7OVufZQl9lCSHD+zlL7OVufZQl9lCKnD+zlL7OVufZQl9lCKnD+zlL7OVufZQl9lCSnE+zlL7OVuf
+ ZQn+yhK14cP7OUvs5W59lCb7KEFFxPs5S+zlbf2UJfZQkscT7OUvs5W39lCX2UIIcT7OUvs5W39lCX2U
+ JWlxPs5S+zlbf2UJfZQlanE+zlN9nK3PsoT/AGUIrnD+zlOMcrb+yhP9lCNoLhGghCewhb78YLPyKYRt
+ jLjvcQgOuhWMhsLOtMIropvXSF0qnKKxJtRbjXEqwxpKDQyVqY9MpLJom0kogoK0qsaUcYybbVLjeiU3
+ olbJxk32ZBQcc0FQOOVufZk/2UIMocH7MUvsxW99kCX2QIWucL7OUvs5W59lCX2UJWpw/s5S+zlbn2UJ
+ fZQlanD+zlL7OVufZQl9lCVqcP7OUvs5W59lCX2UJWpw/s5S+zlbn2UJfZQlanD+zlL7OVufZQl9lCVo
+ cP7OUvs5W59lCX2UI2hw/s5TfZyt37KE32UJIcI45TfZyt77KE32QIocH7OU/wBnK3fsgS+yhFTh/Zyl
+ 9nK3fsoS+yhOS4Yxyn9Arb+yhMcYIrqcQ1EIT2kLZsx4VK6qEUuU8kIDrCFbuZCoWiEVwX9ZEZdKouKJ
+ UZKK50q3FyssqLkHFZK2sfHlRSWFoDGKRxit1uIEjiBR2tcH7OU32crd+yhL7KErU4X2cpfZytz7KEvs
+ oStDh/Zyl9nK3PsoS+yhK1OF9nKX2crd+yhL7KErU4X2cpfZyt37KEvsoStDg/Zyn+zlbn2UJ/soStTh
+ jHKf0Ctv7KEvswStTi+gUvQK2vswS+zBK1OL6BS9Ara+zBL7MErU4voFL0Ctr7MEvswStTi+gUvQK2vs
+ wS+zBK1OL6BS9Ara+zBL7MErU4voFL0Ctr7MEvswStTi+gUvQK2vswS+zJWlxPQKXoFbX2YJxjBOS4Zo
+ IVexhauhfjBZuTTCSnEseWoByIRsoQsqx0FJToNyZVmuwuWPU6StXFEpKbzGFyMMYlWcWmVqVYwKCHE+
+ ylL7MQugOIEN2KElOH6JT+kVrnGTfZ0kOT6JS9ArXGMpfZgkpxPs5S+zlbn2UJfZQkpw/s5S+zlbn2UJ
+ fZQkpw/s5S+zlbn2UJfZQgpw/s5S+zlbn2UJfZQkpw/s5S+zlbn2UJfZQglw/s5S+zlbn2UJfZQipw/s
+ 5S+zlbn2UJfZQgpw/s5S+zFboxQpDECcEFwfsxS+zFb/ANlCicUJ1ocL0Cl6BW0cYJfZkbS4voFL0Ctr
+ 7KEvsqFrg4voFL7OVt/ZQnGKErS4gxynOOVuDFCTsUJWl519JCq2AhdBfjwsfKrhJTnOsIUReh3GFXDk
+ lN8WyiNBcq1Oq0seuUkFg2klGbQVoVY4KtsxgkhyBjlL7OVtjFCf7KEkOH9nKf0Ctv7KEvsoRQ4voFP9
+ nK2hihP9lCCnDOOVH7OVvfZQmOKErU4X2cp/s5W39lCX2UJWpxPs5TfZytz7KEvsoStTh/Zyl9nK3Pso
+ S+yhAlLifZyl9nK3PsoS+yhC1OH9nKX2crc+yhL7KELQ4n2cpfZytz7KEvsoQtDh/Zyl9nK3PsoS+yhK
+ 0OH9nKX2crc+yhL7KErU4f2cpfZytz7KEvsoRtTh/Zyl9nK3PsoS+yhOBXOH9nKX2crb+yhOMUIgpcM0
+ FDdSQt84oVe3GhOtLgvYQq7nELVvphZlzYRShNsJC5AeogoqbrbZRmElU6tVo47JSUybUSiDGJV+iiVe
+ ZigppQ4RxSm+zFdF9kCgcQIWhwPs5T+gVuHFCj9lCSnF9Apvs5W39lCf7KEwlLh/Zyn+zlbf2UJfZQmW
+ pxPs5S+zlbn2UJfZQhanE+zlL7OVt/ZQl9lCVocT7OUvs5W39lCX2UI2pxPs5S+zlbf2UJfZQngqcT7O
+ U32crc+yhL7KFICpxPs5S+zlbf2UKQxQlanD+zFN9mK3/soS+yhK0vP/AGYpfZyt44oUfsoQKnD+zlL7
+ OVt/ZQn+yhRlTifZyl9mK3BihSGKEkuD9mKf7MVvDECRxAip5845CE6ohdA/FCqW48J4U4VgIVV7yFq3
+ 1Qsu9sKUJRC6EevIVF2iTXwgUh125Kf7Usv1FA2lRpdlmTKt1XSsGqwkrUxjKSC6bXykSlWyUU1pLS1i
+ 5R3Izq1H0klpR7inkqYqUhUgtRSVEko5qTGpJCCSnBKL6ScVJIRglPJRfSTekklHuKW5E9JN6RSSw3FP
+ uKn6SXpFJLDcluU/SKXpJJYbiluKJ6SXpJKYbim3FE9JL00lI9xS3FE9NL00lI9yW4onpJemlaERJTSU
+ b0k3pI2hEHJG2FM1qva0hFaFn5MIDsyFWvcQqFlpCDPF1xmozMuVzwuKt02EpMhd1l8ooslZ1BJV6thK
+ DXmyLlAuKP6aiakmJDuKfcUX0kvSQXI9yfcUT0kvSSSEe4pbiiekm9NJlDDcUtxU/TS9NJJYbiluKn6a
+ XppMRYbiluKn6aXppLWG4pbip+ml6aK4MNxS3FT9NL00lzDcUtyn6aXppKYbin3FS9NOKkksJSkooqSN
+ SCkO5SD1I1pvTKSlb1E2wnLCgWAhFCn5EID8pAtJCpWWFOU6By0hlSsj1SiseSkp2G3yjNtWbUSVdraS
+ kpsB6lvUWsKIK0lMNybcUX003pIKRbiluKIak3pFNUw3FLcVP0il6RSUw3JbkT0yl6ZQUj3Jbiiekl6S
+ Ske5LcVP0il6RRUw3FLciekl6ZRtCPcluU/SS9Io2phuTbiiekUvSQKmAcVMPSFSkKyhSFw9MXKQrT+m
+ lSUDnFDJKsmpRNSdSUAJRASiClS9JGko/UhDdkwla0hZl7yEaS3XZsKBzliW3kIYvMpUp6AZcqYtlY1N
+ hK06ASlSmyHFSkqTKpRPSQIQUO4pbii+km9IptLUe4pbiiekl6SFKR7iluKJ6SXpJUhHuKW4onpJeklS
+ ke4pbiiekl6SVJR7iluKJ6SXpFGko9xS3FE9IpekUqUwDyn3qXplL0yitK29NvKl6ZTispWhhuKUlFFS
+ f0kLSgkpbijekmNSS5DuKbcUU1JvSSSw3FLep+kUxrKCWJshQN0J3sKq2ghJSV2TCGctUbXkKq60pIdX
+ 7WiMyZWK2wq1S4lJDsMtlGD1TpaSrjaykhRehmxFNZQjWUlMTYVE2FT9MpvSKSGG8qQeUvSKkKiilcPK
+ mHFJtRRBUUlMNyW5T9NL00bSw3JSUT00vTStSPcluU/SS9JBTDcluKn6SXpJKYbktxU/SS9JBDDcluU/
+ TS9NBTDcluKn6SXpJKYbktyn6SXppKYbiluUxUpekilFuUDbCM6tVbWkIpU7IhBdlqtc4hUn2lFLp/a1
+ NuTKxhaVYqeSip123Sih8qlTJV6tkpJXlMSjCpI1JIa5JTSUY1JekghFuKfcUT0kjUghHvKbepmsqJrK
+ ahbenDym9MqQrKKlbyluKkK0/po0phuS3FT9NL00qUw3FLcVP00vTSpTDeUtxU/TS9NKlMNxS3FT9NL0
+ 0qUw3FLcVP00vTRpTDeluKn6aXppUlEXFQLijGpR9JKlMA4ogfCcVJnVkJUlG+6FWflQnvBCyr3kJUpu
+ nNTtzJWG60qddpKVKehZkyrDLZWNQ4lalAJSpTZ3KJJRW1pzUlSmvJS3FG9JN6SVKYBxT7ip+mn9NGlM
+ NxTblP003poUlhvKW4qfplL00KQw3FLeVP00vTSpYWG9LeVP00vTQpYw3pb1P0yl6aFLww3lLcVP0kvS
+ SpcGG4pbyp+kl6SVJYbylvKn6SXplGlLb0t6l6aY1p1MZYl6beVI1lN6aNIY7iluKJ6SY1o0kMDZCG6+
+ FJ7CFTukJUvCR2VCGcxZ9ryFXNpQpeHaGXKMzIlYVdhKv0ElCkl1W2SnLiUKlpKtCpKmItdxKhJVo0qB
+ pQpSMOKmHqXpJemUKUx3pt5U/TKXpFKksNxS3lT9MpemUaQw3lLcVP0yl6ZRpTHeUtxUvSKXpFKlMdxT
+ byp+kUvTSpTDcUt6n6aXplKlMNxS3FT9MpxUhSmAcVIEqYqUhUhSkclMXIvpKJrSpSIvTbypmtN6aVKW
+ Dyn3pCsqXplGksC9CdbCI9hVS0EJ1KXdkQhnKVW1xCrOsKcAl1BlIrcmVitsKs1PJRpTrtvlSFkqnVJV
+ pjCUySme4pblMVKXpKK0ItxS3FENSb0krQw3FLcVP0kvSStTDcUtxU/SS9JK1MNxS3FT9JL0krUw3FLc
+ VP0kvSStTDcUtxU/SS9JK1MNxTbyp+kUxrKVqYF5Ud5UzWU3pFG1MdxT7ipioqYqStSKSmko/opvSStS
+ HcUtxRfSS9JK0o95Ug8pzUUwrKVpZh6RsSFZUHsKVqR2XwqtmXCbIkLLvsIStTeOanbmSsN1xlTrtJTw
+ UO+zJlWG2ysihxK0qmkpymxvUS8qYrKRqKCkJeU24ovpFIVJqmAJUgSiCpSFSCkYKfciekm9NBTDeUxe
+ VPYolhSUwNhTeoU5YVH0ykpcWFPvKQrKkKiipbeUt6l6RS9MoqY7ylvKf0il6RRtS28pbyn9IpekUrUt
+ vKXqFP6RT+mUFMN5S3lS9IpekUFLbylvKf0in9IoWpjvKb1FM1FDewhEKCxuhBdkwoWSFSteQpAF4bhy
+ khlLKNhUmPKNKdhmRKO26Vl1ElXq2kptLW0LEt6ZrCpemUKQwNhS3lOaym9MptIVvKW8qQrKXplKkMd5
+ Tbyp+mUvTKFKR7iluKJ6aXpI0lhuKW4onpJ/SRpKLcU+4onpJekjSUe4pbiiekl6SVKR7iluKL6SXpJU
+ pHuKW4onpJekhSEe4pbiiekl6SFIRbiluKL6SXpFKlIS4qJJR/SS9FIBSAEqYfCJ6Ki6ohOSAjN0IL8m
+ ErgQs295CTPAN05iX2xYr7TKYXFJsO4MuVMZErGZaSrNbiUmKbpi6UQPlVKgSrdbJSaxZAlPJRG1KfpJ
+ LCEIJTyi+kl6SC2kW4qJcUb0kxqSXAIdxS3FF9JL0kl9ItxS3FF9JL0kEFFuKW4ovpJekktRbiluKL6S
+ XpJLgi3FLcUX0kvSSSi3FLcUX0kvSSWlFuKfcUT0kvSSWo5KeSiipP6SaUICSoklWDUompBCDcVIOKn6
+ SkKk6ksQ4pOfCL6SDawgIr4tezIhAOXCDkkhZtlpBRbcHabmKf2tYLbiii0o0yS2dY5aiMmVleqUatxK
+ TSm6zLZRg4qpQJV9lcoMQYElMXFHNSgakF4RbiluKL6SXpIUuRbiluKL6SXpFKkotxS3FF9IpekUqUi3
+ FLcUX0il6SVKRbiluKL6SXpJKRbiluKL6SXpIoRbiluKL6SXpJKRbiluKN6SXpJikO4pbijekl6SSEO4
+ pbijekl6SSEO4pbijekl6SSkO4pSUb0kvSRUhkpSUb0kvSSUhkp5KKKVL0UlNYuIQnWwrVlULOvEJLkn
+ 2iEWvIlZL7IKnVbqgl6Gm6VpUvlYGM+VsY7kEuowoqr1lWAgpYhMpJk1SxUCplRKC1ikkUyCGQKeVFKU
+ kM5SUZTohSkkkkUqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJk6SlJk6SSlJJJJKXUXKSi5JTWsVY
+ qzYq5SUyYrdaqsVqtJSYJFIJFJSySSSSlkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp
+ JJJKUmTpklLp0ydJSxQLEcoFiSmq9M1O9M1JTZrRwgVo7UlLplJRSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKTpkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9fr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkp
+ SdMnSUuolSUSkpC5CKK5CKSlk6ZOkpSSZOkpcJ0wTpKYlIJFNKRUzCRQ98KJtTCuAZOKA96Z9qA98pLw
+ F3WIZuUHaqBaUmUBMLlMXKqGlSAISSQ3W2ozHqg10IrbEmIh0GuU5VNtqKLEkUnJUSVHemJSTS5KaVEu
+ Tbkk0yJQnOhOXqvY9FNMjanFiqOembYkqnRD05cqjLETfKSqS71NplVwUVhSVSYqva6EYu0VO96K+kZt
+ 1R6rJWe52qPQUlkg69ZlEIQKSrCTXKFwUYRXBRhJFMIQ3IxCE4JqURKQcouQy6EWSLZD0QFUw9GY9ODK
+ A2AnUGuRAipSSSSKlJQnClCDHII4SOiJCG5NLEwc+EF1sJWFVHuTClsC5TFyoByI0pq4N31kN1yEhPlB
+ miGbr0I5CE8FCIKTNTaGQiDIVEAqYBRCKbv2hL11Ugp4KeCim166mLZVMSisBTwxSbjXyjNcqtYVlgRY
+ kwKcuUJhDe+E0pDNz0M2Ku+1CNqYluh6I1yoMsVlj0VNmUioAqSKFkk6UIrVkylCaEULJlJMktUkklKK
+ FJJJJIUkkkkpSSSSSlJJJJJUkkkglSSSSSlJJJJKUkkkklSSSSSlJJJJKUkkkkpdJJJJSkkkklLpJJJK
+ UkkmSUuFMKCmElMkN6IhvSUgKmxQKkxJTaYjBBYjBJS5TJymSUpJJMkpdJJJJS6SZJJSkkkySlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXCRSCRSUhsVV6tWKq9JTAI7EAI7ElNlqmoNU0lKSSSSUpMn
+ TJKWSSSSUpOmTpKUkkkipSSSSKlJJJJpUpJJJNUpJJJJSkkkklKSSSTwlSSSSKlk4TJBJTMJ0wUigVMC
+ hkqblAphUpSCiFMJql0N6LCG9EJaVxWTlOWtesbLKkCnMtfqlS/VAuOqVB1UoU9DhmVuUjRYGCeFv0cI
+ lSfaoFqIolMC0sNqW1SSRtTHaltUkkrUx2pbVJJK1MdqW1SSStTHaltUkkrUx2pbVJJK1MdqW1SSStTH
+ altUkkrUx2pbVJJK1MdqW1SSStTHaltUkkrUx2pbVJJK1MdqW1SSStTHan2p06VqY7UN4RUN6IU5+SFg
+ 5ndb2SsHM7qULnByeVS7q7k8qn3RU3cXldDhDhYGLyuiweyCHdxm6K60Kpj8K4FHIqWIShIlIJqli1Nt
+ U0yVoY7U4anTpWhbaltUkkrUw2pbVNMlamO1LapJJKY7U21SSSUx2pbVJMgpbaltTp0ksdqW1SSSUx2p
+ 9qdJBS21NsUk6KGGxNsREoRQi2J9iJCUI2phtThqdIJWlRaqt7NFdhV7hokCp53NZyufym6rp81vK57L
+ bqnqckjVHpCi5uqNSEkuljBbOMFkYwWzjBJTpUtVtrVWpCttTSUr7Uxappim2phtS2qSSSGO1LapJJKY
+ 7UtqkkkpjtS2qSSVqY7UtqkklaGO1LapJJWljtS2qSSS4MdqW1SSSUx2pbVJJK1hY7UtqkkkhbaltTpJ
+ JW2pbU6SSltqW1OkkuW2p9qQTpKKGxqzcpq1LFm5ITgxFwcpqyrWrZyQsu1qcui09qNW1LaisCTai3Mc
+ LZxWrJxwtnFCBK2bp0sVkMQqQrICYS1ShLEtiKQlCFpCPYltRITFK2QMNqW1OkkljtS2qSeElMNqW1Sh
+ JJTHaltUkklMdqW1SSSUx2pbVJJJTHaltUkkkMdqW1SSSQx2pbVNJFDDYm2okJiErQj2pbVIhMjaVtqW
+ 1OnRSttUXNRAEzggCuadrVnXhaloWbkBSApcjICzLlqZCzLk+1wabkSkaqLhqi0jVK1zsYQXRYjdAsDC
+ C6HF4UUmMugxuiTmp2cJOUS1FtS2qSSKmO1LapJJIY7UtqkkkpjtS2qSSSmO1LapJJIY7UtqkkkpjtTb
+ VNKElMNqW1ThKElMNqW1ThKElMNqW1ThKElMNqW1ThKElMNqW1ThKElMNqWxThKElMNqW1ThKEkoy1La
+ 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
+ ND0E/oK/6af00LS53oJegtH00vTStLn+gl6C0PTS9NHiS5/oJegtD00vTCFqc/0EvQWh6aXphK0Of6CX
+ oLQ9NL00rQ5/oJegtD00vTCVoaHoJfZ1oCtS9NC1Od9nQ3461vTCHZWEgVwedyaIWLlVwupymDVYGW1P
+ Z4ODY3VQa1WrRqhtCTYZ1tV2piDUFepakxTbNFa0KqkGhq0qWJNYrMpRPQVpjEQMTSWMtH0E3oK/sTbE
+ LQ0PQS9BX9if00rXBz/QS9BaHppemErXuf6CXoLQ9MJemErQXP8AQS9BaHppemla1z/QS9BaHppemla4
+ Of6CXoLQ9NL00rS5/oJegtD00vTStaXP9BL0Foemn9NK1rQFCf0FfDAn2BC0OcaFE0LSLFEsSQ5voKTa
+ Fe9NSbWilp/Z1WyKNFtemIVXJr0QBXxeRzaolYdzdV0+e3lc/eNU8NuDVaEYNUWhHATl8tkYarNDNUMB
+ WscaoNObp4tUrWqo0VPDbwtqlmiBYg1vQUDQtP01E1ptrw53oJegtD00vTCVrnP9BL0Foeml6aSnP9BL
+ 0Foeml6aSnP9BL0Foeml6aSnP9BL0Foeml6aSnP9BL0FobEvTCNqc/0EvQWh6aXphC1ND0EvQWgGBPsC
+ CHO9BL0Fo7AlsCCHO9BL0Fo7AlsCKHO9BL0Fo7AlsCSnP9BL0FobAlsCSnP9BL0FobAlsCSmgMdT+zq6
+ GBT2BAlLj30aLEy64ldXkM0XP5zOUUvN2iCnqOqLezVQqbqgl1cVbWMsfFatrHCCXQrVgIFYRwgpRKUp
+ imQUuolOmQWrFMpJIIYplKEoQQxUgmhOiFLpJJIpUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0l
+ KSSTJKXSSSSUuouUlBySmvYq5VixVikpIxWq1UYrdaSkwSTBOkpZJJJJSkydJJSySSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSl0kkklKTJJJKXTpk6SligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSl0ydMkpZ
+ JOmSUpJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSn/0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6iVJRKSkLkIorkIpKWSSSSUpJJJJTIJ0wTpKWKE8wilBekVB
+ A98Ku61EsCqvCjLLEMjbKQdKDCIxBmATNbKIK1BhRw4JWzCKP0lFzIRi8IL3hJXChcYUN8JPcgkpMRDZ
+ bajssVBpVmtFFN5r5U5QWIoCSaWJQy5TcEF6SqU56A96T3IDnpJpTio7lEuSGqKqTMerDDKrMarNYSVS
+ doROFBpUiUUgMHvVO10qy8Kq8JLwEMSVZpCAFZqCSyYb9JVkFVqgrQCTVkFEJoTlNKCKYkIbgjJiEFNN
+ 7VVeYV+xqoXCEQvii3wiMsVR7oSZYnBmAdWt6sNMrNqsV6p0oqpsBKE4TooWCcJkpQK2QXKG9TlQcmlh
+ LUtVR6u2hUrEwqRhHYFXDketyZa4NgNUHMUg9Rc9C2eAROYoempmxNvCDPSwqUhUnDwph4RBVTH0k3pI
+ m9PuUgRSMVojWJwVNpTwwzCRjEcNQ2FFBT2Fg/RVLXQrTyqVyYUtS2xA9RStVclNU3K3q7U5ZlRWhSip
+ vMKmEJiKEVrIJ0wTorSsmKdMkhZMVJNCK1iUykQmhFapOmTooXTJ0ySlJJJIKUkkkkpSSSSSVJJJIJUk
+ kkgpSSSSSVJJ0kVLJJ0klKSSTpKWSTpJKWSTpJKUkkkkpSZOkkpSmFAKYSUyQnohQnpKRFSYoFSYkpts
+ RggMRgkpcpJJklKSSSSUpJJJJS6SZJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEi
+ kEikpDYqr1asVV6SmAR2IAR2JKbLVNQappKUkkkkpSZOmSUskkkkpSdMnSUpJJJEKUkkkipSSSSYVKSS
+ STVKSSSRUpJJJJSkkkk8JUmTpk5SxSBTFIIKSAqSGCpoKYuUCiFQhMKlgERoUQFMIKXKE9FKC8ohLTvW
+ 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
+ kpZJOkkpZJOkkpZJOkkpZJOkkpZJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk
+ 6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKUolSUSkpC5CKK5CKSlkkk6SlkkkklMg
+ nTBOkpYoT0UoLykVBA8Ku9qM8oDioizxCMtSAhSTQg2IhcOhObIQyhOKTOIpjahOtlBc5RBSSYpS6Uol
+ M0SihqTAQsxqs1hDARWorabDEYKu0ozSkml3BAeFYJQLEVU1LFVeVZtVR6CaWBRmCUAKzUEVU2K2I4bC
+ asIsJIphMKQKiUgikBdwVWwK0Sq1hSZAGv3VmlVzyrFJSWTDpUhWAq1TkcOSacgolRlIlMkimQUlAKUp
+ qkdgWdeFoWOVC7VEL4ubahA6qxa1B2pwZwGzS5aFLlmV6K9U5OVTpMKmq7Hou5FFLlRlIlRKBWSZApyo
+ BTTCwkNe0LPuWlas64JhSGtOqKxyDGqKwJhXBNu0Q3vRNqE9qDPAIi9MHpyxIMQZ6XD1MPUQxSDU4Kpm
+ HqYcoBqI1qeEUzBRWlQa1Ga1SBgmGTSiAqAapAJzDS51QLGSrICZzE0ppybq1Tcxa1zFQsbqmqYVBaFI
+ VOsK/SEkNlgREzQpJyFSlKZNKK0spTSopwUlrJPCYKQRWlaExCJCYhFBRwmUyFEorVkkkklKSSSQUpJJ
+ JJSkkkkkqSSSQSpJJJBSkkkkkrp0ydFSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpQUgoqQSUuUJ6KU
+ F6SkJU2KBUmJKbdaMECtGCSmSZJMkpSSSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklLhIpBIpKQ2Kq9WrFVekpgEdiAEdiSmy1TUGqaSlJJJJKUmTpklLJJJJKUnTJ0lKSSSRU
+ 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
+ vtZQpIdz7QEvtAWH9rKX2spUudz7QEvtAWH9rKX2spUsLu/aAm+0BYf2spfaylS13PtATfaAsT7WU32o
+ pKdz7QE/2gLC+1lN9rKSne+0BSbkBYH2sqQyyip6A5AhVMi8ELN+1lBsyCUV8UOY+ZWJdqVo3vLlQe2U
+ 5twa4CMEwYp7Ul8tl2q7jmFRAhGqcQk0sj0WLYAtaq8QuXpvIV1mUQkxh3zkBDOQFjHLKgcspq4O19oC
+ f7QFhfain+1lJc7n2gJfaAsP7UUvtRQU7n2gJfaAsP7UUvtRSU7n2gJfaAsP7UUvtRSU7n2gJfaAsP7W
+ UvtRRU7n2gJfaAsP7WUvtZRQ7n2gJfaAsP7WUvtRSU7n2gJfaAsP7WUvtZQU7n2gJfaAsP7WUvtRQU7n
+ 2gJfaAsP7UUvtRRQ7n2gJfaAsP7UUvtRSU7n2gJfaAsP7UUvtRSU7n2gJfaAsP7UUvtRSU7oyAp/aAsA
+ ZZT/AGspUp1r7xCw8y2ZUrMolZ99hckuadzpKVR1TOYSUWqsygl1MQraxisfGZC2McIJdKs6I6r1o4TS
+ pRUYUimSQxITKSYoIYpSkUyCGUpSoymlBDOUpUJUgkpdJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkk6ZJSkydJJSydMnSUuouUlFySmtYq5VixVykpmxWmKqxWmJKTBJIJJKWSTpklKSTpklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpwmThJSigWI5QLElNV6Zqd6ZqSmzWrAVetWGp
+ KXTJ0ySlkkk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSZJJS6SZJJS6SZJJS6SZ
+ JJS6SZJJS6SZJJS6SZJJS6ZJOkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSl1AqaiUlIXIJRnIRSUxTpk6SlkkkklMgnTJ0lLF
+ BejFCcEioNSwIBCuOahFihLag14TwiFqYhNbUULggvCskITmotiNNUhMAjFqYNSSWTAjtCgxqM0JNeQU
+ GqYapAKYCKxiAitSDVMBJSyFYjFAsRSGnaVUeVbtCqvCCWIKs1FVQj1lFToVuRpVSso4KSGRUZSJUSUU
+ hTnKvY5TeVWe5JlAUSi1vhVS5TY5JZN1KrFZa9Zlb1bY5JpSbYMqQCEwowSWLFDc6ERxVS16agqfYq7z
+ Ki56YGUgvijcyUM1K6GSkak8NkNMNhGYYUnMhQOicptMejtdKoNcrFb0VNsapQmYVNBikxAUkkxKYWEo
+ rSqNolXLCqr1GVBrBiMxiQCsMCYuC2xCexW4QXoNiDVLEg1EKgSgzhUJkznIRenBScFEaVUFiKx6kCm8
+ xHaFUrerTHKQME0m1KE4KdOYF2hJw0ThReU0pal6zbDqr2Q5Z1jtU1TOs6rQpWZUdVpUFFDcapEJmqRR
+ WlhCYqSYorSxSCRSRWsgiBCCmCnLSzTEppUSUVq5USlKZJapJJJJSkkkklKSSSSUpJJJBKkkkkEqSSSQ
+ UpJJJJS6dMlKKV0k0pJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXlSCgpBJTIoT0UoT0lICpsUCpsSU2q
+ 0YINaOElKTJ0ySlJJJJKXSSSSUukkkkpZJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4S
+ KQSKSkNiqvVqxVXpKYBHYgBHYkpstU1BqmkpSSSSSlJk6ZJSySSSSlJ0ydJSkkkkVKSSSRUpJMnTCpZJ
+ JJNUukkkipSSSSSlJJJJ4SpJJJOUqEoTpJKYlMVIqBSUqU4TJwoypmFMIYUgUEsyhPCnKg5EKaVzVl5F
+ crae2VUsplSBTzd9BVN1BXTPxJQjgz2UwU86KXBFaxy3P2f5JxgeSJKnEDXJ9rlt/YEvsCYtcXa5Ntct
+ v7Al9gSQ4m1yW1y2/sCX2BJLibXJbXLb+wJfYElOJtcltctv7Al9gSU4m1yW1y2/sCX2BJTibXJbXLb+
+ wJfYElOJtcltctv7Al9gSU4m1yW1y2/sCX2BJTibXJbXLb+wJfYElOJtcltctv7Al9gSU4m1yW1y2/sC
+ X2BJTibXJbXLb+wJfYElOJtcltctv7Al9gSU4m1yW1y2/sCX2BJTibXJbXLb+wJfYUQoOGa3FCdQSug+
+ wpvsKeCuecOKSmGIV0n2HyTjBStTzrcUhGbQQt0YKf7CghxAxwSLXLb+wpjgIKcItcltctz7B5JfYEEO
+ KGuT7HLa+wJ/sKCnE2OTbHLc+wpfYEEOHtcltctv7Al9g8klOJtcn2uW19gS+wJKcXa5La5bX2BL7Ckp
+ xdrktrltfYE/2BOU4m1yW1y2/sCX2BFLibXJbXLb+wJvsKNqcXa5La5bX2FL7CjanF2uTbXLb+wJvsCN
+ pcba5OGuWz9hTjBTCUOOGuT7XLY+wpfYkEOMWuUC1y2zhKJwUQpxdrk4a5bP2FSGAlanGDXJFjltfYUv
+ sSNpcB1JKC7GJXSHCTfYUbU819kKX2QrpRg+Sf7B5JWl5r7OQpCpwXQnA8k32DyQtLhBjlMNctr7B5KQ
+ wELU4m1yba5bn2BL7B5IKcPa5La5bn2BL7Aghw9rktrlufYEvsCSnD2uS2uW59gS+weSKnD2uS2uW59g
+ 8kvsHkkpw9rktrlufYPJL7B5JWhw9rktrlufYEvsHkipw9rktrlufYE32DySXOJtcltctv7Al9g8klOJ
+ tcltctv7An+wILC4e1yW1y3PsCX2BJDh7XJbXLc+wJfYEFOHtcltctz7Al9gSSHD2uS2uW39g8kvsCK8
+ OJtcnDXLb+wJfYEVFxdrlE1krc+wpfYUWMuAaCVA4xXQ/YkvsSK6Lzv2UpfZiui+xJfYkm1F58UEIjai
+ Fu/YU4wULWzcUMcpbXLZGCn+woW1S4uxyYsctv7CmOCgkOGWOUC1y3jgqJwEGUODtcnDXLc/Z/knHT0Q
+ tLiBrk+1y2/sCX2BOticTa5La5bf2BL7AlaXE2uS2uW39g8kvsHkgpxNrktrlt/YE/2BJTh7XJbXLc+w
+ eSX2DyQU4e1yW1y3PsCX2BJTh7XJbXLc+wJfYEEOGWuTFrlu/YExwEkOCWuTbXLdPT/JN+z/ACRU4exy
+ cMctwdP8lIdP8kFOFscltct39n+Sb7AikOIGuT7XLa+wJfYUVwcbY5RNRK3PsKf7CkuDzrqChnGK6Q4K
+ icFELw839lKmMYroPsKkMJFLgighEDHBbf2FL7CgVpcXa5La5bX2FL7AgtcXa5La5bX2FL7Ckpxdrktr
+ ltfYUvsKSnF2uS2uW19gS+wpIcXa5La5bX2FL7AkpxdrktrltfYEvsCSHF2uS2uW19gS+wJKcXa5Ptct
+ n7Cl9hSU421yW1y2fsKX2FJTjbXJbXLZ+wpfYUlONtcltctn7Cl9hSU421yba5bX2FL7Ckpxdrktrltf
+ YUvsKSnF2uS2uW19hS+wpKcba5La5bP2FL7CkkONtcm2uW39hTfYUbZA4Za5QdU4reOAm+wJWl5045Kb
+ 7IV0f2FL7Cih50YhUhjELovsSX2HyQU896TglscugOB5Jv2d5IWhwQ1ykGuW3+z/ACTjA8kkOOGuUtrl
+ sDBS+xJIcYtcm2uW19hTfYUEOLtcltctv7Al9g8klOJtcltctv7Al9gQU4m1yW1y2/sCX2BJTibXJbXL
+ c+wJvsCCnE2uS2uW39gS+wJKcTa5La5bf2BL7AkpxNrktrlt/YEvsCCnE2uTbXLc+wJfYEkOHtcpBrlt
+ DA8lIYCKHE2OS2OW59gTHBRS4e1yba5bZwU32FFcHE2uTbXLc+wJfYPJFc4UOSIcts4CicBOS4ZY4qBp
+ JW99gUhgeSNqed+zEpxildGMDyT/AGHyRtTzn2YhL0SF0X2HyTfYPJC0F58VuUwxy3f2f5J/2f5JWtcQ
+ Ncltctz7Al9gQtDibXJwxy2xgeSkMDyQJQ4exyW1y3fsCY4Hkm2pwi1yba5bpwE32DySU4ga5PsctsYC
+ l9g8k1ThFjlEtct84CgcDySU4e1yW1y2/sCX2BOC5xNrktrlt/YEvsCKnE2uT7XLb+wJfYElOJtcltct
+ v7Al9gQWuJtcn2uW39gS+wIKcPa5La5bn2DyS+weSSHD2uS2uW39gS+wJJcTa5La5bf2BL7AilxNrktr
+ lt/YPJL7AilxdrkxY5bn2BL7Ala5wDUSoHHJXRfYExwPJG0vOfZil9mK6L7Cm+xJynn/ALMU4oIW/wDY
+ U/2FBDgitwT7XLd+weSX7P8AJNKHB2uS2uW9+zvJN+z/ACQU4ga5Ptctv7B5JfYEUOJtcm2uW59g8kvs
+ HknWtcPa5La5bn2BL7AkSFOJtcltctz7B5JfYPJMU4e1yW1y3PsHkl9g8kEOHtcltct37B5JfYPJJThb
+ XJbXLd+wJfYPJJThbXJbXLc+wJfYEVOHtcm2uW79gS/Z6VpcLa5La5bv7PS/Z/kgpww1ykGuW1+z/JP9
+ gQKXF2uS2uW39g8kvsCYpwy1yiWuW99gTHp/kklwtrktrlufs/yS/Z/knBTibXJjW5bv2DyS+wKQFLzz
+ qSUF2OSulOAoHAUgKnmvsxU24xXQfYPJSGCkVwcNuMUQYpW63CRW4SYV7gsxirDKCFsjCUvsiFoLlCsh
+ OWFan2VR+yo2tcosKbYVq/ZUvsiFrS5WwpbCtb7Il9kSta5GwpthWv8AZE32RK0OTsKcMK1fsif7IlaH
+ K2FLYVrfZEvsiFqcjYU+wrW+xp/saCXI2FLYVr/Y0vsaSXI2FPsK1vsaf7GkpyNhS2Fa/wBjS+xoKcjY
+ UthWv9jS+xpKcjYUthWv9jS+xoIcjYUxYVsfY0vsaSnFLCoFhW2cNR+xJwWlxhWU/pFbAwk4w0bQ4hoJ
+ UDjFb/2NL7GlbPB58YpUxjkLe+xpfY0mQuKKSFL0ytj7Im+yJNabjlhUdhWz9jS+xIMbj7HJ9jlsfYk/
+ 2JC0uNsKfYVr/Yk32NFcHKDCn2Fav2NP9kSZA5OwpbCtf7Im+yJLi5OwpthWv9kS+yJMRcjYUthWt9kS
+ +yJLXJ2FLYVrfZEvsiS4ORsKWwrX+yJfZElzkbClsK1vsiX2RJLk7CmLCtf7Il9jRU4xYUthWx9jS+xp
+ KckNKkAVp/Y0vsiKnN2lRLCVqfZU4xEVOM6glBdjErohhp/sSFqeZOIU4xiF0hwfJROClanBbQQiishb
+ H2JN9kRtTlhhTFpWt9kS+yIWhyNhSDCtf7GnGGhanJDCn2Fa4w0/2NBTj7ClsK2PsaX2NBTj+mUvTK2P
+ saX2NBTj+mUthWx9jS+xpKcfYUthWx9jS+xoqcfYUthWx9jS+xpKcfYUthWx9jS+xo2hx9hTbCtn7Gm+
+ xoFTj7Cn2Fa32NL7ImocnYUthWt9kS+yIpcgsKia3La+xp/sSVrnE2OThhWz9iS+xI2lxzUSoGglbf2R
+ P9kRtLgnFJUfshXQ/ZEvsaVoef8AsxCcVELeOGonCStTihhUgwrX+xJDDQQXJ2FLYVr/AGRL7IgtcjYU
+ thWv9kS+yIKcjYUthWv9jS+xpIcjYUthWv8AY0vsaSnI2FLYVr/ZEvsiSXI2FLYVr/ZEvsiKXI2FLYVr
+ /ZEvsiKnJ2FLYVq/ZEvsiC0uVsKbYVrfZE/2RJDj7Cm2FbP2NL7GklxthS2FbP2JL7EiuccVlSDCtf7E
+ n+xo2lyQwp9hWr9kTHERBS5JYUN1RK2TipvsicpwnY5KGcUrofsicYSVqedGIVNuMQugGEn+xIcSHDbS
+ QihhWqcRN9lRta5u0pbCtMYql9kQtDk7ColhWx9kUTiIWpxywpvTK2PsiX2NBLkispxWVrjDTjDQU5Hp
+ lLYVsfY0jhpqXG2FLaVrnDTfZEVOTsKfYVrfZEvsicpydhS2Fa32RL7IkpydhS2Fa32RL7IghydhS2Fa
+ 32RL7IkhydhS2Fa32RL7IkpydhS2Fa32RL7IkpydhS2Fa32RL7IilydhTekStf7In+yJJcU0EoZxit/7
+ Il9jRtc86cYphjldEcJROEjaXCFJCmKytn7Gl9jStTkhhS2Fa4w0/wBjQtDjFhTbCtr7EonDQtDj7CnD
+ Ctb7Gl9kSWlywwqQYVqDETjESQ5ewqJYVrfZEvsiCXI2FNsK1/siX2RJTk7ClsK1vsiX2RJTk7ClsK1v
+ siX2RJTk7ClsK1vsiX2RJTk7ClsK1vsiX2RJTk7ClsK1vsiX2RJTk7ClsK1vsiX2RJTkFhUdhWz9jTfY
+ kkuQGFTFZWqMNSGIklxnUkoTsYlb/wBkTfY0lPOnEKQxCui+xJ/sSSnAGMQpikhbn2NN9jStTi+mUxYV
+ tHDUfsSSXG2FPsK2PsSX2JK1OQGFPtK1vsaX2NFDlbSlsK1RiKX2RBLkbClsK1/saX2NJDkbClsK1/sa
+ X2RBjLkbClsK1/saX2NBa5GwpbCtf7Gl9kQXBydhTbCtf7Il9jSXORsKWwrX+xpfY0VzkbClsK1/saX2
+ RFRcnYUthWr9kSGIixFy9hUTWVsDETnDStDiFhUCwrbOGoHDRtcHGNZUTQStsYakMJJcHB+zEpfZSugG
+ EpfYkrZA8+MYojaCFufY0vsiFqLjiohMWFbX2RROGkxlw3Mco7HLbOEm+xIIccMKnsK1hhJ/siCXI2FL
+ YVr/AGRL7GklyNhS2Fa/2NL7GihyNhS2Fa/2NL7GipyNhS2Fa/2RL7IkpyNhS2Fa/wBkS+yJKcjYUthW
+ v9jS+yJKcjYU+wrW+xpxhpKcjYU3plbP2NL7GgpxfTKb0ytr7Gl9jSU44rKkGFa32NL7IkpzA0pbStP7
+ Kl9lSS5LmFAfUSts4ib7Gip552OSofZSuk+xJ/sPkjaXnW4pR2UELcGCpDDRtTjiohS2Fa32RL7IgSpy
+ CwpthWv9kTfZExDk7ClsK1/siX2RJDkbClsK1/siX2RJTkbClsK1/siX2RJTkbClsK1/siX2RJTkbCls
+ K1/siX2RJTkbClsK1/siX2RJTk7ClsK1fsiX2RFTlbCmLCtb7Il9kSU5GwpthWz9jS+xpKcUsKiWOW2c
+ JROEklxthUgwrW+xJxhpKcsMKmGFaYxFL7IklzNpUSwrV+yqJxkrU476iVXfjkreOKl9jSU82cUqP2Ur
+ pDhJjhKSJQ8+KCEQVELaOEm+xqS1OSGFL0ytgYakMJNJU4hrKia3Le+wpjgeSbanA9NyWxy3TgJvsHkg
+ pxNjk/puW2MDyTjASU4npuTem5bv2FL7CkpwvTcm9Ny3fsKb7Ckpw/Tcn2OW39hT/YUrU4exyWxy3PsK
+ b7CjanE2OS2OW59hS+wpKcPY5LY5bn2FL7ClanD2OS2OW59hS+w+SFqcPY5LY5bn2HyS+wpKcPY5LY5b
+ n2FL7Cgpw9jkvTctz7Cn+wpKcL0SVE4xK6AYSf7Eja8PNnFKQxiuk+wpvsCVqLzzcchFbSVufYUvsSFr
+ XHFZUvTK1xhp/saSHGNZTemVt/Y0xwkEOJ6ZS9Mra+xJvsSSHG9MpemVtfYkvsSSnG2FNsK2vsSX2JJL
+ i7Cm2FbX2JL7EklxthS2FbP2JL7EilxthS2FbP2JL7ElanG2FLYVs/YkvsSVqcbYU2wra+xJfYkEOLsK
+ Wwra+xJfYkkOLsKWwra+xJvsSapxdhTem5bf2JL7CnBTiisqQrK2PsSf7En2lxjUVA0Erc+xpfY0bZoO
+ AcYpvsxW/wDY032NFsAuD9nKf0Ct37Gl9iQY5OGKipCsrb+xJfYkLa5cXYU2xy2jhJvsSVsRccMKkGFa
+ wwlIYSVocfYUthWz9iS+xJWuDi7ClsK2fsSX2JK17jbClsK2fsSX2JBaXG2FLYVs/YkvsSSHG2FLYVs/
+ Yk/2JJcHF2FLYVtfYkvsSSXF2FLYVs/YkvsSSwuNsKWwrZ+xJ/sSSHG2FL0ytoYSf7EmlDiem5N6bluf
+ Yk32FNU4npuThhW19hS+xIhLkBhTFhK2Psab7InLouG6klDOMV0H2NN9jRbcC8+MYp/sxW/9jS+xor5H
+ R544xSGOQug+xJ/sSDTm4jKiEUMK1xhKX2JK2IOOWFRLCtr7Em+xIWvDi+mUvTctr7El9iQS4uxyWxy2
+ vsSf7EgpxNjktjlt/YkvsSSnE2FLYVt/YkvsSSnE9MpemVtfYkvsSKnF2FLYVtfYkvsSNocXYUthW19i
+ S+xJWpxdhS2FbP2JL7EklxthS2FbP2JL7EkpxthS2FbP2JL7GkhxthS2FbP2NL7GkpxthS2FbP2JL7Ek
+ pxthS2FbP2JL7EkpxthS2uWz9iS+xJKcU1kqJoJW59iTjDSXOGMYo9eMtcYim3GhJLUpphaNLITsohWW
+ MhApZsEIkpgITEpqlyUpQyU0pKSymJUQU8pq1SZOlCSFk0KUJQghiE6eEkFLp0ySSVJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJ0ydJSySdMkpSSSdJS6g5TUXJKatirlWbFXKSmTFarVVitsSUlCScJJKWSSS
+ SUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOEycJKUUCxHKBYkpqvTN
+ TvTNSU2a1Yaq9asNSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJklLyokpEqJKSmDkIopQykpgnSKZ
+ JSkkkklMgnUU6SliolTKg5JQRuQnFTeUB7kwhtQYuKiolyQKbws4NMoUHBECZyNLxNruCYBScnYEqSci
+ RjFOIU2NTvEJUxmSLdCm16rvMKLHpUi3RYZRFWqcjyjSLWcUF2qI4qICVLgWu9kqs+taRYgWMQpXE5pZ
+ CIwIrmJ2NRpHElrCMAlWxELUqRxIyVAlTcFGEqVxIXqtYrjmqtY1Kl3uNUojAolqPUxKlsp22Kmq4xih
+ SxW2sSYSs0QnL4Sdoq9j4SpFM32qrY+VB9iFMpUnhX5Rq2qDGyrNbEqSBSRjEQsUmBEhGl/E03sVZ7Fo
+ vaqz2Io4mnEIrHQk5qjwkribjHooeqLXwiNsSQTbc3KJKCHqW5CltMXlVnlHcUB6aYpEWIKK16rqQKbw
+ rxFteogveoSouKHAyR0Yuchl6dyEUuBktTnoRcpEKEI8KLUHIrHIYaptanUjibdb1brsVBgVhhRY5G2+
+ 16IHKowo7Six0mBUH8KQTPCSHPvWe8arTuaqT2aoUhHUNVo0KnW1X6QlS0lttUiotTlFYZLEqJKYlRlJ
+ YZMk8KIRAEUcSyUpyoFFFspTJk6VqUknTJWqlJJJJWqlJJJJWqlJJJJWilJJJJKUkkkkpSSSSCrUkkkk
+ m1JJJIpUkkkilSSSSSF0kkkkKSSSQUpJJJJSkydJJVqUgohTCSl0J6KUJ6SUJUmKJUmJKbVaOEBiOEFK
+ SSSSUsnSSSUpOkkkhSdJJJVrJJ0yKlkk6ZFKkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SKQTlJSF6
+ qvVp6qvSUwCPWgBHrSU2Gqai1SSUpJJJJSkkkklLQknSSUsknTJKWTSkVElJTKU6gCpBFTJKE4ToKYwk
+ pJkKUsmSKSVKVKSZJJS6SZOnKUlKSZG1MpTyopSklRTJJJKWTpJJql08pkkqUvKYpJIqYkKJZKIkiCpH
+ 6QTikIieU7iVaMUhS9EKe5LclarYeiE3ohFlKUrKEXpBL0QiylKVlSL0Ql6IRZSlKypF6IS9EIspSlZU
+ i9EJeiEWUpSsqReiEvRCLKUpWVI/RCXohElKUrKkfohL0QiSlKVlSP0Ql6QRJSlKypH6QS9IIkpSlZUj
+ 9IJekESUpSsqR+kEvSCJKUpWVI/SCXpBElKUrKkfpBL0giSlKVlSP0Ql6IRJSlKypH6ITGoIsppSspRG
+ kKPohHlNKNlKH0Ql6IRpSlGypF6QT+kESUpQsoR+kE/pBElKUrKkfohL0QiSlKFlSP0gl6QRJSlKyhh6
+ QS9IKcp9ySkfpBN6QRZTSkpH6QS9IKcpSkhh6QS9IIkpSkph6QS9IKcpSlZUw9IJekFOUpSspYekEvSC
+ nKeUrKkXpBL0QiylKVlSL0Ql6IRJSlKyq0fohL0giylKVlSL0gl6QRZTSlaqRGoJvRCNKSNqRCkKXpBT
+ lPKFqR+kExqCLKaUrUhNIS9EIySPEpEKgn9IIkp5QtSL0Qm9EI0pSlarReiE/ohElKUrVaP0Ql6IRNyU
+ oWq0fohP6IU9yW5K1Wj9EJeiESUtyVpR+iEvRCJuS3JWpH6IS9EIm5LclakfohL0QiSlKNqR+iEvRCJK
+ UpWpH6ITeiEWUpStSL0Ql6IRJSlK1MPRCXohTlPKVoR+kEvRCJKW5K0Uj9IJekETcluStSP0Ql6IRJTS
+ laWHohL0QpynlK02j9EJvRCLKaUrVaP0QmNIRZSlK1tIDSE3ohWJTI8SRog9EJxSEZJLiZRNEKQpCoIk
+ pShxIMrYekEvSCJKUoWxlH6QS9IIkpSlagi9IJ/RCJKUo2utH6IS9EIm5LclaCUfohL0QibktyVraR+k
+ EvSCJuS3JWpH6QS9IIm5LclakfpBL0gibktyVqR+kEvSCJuS3JWpH6QS9IIm5LclamHpBL0gp7ktyVqp
+ H6QS9IIm5LclaKR+iE3ohFlKUrVSP0Qn9EKcpbkrVTD0gmNIRNyUpWmkXohN6IRZSlK0ovSCXpBFlKUr
+ ShNIUTSFYlMjxJtr+iEvRCsJI8SbQikKQpCInlC1to/RCXohFlKULQi9EJeiEWUpStSL0Ql6IRZSlK1I
+ fRCf0QiylKVqReiEvRCLKUpWpD6IS9EI0pSlaEPohL0QjSlKVqQ+iEvRCNKUpWpD6IS9EI0pSlakPohL
+ 0QjSlKVqQ+iEvRCNKUpWpD6IS9EI0pSlakPohL0QjSlKVqQ+iEvRCNKUpWVIfRCXohGlNKVlKL0gl6QR
+ JSlGyutH6QUTSEaUpSsptAaQm9EKwmR4ii0IpCcUhGSlKyq0YpCl6IU5Tym2VWi9EJvRCNKUpWUIfRCb
+ 0QjSkjZUh9EJ/RCMmlKypF6IT+kESUpSsoR+kEvSCJKUpWVI/SCXpBElNKVlTD0gl6QU5SlJTD0gl6QU
+ 5SlBTD0gl6QU5SlJSP0gl6QRJSlJSP0gn9IKcpSkpiKgn9IKUpbktUMfSCiagibkpSsqQ+iEvRCLKeUb
+ XIvRCXohFlKULKrQmkKJoCsSkjxFNtf0AnFAR06XEVWg9EJjSFYTJcRVbX9AKQoCMnlLiKrRegEvRCLK
+ UoWUIvRCXohFlKUrKkYpCcUhTlPKVlDD0gm9EIm5KULKkXohL0QiylKNlSMUhP6QU5T7kLKkZpCY0hFl
+ NKVlSH0Ql6IRpSlGylD6IS9EI0pSlZUi9EJeiEWUpStCL0Ql6IRZSlKypF6IS9EIspSlZUi9EJeiEWUp
+ SsoReiEvRCLKUpWUovRCXohFlKUrKkXohL0QiylKVlKL0Ql6IRZSlKym0RpCiaQjymlKyq2uaQo+iFaT
+ I8SrawpCkKQjp0uIotCKQpCkIkp5QsqR+iEjSEWU0oWVWhNITeiEeUpRsqQ+iEvQCNKeUrKEPoBL0QjS
+ lKVlSH0Ql6IRpSlKypF6IS9EIspShZUi9EJeiEWUpSsqReiEvRCJKUpWVIvRCXohFlKUbKkXohP6IRJS
+ lCyph6IS9EKe5LclZUj9EJeiESUpSsqR+iE/ohTlPKSkfohL0QiSluSSj9EJeiESUpSsqReiExpCLKUp
+ WVWgNIUDQFalMnCRTbUNASFAVqEoR4iq0ApCmKgiJ5QMk8TD0wkawpylKbauJEawm9MIspkbRaP0wn9M
+ KaeUrRaP0wn9MKcpSlaEfphL0giSlKVqR+kE/pBTlPKVqph6QS9IKcp5QtTD0gl6YU5TylakfpBL0wpy
+ lKVqYemEvTCnKUpWlj6YS9MKUpbkrQx9MJemFLclKVqY+mEvTClKeUrUw9MJemFOUpStSP0gm9IIkpSl
+ ZRSP0gl6QRJSlGyikfpBL0wiSlKVleDSP0wl6YRJSlKyu4kfphL0wiSmlKysOrD0gnFQU5SlCytpb0gl
+ 6YUtyW5JVIzUE3pBElKUrKaR+kE/phTlKUrK5h6YS9MKcpSlabR+mEvTCJKUo2VlI/TCXpBElKUrKqR+
+ kEvSCJKUpWUo/SCXphElKUrKUfphN6QRJSlKypH6QS9IIkpSlZUw9IJvSCJKUpWVIjUFE1BGlJG1IPSC
+ kKgipJWpiKwpisJAp9yaSVLemFE1BE3JtyWqkRqCj6QRpTSjZUj9IJemERPKVlSP0gnFQU5SlKyhj6YT
+ +mFKUpQSx9MJemFKUpSQx9MJemFKUpSUx9MJemFKUpSUx9MJemFKUpSUx9MJemFKUpSUx9MJemFKUpS1
+ Ux9MJemFKUpS1UjNYTekESUpSQj9IJxWFOUpRSsKwpemEtyfchqlY1hRNYU9yaUtVIzWE3phElKUbVbD
+ 0wn9MKUp5StNsPTCXphTlKULKLR+kEvTCnKUo2pH6YS9MKcpSkhj6YS9MKUpSkpj6YS9MKUpSkhj6YS9
+ MKUpSkpj6YS9MKUpSklj6YTemFOUpSUx9MJvTCnKUpKYemE3pBElKUkUj9IJ/TCnKUpKpj6YS9MKUpty
+ WqlemEvTCfcluS1Sr0wl6YT7ktyGqWJrCiawiSmlG1IjWEvTCJKUo2pGKwpCsKUp5SsqUKwkawluS3Ia
+ qYGsKPphFJTI2hGKwpCsKSeULUx9MJvTCnKUpWhH6YT+mFKUpRSsKwn2BLcn3IaqVsCWwJbk+5DVTH0w
+ m9MKcpSiph6YS9MKcpSlaWHphL0wpylKVqYemE/phSlKUkMfTCb0wpylKVqY+mEvTClKUpIY+mEvTClK
+ UpJYemEvTCnKUpWph6YS9MKcpSlaWHphP6YTynlJTH0wmNYU9yUpaptH6YS9MKcpSlZVbEVhS9MJSn3J
+ Ktj6YTGsKe5KUkI/SCb0giSlKVoYemEvTCnKUpWhh6YS9MKcpSkph6YS9MKUp5SSw9MJemFOUpSUw9MJ
+ emFOUpSUw9MJemFOUpSUw9MJemFOUpSUw9MJemFOU0pKY+mEvTClKUpKW9MJ/TCeU8pKY+mE3phTlNKS
+ WPphP6YTynlJTH0wn9MJ9yW5DVS3phN6YUtyW5LVTH0wl6YUpSlFTH0wl6YUtyW5LVTA1hN6YU5SlJTD
+ 0wn9MKUpSkpj6YS9MKcpSkph6YS9MKcpSktpj6YS9MKUpSkimPphL0wpSlKCaY+mEvTClKUpJY+mEvTC
+ lKUpKY+mExrCnKaUUsDWEwrCJKUpWtIWFYT+mE8pbkEUwNYUTUEWU0o2mkfpBOKwpylKVpWFYT+mE+5L
+ cgutb0wm9MKW5KUlWx9MJ/TCeUtyS1b0wm9IKW5Lckhh6YTemFOUpRSw9MJ/TClKUpKY+mE3phTlKUlM
+ PTCXphTlKUlMPTCXphTlKUlMPTCXphTlKUlMfTCb0wpylKSmPphOKwnlPKSlvTCXphPuS3IaqW9MJvTC
+ luS3JKY+mE3phTlNKKmBrCb0wiSmlJTD0wkKgpp5RtTEVhP6YUpS3IapW9MJjWFLcluS1Uw9MJvTCnKU
+ pKY+mEvTCeUpSQt6YS9MJ5S3JKW9MJemE+5Lckpb0wl6YT7ktySlvTCXphPuS3JKW9MJemE+5Lckpb0w
+ l6YT7ktySmPphL0wpSnlJTD0wnFYUpSlJSwrCf0wn3JbkNVMfTCY1BT3JtyOqmHpBL0gpylKSmPphL0w
+ pSlKSUZrCiawiykkpF6QTioIieUlI/SCY1BFlNKVoQmoJvRCPKSXGpEKQpioKYTgpGSmIqCXpBElLcm2
+ pH6ITeiEWUpRtSL0Qn9IIkptyVqYekE3pBE3JtyFqR+kEvSCnuS3I8SmPpBL0QphyfclxKR+iEvRCJuS
+ lK1I/RCXohElKUrUj9EJeiESUpStSP0Qn9EKe5LchamHohL0Qp7ktyVqYekEvSCnuS3JWph6QTekETcl
+ KNqRekE4qCnKUo2V1sfSCXpBS3J9yGqrRmoJvSCJKaUbKGHpBP6YUpTykhj6YTemFOUpSQw9IJekFOUp
+ SUw9IJemFOUpSUw9IJekFOUpSUw9IJekFKUpSSw9IJekFOUpSSx9IJekFOUpSUw9IJekFOUpSUw9IJek
+ FOUpSsqYekEvSCnKUpWhh6QS9IKcpSkph6QS9IIkpShakfpBMagiymlGylF6QTekEaUkbK4GkBqCb0gj
+ pJcRXcaH0gnFQRU6VlBki9IJ/SCJKUoWVhKP0gm9IIspSlZW0i9IJekEWUpSsqpH6QS9IIkpSlZSj9IJ
+ ekESUpSspR+kEvSCJKUpWUI/SCXpBElKUrKkfpBL0giSlKVlSP0gl6QRJSlKylH6QS9IIkpSlZQj9IJ/
+ SCnKUpWUUw9IJ/SClKfchqqmPpBL0gpbktyWqqY+kExqCnuS3JaqpEago+kEaU0o2UhF6QS9IIqUo2yC
+ VIfSCXpBGSStPGiFQUhUFOU8oWWM6sPSCf0gpSlKVlbTH0gm9MKe5Lclqlh6YS9MKW5Lclqpj6YT+mFL
+ cluS1Ux9MJemFLcluS1Ux9MJemFLcluS1Uw9IJekFLcluS1Ux9IJekFLcluS1Ux9IJekFLcnlLVSP0gl
+ 6QRJSlC1I/SCXpBElKUrUj9IJekFOUpRtTD0gl6QU5SlK1MPSCXpBElKUrQj9IJekESUpStSP0gl6QU5
+ TylaUfpBN6QRJSlK0o/SCXpoiSVqtgGKYCUpSgSq11Ap5TIWq0ZCUKcJQlarYgJ08J0LUsnSToWhSUJJ
+ JWhZJOmSSpJMkkpdOmTpKWSTpJKWSTpJKWSSSSUpJJJJSkkkklKTpkklLpJJJKUknTJKXUXJ1FySmvYq
+ 5R7FXKSkjFaYqjFaYkpME6YJJKXShIJ0lMYTKSZJSySdJJSkydJJSySSSSlJJJJKUkknSUpMnSSUpJJJ
+ JSkydJJSySdJJSk4TJ0lKKBYjFAsSU1npmp3qLUlNqtWGqtWrDUlMkydMkpSZOmSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJ
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJT/AP/U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUmTpklLFQKmVApKYFQKmVEpKYFMnKZJSkkkklLpwmThJSlB6moOSUGtYVXcrLwgFqDbgUMKQ
+ U9iW1BktYFMU5CaEkWjIlTY1TDJRWsSVbJgTPCIGqLgkq2jY1RYzVW3Vyk2pJVqqCsQosZCLCSrREJgE
+ QtTbUlWpBsRiEF4SRbVcFJgTlqmxqSLT1hELUqwiwki2s5qYMRy1OGJItrOYq1rFpFir2VpItzCzVGqa
+ iOrUmMhJVtmrRWAUBghTlJFqe5U7CrDygOEpJBazgk0I2xSbWiutetqtMCGxiOwJKJSNCnCZoU0lto3B
+ Be1WChOCSLaj2oJCtuahOYki2vCcFELE21JIKgVIOUYTwkvBXJlMWypAIjWJLwUHppekrja0QVJJ4mh6
+ SY1LR9JRNSSOJzHVITqlqOqQXVJLwXONab01dNab00FW1BUiNqVkVora0lpLWbUjNrVhtaIK0ltoWsRW
+ tUw1SASQSFgEzgpqLkkW1LQqjmq9YFXc1FaUTGq5UEFjVZrCTGUzQkQpAJEJMZQuChCKQoQksKmooUAF
+ MJLVioFEKgQklYKQTAJwkkKSTpklyySdJJKySdJJCySdJJCySdJJSySdJFCySdJJCySdJJSkk6SK8LJJ
+ 0kkrJ0kkkKSSSSQpJOkkhZJOkgpZJOkkpYKQTKQSSooT0UoT0koSpMUSpMQU2mI4QK0cJKUkkmSUukmT
+ pIXSTJ0lLpJkkkLpkkkgoKSSSTlykkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSgnKYJykpC9VXq09VXp
+ KYhHrQAj1pKbDVJRapJKUkkkkpSSSSSlJJJJKUmKdMUlMSolTKjCSlgpBNCkElMgnUQnSUumKSZJSxTJ
+ 0klLJ0oTwkpaEoTwnhJTGEoTwkkpZJPCUIqWSTwlCSlkk8JJKWSTwmhJSkkkklKSSSSUpJJJJSydMkkp
+ dOmTpwUpJJJG1KSSSStS6SZJK1LpJkkrUukkklalJJJJWpSSSZK1KSSSStSkkkkrUpJJJK1KSSSStSkk
+ kkrUpJJJK1KSSSStSkkkkrUpJJJK0qSSSStSkkkkrUpJJMlal0kySVqXSSSStSkkkyVoUkkklalJJJJW
+ pSSSSVoUkkklalJ0ydK1KTpkkrUukmSStS6SZJK1KTpkkEhdJMkguXSSSSQpJJJJCkkydJSkkkklKTJ0
+ ySFJJ0klLJJJklLpJkklLpJk6SlJJJkkrpJk6SlJJJJJUkkkkpSSSZJSkkkkkKlJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSlJJJSkkkklLpJkklLpJkklLpJpSlJS6SZJJSkpSSSUqUkkklKlKUySSl5TqKdJS6SSSK
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSZJJS6SZOgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSdMk
+ pdJJMkhdJMkkpdJMnSUpJJJJSkkySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0
+ kySSl0kySSl0ySSKlkk6SKVkk6SVqUkkkkpSSSSSlJJJJKXSTJJKXSTJJKXSTJ0lLJJ0klLJJ0krUskn
+ SStSySdJK1LJJ0krUxhKFJJK1MYShSSStTGEoUkklLJJ0klLJJ0klLJJ0klLJJ0klKSTJ0lLpJpSlJS6
+ SaUpSUumSlNKSlJJkklLp1FOkpdKUySSl5STJJKXSTJJKXSTJJKXSTJ0lKSlMlKCl5SlMkgpeUkySKl0
+ kySSl0kySSl0kySSl0kySSl0kySSl0kydJSkkkklKSSSQUukmlKUlLpJpSlJSkkkklKSTJIqXTpkySmU
+ pKMpSkplKUqMpSkplKUqMpSkpeUpTJJKXlKUySSl5SlRSSUylKVFJJTKUpUUklMpSTJJKXSlMkkpdJMk
+ kplKUqKSSmUpKKSSl0kySSl5STJSkpkkoynlBS6ZJJJCkkkklKSTJJKXSTJ0kqSTJJKXSTJ0lKSSSSUp
+ OmSSSqUpTJJKXlJMkkpdKUySSF5SlMkkpeUkySSl5SlMkkpeUpTJJKXlKUySIUukmSRUukmSSUvKSZJJ
+ S6UpkklLykmSSUukmSSUukmSSUulKZJJS8pJkklLylKZJJS6SZJJS6UpkklLylKZJJS8pSmSSUvKSZJJ
+ S6SZOkpSSSSSlJJJJKUkkkkpSSZOkpSSSSSlJJJJKUkkmSUukmSSUukmSSUukmSSUukmSSUukmSSUukm
+ SSUukmSSUukmSSUukmSSUukmSSUulKSZJS8pJkklLpJkklLpJkklLpJkklLpkkklKSSSRUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpOmToKWTJ0ySlJk6ZFSk6ZOkpSdMnSUpJJJBS6ZJJJSySSSKlJJk6SlJ
+ 0ydJS6ZJJBSkkkklLJJJIqWSSSSUukkkkpdJJJBSkpSTJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlM
+ kkpeUpTJJKXlJMkkpdJJJFSkkkklKSSSSUpJMkkpdJMkgpdJMklal0kySVqXSTJJKUkkkjalJJJJWpSS
+ SSVqUkkklalJJJJWpSSSSVqUkkklalJ0ySVqXSTJIKXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kyS
+ VqXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJIKXSTJJKXSTJJK
+ XSTJJKXSTJJKXSTJJKUkkknKUkkkkpdJJJJSkkkklKSSSSUpJJJC1KSSSStSkkkkrUpJMkipdJJJJSkk
+ kklKSSSQUpJJJK1KSSSRUpJJJJSkySSSlpSlJJJSpSlJJJSpSlJJJSpSlJJJSpSlJJJSpSlJJJSpSlJJ
+ JSpTymTJKZSlKikkplKUqKSVqZSlKiklamUpSopJWplKUqKSVqZSlKiklamUpSopJWplKSinTCpdJMnT
+ VLp5UUpSUylOopSkpklKjKUpKZSmTJklLpkkySlJ0ySSlwU8qKSSmUpSmSSUvKUpkklLylKZJJS8pSmS
+ SUvKUpkklLylKZMkplKUqKdFS6SZOnBSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJS6ZJJJSkkkklKSSTJKXlKUySSl5SlMlKSmUpSoykkpkkmSSUukmSSUukmSlJS6SZJJS6SZJJS6SZJJ
+ S6SZJJS6aUkySl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySKl
+ 5SlMkkpeUpTJIKXlKUySSl5SlMkkpeUpTJJKXlKUySKlSkkkkpUpSkkkpUpSkkkpUpSkkkpUpSkkkpUp
+ SkkkpUpSkkkpUpSkkkpSdMkmFS6SZJBS6SZJFS6SZJJS6SZJJS6SZJJS6ZJJJSpTpkklLpJkpQUukmSS
+ UqU6ZJJS6SZJBS6SZJBS6SZJJS6SZJJS6ZJJJSkkkkVLp0ySSl0kkklKSSTJKUkkmSUpJJJJSk6ZOkpS
+ SSZJS6dRTpKXSTJJKXUHKaG5JTXsVclHsVclJSRhVtipsKt1pKThJIJ0lLBOmSSUumSSSUpJJJJSkydJ
+ JSySSSSlJJJJKUkkkkpdJMnSUpJJJJSkkkklKSTJJKXTpk6SligWI5QLElNV6Zqd6i1JTarVhqr1qw1J
+ TJMnTJKUkmSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSZJS6ZOmSUsVAqSiUlMColSKiUlMCmTlMkpSSSSSl0kkklLqBU
+ kxSUETmqGxHhINQZBJCK0xYrO1RLUl3E0yxIMVgtTBqSuJZjEUMUmBEASVxIixRLUchRISVxINicMRYS
+ hJXExDU8KSZJXExhKFJIJK4mBahOYrMKJakjiLULFJrEUtTgJI4mTAiQohPKSuJUJwE0pwUkcS5CE9iN
+ Ki4JI4i03MSDEctSASVxMQ1OQpgJEJI4kJaoFiOQm2pK4kIYphiKGqQakrjYtYiAJwE6SuNcJ1GUpSW8
+ a5UCE8pSkjjRlqGWI8JiElcbXLFHYrBam2pJ42vsThiNtUgxJImhDEVrFMMUw1JeJqa1FDUzQiBJPEtt
+ TFqImKSeJruagOarTgguCSeNrFqbYjlqbakrjRhqI1qcBSASWma4CkoylKS0zXlKVElNKS3jZSkVGU6T
+ JGTBwlCLFYIUdqTIiaxGaEg1TASWFkEikkUlhYEKMIhUYSWFYBOknSQsVEqSZJS0J0kklKTJJJJCkkkk
+ lykkkklKSSSSUpJJJFCkkkkkKSSSSUpJJJJSk6ZJFIXSTJJJXSTJJIXSTJJIXSlMlKSl06ZJJS6ZKU0p
+ KZKQUJUgglcoT0UoL0lIipMUCpsSS2q0cIFaOEFKSSSSUskkkkpdJJJJC6SSZJCk6ZJJS6SZOnJUkkkk
+ pSSSSClJJJJKUkkkkpSSSSSlJJJJKUE5TJFJSJ6qvVp6qvSUxCPWgBHrSU2GqSi1SSUpJJJJSkkkklKS
+ SSSUpMnTJKUmhOkkpaE6SSSlJ0kklLJJJJKWSTpJKUnTJJKXSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkk
+ lLJJ0klLQlCdJJSySdJJTGEoUkkFLJJJ00lSySSdLiUsknTJcSlJJ0kuJSySdJLiUpJJJLiUpJJJLiUp
+ JJJLiUskkklxKUkkklxKUkkklxKUkkklxKUkkklxKUkkklxKUkkklxKUkknS4lLJJ0kOJKySdJLiUskn
+ SS4kLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJLiUtCUJ0kuJS0J4SSS4lKhMnSS4kLJ0kkuJKkydJLi
+ UsnSSR4kLJ0kkOJSkkkk60qSSSStKkkkkrUpJJJG0KSSSQtSkkkkrUpJJJG0KSSSStSkydJK1LJJ0krU
+ sknSStSySdJK0rJJ0kLUslCdJK0rQlCdJK1LQknSRtSySdJC0LJJ0krUsknSStSySdJK1LJJ0krUsknS
+ StSySdJK1LJJ0yVqWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpZOkkjalJJ0krUsknS
+ StSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsnSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSSt
+ SkkkkrUpJJMlal0kySVqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVq
+ XSTJJWpdJMklal0kySVqXSTJJWpSSSSVqXShJJDiUpJJJDiUpJJJLiUpJJJLiUsnTJJcSlJJJJcSlJJJ
+ JcSlJJJkuJSpSlJMlxKXlKUkkuJSpSlJJLiUulKZJLiUvKUpJJcSl0kySXEpdJMklxKXSSSRBUpJJJG1
+ KSSSStSkkkkrUpJJJK1KSSSStSkkkyVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSdMnStSkydJK1LJJ
+ 0krUpMnSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUskkklalJJJJWpSSS
+ SVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSNqUkkklalJJJJWpZJOklalkk6SVqWSTpJWpZJOkla
+ lkk6SVqUkkklalJJ0krUsknSStSySdJK1LJJ0krUsknSStSySdMhalJJJ0VKSSSTkKSTJJJXTJJJKUkk
+ kkpSdMkkpdJMkkpdJMnSUpJJJJSySdJJSySdMkpZOkkkpSSSSSlJk6SSlk6dJJSySdJJSySdMm2pSSSS
+ FqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUk
+ kklalJJJJWpSdJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KTJ0krUskkklalJJJJWpSSSSV
+ qUkkklalJJJJWpSSSSVqUkkklalJJJIEqUknTJvEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSS
+ XEpSSSSPEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSSXEpSSSdLiUsknSS4lLJk6SXE
+ pZJOklxKUknSS4lKSSSS4lKTJ0kuJSyZSTJcSlkk6SXEpSSSdLiUpJJJLiUpMnSS4lLJk6SXEpZJOklx
+ KUkknS4lKTJ0kuJSyZOklxKWSTpJcSlkk6SXEpZJOklxKWSTpJcSlkk6SXEpZJOklxKWSTpJcSlkk6SX
+ EpZJOklxKWSTpJcSlkk6SHEpZJOklxKWSTpJcSlkk6SXEpZOkklxKUkkklxKUkkklxKUkkklxKUkkklx
+ KUkkklxKUkkklxKUkkklxKUmTpJcSlkk6SXEpZJOklxKWSTpJcSlkk6SXEpZJOklxKWSTpJcSlkk6SXE
+ pZJJJOBUpJJJOtSkkkkrUpJJJK1KSSSQtSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJ
+ JJK1KSSSStSkkkkrUpJJJK1KTpJJvEpSSSSHEpSSSSXEpSSdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4
+ lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSyaFJMjxKWhKE8JQlxKWhKE8JQlx
+ KWhKE8JQlxKWhKE8JQlxKWhKE8JQlxKWhKE8JQlxKWhKE8JQlxKWhNClCSXEpjCUKSSXEpjCUKSSXEpj
+ CUKSSXEpjCUKSSHEpjCUKSSXEpjCUKSSXEpjCUJ4TpcSmMJKSZPGqlJJ0k6lLJJ0kqUpJJJJSkkkklKT
+ J0klLJJ0kqUxSUkySlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SVKWTpJ0lKSSTptqWSTpJWp
+ ZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpSSSSVqUkkklalkkk6VqWSSSStSkkkkrUsknSStSy
+ SdJK1LJJ0kCVLJJ0k3iUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSy
+ SdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJHiUsknSS4lLJJ0kuJSySdJLiUsknSS4lL
+ JJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0kuJSySdJISU
+ sknSTwpZJOkipZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkgpZJOkkpZ
+ JOkkpZJOkgpZJOmSUpOmTpKUnTJ0lKSSSSUpMkkkpSSSSSlJk6SSlJJJJKUmTpJKWSSSSUukEk4SUpQe
+ iKD0lNO1VyrNqrFJTOtXK1TrVypJTYCdIJ0lMEykVFJS6SZOkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKS
+ SSSUpJJJJS6ZOmSUpJJJJSk6ZOkpRVexWCq9iSmq9M1O9M1JTZrVlqrVqy1JS6ZOkkpZJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJT/9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUmSTJKXTJJJKWKiVIqJSUwKiVIqJSUwKZOUySlJJJJKXSSSSUskkkkpcJwmSlBNskxTSlKSrYkJ
+ gFJJJVrhTBQpUgUlWkUSnBUSkm1iU0qJKYFJVpJSKYJ4SVaxSBSITJKtmCkogp5SRaxCZSTEJKtaUpSK
+ iki15UgVBSCSLZgpFMnSVaxCSeEySLUkmTykq1QmTpikpdSBQ5UgUVUklNKZIpKUSoykVFJFMpTgqAUg
+ kimSScJJKpiUycqMpKpcKYQ5UgUEgJQFIBDBRAUlwZBSCiFJJcGUqJKdMUksCoEIhUSEkoyE0IkJiEkI
+ 4SUiFEpLWMppSKZJaV06YKSNIWSSKaUGWLIKQCgCiBJltUJ0kxKK0qlKVGUpSWFdJNKSSwqTSkSmlJC6
+ SjKeUlLpkkySl0kydJIUkkkkuUkkkkpSSSSSlJJJJKUkkkkhSSSSSFJJJJKWSSSRSpJJJJKkkkkkKSSS
+ SQpJJJJS6SZJJS6ZJJJS6kFBSCCWRQnopQXpJRFSYoFTYkptVo4QK0cJKXSSSSUskknSUpJJOghSZOkk
+ hZJJJJSk6SSclSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSRSSKSkT1VerT1VekpiEetACPWkpsNUlF
+ qkkpSSSSSlJJJJKUkkkkpSZOmSUpJJMkpdJJJJS6SSSSlJk6SSmKSdMkpSUpkklLynUU6Sl0kySSl5Sl
+ MmSUylKVFJJTKUpTJJKXlOoykkpkkmSlJS6SaU6SlJJJJKXTJJJKWSSTJtKXSTJIcKl0kkkqUpJJJLhU
+ pJJJKlLpJkkqUukmSS4VLpJJkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpS6S
+ ZJLhUukmSS4VLpJkkuFS6SZJLhUukmSS4VLpJkkuFS6SZJLhUukmSS4VLpJJJUpSSZJLhUukmSS4VLpk
+ kkuFSkkk0pUpdJNKSVKXSTJJcKl06inRpK6SZJFS6SZJJS6SZJJC6SZJJS6SZJJS6SZJJC6SZJJS6SZJ
+ JS6SZJJS6SZJJS6SZJJK6SZJJS6SZJJK6SZJJS6SZJJS6ZJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSk6ZJJS6ZOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpSSSZJS6SZJJS6SZJJS6SZJJS6SZJ
+ JS6SZJJS6SZJJS6SZJJS6ZJJJSkkySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySKl
+ 0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0k
+ ySCl06inQpS6SZJLhUpJMklwqXSTJJcKl0kkkuFSkkySXCpdMkklwqUknSS4VLJQnSS4VLQlCdJLhUpJ
+ JJKlKSSTpcKlkkkkuFSkkkkuFSk6ZOlwqUmSSSpSkkySKl0kydJSkkkklKTpkklLpJJJKUkkkkpSSSSS
+ lJJJJKUkmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmTpKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJOkpSSSSKlJJJJKUkkkkpSSS
+ SSlkk6SSlkk6SSlkk6SSlkk6ZJSkkkklLpJkklLpJkklLpJJJKUkkkkpSSZJJS6ZJJJSkkkkgpdMkknW
+ pSSSSVqUmTpkrUpJJJK1KTpk6VqUkkklalJJJJWpSdMnStSkkkkrUpJJMlal0kySVqXSTJJWpdJMklal
+ 0kkkrUukmSStSkydMmlSkkkk1SkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKTpkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQKlJJkkKUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJk
+ kqUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJk6VKUkkklSlJJJJUpSSSS
+ VKUkkklSl0kySVKUkkklSlJJJJUpSSSSVKUkkklSlJ0ySVKXTJJJUpdMkklSlJJJJUpSSSSVKUkkklSl
+ 0ySdKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSQpSySdJKlLJJ0kqUsknSSpS
+ ySdJKlLJJ0kqUsknSSpSySdJKlLJJJI0pSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSdKlLJJ
+ 0kqUsknSQpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsmTpJwClkk6ScpZJOkgpZJOkkpZJOkkpZJOk
+ kpZJOkkpZJOkkpZJOklSlkk6SVKWSTpJUpZJOkkpZJOkkpZJOkkpZJOklSlkk6SVKUkkmTCFLpJkkqUu
+ kmSSpS6SSSVKUkkklSl0kySVKXSTJJUpdJMklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJ
+ JUpSdMklSl0kyUo0pdJMklSl0kySVKXSTJSlSl0k0pSlSl0k0pSlSl0k0pSlSl0kydKlKSSSSpSkkkkK
+ UpJJJKlKSSSSpSkkkkqUpJJMlSl0kkyVKUknTKQKUkkknWpSSSSVqUkkmStS6SZJK1LpJJJWpSSSSVqU
+ kkklalJJJkrUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStTJMkkmKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkmSUumlJJJS6SZJJS6SZJJS6SSSSlJJJ0lLJJJ0lLJJ0klLJ0kyBClJJJIU
+ pSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSS
+ SVKUkkklSlJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSydJJClKSSSSpSkkkk
+ qUpJJJKlKSSSSpSkkkkqUpJJJKlKTJ0yICl0ydJPClkk6SKlJJJJKUkkkipZJOkkpZJOkkpZJOkkpZJO
+ mSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkkFLJJ0klKSSTpKUmTpJKWSSSSUpMnSSUsn
+ SSSUpJJOkpZJOkkpiknSSUoKQTBOElLqD0RQekpp2qqVbtCrEJKZVq5UqlYVytJTYanTBSSUwKiVMqJC
+ SmKdJJJSkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSZOkpdJJJJSySdMkpSdMnSUoqvYrBQLElNR6Z
+ qk9M1JTYrVlqr1qw1JS6ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZMnTJKUkkkkpYqJUiolJTAqJUyolJTAplIhN
+ CSlkk8JJKWSUoShJTGElKExCSmKaU5CaElhK0pwlCcBBFqSKeEoSVbApwnhKEVWyBTEpJFJNoykFIhMA
+ kq2QU4UQphJFsSFEhEhRISVbBOEoTgJKtcJEJwE5CSrRkJoUyEoSRbGE8J4ToKtYBOEykElKUSpqJSQw
+ KSRSASVakylCUIpDBSCUJwEmRkEkgnSUxITQpFMkhaFIJk6SF0ySRSUxKgVMqJCKmMqQKaE4CCWYKICh
+ AKQKKU4KmCggogKSWaYpwkUksSoEqRKGSkpclRJUC5R3JKSEqJKjKSS1YplJMkgqClKimlJauSoykSmS
+ ZIswUQFCCIEmRnKgSnlRKSFpSlMkkhlKUpk6S1YqJUiopIUnTJJIXTJJIKXTpkkkrpJJJJUkkkkuUkkk
+ kpSSSSSlJJkklLpJJJLVJJJJIWSSSRSpJJJJSkkkklKSSSSUpJJJJSkkkklKTJJJKXCkFBTCSlyhPRUN
+ 6SkBU2KBU2IJbVaOECtHCSl0ydMkpSdMkkpdOmTpKUknSSUsknTJIUmTpkkLpJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSVJFJIpKRPVV6tPVV6SmIR60AI9aSmw1SUWqSSlJJJJKUkkkkpSSSSSlJk6ZJSkydJJS
+ kkk6SlJ0yeUlKShJJJS0JinTFJSyZOmSUpOmThJS8JQnTpKYwowppoSUxShSSSUxSUkklLJJJ0lLJJJI
+ KXSTJSkpdJMlKSl0k0pSkpdJJOngKWSTpI0pZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOk
+ lSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOk
+ lSlkk6SVKWSTpJUpZJOklSlJk6SVKUmTpJUpZJOklSlkk6SVKWTKSZKlLJJ0kqUsknSSpSydJOmlK0JQ
+ nSTVLJQnSSUtCUJ0kkLJQnSSUtCUJ0klLJQnSSQtCUJ0klLJJ0klLJJ0klLJJ0klLQknTpJWSTpJKYp0
+ kkkqSSSSUpMnSSUsknSSQsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSS
+ UsknSSUsknSSUsknSSUsknSSUsknSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSyUJ0klLJJ
+ 0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0kVLJKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQ
+ lCSmKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKSlCSKm
+ MJQpJJymMJQpJIqYwlCkkkpjCUKSSSloShOkgpaEoTpJKWhKE6SSloSUkySlkkkkaUpJJJKlLJJ0kqUs
+ knTJUpSSSSVKUkkklSlJJJkqUukkkmlSoShOko1LQlCdJJS0JJ0klLJ0kklKSSlKUlKSSlKUlKSSlNKS
+ l0kpSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsnSSSUskkkipSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUpKUklKSKl
+ JJJJKUkkkkpSSSSSl0kySSl0kySSl0kySSl0ySSSlJJJJKXTJ0klLJJ0klKSSSSUpJJJJSySdJJSkydM
+ kpSSSSClJJ0kFLQknSSUskkkkpSSSSSlJJJJKUkknSUsknSSUsnTJJKXTJSkkpSSSZJS6SZKUlLpJpSl
+ JS6SaUklLpJk6SlJ0yUpKXTJJ0lLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0k
+ lLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0k
+ lLQlCdJJS0JQnSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSRClkk6ScpZJOkkpZJO
+ klSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJO
+ klSlkk6ZJSkk6SKlkk6SSlkk6SSlkk6SSlkk6ZJSkkk6Slkk6SSlkk6SSlkk6SSlkkkklKSTpJKWSTpJ
+ KWSTpJKWSTpJKWSSTpKWSTpJKWSTpJKWSTpJKWSTpJKUkkkkpSSSSSlJJJJKUkknQUpKEkkqUqEoSSSp
+ SoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoShKUpSpSoTQnlKUlLJJ0kqUsknSSpSySdJKlLJJ0kq
+ UsknSSpSySdJKlLJJ0kqUsnSSlKlKhKE6SVKWhKE6SVKWhKE6SVKWhKE6SVKWhKE6SVKWhKE6SVKWhKE
+ 6ZKlKhNCdJJS0JQkkkpUJQkkkpUJQkkkpUJQkkkpUJQkkkpUJQkkkpUJQkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJoTpJKWTKSZKlLJJ0kqUpJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJU
+ pZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6ZKlLJJ0kVLJJ0klLJJ0klLJJ0klLJ
+ J0kKUsknSSpSySdJKlKSSTpKUkkklSlJJJJUpSSSSVKWSTpJUpZJOklSlkk6SVKUmTpJUpZJOkmqWSTp
+ IKWSTpIqWTKSZJSySdJJSkk6SSlkkk6Slkk6SSloTQpJJKYwlCkkkpjCUKSSSmMJQpJJKYwlCkkkpjCU
+ KSSSmMJQpJJKYwlCkkgpZKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpZK
+ E6eElMUlKEoSUxShShMkpaEoTpJKWhOknSUsknTJKUkkkkpSSSSIUsknST6UsknSQpSySdJKlLJJ0kqU
+ sknSSpSySdJKlLJJ0kqUsnSTpUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVK
+ WSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpMnSSUsknSSUsknSQUsknSSUsknSSUsknSRUsknSSUsknSRUsnSSSUsknSRUsknSSUsknSSUsknSQUs
+ knSSUsknSSUsknSSUsknSSUpMnSQUpJJOgpZOkkkpSZOkkpZJOmSUpMnSSUsnSSSUqE8JJJKVCZOkkpZ
+ KEkklKCkEyUpKZKLlKVFxSU1bAqxCtWKuQkpdgVutVmK0xJSYJ1EFPKSl0xCcFJJTAhMpFRKSlk6ZJJS
+ 6SZJJSkk6ZJSkkkklKSSSSUpJJJJSydMnSUukkkkpSSSSSlJ0ydJSxQLEcoFiSmq9M1O9M1JTZrVhqr1
+ qw1JTJMnTJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZMnSSUsknSSUsolTUSkpgQokKZUSElMCEymQmhJTFPCeEoSU
+ tCUKSSSmMJiFNKElIyE0IkJoSWkMITwpQnhJFMEoUoShJVMYShThMQkqmCZSIShJVMYTwpAJ4SVTFOCl
+ CUJKpdIpJ0k0whOAnhKEkUuEkkxSVSxTJylCSqUmJTwmISVS0pwVFOElUylMUglCSqWSATwnASRwqhKF
+ IBPCS4BHCeFKE0JL6UkkmSVSk0p4TQkqlpSlKEySOFeUpTJIq4V0oSAUgElcKwCcBSAUoSTwsITKZCjC
+ SqUEZqEAitCSaSBIpBIpKpG5BcUZyC4JJpESmlSITAJIpQUgE4aphqSKYwmIRdqYtRRSEhRKMQoFqSOF
+ GnAU9qcNQTsxAUgnhPCSbWTFOnhJNsEoU4ShJDGEoUoTwkhhCaESEtqSEcJKe1NCSGKUKUJ4SQwSU4Sh
+ JLBJShPCCbYJKcJoSXBjCUKcJQklhCUKcJQkphCUKcJoSUxhJThNCS0sUoUoTwkhhCUKcJQiphCUKcJQ
+ klhCSnCUJKYJKcJoSUxSUoShJLFJShKElMIShThKEkMAFMBIBSASUtCG9GIQnhJTXKmxMQpMQU2GI4QW
+ IwSUpJOmSUpJMnSSunUU6SmSSZOkpSZOmSUpMnSSWqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkqSKSR
+ SUieqr1aeqr0lMQj1oAR60lNhqkotUklKSSSSUpJJJJSkkkklKTJ0ySlJ0kklKTSkSoEpKZymlDLk29J
+ SaUpQN6fekpNKaULelvSUklKUPcm3JKSylKFvS3pKTgp5QN6fekpNKaULelvQUllJC3pb0lJZTSh7029
+ JSWUpQt6bekpLKUoW9NvSUmlNKFvS3pKSylKDvS3pKTSlKDvS3pKTynlB3pb04KTSlKDvS3o2pNKUoO9
+ Lelak8pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqT
+ SlKDvS3pWpNKUoO9Lelak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqSylKFvS3pWhLKUoW9
+ LelakspShb0t6VqSylKFvS3pKSylKFvS3pKSylKFvS3pWpLKUoW9LelaUsp5Qd6W9K1JpSlB3pb0rUml
+ KUHelvStSaU0oW9LelaUspShb0t6VqSylKFvS3pWpLKUoW9LelakspShb0t6VqSynlB3p96Ck0pSg70t
+ 6FKTSlKDvS3o0hNKUoO9LelSk0pSg70t6VKTSlKDvS3oUpNKUoO9LelSE0pSg70t6VKSynlB3pb0qUml
+ KUHelvSpSaUpQd6W9KlJpSlB3pb0qSmlKUHelvSpSWU8oO9LejSU0pSg70t6FKTSlKDvS3pUpLKUoW9L
+ elSEspShb0t6VKSylKFvS3pUpLKUoW9LelSkspShb0t6VKSylKFvS3pUpLKUoW9LelSkspShb0t6VKSy
+ lKDvS3pUpNKUoO9LelSk0pSg70t6VKTSlKDvS3pUpNKUoO9LelSk0pSg70t6VKTSlKDvS3pUpNKUoO9L
+ ejSk0pSg70t6VKTSlKDvS3pUpNKUoO9LelSk0pSg70t6VKTSlKDvS3pUpNKUoO9LelSk0pSg70t6VKTS
+ lKDvS3pUpNKUoW9LelSkspShb0t6VKSylKFvS3pUpLKUoW9LelSkspShb0t6VKSylKFvS3pUpLKUoW9L
+ elSksp5Qd6felSkspShb0t6NJSylKFvS3pUpLKUoW9LelSkspShb0t6VKSylKFvS3pUpLKUoW9LelSks
+ pShb0t6VKSylKFvS3pUpLKUoW9LelSkspShb0t6VKSylKFvS3pUpLKUoW9LelSkspShb0t6VKSylKFvS
+ 3pUpLKUoW9LelSkspShb0t6KEspShb0t6SkspShb0t6SkspShb0t6Sk0pSg+ol6iSk0pSg70t6Sk0pSg
+ b0+9JSaUpQN6fekpLKaUPelvStSSUpQ96W9K1JEkPelvStSRJD3pb0lJEkPelvStTNJQ3pt6VqSJIe5L
+ cjakiUoe9LemlSWUpQd6W9MpSWUpQd6W9KlJpSlB3pb0qUmlNKDvS3pUpNKUoO9NvSpSeUpQN6W9KlJt
+ yW5B3pb0aUnBTgquHqQehSk8pShb0t6VKSylKDvS3pUpNKUoO9LelSk0pSg70t6VKTSmlC3pb0qUllKU
+ LelvSpSWUpQt6W9KlJZTShb029GlJZSlC3pb0aUllKULelvSpSWUpQt6W9KlJZSlC3pb0qUllKULelvS
+ pSWUpQt6W9KlJZSlC3pb0qUllPKDvTb0qUnlKUDelvSpSeUpQN6W9KlJ5SlA3pb0qUnlKUDelvSpSeUp
+ QN6W9KlJ5SlA3pb0qUnlKUDelvSpSeUpQd6W9KlJpSlB3pb0qUmlKUHelvSpSaUpQd6W9KlJpSlC3pb0
+ qUllKULelvSpSWUpQt6W9KlJZSlC3pb0qUmlKUHelvSpSaUpQt6W9KlJpSlB3pb0qUmlKUHelvSpSaUp
+ Qd6W9KlJpSlB3pb0qUllKULem3pUpNKUoO9LegVJpSlB3pt6apPKaUHelvSUmlKUHelvSUmlKUHelvSU
+ mlKUHelvSUmlKUHelvSUmlPKBvT70UJZSlC3pt6Sk0pSg70t6Sk0pSg70t6SkspShb0t6SkspSg70t6S
+ U0pShb0t6Cksp5Qd6W9JSaUpQd6W9JSaU8oO9PvRpSWUpQt6W9GlJZSlC3pb0qUllKULelvSpSWUpQt6
+ W9KlJZSlC3pb0qUllKULelvSpSWUpQt6W9KlJZSlC3pb0qUllKULelvSpSWUpQt6W9KlJZSlC3pb0qUl
+ lKULelvSpSWUpQt6W9KlJZSlC3pb0qUllKULelvSpSaUpQt6W9KlJZSlC3pb0qUllKULelvSpSWUpQt6
+ W9KlJZSlC3pb0qUllKULelvSpSWUpQt6W9KlJZSlC3pb0qUklKULelvSpSWUpQt6W9KlJZSlC3pb0qUl
+ lKULelvSpSWUpQt6W9KlJZSlC3pb0qUllKULelvQpSWU8oO9PvRUllKULelvRUllKULelvSUllKULelv
+ SUllKULelvSUllKULelvSUllKULelvSUllKULelvSUllKULem3pKTSlKDvS3pKTSlKDvS3pKTSlKDvS3
+ pKTSlKDvS3pKTSlKDvS3pKTSlKDvS3pKTSlKDvS3pKSylKFvTb0lJpTyg70t6Sk0p5Qd6W9JSaU0oW9L
+ ekpLKUoO9LekpLKUoO9LekpNKeUDen3pKTSnlB3pb0lJpSlB3pb0lJZSlB3pb0lJZSlB3pb0lJpTyg70
+ t6Sk0pSg70+9JSaUpQd6W9JSWUpQt6bekpLKUoW9NvSUmlPKBvS3pKTylKBvS3pKTylKBvS3pKTylKBv
+ S3pWpPKUoG9LekpPKUoG9LekpPKUoG9LekpPKUoG9Lelak8pbkDelvStSfcluQN6W9JSfcluQN6W9BSf
+ cluQN6W9JSfcluQN6W9K1J9yW5A3pb0rUn3JbkDelvStSeU0oO9NvStSfclKBvS3o2pPKUoG9LekpPKU
+ oG9LekpPKUoG9LekpPKUoG9LekpPKUoG9LekpPKUoG9LekpPKeVX9RPvSUn3JbkDelvSUn3JbkDelvSU
+ n3JbkDelvSUn3JbkDelvSUn3JbkDelvSUn3JbkDelvSUn3JbkDelvSUnlNKDvS3oEqTSlKDvS3oWpNKU
+ oO9Lelak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6
+ VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqTSlKDvT70bUllK
+ ULelvStSaUpQd6W9K1JpSlB3pb0rUmlKUHelvStSaUpQd6W9K1JpSlC3pb0rUllKULem3pWpNKUoO9Le
+ lak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6NqTSl
+ KDvT70rUllKULelvStSWUpQt6W9K1JZSlB3pb0rUmlKUHelvStSaUpQd6W9K1JpSlB3pb0rUmlKUHelv
+ SUmlKUHelvStSaUpQd6W9C1JpSlB3pb0rUmlKUHelvStSaUpQd6W9K1JpSlB3pb0rUmlKUHelvStSaUp
+ Qd6W9BSaUpQd6W9JSWUpQt6W9JSWUpQt6W9JSWUpQt6W9JSWUpQt6W9JSWU8oO9LekpNKUoO9LekpNKd
+ B3p96SkqSFvS3pKSpIW9LekpKkhb0t6SkqSFvS3pKSpIW9LekpKkhb0t6SkqaUPem3pKSylKDvS3pUpN
+ KUoO9LelSk0pSg70t6VKTSlKDvS3pUpNKUoO9LelSk0pSg70t6VKTSlKDvS3pUpNKUoO9PvSpSaUpQd6
+ W9KlJpSlB3pb0qUmlKUH1Et6VKTSmlB3pb0qUmlKUHelvSpSaUpQd6W9KlJZSlB3pb0qUnlKUHelvRUm
+ lKUHelvRUmlKUHelvSUmlKUHelvSUmlKUHelvSUmlKUHelvSUmlKUHelvSUmlKUHelvSUmlPKBvT70lJ
+ pSlB3pb0lJpSlB3pb0lJpSlB3pb0lJpSlB3pb0lJpSlB3pb0lJpSlB3pb0lJpSlB3pb0lJpTShb0t6Sk
+ spShb0t6CkspShb0t6SkspShb0t6SkspShb0t6SkspShb0t6SkspShb0t6SkspShb0t6SkspSg70t6Kk
+ 0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6VqTSlKDvS3pWpNKUoO9Lelak0pSg70t6FqTSmlC3
+ pb0LUllPKDvS3oWpNKUoO9Lejak0pSg70t6NqTSlKDvS3pWpNKUoO9Lejak0pSg70t6VqTSmlC3pb0VJ
+ ZSlC3pb0lJZSlC3pb0lJZSlC3pb0lJZSlC3pb0lJZSlC3pb0FJZSlC3pb0lJZSlC3pb0lJZSlC3pt6Sk
+ 0pSg70t6Ck0p9yBvS3pKTylKBvS3pKTSlKBvS3pKTbkpQd6W9JSeUpQN6fekpPKUoG9PvSUmlNKDvS3p
+ KTSnlB3p96SksptyEXqO9JTY3Ji5A9RIvSUp5QCVJ70IuSUmYUdhVNrkZr0lNrcluVf1EvUSU2g5TlVW
+ vRg5JTMqBTyolJSkkydJS6SZOkpSSSSSlJJJ0lLJJ0klLJJJJKUkkkkpdJJJJSkkkySl06ZOkpYoFiOU
+ CxJTVemanemakps1qw1V61YakpkmTpklKTJJ0lLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0evSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJOkkpSSSSSlKJUkxSUwKiQplMQk
+ phCZShKElMYTwnhPCSloShPCUJKYp4TwnASUttS2qYClCSEW1NtRSE0JIYbUtqKAlCSUO1NtRSEoSUi2
+ J9iMGp9qSkOxLYjbUoSUgLE21H2ptqKkO1KEXalCSkcJoRIShJSOE0IkJoSUj2pw1EDVINSUi2JFiPtS
+ LUlNYsS2I+1LakpCGp9qLtT7UlItifaiQnhBSPaltRIShJcERaokIxCiQkyBDCeFPanASUj2p9iKApQk
+ hrliiWKyWqJaipr7UtqMWpbUkIw1SDVMNUoSSwhKFMhRISUwKUKSQCSlAKYTBOkplKYlMmKKmJKGQiEJ
+ oSUj2pw1TAUg1JTANUw1SATpIYwmIUkklIyFHaiwlCSkYan2ogCeElhRFqiQikKBCCGEKQCQCmAkkMYS
+ hEhKEko4ShThKElMYT7VJOkhGWqMIpUYSWFhCUKcJwEkMNqW1EhPCSUW1LaiwlCCkW1LaiwltSXhFtS2
+ ou1KElyLaltRYShJSLaltRYS2pKRbUtqLCUJLSi2pbUXaltSQi2pbUWEoSUi2p9qJCUJKRbUtqLCaEVI
+ 9qW1EhKEEo9qW1EhKEUo9qW1TShBTDam2osJoSQj2qQCnCUJKRkITwrBCA8Ioa5CkwJipMSU2GIoQ2BF
+ ASUpRUiopKUkkkgldOoqSSV0kydJSkkkklKSSTILV0kySSl0kydJKkkkklKSSSRUpJMkkpdJJJJSkikk
+ UlInqq9Wnqq9JTEI9aAEetJTYapKLVJJSkkkklKSSSSUpJJJJSkydJJSyYlIqJKSliUMuTuKC4pKXL1A
+ vUHFDJSUm9RL1FWLktySm16iW9Vtyfckps70t6r70tySk+9N6iBuTbklNj1EvUVfcm3JKbPqJ/UVXclu
+ QU2vUS9RVd6W9JTa9RN6iq70t6Sm16ib1FW3pbklNn1EvUVbclvSU2fUTeoq29Lekps+om9RV9yW5JTY
+ 9RP6irbktySmz6if1FV3pt6IU2/US9RVN6feipteol6iq70t6Sm16iXqKrvS3pKbXqJeoqu9Lekpt+ol
+ 6iqb0t6Sm36iXqKpvS3pKbfqJvUVXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSU2vUS9RVd
+ 6W9JTa9RL1FV3pb0lNr1EvUVXelvSU2vUS9RVd6W9JTa9RP6iqb0t6Sm36iXqKrvS3pIbXqJvUVbeluS
+ U2fUT+oqu5Lckpteol6iq70t6Sm16iXqKrvS3pKbXqJeoqu9Lckpteol6iq7kt6Sm16ib1FW3pt6SW16
+ iXqKrvS3pJbXqJeoqu9Lekpteon9RVN6fekpteol6iq70t6Sm16iXqKrvS3pKbXqJeoqu9Lekpteol6i
+ q70t6Sm16iXqKrvS3oqbXqpeqqu5Lckhteql6qq70t6Sm16qXqqrvS3pKbXqpeqqu9Lckpteql6qq7kt
+ ySm16qXqqrvS3pKbXqpeqqu9Lekpteon9RVN6W9JTb9RL1FU3pb0lNr1EvUVXelvSU2vUS9RVd6W9JTa
+ 9RL1FV3pb0lNr1UvUVXelvSU2/US9RVN6W9JTb9RL1FU3pb0lNr1UvVVXelvSU2vVS9VVd6W9JTa9VL1
+ VV3pb0lNr1UvVVXelvSU2vVS9VVd6W9JTa9VL1VV3pb0lNr1UvVVXelvSU2vVS9VVd6W9JTa9RL1FV3p
+ b0lNr1EvUVXelvSU2vUS9RVd6W9JTa9RL1FV3JbklNn1EvUVbcluSU2vUS9RVdyW5JTa9RL1FV3JbklN
+ r1E3qKtuS3JKbPqpeoqu9Lekpteql6qq70t6Sm16qXqqrvS3pKbXqpeqqu5Lckpteql6qq7ktySm16qX
+ qqruS3JKbXqpeqqu5Lckpteql6qq7ktySm36qb1VV3pb0lNr1UvVVXcluSU2vVS9VVdyW5JTa9VL1VV3
+ JbklNr1U/qqpvS3pKbfqpeoqm9Lekpt+ol6iqb0t6Sm36qf1VT3p96KW36iXqKpvS3pKbfqJeoqm9Lek
+ pt+ol6iqb0t6Sm36iXqKpvS3pKbfqJeoqm9Lekpt+ol6iqb0t6Sm36iXqKpvS3pKbfqpeqqm9Lekpt+q
+ l6qqb0t6Sm36qXqqpvS3pKbfqpeqqm9Lekpt+ql6qqb0t6Sm36qXqqpvS3pKbfqpeqqm9Lekpt+ql6qq
+ b0t6Sm36qXqqruS3IIbXqJeqqu9Lekpteql6qqb0t6Sm36qb1VV3pb0lNr1UvVVTelvSU2/VS9VVN6W5
+ JTa9VL1VV3JbklNr1U/qqpvS3pKbnqpeqqW9PvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvSU3P
+ VS9VVN6W9JTb9VL1VU3pb0lNv1U/qqnvS3pKbfqpvUVXelvSU2vUTeoq29Lckps+ol6irbktyCmz6iXq
+ KtuS3IqbHqJeoq8pSkpseol6ir7ktySmxvS9RV9yUpKT70t6BKW5JTYD1IWKruT70lNr1EvUVXelvQU2
+ vUS9RVd6W9JTa9RN6irb0t6Smz6iXqKtvS3pKbPqJeoqu9Lekpteol6iq70t6Km16iXqKruS3IKbPqJe
+ oq29Leips+ol6irb0t6Smz6iXqKtvS3pKbPqJeoq29Lekps+ol6irb0t6Smz6iXqKtvS3pKbPqJeoq29
+ Lekps+ol6irb0t6Smx6iXqKvuS3JKbHqJeoq+5Lckpseol6irylKSmx6iXqKvuS3pKbHqJeoq+9Lckps
+ eol6ir7ktySmx6iXqKvuS3JKbHqJeoq+5Lckpseol6irbktyKmz6iXqKtuS3JKbPqJeoq25Lckpteol6
+ irbktySmz6iXqKtuS3JKbPqJeoq25Lckps+ol6irbktySmz6iXqKtuS3JKbPqJeoq25Lckps+ol6irbk
+ tySm16iXqKtuS3pKbPqJeoq29NvSU2vUS9RVt6W9JTZ9RL1FW3pbklNj1EvUVbcluSU2fUS9RVtyW9NK
+ mz6iXqKvvS3JqWx6iXqKvuTbklNn1E3qKvuS3JIbHqJeoq+5Lckpseon9RVtyW5JTZ9RL1FW3JbkkNn1
+ EvUVfcluSU2PUS9RV9ybekps+ol6irb0tySmz6iXqKtuS3pKbPqJvUVfcluSU2PUS9RVtyW5JTZ9RP6i
+ rbktySWz6iXqKtuS3JKbPqJeoq25Lckpteol6irb0t6IU2fUS9RVtyW5OU2fUS9RVtyW5JTZ9RP6iq7k
+ t6Sm16iXqKrvS3pKbXqJeoqu9Lekpteom9RVt6W9JTZ9RL1FW3JbklNn1E/qKruS3pKbXqJeoqu9Lekp
+ teol6iq70t6Sm16iXqKrvS3pKbXqJeoqu9Lekpteol6iq70t6Sm16iXqKrvS3pKbXqJvUVbelvSU2fUS
+ 9RVt6bekpteol6iq70t6Sm16iXqKrvS3pKbXqJeoqu9PuSU2fUS9RVtyW5JTZ9RL1FV3pb0lNr1EvUVX
+ elvSU2vUS9RVd6fekpteol6iq70t6Sm16iXqKrvS3pKbXqJeoqu9Lekpteol6iq70t6Sm16iXqKrvS3p
+ KbXqJeoqu9Lekpteol6iq70t6Sm16iXqKrvS3oKbXqJeoqu9Legpteol6iq70t6Sm16iXqKrvS3JKbXq
+ Jeoqu5Lekpteol6iq70t6Sm16iXqKrvS3pKbXqJvUVbeluSU2fUS9RVtyW5JTZ9RL1FV3pb0lNr1EvUV
+ bcluSU2fUS9RVtyW5JTZ9RL1FW3JbklNn1EvUVbcluSU2fUS9RVtyW5JTZ9RL1FW3JtySmz6iXqKtuTb
+ klNr1EvUVXcluSU2/US9RVd6W9JTa9RL1FV3pb0lNr1E3qKrvS3pKbXqJeoqu9Lekpteol6iq70t6Sm3
+ 6iXqKrvS3pKbXqJeoqu9Lekpteom9RVt6bekpteol6iq70t6Sm16iXqKruS3JKbXqJ/UVXcluSU2vUS9
+ RVtyW5JTZ9RN6irb029JTa9RL1FV3pb0lNr1EvUVXeluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXc
+ luSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcluSU2vUTeoq25Lckps+ol6irbktyCmz6iXqKtuS3JK
+ bPqJeoq25Lckps+ol6irbktySmz6iXqKtuS3JKbPqJeoq25Lckps+ol6irb0t6Smz6iXqKtvS3JKbPqJ
+ eoq25Lcips+ol6irbktySmz6iXqKtuS3JKbPqJeoq25Lckps+ol6irbktySmz6iXqKtuS3JKbPqJeoq2
+ 5Lckps+ol6irbkt6Kmz6iXqKtvS3JKbPqJeoq25Lckps+ol6irbktySmz6iXqKtuS3JKbPqJeoq25Lek
+ ps+ol6irb0t6Smz6iXqKtvS3JKbPqJeoq25LcmFTZ9RL1FW3Jbk1TZ9RL1FW3JbklNn1EvUVbcluSU2f
+ US9RVtyW5FTZ9RL1FW3JbklNn1EvUVbcluSU2fUS9RVtyW5JTZ9RL1FW3pb0lNn1EvUVbelvSU2fUS9R
+ VtyW5JTZ9RL1FW3JbklNn1EvUVbcluSU2fUS9RVt6W9JTZ9RL1FW3pbklNn1EvUVbcluSU2vUS9RVdyW
+ 5OU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVbcluSU2fUS9RVtyW5JTa9RL1FV3JbklNr1EvUVXcluSU2
+ vUS9RVdyW5JTZ9RL1FW3JbklNn1UvVVbcluSU2fVS9RVtyW5JTa9RL1FV3pb0lNr1EvUVXelvSU2fUS9
+ RVtyW5JTZ9RP6iq70t6Sm16iXqqpvS3pKbfqpeqqm9Leipt+ql6qqb0t6Sm36qXqqpvS3pKbfqpeqqm9
+ Lekpt+ql6qqb0t6Sm36qXqqpvS3pKbfqpeqqm9Lekpt+qm9VVd6W9JTa9VL1VV3pb0FNr1UvVVXelvSU
+ 2vVS9VVd6W9JTa9VL1VV3pb0lNr1UvVVXelvSU2vVS9VVd6W9JTa9VL1VV3pb0lNr1E/qKpvT70lNr1E
+ vUVbelvSU2fUS9RVtyW5JTZ9RL1FW3JbklNn1EvUVbcluSU2fUS9RVtyW5JTZ9RL1FW3Jb0lNn1EvUVX
+ elvSU2vVT+qqm9NvSU3PVS9VVN6W9JTb9VL1VU3pb0lNv1UvVVTelvSU2/VS9VVN6W9JTb9VL1VU3pb0
+ lNv1UvVVTelvSU2/VTeqqu9Lekpteqm9RVt6W9OU2fUS9RVd6W9FTa9RL1FV3pb0FNr1EvUVXelvSU2v
+ US9RVd6W9JTa9RL1FW3pb0lNn1EvUVbcluSU2fUS9VVtybekpteql6qq70t6Km36qXqqpvS3pKbXqpeq
+ qu9Legpteql6qq70t6Km16qXqKrvS3pKbXqJeoqu9PvQU2fUS9RVtyW5JTZ9RP6iq70t6Sm16iXqKrvS
+ 3oKbXqJeoqu9Lekpteol6iq70t6Sm16iXqKrvS3JKbXqJeoqu5Lckpteol6iq7ktySm16iXqKrvS3pKb
+ XqJeoqu9PvSU2fUS9RVt6W9JTZ9RL1FW3pb0lNn1EvUVbelvSU2fUS9RVt6W9JTZ9RL1FW3pb0lNn1Ev
+ UVbelvSU2fUS9RVt6W9JTZ9RL1FW3pb0lNn1EvUVbelvSU2fUS9RVt6W9JTZ9RL1FW3pb0FNn1EvUVbe
+ lvRU2fUS9RVt6W9BTZ9RL1FW3pb0lNn1EvUVbelvSU2fUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSU
+ 2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvQU2vUS
+ 9RVd6W9BTa9RL1FV3pb0VNr1EvUVXelvRU2vUS9RVd6W9JTa9RL1FV3pb0lNr1EvUVXelvSU2vUS9RVd
+ 6W9FTa9RL1FW3pbkVNn1EvUVbcluSU2fUS9RVtyW5JTZ9RL1FW3Jb0lNn1EvUVbelvSU2fUS9RVt6W9J
+ TZ9RL1FW3pb0FNn1E3qKvuS3JKbHqJeoq25Lckps+ol6irbktySmz6iXqKtuS3JKbHqJeoq25Lckps+o
+ l6irbktySmz6if1FV3J9ySmz6if1FW3JbklNn1E3qKvuS3JKbQen3qsHJ9ySk5eoGxBLlAuSU2fUS9RV
+ g5PuSUkc9QL0NzlAuSU2A9ED1UDlPckpObEhaq5cohySm+yxWGPWcxytVuSU3AU8oTSiBJS6dJJJSkkk
+ klLpJJJKUnSSSUpJJJJSySdJJSySdMkpdJJMkpSSSSSlJ0ydJSigWI5VexJTWemaneotSU2q1Yaq1ast
+ SUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJT//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJS6SZJJS6SZJJS6
+ ZJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUmTpklLFNCdJJTGEoUkklMYTwnSSUtCUJ0klLQnAS
+ TpKXCdRSSVS6SSSSqXCSZJJVKSSSSVTIJ1CUpSVTKUlFJJNMkyZJJVKSSTJKpSaE6SSqWhKE6SSqUE4T
+ JSkqmUpSoylKSqZJk0pSkml06jKUpKplKUqMpIqplKSjKUoIZJiEpSlJVrEKKclRJSVbIFSBQgiAJKtk
+ mTwmKSrWShNKcJKteExUlEpKtZNCSQSRaoShSShJVsU6RCZJVrp4TAqYRVxMNqaEVRKSrYQpBNKUpKtd
+ MSmJTSkq15TqIUgElWvCSSaUlWySUZTyktJWKgVMqKCLUApAJgFMJLwqEoTpJL2MJlJRKSFpSlMUySqZ
+ SnUVIJMZXhPCaUpSWrpJpTEpKXlIFRlOCkpmFKFEKaTIGJCiVIlQJSXqlIJk4CSmQTwohPKSlJJSkEmM
+ sgEoThOkhGQmKmQoEIKWSSTJJXSTJ0krpJk6SVkylCYhJKyZKEklLykmTpKZBOAohTBSQxcFWtVpxVS4
+ orWs4qVZQXnVEqKSG9WEeECpWElMChlEchlBSydMnSSuFIKIUwEkqhJShMUlyyZOUySF0ySSSlJk6ZJS
+ k6inSUySTBOkhSZIpiUkrpKMpwkhdOmClCSlBIp4TFJSF6qvVp6qvRUwCsVquFYrSU2GqSi1SSUpJJJJ
+ SkkkklKSSSSUpJJMkpYqBUyokJKROCE4KwQoFqSmq4IZarZYoGtJTUIUYVo1qPppKa6dG9NL00lIUkb0
+ 0vTSUhhKEf00vTSUghKEf00vTSUghLarHppbEFNYhRIVk1qJqSU10gEf0lIVJKQAJ9qsCpP6SSmtCiQr
+ ZqUTUkpqwnhH9JOKklIAEtqsCpP6SSmttTQrJrTemkprQlCsekl6SSmvCUKz6SXpJWprQlCs+kl6SSmt
+ CUKz6SXpJKa0JQrPpJekkprQlCs+kl6SVqa0JQrPpJeklamtCUKz6SXpJWprwlCsekl6SVqa8JQrHpJe
+ klamvCUKx6SXpJWprwlCsekl6SVqa8JQrHpJeklamvCUKx6SXpJWprwlCsekl6SVqa8JQVY9JL0krU14
+ ShWfSS9JK0NcBPtVj0k/ppWpr7UxCs+mmNaVqapCaFZNSiakrUgTgI3pJxUlakICeEcVp/TSU14USFZN
+ aia0rU14ShG9NOKkkoIShWPSS9JK0teEoKsekl6SVqa8FPCsekl6SVqa8JQVY9JL0krU14ShWPSS9JK1
+ NeEoVj0kvSStTXhKFY9JL0krSghKFY9JP6SNoa0J9qseml6aSGtCaFZ9NN6SVqa8JQrHpJxUlamvtT7V
+ Z9JP6SVqau1LarXpKJrStTWITQrBrTeklamvCUKz6Sf0UrU1oShWfSTeklamvCUKx6SXpJWprwlCsekl
+ 6SVqa8JQrHpJeklamvCUKx6SXpJWprwlCsekl6SVqa8JQrHppemlamvCUKx6aXpJWprQlCsekl6SVqa8
+ JQrHpJeklamvCUKx6SXpJWprwlCsekl6SVqa8JQrHpJeklamvCUKx6SXpJWprwlCsekl6SVqa8JQrHpJ
+ eklakEJoVj0kvSStTWSVj0k3pJWpApAI3pJxUlakICeEcVp/TStSDaltR9iWxK1NeEoR/TS9NK1IIShH
+ 9NP6aVqa8JiFZ9NMakrU1oShWPSTemlakEJQrHpJeklamvCUKz6SXpJWprQlCs+kl6SVqa8JbVY9NP6S
+ Vqa21LarPpJeklamttS2qz6SXpJWprbU0K16Sb0krU1oShWfSS9NK1NeEoVj00vTStTXhLarHpp/SStT
+ W2pQrPpJvSStTWhKFZ9JL0krU1oShWPSS9JK1NaEoVn0kvSStTXhKFY9JL0kUteEoVj0kvSRU14ShWPS
+ S9JJTXhKFY9JL0klNeEoVj0kvSSU14ShWPSS9JJTXhKFY9JL0klNeEoVj0kvSSU14ShWPSS9NJTXhKFY
+ 9NL00lNeEoVj00vTSU14ShWPTS9NJTXhKFY9NL00lNeEoVj00vTSU14ShWPTS9NJTXhOAj+mnFaSkIak
+ QrHppjWm2hqkJlYNaj6SVqQJ4RhUpCpK1IITQrPpJjUlamtCUKwak3pJWpCApBqMK0QVpWpr7ExYrYrS
+ NaVqaZaokK2a1H0krU1YShWvSS9JK1NaClBVn0kvSStTWgpQVZ9JL0krU1oShWfSS9JK1NaEoVn0kvSS
+ tTWhKFZ9JN6SVqa8JQVY9JL0krU14Twj+kl6aVqQwnhG9NP6aKkEJoVj00xrSUghOAi7FMMSUh2pbVY2
+ JbElNbalCOWJtiSkMJ9qKGKYrSU1y1RIVs1KBqSU1YTwj+kl6aSkEJQj+ml6aSkEJlY9NN6aSkCeEb00
+ vTSUhhKEb00/ppKQQlCP6aXppKQQlCP6af00lNeEoVn0kvSSU1iFGFaNSiakFNdJH9JL0krUghKFY9JL
+ 0krU14To/pJeklakCSP6SXpJWpAkj+kl6SVqQJI/pJeklamvCUKx6SXpJWpBCUI/ppemlakMJwEX01IM
+ StSLamLVYFaRrStTVIUVZNah6aVqQgJ4RxUpeklamtCeEf0k4qStSCE8I4rT+mlamtCaFYNab00rU14S
+ hWPTS9JK1NeEoVn0kvSStTWhKFZ9JL0krU1oTwrHpJeklamvCUKx6SXpJWprwlCsekl6SVqa8JQrHpJe
+ klamvCUKx6SXppWpBCW1H2J9iVqQbU21WfTS9NK1NaFEhWjUompK1NZJHNSb0krUhTovpJxWlakUJ4Rh
+ Wn9NK1IITQrPpJvSStTXhNCsekl6aIUghJH9NL006koIShWPTS9NKlIIShWPSS9JKkNeE0Kz6Sb00qU1
+ 4ShWPSS9JKlNeEoVj0kvSSpDXgpQVY9JL0kqU14KUKx6Sb0kqUghKEf00vTSpSCEoR/TS9NKlIIShH9N
+ L00qU14Twj+ml6aVKQQlCP6aXpJUpBCUI/ppemlSUEJQj+ml6aVKQwlCP6aXpoKQQnhH9NL00FIIShH9
+ NL00lNeEoR/TS9NJTXhKEf00vTSU14Twj+kl6SSkEJwEf0k4qSUghLarHppemkprEJoVk1pvTSU10oR/
+ TS9NJSCEoR/TS9NJSCEoR/TS9NJSCEoR/TS9NJSCEoR/TS9NJSCEoR/TS9NJSCEoR/TS9NJSCE0Kz6Sb
+ 0klNeEkf0kvSSUgShH9NP6aSkEJ4RxWn9NJSCE0Kx6aXppKa8JoVn003ppKa0JQrHpJvSSU14Twj+ml6
+ SSkMJQj+ml6aSkEJQj+ml6aSkEJQj+ml6aSkEJQj+ml6aSkEJQj+ml6aSkEJQj+ml6aSkEJQj+ml6aSk
+ EJQj+mn9NJTXhKFY9JL0k1TXhKFY9JL0klIITwj+mn9NJTXhNCs+mmNaSmsQmhWDWm9JJTXTwjeknFSS
+ kQCkGoorUxWkpr7UxarPppjWkprQmhWfTTemkpBCUKx6aXppKa8JQrHppemkprwlCseml6aSmvCUKx6a
+ XppKa8JQrHppemkprwlCseml6aSmtCUKz6ab0klNeEoVj00vTRU14ShWPTS9NJTXhNCs+mm9JJTXhNCs
+ +km9JJTWhKFY9JN6SSkEJ4R/ST+kkpBCUKx6SXpJKQQmhWfSTekkprwmhWfTS9JJTWhPCsekl6SSmvCf
+ arHpJxWkpr7Utqs+ml6aSmttShWfTTemkprQmhWfTS9JJTWhKFY9JL0klNeE8Kx6aXpJKa8JQrHpJekk
+ prwlCsekl6SSmvCUKx6SXpJKa8JQrHpJekkprwlCsekl6SCmvCUKx6SXpJKa0JQrPpJvTSU14ShWPTS9
+ NJSCEoVj00vTSUg2pbVY9NL00lNaEoVn003ppKa8JQrHppemkprwmhWfSS9JJTWhNCs+km9JJTXhPCP6
+ ScVJKQQlCseml6aSmvCUKx6aXppKa8JQrHppemkprwlCseml6aSmvCUKx6aXpoqa8JQrHppemkprwlCs
+ eml6aSmtCaFZNaj6aSkACkAiitTFaSkG1PtR/TT7ElNfam2qzsTemipr7U0Kz6aXppKa0JoVn0kxqSU1
+ oTKx6SXpJKQQnhHFSf0klIIShWPSS9NClNeEoVj00vTSpTXhKFY9NL00qU14ShWPTS9NKlNeEoVj00vT
+ SpTXhKFY9NL00qU14ShWPTTemjSkEJoVn003ppUprQlCsekm9JKlIITwjekn9NKlIITwj+mnFaVKQbUt
+ qseml6aVKa0JoVn00xrSpTWhKFY9NL0kqU14TgI4qUhUlSmvtT7VZFSXpJUpq7UoVr0k3pJqmtCUKz6S
+ XpJKa0JQrPpJekkprbUtqs+ml6aSmttS2qz6aXppKa8JQrHppemkprwlCseml6aSmvCaFZ9NL00lNaE+
+ 1WPTTitJTX2pbVZ9NP6aSmrtTFqtGtRNaSmrCUKwa0vSSU14ShWPST+kkprwlCs+kl6aSmtCaFZ9JMak
+ lNaEoVj0kvSSU14ShWfSS9JFTWhKFZ9JL0klNaEoVn0kvSSU1oShWfSS9JBTWhKFZ9JL0klNaEoVn0kv
+ SSU14ShWPSS9JJTWhNCs+km9JJTXhOAj+kpCpJTXhLarPpJ/SSU1YShWfSTekkprQlCsekl6aSkEJQrH
+ pp/TSU19qW1WfTS9NJTW2pbVZ9NN6aSmtCUKx6aXpogKQQnhG9NP6aNKQQlCP6aXppUpBCUI/ppemlSk
+ EJ4RvTT+mlSkEJbVY9NP6aVKa0JiFZ9JMakqU1SE0Kyak3ppUprwnhH9JP6SVKa8JQrPpJeklSmtCUKz
+ 6SXpJUprQnhWPSS9JKlNeEoVj0kvSSpTWhKFZ9JL0kqU1oShWfSS9JKlNaEoVn0kvTSpTWhKFZ9NL00l
+ NaEoVj00vTSU14ShWPTS9NJTXhKFY9NL00lNeEoVj00vTSU14TwrHppemkprwlCsekl6SSmvCaFZ9JP6
+ SSmrtS2q16Sb0klNaEoVn0kvSSU1oShWfSS9JJTWhKFZ9JL0klNaEoVn0kvSSU1oShWfSS9JJTXhKFY9
+ JL0klNeEoR/SS9NBTXhKFY9NN6aSkEJlY9NN6aSkMJQj+ml6aSkMJ4RvTUvTSU14S2qz6aXppKa0JoVr
+ 00xqSU1YTQrRqUfSSU14Twj+kl6SSkEJQrHpJekkprwlCsekl6SSmvCUKx6SXpJKa8JQrHpJekkprwlC
+ sekl6SSmvCUKx6SXpJKa8JQrHpJemkpBCUI/ppemgpBCUKx6aXppKa8JQrPpJvSSU1oShWfSTekkprwl
+ CP6SXppKQQnhG9NL00lIYShH9NL00lIIShWPTS9NJTXhKFY9NL00lNeEoVj0kvSSU14ShWPSS9JJTXhK
+ FY9JL0klNeEoVj0kvSSU14ShWPSS9JJTXhKFY9JL0klNeEoVj0kvTSU1oShWPTTemmqQQlCP6aXppKQQ
+ lCP6aXppKQQlCP6aXpoqQQlCP6aXppKQQlCP6aXpoqQQlCP6aXppKQQnhG9NOK0lIYShH9NP6aVqQQlC
+ P6af00bU14TQrPppvTSU14TQrPppvTQU14ShH9NL00lNeE8I/ppemkpBCUI/pp/TSU14ShWPTS9NJSCE
+ oR/TS9NFSCE0Kx6ab00lIIShH9NL00lNeEoVj00vTSU14ShWPTS9NJSCEoR/TT+mkpBCUI/ppemkpBCe
+ Ef00vTSUghJHNaYsSUgKaEf00hWkpCGpy1WBWnNaSmk8IJVx9aA5iSkYRQEmsRm1pKQlqW1WfST+kkpC
+ wKzWEm1orWJKSMRgoNaiAJKXhJOmSUsnSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpk6ZJSkkkklKTpk
+ 6SlFV7FYKr2JKaz1Fqk9Rakps1qy1Vq1ZakpdJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0+vSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUmSSSUskk
+ kkpSSSSSlJ0ySSl0kkklKSSSSUpJJJJKk6SSKlJJJIKUkkkkpSSSSSlJJJJKUkkkkq1kkkklWpJJJJVq
+ SSSSVakkkkk2pMnSSUsknSSVaySdJJSySdJFVrJSkmKCCqU0pimQWryklCcBJS4CK0IYUw5JTOENycvU
+ CUVMSVIFQTgpJpKExUQU8pKWKipFKEkKCmAogKYSUohDKIShuSQxBUwVABTASUylRJTlQKSliU0pk4CS
+ qXShSDU8JJpYBSTJSkmlFQJTkpQkqlk6QCcBJaQpKE6SS1ZOCmTSkyRDOUpUJTbkmSmcpKG5PKSqXhNC
+ eU6SqYwnTpEJMUgxJTSnITQksVKdIBShJTFIJyEyCmYKlKGCnlJkC5KgnTgIr1AKUJwE5SUwKjKTioIK
+ SAqQUGhEASYyuE8qJTSktZqJTbkxcklRTJi5NKC6mSdMClKKaXTqMpwUk0yhIhIFPKSWBCaFIpklUtCa
+ FJIpIYypAqJSCSF3FU7irTlVtCSGm7lEqUXBTrCS1vVFWJVaoKwElLOUFMqMJKWhPCeE8JJWAUgmSlJc
+ GSRTSmlJKkyYlNKSmSdRCkEEKhMVJRKSmKdRJTgoqZBOmCcBJSyiUSFEhJTBSCUJ4SUuE6ilKSmaYpg5
+ IlJSJ6qvVp6qvSUwCsVquFYrRQ2GqSi1SSUpJJJJSkkkklKSSSSUpMnTJKUmhOkkpaE21STpKR7ExYiw
+ nhJTXNab01a2ptqSmr6SXpK1tS2pKavpJekrO1KElNf00vTViEoSU1/TS9NWITEJKa5Yo7FYIUYSUiFa
+ kKkYNRA1JTW9FP6SswmISU1/ST+milNKSkXppjUjhShJTV9JL0la2pbUlNb0kvTVjamhJTWNab0lZ2pb
+ UlNcVJ/SVjanhBTX9JN6SswlCCmt6SXpKzCUIqa3pJekrMJQkprekl6SswlCSmt6SXpKzCUJKa3pJekr
+ MJQkprekl6SswlCSmt6SXpKzCaElNf0kvSViEoSU1/SS9JWIShJTX9JL0lYhKElNf0kvSViEoSU1/SS9
+ JWIShJTX9JL0lYhKElNf0lIVI8JwElIPSTekrKaEkNY1pvTVkhRLUFINib00falCKkHppekrEJQkpr+k
+ l6SswltSU1vTS9NWdqbakprGtMa1a2ptiSWt6ScVKzsT7UlNf0kvSVmEoSU1vSS9JWYShBLW9JL0lZhK
+ ElNb0k/pKxCUJKa/pJekrEJQkpr+kl6SsQlCSmv6SXpKxCUIqa/pJekrEJbUkNb003pqztS2pIa3ppxU
+ rG1OGpJa4qUhUrACeElNf0kvTViFEhJTXNaia1ZIUdqSmt6acVKxtThqSkAqUvSRwE6SmualA1K0UxCS
+ mt6SXpKxCUJKa/pJekrEJQkpr+kl6SsQlCSmv6SXpKxCUJKa/pJekrEJQkpr+kl6SsQlCSmv6SXpKxCU
+ JKa/pJekrMJQkprekl6SswlCSmt6SXpKzCUJKa3pJekrMJQkprekl6SswlCSmt6SXpKzCUJKa3pJekrM
+ JQkprekl6SswlCSmt6SXpKzCeElNX0UvRVqEoSU1fRTekrRCiQkpremm2KwQmhJSDYlsR9qkGJKa3pp/
+ TVkMT7ElNb00/pqxtS2pKa/ppvTViEoSU1vTS9JWIShJSD0kvTR4ShJSD00/po8JQkpB6aXpo8JQkpB6
+ aXpo8JQkpB6aXpo8JQkpB6aXpo8JQkpB6aXpqxCUJKa3ppemrO1Lakpreml6as7U21JTX9NP6aPtShJS
+ D00vTR4ShJSD00vTR4ShJSD0kvSViEoSU1/SS9JWIShJTX9JL0lYhKEUtf0kvSViEoRU1/SS9JWIShJT
+ X9JL0lYhKElNf0kvSViEoSU1/SS9JWIShJTX9JL0lYhKElNf0kvSViEoSU1/SS9JWIShJTX9JL0lYhKE
+ lNf0kvSViEoSU1/SS9JWIShJTX9JL0lYhKElNf0kvSViEoSU1/SS9JWIShJTX9JL01YhKEFNb00xYrO1
+ LYghq+kl6StbUtqSmuKk4qR4SSUh9JMakeUklNY1JvSVqE+1JTV9JSFaPtS2pKQ7EtiNCaElIfTTemjw
+ nASUg9JP6SsAJ4SU1vSS9JWYShJTW9JL0lYhKElNb0kvSVmEoSU1vSS9JWYShJTW9JL0lZhKElNb0kvS
+ VmEoSU1fSTekrRCYtSU1vTS9NWNqcNRU1/TUTWrexMWJKanpqQrVjYn2JKa+xIsVnYoliSmqWJtislij
+ tSUhDEVrFINRAElMPTUTUrACRCSmqak3pK0QmhJTW9JL0lYhKElNf0kvSViEoSU1/SS9JWIShJTW9JL0
+ lZhNCSmv6aXpqxCUJKQeml6aPCeElIPTT+mjwnhJTXNSialahNCCmt6SXpKzCUJKa3pJ/SViE8JKa3pJ
+ ekrMJQkprekl6SswlCSmt6SXpKzCUJKa3pJekrMJQkprekl6SswlCSmr6SY1K1tTFqSmp6acVqwWpbUl
+ IQxP6aMAnhJTWNaQqViE4CSkIpUvSRgFJJTWNSj6SslNCSkHppjWrEJEJKaprTemrJaltSU1xUpekjAK
+ UJKa/pJekrEJQkpr+kl6SsQlCSmv6SXpKxCUJKa/pJekrEJQkpr+kl6SsQlCSmv6SXpKxCUJKa5qUTWr
+ UKJCSmtsSDFY2pBiSkIrUvTRg1SDUlNf0kvSVraltSU0zSmNKuFqiWpKanpJekrJCaElIPTT+miwnSUi
+ 9NL00VPCSkPpJvSViE8Igpa3pJekrMJQpLS1/SS9JWIShK0Nf0kvSViEoStDX9JL0lYhKErU1/SS9JWY
+ ShK0Nf0kvSViEoStTX9JL0lZhKELQ1vSTGpWYTQlamt6SXpKxCUI2pr+kl6SsQlCVqa/pJekrEJQlamv
+ 6SXpqxCeErS1vTS9NWYShK1Nb0kvSViEoStLX9NL01YhKErU1/TS9NWIShNKmv6aXpqxCbagpr+ml6as
+ bUtqSmv6af01Y2p9qSmt6Sf0lZ2p4SU1vSS9JWYShJTW9JL01YhKElNf003pqxCaElIPTTekrEJ9qSmt
+ 6SXpKztS2pKa3pJekrO1Lakprekl6Ss7UtqSmt6SXpKztS2pKa3pJekrO1Lakprekl6Ss7UtqSmt6SXp
+ KztShJTX9JL0lYhPCSmt6Sb0la2pbUlNT0kvSVotTFqSmt6aWxHLU0JKQ7E+xFhOAkpD6af0kcBSDUlN
+ b0k3pK1tS2pKavpJekrUJQkpq+kl6StbUtqSmr6SXpK1tS2pKavpJekrW1Lakpq+kl6StbUtqSmr6SXp
+ K1tS2pKavpJekrW1Lakpq+kl6StbUtqSmr6Sf0lZ2pQgpr+kl6SsQlCVKa/pJvSVmExCVKa/pptisEKM
+ JUpDsS9NFhOAlSkPpJekrAapBqVKavopekre1MWpUpq+mlsVghQISpSLYlsRYTgJUpD6af00eEoSpSD0
+ 0vTR4ShKlIPTS9NHhKEqUg9NL00eEoSpSD00vTR4ShKlIPTS9NHhKEqUg9NL00eEoSpTX9NL01YhKEqU
+ 1/TS9NHhKEqUg9NL01YhKEqU1/TS9JWIT7UqU1vSS9JWdqfalSmp6SXpK3tS2pKavpJekrW1LalSmt6S
+ XpKzCUJUpr+km9JWYShKlNb0k3pK1CbalSmt6SXpKztTQlSmv6af00eEoSpSD00tiPCaEqUh9NL00eEo
+ SpSD00vSR4TwlSmv6SXpKzCaEqU1vTS9NWYTQkpr+ml6asQlCSmv6aXpqxCUJKa/ppemrEJQkpr+ml6a
+ sQlCSmv6aXpqxCUJKa/ppemrEJQgpr+ml6asQltSU1vTS9NWNqW1JTX9NP6aPtShJSD00vTR4ShJSD00
+ vTR4ShJSD00/po8JQkpB6SXpKxCeElNb0kvSVnan2pKanpJekrW1MWpKa3ppemrEJQkpr+ml6asQlCSm
+ v6aXpqxCUJKa/ppemrEJQkpr+ml6asQlCKmv6aXpqxCUJKa/ppemrEJQkprGtN6StQmhJTW9NP6aPCaE
+ lIdiWxGhLakpDsS2I+1PsRUg9NP6aOGp9qSmv6SXpKztT7UlNX0UvRVraltSU1fSS9JWtqYhJTW9NN6a
+ skJoSU1/TS9NWIShJTX9NL01YhKElNf00vTViEoSU1/TS9NWIShFTX9NL01YhKElNf00vTViEoSU1vTT
+ +kjwnASU1/SS9JWQE8IqahqTekrZCiQkpreml6asQltSUg9NP6aOGpw1JSD003pK1tS2pKavpJekrW1L
+ akpq+kpCpWNqUJKQeml6aPCaEipB6ab01YhKExTX9NL00eEoQUg9NL00eEoSUg9NL00eEoSU1/TS9NHh
+ KElIPTS9NHhKElIPTS9NHhKElIPTS9NHhPCSkHppemjwlCSkOxLYiwlCSkOxL00aE8JKa/pJekrO1Lak
+ prekl6as7UxCSkHppemjQlCSkHppekrEJ4SU1fST+krO1Lakprekl6SsQlCNKa/pJekrEJQlSmv6SXpK
+ xCUJUpr+kl6SsQlCVKa/pJekrEJQlSmv6SXpqxCUIKa/ppemrEJQkpr+kl6KsgKQakpq+in9JWtqaElN
+ f0k3pKzCaElNY1JjUrMJoSU1vSS9NWdqW1JTW9NP6asbUoSU1/TS9NHhKElIPTTemjwlCSkHppekrG1P
+ tRCmt6af01Y2pbU61Nf00vTVjaltStTW9NL01Z2ptqVqa/pp/TR9qeErUgFal6aLCeErUh9NN6SsQlCV
+ qa3pJvSVqEtqVqavpJemrO1KErU1/TS9NWIShK1Nf00vTViEoStTX9NL01YhKErU1/TS9NWIShK1Nf00
+ vTViEoStTX9NL01YhKErU1vTS9NWYTQlamv6aXpqxCUJqmv6aXpqxCUJKa/ppemrEJQkpr+ml6asQlCS
+ mv6aXpqxCUJKa/ppemrMJQkpr+kl6SsQltSU1/ST+kjwnhJTX9JL0lYhKElNf0kvSViEoSU1/SS9JWIS
+ hJTX9JL0lYhKElNf003pKzCUJKa3pJekrMJQkprekl6SsQlCSmv6Sb0lZhNCSmt6SXpKztT7UlNX0kvS
+ VraltSU1fSS9JWtqW1JTV9NP6asbUtqSmv6af00eEoSUg9NP6aNCeElIPSS9JWAE8JKa3pJvSVqFEhJT
+ W9JL0lYhKElNf0kvSViEoSU1/SS9JWIShJTX9JL0lYhKElNf0kvSViEoSU1/SS9JWIShJTX9JL0lYhKE
+ lNb0kvTVmE21BTX9NSFaNCcBJSEVJ/SRwE8JKaxqTekrJCaElNb0kvSVkNT7UlNP0kvTVotTbUlNYVp/
+ TVgNT7UlNf00vTR4ShJSD00/po8JQkpB6aXpqxCUJKa/ppemrEJQkpr+ml6asQlCSmv6aXpqxCUJKa/p
+ pemrEJQkpr+ml6asQlCSmv6ab0lZhNCSmt6SXpqzCW1NpTW9NL01Z2pQlSmt6aXpqzCW1KlNb0kvTVna
+ ltRU1vTS9NWYShJTW9NL01ZhKEVNb00vTVmEoSU1vSTipWIThqSmv6SXpqztTbUlNf002xWCE0JKQbEv
+ TR4S2pKQeml6SsbU+1JTW9JL0la2ptqCmt6SXpKzCUJKa3ppemrEJQkpr+ml6SswltRU1vSS9NWdqW1F
+ TW9NN6StbU21JTW9JL0lZ2pbUlNb0kvSVnaltSU1vSS9JWdqW1JTX9NL01Y2p9qSmt6aXpKztS2pKa/p
+ pemrG1Lakpremm9NWtqbakpq+knFas7UtqSkIrSNasAJiElNGytV3Vq+8KuQkpC2tHZWnYFYY1JSP00v
+ TVgNT7UlIRWpitFDVKElItqSIQoFJSydMkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySdJ
+ JSydJOkpYoFiOUCxJTVemanemakps1qw1V61YakpdMpJklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Tr0kkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpJklLpJkklLpJkklLpkkklKSS
+ SSUskkkkpSSSSSlJJJJKXSSSSUpJJJJSk6ZJJC6SSSSlJJJJKUkkkkhSSSSSlJJJJKUkkkkpZJJJJSkk
+ kklKSSSSUpJJJJKkkkklKSSSSUpJJJJSkkkkkqUSpJklLQlCcKQCC1YNShTASISUjOigXIjghOCS5W5O
+ NVEBFa1JLENTwjBqRagpAnlSIUSElLhSChKfckhmmlNKUpIUSmSKZJTIBTAUAUQFJSxCE4I6iQkpDCkA
+ nhKYSSyhMUxcol6SVyVGU0pwElwXCkAkApJJWhMnJUCUmMspSUQVIJLFiolEIUCEmaLBMpwnhJlYJBTh
+ KElLBSCaFIIoKk6aUpSYpLwltTgqQCDGxhKFNRKK1iQoFEKiQkpHKcFIhMkyhIFMBCBRA5JeyUSU8qJS
+ UAwcogKRSCSSzaERQapykwliUMlTKgUlq0piVKEtqavDBIKe1INSXrBOpAJ4SSwSCkQolJK4KeVCUpRT
+ TKU4UJUgUlUyTFJIpIYlOAknCCFiFXtCslV7ElpabgpsCZydiK1t1o4Kr1lFlJDIpk0pApKZJ0wSSSop
+ pTpklwWlMpQlCS5gkp7VEhJSgphQCkEkMlAoiiQkpEUgpEJAJKXCIFAKQKSmSYppUS5FDJMoynBSSoqB
+ KJCiWpIYgqSQanhJSN6rPVl6rPSQwCMxBCMxFTZapKLVJJCkkkklKSSSSUpJJJJSkydMkpZJJKElKThN
+ CkElLhSUQnSUukkmlJS6aUpUZSUvKUqMppSUylKVFJJTKUpUZSSUopQnhSARUoKQKaEklLkqBKcqJCSm
+ JKaU5amDUlMgUQFDAUwkplKRKaVElJTIlRlQJUdySksp5QQ5SBSUklKVCU6CmUpSopJKZSlKikkplKUq
+ KSSmUpSopJKZSlKikkplKUqKSSmUppTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXl
+ KUySSl5TbklEpKZblIFDUgkhmkkEklMSmJUioFJKpSBTJJKZynlQTpKZSkoylKSmSdRBTgpKXSlMkkpU
+ pSmTJKZSlKZJJS8ppSTJJXlKUySSF5SlMkkpeUpTJJKXlKUyZJLOU8qCUppQzlKVCUpQtDNPKhKUpWpn
+ KbcoymJStLIuTblAlKUrUzlOFAFSCVpZJJ0xStSxKjuSKglame5KVAKQStTKUpTJJWpeUpTJJWpeUpTJ
+ JWheUpTJJWpeUpTJJWpeUpTJJWheUpTJJWpeUpTJJWleUpTJJWpeUpTJJWpeUpTJJWpeUpTJJWpeUpTJ
+ JWpeUpTJJWpeU8qKSVqZSnlQlKUrUy3Jtyiklal5TSlCeErUsnATwnhK1KATgJkpStTNJD3JbkrUzTKM
+ pwlalFRKnCYhK1MEpTkJQgpSSUJQkpSUpQlCNqVKUpQlCVqVKUpQlCClSlKUJQkpUpSlCSSlAqUqCUpK
+ ZylKhKUpKZymlRlKUlMpSlRTpKXlNKSSSlSlKSaElLylKaEklLylKZJJS8p5UU8I2peUpSSStSpSlJJK
+ 1KlKUkkrUqUpSSStSpSlJJK1KlKUkkrUqUpSSStSpSlKEkrUqUpSSStSpSlJJK1KlKUkkrUqUpSSStSp
+ SlJJK1KlJJJK1KlPKZJJS6dQlLcnqZSmJUZSlJSxKiXJyE0JKVuTgqO1SASUzBUgVAJ5SUzTJpTSkpdM
+ kkkpSeUydJS8p5TJJKXlKUySSlSlKSSSlSlKZJJS8pSmSSUvKUpkklLylKZJJS8pJk6SlKQTJJqmSZNK
+ YlJTJOh7k+5JTNMQm3JSkpYhRIU00JKYAKQSSSUvKRKZMUlKlKUk0JKXlKUoTwkpUpJQkkpSaU6aElKl
+ NKeE0JKVKUpQlCSlSnlNCeElKlPKZJFS8ppSTJpKl5SlMkgpeU8qKSSmUpSmSSUvKeVFJJTKUpUUklLy
+ lKZJJS8pSmSSUylKVCU0pKZpk0qQSUpJOmKSmJKaUiolJTMOT7kNOkpluSlRhOAkpkCpSogJ0lKSUZSl
+ JS8pSop0lLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKaUkySmUpwohSASUuAnhOE6SmKeUxKiSk
+ pnKUocp5SUylMSmSSUsVEqcJoSUwSlS2ptqSlpTgp4TwlalAp5ShMiCkMpSlRTSnWllKUqKSVqZSlKin
+ StC8p5TJJWheUpTJJWheUpUUyVqZym3KKaUkM5SlQUkrUulKZOlalJJkkrUulKZJK1LpJkkrUukmSStK
+ 8pSmSStS6SZJK0rpJQlCSlJJ4SSUpJJJJSkkk0pKZSlKjKaUlMpSlRTJKZymlRTpKXlJMnSUukmTpKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUlKSYpKVKeVFJJTOU8qATykpeUxSlMkpYpk5TJKUnTJ0lLhS
+ lRTpKXlKU0ppSUvKUqKSSmcpSop0lLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLymlJMi
+ FLylKZMnKZSmJTJJKUSmTpoSUsnCUJ4SUyCkCoJ5SUzlMSoymJSUolQKkVFJSykE0JwElMgkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSaUkklKSSShJSk6aE8JKVKeUySSl5TyopSkplKUqMpSkplKaVG
+ UpSUylKVCUpSUzlKVCUpSUzlKVFJJS8pSmSSUvKaUkklKSTJ0lKSShKElLylKZOkpeUpUUklLykkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSUJKUklCeElLJJQkkpeUpTJklMpT
+ yoSlKSmcppTJJKVKSSSClJJJIqUkmSSUukmTpKUkkkkpSSSSSlJJJJKUmSShFSyZPCZJS4UgFEKYSUoB
+ ShIJ0lLQknTJKUlKZJFS8pSmSSUolMSmJUSUlMpTSoqSCl5SlMkgpeUpTJJKXlKUySSl0kySKl0kySSl
+ 5SlMkkpSeUySSmUpSoSmRUzlNKZJJS6SQCkAkpQCcJQnSUukmSQUumlNKYlFS8qMpSmRUvKUqKSBUylK
+ UydNUpJJJJSkkkySl0kySSlJJJJKUklCUJKUklCUJKUnCaE4SUumKdMQkpiUychNCSlwU4KipBJTIJ1E
+ J0lKKYlJRKSlEppTFMkpmCpAoYUgUlM5SlRlJJSpSlMkipeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUy
+ SSl5SlMkgpkCpAqCUpKSSmJUJTSkpnKaVCUklM5SUVIJKUnShJJSySdMkpZJJMkpSSSSSlwpKIUkwqUk
+ kmQtSkkkkrUpJOlCVqWSTwmhK1LSlKSZK1MpSlRSlK1M5SlRlKUrUylNKZJK1LpSmTpWpeUpTJJWpeUp
+ TJJWpeUpTJJWpeUpTJJWpUpSkklalSlKZMlal5SlMmRUylKVFJJTKUpTJJKZSlKikkpkkmSSUySUU6Sl
+ 0kySSl0pTJiUlLylKjKUpKZylKhKeUlMpSlRSSUylKVFJJTKUpUUklLylKikkplKaVFJJTKU8qKcJwUy
+ STJJymUpSoylKSmUpKMpSkpkmSlJJSySdMkpaUpSKYpKZbktyGSmlJSXclKECpApKZylKikkplKUqKSS
+ mUpSopJKZSlKikkplKUqKSSmUpSopJKZSlKikkpkkkE6SmJTSnKigpkCn3KCSSmRcluUCUwKSkwKkhtK
+ mCkpRUU5KjKSmSSYFJJSioynKikplKUqKdJTKUpUUklMpSlRSSUylKVFJJTKUpUUklMpSlRSSUylKVFJ
+ JTKUpUUklMpSlMkgpeUkySSl0kySSl0kySSl0kySSl5SlMkkpeUkySSl5TgqKSSmUpSoSlKSmUplGUkF
+ Mk4UQpBJTIJJkpQUvKaUxKiSkplKaVGU0pKZynlQlOEFM5SUU6IUylJRlKU5S6SZJJS6UpkklLylKZJJ
+ S8pJkklLpJkklMpSlRSlJTKU0ppSlJS6SZOkpSSSSSl5UXFKVFxSUhsKASiWFAJSUlYVZYqjCrTElJgk
+ mCSSmYKlKGCnlJS5KgU5KYpKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJ0yd
+ JSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JTJMnTJKUmTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Xr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJC6SSSSlJJJJIUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKS
+ SSSUpJJJJSkkkkkqSSSSUpJJJJSkkkklKTJ08JJWAUgmTEwmp4WcpEoReo+oknhSlRIUQ9SBSTwrRCcO
+ AUXuhVbLoSTwt0WhP6oKyDkqTMmUE8LqF0qJKqsulFD5SVwsymTSlKSOFkCpAoe5OHJWrgSJikCkkjhW
+ lSD4Q3GEJ1kJWrhbXqJjYFQN6j66Fq4HQL1EuVQWyph8pWngSuchl6i5yC56VrhBsh6K16zxYittSteI
+ N8PSL1TFqcWJWn22wXJkMOlEaJSthlFkAphIBMdEbYqUSoF6g98Ks+1K2eEW3vCcPCz/AFlIXJWycLeL
+ wmNgVI3KBuStXA3/AFAl6iz/AFk/rI2ngbxtTCxUDcpNtQtilF02OlGBVGqyVbY5JhIZkqBKclDJRW0z
+ BTwoNKKElUjLUM6KwQgWJMkQjL4TixV3uhDFiLJToNfKmqddistckqlyEyclQJSUQzBUtyDKcOSYZBLK
+ UKIKmEFoCgE6aVEuTSyAM00oZeoGxC2ThTym3KsbU3qop4WyXKDnIPqobrUrSIpi9R9RVXWqItStdwt4
+ PUw5Um2IoelaeFtbktyr+om9RK1pi2NykHKqLFNr0lpCclAsRJQ3orCGu5JoTuSaksITsCMAhMKMCkil
+ oThqkFIQkqlg1PCeQlKS4BjCaE5colyS4BlCcIe5PvSTTOFAhLekTKKqYqQTJApIpIEiobki9JVLkJoT
+ b029JVMkk25KUlUoqKlKUJKYhTASAUgEkLgJQkmJRUvCYppSJSQieqr1aeqr0lMQjMQAjsRQ2WqSg1TS
+ UpJJJJCkkkklKSSSSUpMnTIoUnhJOglaE6dMgpSSSaUlLylKaUkVKlMnSSUsmUoShJTGEoUoTwkphCcB
+ ShKEVKCdMmJSUylNKgSkCkpIlCYKYSUx2poRFApKWTSmJUC5FTOVElNKeElMSowibU4YkpGApAIgYn2o
+ KYAJ05CZBS6SZJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUukmSSUukmSSUukmSSUukmSSUukmSSU
+ ukmSSUukmSSUumhOFIBJTGEgFOFEpKVKUqBKiXJKZkplEFSCSl4ThqkApgJKR7UxCKQokJKRFMpkKMJK
+ UFIJgFMBJSoTKcKJSUxSSKZJS6SZOkpSSZJJSkkkklKSSTJKXSTJJKXTJJJKUknCeEKQwSUiE0JcKlAp
+ wmhSAS4VKhNCmAnhKkoSE0IpCiQlwqYgpwVEppS4UpQ5PKECpApcKmRUYUgnhLhUwhOnhJLhUpJMklwq
+ XSSSS4VKSSSS4UKSSTJcKl0kySXCpdJJMlwoXTJJ0uFSySdMlwpUkkklwqUkkklwqUkkklwqUkkklwqU
+ kkklwqUkkklwqUkkklwqUknShLhUtCeEoTpcKlAKQCinlLhUumKaUxKXCpRKgSnJUSlwqWJSBShOGpcK
+ mQRAFBoRQEqUqExCmolClMCmTlRR4VLp0yUpcKl0kyUpcKl0k0pSlwqXTJSklwqUkklKXCpSSUppS4VK
+ KiVJKEuFTBJT2pQlwqYp08JQlwqWTpQnS4VLJJ0kuFSkkk6XCpaEoTpJcKmMJQpJQlwqWhJOmS4VKSSS
+ R4VKSSSS4VKSSSS4VKSSSS4VKSSSS4VKSSSS4VKSSSS4VLpJkkuFS6SZJDhUukmSS4VLpJkkuFS6SZJL
+ hUukmSS4VLpJkpS4VLpkpSS4VMSoou1MWIqRpwnITJKXAUtqYKYSUx2pEKaYpKYFMnKZJSk8JAKYCSmM
+ JQiQmISUwhJOU0pKXSTSnSUpJJJJSkkkklKSSTJKXSTJJKUkkkkpSSSSSl0kySSl0kkkqUsSokqRUSEq
+ UxlKUiE0JUpkCpAqACmAlSmQSSATpUpZJIqJKVKXlNKjKUpUpknUQVIJUpdJJJKlKSSTSlSl0yaUpSpS
+ 6SZOlSlQnhJOlSloSTpilSlkyRKjKVKZJJpTocKlk6SdLhUsknSS4VKSSTpcKlkk6SXCpZJOklwqWSSS
+ S4VKTFOkUuFTAqKmQmhLhUsFMJgE4S4VMkxSlMSlwqWKiVJNCXCpaE4CcBSAS4VLAKQanAUoQpTCExCI
+ VEhLhUiKZTITQjwqWUk0J0uFSkk6SHCpZJOklwqWSTpJcKlkk6SXCpZJOklwqWTKSZHhUoKQUUpS4VM5
+ SJUJTEpcKlyVAuTEqKXCpnKcFDCkEuFSQKQUAphLhUvCUJJSlwqVCaEiU0pcKl0k0pSlwqXTFKUyVJWK
+ ZPCUJJWTpQnSUsnSTpIUkknSQpKEk6SGMJoU4TQkphCaFOEoSQxATgJ4TwkhSUJJJKUkkkkpSaE6SSVJ
+ JJJKWhKE6SSVoShOkkpaEoTpJJUkkkiApSUpiUxKNKXlNKiSmlKlM5SlQlKUqUylOmCcJUpSSeE8JUpj
+ CdPCZKlKSSTJUpdOop0qUukmSS4VLpJkkuFS6SZJLhUukmSS4VLpJkkuFS6SZJLhUukmTpUpaE0KcJoQ
+ pTFKUioko0peUpUZSlKlMpSTBOlSl0kkkqUqUpTJSlSl5STJJUpdJJOlSlJJJJUpSSSSVKUkkklSlJJJ
+ JUpSSSSVKUkkklSlJJJJcKlJJJkqUumTpIqWSTpJKVCUJJJKUklKUpKUkmSSUqU0p00JKUkkmSUunUZT
+ gpKZJJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpkkklLp4STpKWSUkySloTKRUUlLJpSKZJS
+ 8pSmTpKUkklCSlkk8JQkpZOlCUJKUknSSUpJJMkpdJMnSUpPCSdJSoShOkkpaEykVEpKWTJFJJS6SZOk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSTJIKXSTJJKXSTJJKUnUUklMk6inSUunTJ0lLJJJikpSZJMkpS
+ SSSSl06ZJBS6SZJJS6ZJJK1KSSSStSkkkkrUpJJJK1KSSSRtSkkkkrUunhMFIJWpiQmKmVAoqWlOCoEp
+ pSUmDk+5A3J9ySk0ppQ9ycFJTOUlEKQSUumTpFG1MColSKiQkpScJk4TSVLpJJk21LpJkkrUukmSStS6
+ SZJG1LpJkkrUukmSStS6SZJK1LJJ4TwlalgnCUJ0bUoJ0yUpWplKUqEppStTOUpUJTSjamcppUU6VqUn
+ TJ0rUqEoTpJWpZJOmQtSkkkklKTpkklLpJkklLpJkklLpJJJKUkmSSUunUUpSUySTSlKSliEoTpJKWST
+ pklLpKMpSkpeUxSSSUsmhShNCSlk6UJJKXlJMnSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSTpKWSTpIK
+ WSTpJKWTJ4ShJSySeEklLhOEwTpKXTppSlJSkxSlNKSlJJkklLpJJ0lKSSTJpUvKaUyaUKUvKeVCU8pU
+ pmCnUAVIFKlMkk0pJUpZNCkmSpTFJPCaEqUpJJJKlLpJJJUpSSSSVKUnTJ0qUpJJJKlKSSSSpSkkkkqU
+ skkklSlJJJJUpZMnShOpSySeEkqUpJJJKlKSSSSpS6SZJKlLpSmSSpS8pSopSlSmUpk0pJUpSSdJKlKS
+ SSSpSk6SSVKUkkklSlJJJJUpZJOklSmKSdKEqUsFIJk6NKXTSlKYpWpRKaUxTJWplKUqCdK1MwVKUMFO
+ ClakkpKIKeUrUoqJUkyVqYEKMIhCaErUxAUgEoUgErUpJPCUJKYpKUJQlamKSlCUJWpikpQlCVqYpKUJ
+ QlamKSlCUJWpinCUJ4StSgnTJSkpRUYUimSUtCUKQCeElIiEyIQowkpQU5UQEikpRKjKYlRlJSQFSlCB
+ UwUlMk0J0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJ0kklKSSSRpSkkkkqUpJJJKlKS
+ SSSpSkkkkqUpJJJKlKTpJJUpZMVJNCVKYplOEoQpTBOnhKEqUoJwkkhSl00pJIUpYlRKkmhJTFJShPCC
+ lgpAJAKQCSloSUoTFEKWTJJ0VKSTJJKXTJJJKUkkkkpSSSSSl0kySSl0kySSlJJJJKXCdME6SlJlJMkp
+ YobkQobklNaxBKNYgFJSRitsVRitsSUlSThMUlKTpkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKXSSSSUpJJMkpdOop0lKKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJkkySl0kySSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSn/9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6SSlkk6ZJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpMkkkpSdMkkpdJMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSQumTpJKUmTpkkLpJJJKUkkk
+ kpSSSSSlJJJJIUmTpklKSSSSUpJJJJSkkkklKSSSSSpJJJJSkydMkpdMnSSUoKQUQpSguCxKA98Ijyql
+ rk1lCz7UP1lXe9C3lJe6DbkUWrNa9EFqSm4+xUbnypGyUJwlJIaziZU2EqZrThkIL2xU5WWuVNhhGD0k
+ Ng2QhuuhAfYqtlpSU3xeisslZDbTKuUvlBTpNKkSgsKk4pLaWe9VLHoljlVeZSVSNz0wcmIThqCUrHI7
+ XIDQiBJcGbnoD3p3FAcUFwZbkRrlXCK1JeEu5SD0IppSXU3K3q3WVnVlXqik1sjaCG8qQKHYUWv1alrl
+ SserVxVF5RbEFblMFCarDGpM7EyomVY2JixJLX1SJR9ig5iSkBcnY9ReIQwUWCbp0WK/W9Y9Llo1OSa5
+ bRKgU4KUJLV2ozSghSBRQEpKDYpblB2qTLFp2hVzorz2Sq1jIRZGDHwrLLVnudtSbckp1g+U/Kp1Wyrj
+ NUkFYhIKe1NtRYZMmqagE8oFaFEobiplCemFmiwc9BfYneVVscgyBk61MLVWc9QD0lzd9VRdYq4emc9J
+ cGTrEweglyTSklusejhypscjBySk+5RL0MuUC5FBTB6Oxyoh6s1OSWFuApnlM0pnlJjKB7oQxZCha5Vj
+ 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
+ 3pb0lrOEoUN6fekplCeFHeluSQvCUJtyYuSQuko7ktySmSSjuS3JKZJKO5LckllCUKO5LckpklCjuS3J
+ JZJKO5Lckpkko7ktySmSZR3JtyeAlkmhNuTynqWhNtU5SQUw2pw1SSlJSgE8JpS3JKZQko7029KlM0yj
+ vS3JUpeEoTbkpSUvCdR3JbklMklHcluSUySUdyW5JTJJR3JbklMklHcluSUySUdyW5JTJJR3JbklMk4U
+ NycOSpTOEiFHckXIUpYhRIUi5RJRUxhPCScFFS4CcNSBUgUFLbUoUpTSgpjCaFIlMSipaE8JpS3IqZQl
+ CjuS3IKZQmhNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhKE25LckpeEoTbktySl4ShNuS3JKXhJMX
+ JtyBUyTgKG5OHJqmcJQmDktySlEJki5RLklLpKO5IOSUkAUg1QDkQFJStiYsU5SJSUiLVAhFJQyUlMU4
+ CaUpSUySTSlKSl0k0pSkpdJNKUpKXSTSlKSl0k0pSkpdJNKUpKXSTSlKSl4TqO5LckpmFIBQDlIOSUyh
+ PCiHJ9ySlEKJCcuUS5JSxCaEpSlBSoTwmlSBRUqEoTylKSloShPuS3IKVCUJbktyKlQmhPuTbklLQmhO
+ SmLkFKhJNuTbklMwpBDDk4cipJCdQDlLckpeFEhPuTFySmJCaE5KaUlKhPCaU8pKVCUJSlKSlQlCUpSk
+ pUJQlKUpKVCUJSlKSlQlCUppQUvCUJSmlJS8J4TSnBSUqEoTykSkpjCaE5KbckpeE8KO5PuSUyhJR3Jb
+ klMkybcm3JKXhNCbcluQUyhPCiHJw5JS8JQluTSkpUJQlKaUFLwlCaU8pKVCUJSlKSlQlCUpSkpUJQlK
+ UoqVCUJSlKSlQlCaUpSUyCkEPclvRUkKiQm3p5SUwLVEtRUxCKkUJQppIKWATgJ08oqUApKMpbklM0yh
+ vS3pKZEJoS3J5SUxhKFKVGVGbUqEoS3JSm6qVCUJSlKWqlQlCUpSlqpUJQlKUpaqVCUJSlKOqlQlCUpS
+ lqpUJwE0pApaqZAJ4TByfclqpUJoT7kxcjqpaEyeU0paqWhKEpSlHVSoShPKcFLVS21PtTynlLVS0JQl
+ KYuS1Uukol6W5LVTKEoTByeUVKhKEpSlFS0JQlKUpKVCUJSlKSlJJpS3JKXSTbk25JS6SbcluSUukm3J
+ tySmScKG5OHJKZgJ4UQ5S3JKVCiQnLkxckpYhNCRKUpKXhOAmBUgUlL7UtqcFKUlMS1MWqZKiSkpjCUJ
+ SlKSl4ShLcluRUqEoS3JbklKhKEtyW5JSoShLcluSUqEoS3JbklKhKEtyW5BSoShLcluSUvCUJtyfckp
+ UJQluS3JKWhKEtyYuSUuko7k29JTNMo70tySmSUKO5PKSl4TwkCnlBSoTwm3J9ySlQmIT7k0pKWIUSFO
+ U0pKYQlClKaUlKhOFGUtySkgToe5OHJKZwlCbcluSUvCaEtyW5JS0JQluTbklLwnhR3JbklMoShR3Jbk
+ lMoShNuS3JKXSTbktySl0k25LckpeEoTbktySl4ShR3JbklMoShR3J9yIUvCUJbktyeFKhKEtyW5JSoS
+ hLclKSlQlCUpSkpaEoTymlJS0JQlKUpKWhKEpSlJSoShNKeUlMoShNuS3JKXhKE25LckplCUKO5Lckpl
+ CUKO5LciplCUKO5LcgplCUJtybckpeEoTbk+5FSoSTbk25NKl0oUdycOTFKhLanBTyiphtS2oiSSmG1K
+ FNNKSloTwmlLckplCUKO5PuSUyhLam3JbklLwlCW5NuSUvCUJtyW5JS8JQm3JbklLwlCbcluSUvCUJty
+ W5JS8JQm3JbklLwlCbcluSUvCUJtyW5JS8JoS3JtySl4ShNuTbklMwpIW9OHpKZkJtqQenBSUttTFqnK
+ aUlIi1R2oxTEJKRBqmAklKSlwE8KO5PuSUvCaEtyW5JSoShLcluSUqEoS3JbklKhKEtyW5JSoShLcluS
+ UqEoS3JbklKhKEtyW5JSoShLcluRClQkm3Jbk9S6SbcluRUukm3JbklLpJtyW5JS6SbcluSUukm3JbkF
+ LwlCbcluSUyhOAo7k4ckplCUJSlKCliFEhSJTFBTFNKcqJSUvKUqKdBS6dME4TVKhPCSdJSkkxKjKSmc
+ ppUZSlJTJMkkipSdMkkpdJMnSUpJJJJSkkkySl0ySSSlJJJJKUkkmSUyCdRTykpkmKaU0pKUVBykoOSU
+ 17EAo9iAUlJGK3WqjFbYkpMExSCYpKXSUU6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpdJJMkpSSSSSlJ0ydJSiq9isFV7ElNV6Zqd6ZqSmzWrLVWrVlqSl0ydJJSySSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn
+ /9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpJKWSTpklKSSSSUpJJJJSkkkklKSSSSUsk
+ kkkpSSZOkpSdMnSUpJJJJSkkk6SlkkkklKSSSSUpJJJJSkkkkE0ukkkkqlJJJJKpSSSSSKUkkkkqlJJJ
+ JIpSSSSSqUmSSSVSkkkkkUpJJJJVKSSSSVSkkkkk0pJJJJVKSSSSTSkkk6SqWTEp1ApLgGDyqluqtOQH
+ BNZAGm5sqIrVosSDEF9NbZCg7RW3NQHtSTSEFFYJUAxWK2JLqW2qDhCtbEGxiCWvvhSD0NzSkAkqmbjK
+ A9sqwAlsSVTWYxXaWwmbWrDGIIpKxOSkAmJSVSJ4QHBHcUJxQtVISEgmc5DNkJWmmw0ogVRtqM2wIWuA
+ ZOCC8IxeEF7krXAI+FMOQXOUfUStkEW1uThVxYjMdKVpIbNYVytVa1aYlbWmE4ULFMKFgRa9atC8qhYV
+ evWdZylbZgGTHK1WVRaVZrciz8LbBSlDDktySOFIoPS3JnFFVNaxA7o1hQe6TDMNilaNKz6QtKkJNchs
+ tClCTVIorCGKiSpFRISQAtKcFRhSCLKFyJVe5uisygXnRFLkZBhVBZqrWSqBGqS4B08exatJkLCx3Qte
+ h6SSG+AkQosdKIk15BGQmUiFFIoAWKG9FKE9Rlli1bSqdhVu1U3oMwDXcVGUQtTbEl1MQUiVLaolqS4R
+ RkpAqRYm2pLuFIx6MHquAiNCKuFNvUHOTgKJYUlpCwcrVLlVDCrNTUmMhvsKZ6TAk9JjIaNqquCuWqvC
+ SykYYiColFYyVarqlG0U0hQUjQVqtoCn9nCSqcU0FN6BWyccJjjhJIDkCgp/SK1TQFE0pLw5hrUC2Fov
+ qVd7ISX0hZortToVUBHYitIbgfogW2JidFVtenLKYvfKiBKCX6otTgkpM2uVL0UauEYAJKaJpUfTV9wC
+ EQElIGMVqtqi1qsVtSWs2BFASaFKElMYTwnhOEULAJEKSRSQgeqr1asVV6SmAR60AKxWihsNUlFqkkhS
+ SSSSFJJJJKUkkkihSZOmSUpJJJAqWShShKEEsYShPCUJKWhPCeEklKSSSRUumSSSUpMUkkVMUk8JQkpa
+ UpSUSipRKQKZIBJSQFTBQwFNFSiVEqRTQkphCcBShROiKl90KDrYQ7HwqV18JUptPyYVd2Wsy3JVV2SS
+ kp2TlpvtaxhcSiB5RAtTrfa0/wBrWRvKb1CpBjtTsfa0vtax/UKXqFO9tTsfa0vtax/UKXqFD21Ox9rS
+ +1rH9QpeoUvbU7H2tL7Wsf1Cl6hS9tTsfa0vtax/UKXqFL21Ox9rS+1rH9QpeoUvbU7H2tL7Wsf1Cl6h
+ S9tTr/a0vtayPUKXqFL21Ov9rS+1rI9QpeoUvbU6/wBrS+1rI9QpeoUvbU6/2tL7Wsj1Cl6hS9tTr/a0
+ vtayPUKXqFL21Ov9rS+1rI9QpeoUvbU6/wBrS+1rH9QpeoUvbU7Ay1IZSxhYUQPKXtqdf7UmOUss2FCd
+ eQl7aXY+1JxlLBOVCYZaXtqehGUn+1LAGWpjJJS9tTtHLQzmLJNxKibCl7anUOYl9sWQbCkLCl7anZGW
+ pDLWMLCpiwpe2p1zlqJzFlGwqBsKXtodb7YpDMWL6hTiwpe2p2/tiX2tY4sKXqFL21Ox9sS+1rH9Qpeo
+ UvbQ7H2xL7Wsf1Cl6hS9tTsfa0vtax/UKXqFL21Ox9rS+1rH9QpeoUvbU7H2tL7Wsf1Cl6hS9tTsfa0v
+ tax/UKXqFL21OsctN9sWSbCm3lH21OwMtTGWsYPKmLClwKdY5aictZZsKgbClwKdQ5aQy1k7ynDylwKd
+ huWiNyljB5RBaQlwJdkZKRyljG8hDdlQlwJdo5QUDlrDdlqP2qUuBTu/akvtSxBkEogtJS4FOt9rS+1r
+ JNhUTYUuBTsfbEvtixvUKXqFLgU7P2xL7Ysb1Cl6hS4FOz9sS+2LG9QpeoUuBDs/bEvtixvUKf1ClwKd
+ j7Yl9sWP6hS9QpcCnY+2JfbFj+oU3qFLgQ7P2xL7Ysb1Cl6hS4FOx9sS+2LH9QpeoUuBLsfbEvtix/UK
+ XqFLgU7H2xL7Ysf1Cl6hS4FOx9sS+2LH9QpeoUuBTsfbEvtix/UKXqFLgU7H2xL7Ysf1Cl6hS4FOx9sS
+ +2LH9QpeoUuBTsfbExy1keoU+8pcCnW+1qQylkbyl6pCXAp2hlKYylheuQl9qhLgU732pROSsP7Wl9qS
+ 4FOyclROUsj7RKXrFLgU6/2pOMtY/qlP6hS4FOyMxP8AbPNYvqlL1SlwKdk5iictZHqlL1SlwKdU5aX2
+ tZPqFN6hS4FOv9rT/a1j+oUvUKXAp2PtaX2tY/qFL1ClwKdj7Wn+1rH9QpeoUuBTsfa0vtax/UKXqFLg
+ U7H2tL7Wsf1Cl6hS4FOx9rS+1rH9QpeoUuBTr/a0vtayPUKXqFLgU6/2tL7Wsj1Cm9QpcCnX+2Jfa1ke
+ oUvUKXAp1/taX2tZO8p95S4FOr9qS+1LK3lPvKXAp1PtSf7Usn1Cl6pS4FOv9qT/AGpY/rFN65S4FO19
+ qT/a1ieuU32gpcCnc+1p/tawftJTfailwKd45aictYgyCU4uJS4EOz9rS+1rH9QpeoUuBTsfa0vtax/U
+ KXqFLgU7H2tL7Wsf1Cl6hS4FOx9rS+1rH9QpeoUuBTsfa0vtax/UKXqFLgU7H2tL7Wsf1Cl6hS4FOx9r
+ S+1rH9QpeoUuBTsfa0vtax/UKXqFLgU7H2tL7Wsf1Cl6hS4FOx9rS+1rH9QpeoUuBTsfa0vtax/UKXqF
+ LgU7H2tL7Wsf1Cl6hS4FOx9rS+1rH9QpeoUuBTsfa0vtax/UKXqFLgU7H2tL7ZCx/UKibClwKdr7d5pv
+ t3msM2lR9Uoe2l3ftkpfaliC0qYuKXtqdoZSkMpYf2gpfakPbU732pN9qWF9qUhkpe2p2jkpvtSyReSn
+ 9Qo+2p1ftaf7Wsn1Comwpe2p2PtiY5ayPVKcWFL21OoclL7Ss0PKYvKXtqdP7Wn+2LINhTeoUvbU7H2x
+ L7Wsf1Cl6hS9tTr/AGtL7Wsj1Cl6hS9tTr/a0vtayPUKXqFL21Ov9rS+1rI9QpvUKXtqdj7Wl9rWP6hS
+ 9Qpe2p2PtaX2tY/qFL1Cl7anY+1pvtayPUKfeUvbU632pOMpZIeVLeUuBTrDLT/a1keoUxsKXAp1jmKB
+ zFlGwqBsKXAp1/tikMxYoeVMPKXCp2hlqX2tY4eVL1ClwqdQ5SicpZTrShm8hLhU7QykVuSufGTCmMtL
+ hU7xykN2Wsf7VKgbyUuFTsHMSGYsX1SnFhS4VO19rS+1rIFhT+oUuBTrfa032tZPqFN6hS4FOv8Aa04z
+ FjeoUvVKXAp2hmKX2xYnqlOLSlwKdr7YmOWsf1SmNpS4FOsctROWsk2FRNhS4FOv9rUhmLG9Qp/UKXAp
+ 2ftiX2xY3qFP6hR4FOx9sS+2LH9QpeoUuBTsfbEvtix/UKXqFLgU7P2xL7Ysb1Cn9QpcCnY+2JfbFj+o
+ UvUKXAp2Ptib7Ysf1Cl6hS4FOx9sS+2LH9QpeoUuBTsfbE/2xY3qFIWFLgU7X2tL7UscWlP6pS4FOv8A
+ alIZSxTeU32gpcCneGUkcpYX2pI5SXAp2nZaEctYxySo+uSlwKdg5SicpZYsJT7ilwKdP7UpDLWVuKW8
+ pcCnZblqX2xYosKf1SlwKdk5ib7Ysf1Sm9QocCnZ+2JfbFjeoUvUKXAp2ftiX2xY3qFL1ClwKdn7Yl9s
+ WN6hS9QpcCnZ+2JfbFjeoUvUKXAp2ftiX2xY3qFL1ClwKdn7Yl9sWN6hS9QpcCnZ+2JDMWN6hT+oUuBT
+ tfbEvtixvVKXqlLgU7P2xL7Wsb1Sm9UpcCnZ+2JfbFjeqUvVKXAp2ftiX2tY3qFP6hS4FOv9rS+1rJ9Q
+ peoUuBTr/a0vtayPVKibilwKdr7Wn+2LCOQVA5JS4FPRDMUxlSuaGWUZmWhwJD0IyFL11hNy0QZSXtpd
+ n10/rrHGSpDJS9tTresl6yyxkJxel7anT9ZN6yzvXS9ZD21roesl6yz/AFk3rI+2h0fWT+ssz10vXS9t
+ Dp+sn9ZZnrpeul7aHT9ZN6yzfXS9dL21Ol6yb1lneul66XtqdL1kvWWb66Xrpe2p0vWS9ZZvrpeul7an
+ S9ZL1lm+ul66XtpdL1kvWWb66Xrpe2l0vWS9ZZvrpeul7anS9ZL1lm+ul66HtqdH1kvVWd6yXrJwgl0R
+ apC1ZnrpfaEeBTqi1P6wWT9pS+1JcCnW9ZMbllfaU32lLgU6huTG5Zf2lL7QlwKdI3Jess310/rJcCnR
+ 9ZOLlneql6yXAp0vWT+qsz10/wBoS4FOl6qb1Vneul66XAp0fWS9ZZ3rpeulwKdH1kvWWd66XrpcCnR9
+ ZL1lneul66XAp0fWS9ZZ3rpeulwKdH1kvWWd66XrpcCnR9ZL1lneul66XAp0fWS9ZZ3rpjelwKdL1k/r
+ LL9dOL0uBTpeqn9VZovUvWS4FOh6qf1VneumOQlwKdP1U/rLKOSo/aUOBTr+ul6yyPtSf7SlwKdX1k3q
+ rM+0p/XR4FOj6qb1Vn+ul6yXAp0PVS9VZ3rJeslwKdH1U/qrN9dL10uBTpeql6qzfXS9dLgU6Xqpeqs3
+ 10vXS4FOl6qXqrN9dL10uBTpeql6qzfXS9dLgU6Xqpeqs310vXS4FOl6qXqrN9dL10uBTom1RNqoeum9
+ ZLgU6HrJxcs31kvXS9tTqC5P6yyvtCf7Ql7anTNqj6qoC9P6qXtqbvqpxaqBtTG6EvbU6QuUxesg5MKP
+ 2tD21O2Lwl64WJ9rTjLS9tTsm5QNqzBkypC9L21OgbU3qqh6yRuR9tTf9VL1Vn+ul66XtqdD1UvVWf66
+ Xrpe2p0PVS9VZ/rpeul7anQ9VL1Vn+ul66XtqdD1UvVWf66Xrpe2p0PVS9VZ/rpvXS9tTo+ql6qzvXS9
+ dL21Oh6qXqrP9dL1kPbU6ItUhas0XJxel7anT9ZL1lm+ul66XtqdE3Jjcs7103rpe2p0fVS9VZ3rpeul
+ 7anSFqf1Vm+un9dL21Ol6qb1lmnIUTkJe2p0/XTeuss5CichL21Ot66XrrI+0pfaUvbU6/rp/WWSMlSG
+ Ql7anT9VMbVni9L1kvbU3zam9VUPWTesl7anQ9VSFyzfWSF6XtqdQXJ/WWYL0/rpe2p0/VTG1Z3rpvXS
+ 9tTom1N6qzvXS9dL21Oj6qXqrO9dL10vbU6Pqpeqs710vXS9tTo+ql6qzvXS9dL21Oj6qXqrO9dL10vb
+ U6Pqpeqs710vXS9tTo+ql6qzvXS9dL21Oj6qXqrO9dL10vbU6Pqp/WWb66ichL21Or66Y3rJOSm+0oe2
+ p1jem9ZZX2lL7Ql7anU9ZP6yyxkJxkJe2p1PVT+qs0Xp/XS9tToeqm9VUPXTG5L21N/1UvWWcb03rpe2
+ p0hcpC5Znrpxel7anT9VL1Vm+ul66HtqdH1UvVWd66Xroe2p0fVS9VZ3rpeul7anR9VL1Vneul66Ptqd
+ H1UvVWd66Xrpe2p0fVS9VZ3rpeul7anR9VL1Vneul66XtqdL1U3qrO9dL10fbU6BuUPWVA3qBvS9tTqC
+ 5EFqyBeiDIS9tTq+qkbVmfaVE5KPtqdM2hN6oWUcpN9qS9tTr+qn9VZIyUQZCXtqdE2qJtVH11E3Je2p
+ um5L1lnG5R9dL21OqLlMWrKF6mL0fbU6ZtUTas83qJvTTiU6Pqpeqs310vXQ9pTpeql6qzfXS9dL2lOl
+ 6qXqrN9dL10vaU6Xqpeqs710vXS9pTo+ql6qzvXS9dH2lOj6qXqrO9dL10vaU6Pqpeqs7103rpe0p0vW
+ T+ssv7Ql9oR9pTqesl6qzBkJ/XS9pTpeqm9VZ/rpvXS9pTo+ql6qzftCb7Qj7SnU9ZP6yyftKX2lL2lO
+ t6yXrLJ+0pfaUvaU6puUTcs37Sl66XsqdA3Jxas71k4uS9pTpC1S9VZnrp/tCb7anS9VL1Vm/aEvXS9t
+ To+ql6qzvXS9dL21Oh6qXqrO9dL10vbU6Pqpeqs710vXS9tToeql6qz/AFkvWS9tToeql6qoesl6yXtq
+ b/qpvVVD1kvWS9tTf9VOLVn+sl66XtqdIWp/VWb66Xrpe2p0jcom1Z3rpvXS9tTom1N6qzzem9dL21Ok
+ LlIXLK+0J/tCXtqdX1k/rrJ+0J/tCXtqdQ3pjcsv7QmOQl7anT9ZL1ll/aFIZCXtqdP1kvVWb66Xro+2
+ p0vWS9VZvrpeul7anS9VL1Vm+ul66XtqdL1UvVWb66Xrpe2p0vVS9VZvrpeul7anS9VL1Vm+ul66Xtqd
+ L1UvVWb66Xrpe2p0vWS9ZZvrpeul7anT9ZL1lmeun9dD21Oj6qibVQ9dRN6XtqdA3JvWWeb03rpe2p0P
+ WTi1Z3rKQuS9tToi1SFqzxcpesl7anQ9VL1Vn+uonIS9tTom5N66yzkKByUvbU6/rpeusf7SpDJR9tTr
+ +sn9VZIyVIZKXtqdT1UxtWd9oS9dL21N82pvVVA3qJvS9tToesnFyzPXS9dL21OoLlL1lli9OL0vbU6f
+ rJvWWd66Y3pe2p0Tcm9ZZpyFH7Ql7anU9ZP6yy/tCf7Ql7anT9ZL1lmfaEvtCXtqdP1kvWWZ9oS9dL21
+ On6yXrLN+0JfaEvbU6XrJess37Ql9oS9tTpesl6yzPtCXrpe2p0/WS9ZZn2hL10vaU6frJessz10xyEv
+ bU6nrp/XWT9pTfaUuBTr+ul66yftCf7QlwqdX1k/rLK+0JfaUuFTq+sl6yy/tKf7QlwKdP1UvVWZ9oT/
+ AGhLgU6XqpvVWd66XrpcCnR9VL1Vneun9dLgU3/VS9VZ/rpjelwKdH1k3rLO9dN66XAp0vWS9ZZvrpeu
+ lwKdL1kvWWb66b10uBTp+sl6yzPXS9dLgU6frJessz10/rpcCnT9ZL1lmeun9dLgU6XrJess310/rpcC
+ nRNqibVn+ul6yHAp0PVTi1ZvrpfaEvbU6guUhcsn7Sl9pS9tTr+sEvWCyftKX2pL21Ot6yY3LJ+0p/tK
+ XtqdM2pvWWZ9oS+0Je2p0vWS9ZZvrpeul7anT9ZL1lmeul66XtqdT1kvWWX9oS9dL21Op6yXrLM9dL10
+ vbU6frJessz10vXS9tTp+sl6yzPXS9dL21On6yXrLM9dL10vbU6frJessz10vXS9tTp+sl6yzPXS9dL2
+ 1On6yXrLM9dL7Ql7anT9ZL1lmfaEvtCXtqdM2qJuWd66Y3pe2pvm9OL1mG9ML0vbU67b1MXLIbepjIS9
+ tTresl66yTkqP2pL21Ox6yRuCyBlJHKS9tTqG5RN6yzlKH2lL21Ot66f1lkDJUxkJe2p1PWT+sssXp/X
+ S9tTp+ql6yzfXTeul7anT9ZL1lmeul66XtqdP1kvWWZ66Xrpe2p0/WS9ZZnrpeul7anT9ZL1lmeul66X
+ tqdP1kvVWZ66f10vbU6XqpvWWb66XrpcCnS9ZL1Vm+ul66XCp0vVS9VZvrpeulwqdL1kvWWb66XrpcKn
+ S9ZL1lm+ul66VKdL1kvWWb66XrpUp0vWS9ZZvrpeuhSnS9ZL1lm+ul66VKdL1lIXLK9dL7ShSnXFymLV
+ jDKRmZMptKdUPlPKpMtlWWPlClJExCcKUIUpHCUKZCaEFLBSCZJClMkyUpIKWKgVMqJCCmKkE0Jwipkk
+ kE6Slkk6SSlk6SdJSySdJJSyZSTJKWSTpJKWSSSSUpMnTpKWSTpJKWTJ0klLKLgpqJCSms8IBCsvCAQk
+ pkwK0xV2BWWJKSJinSKSmKdJOkpZJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6ZOkkpZ
+ JOmSUpOknSUsVXsVgoFiSmo9M1SeotSU2a1Zaq9asNSUuknTJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Dr0kkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSySSSSlk6SS
+ SlJ0ydJSkkkklKTpk6SlkkkklKSSSSUpJJJJSkkkkFwXSSSSSpJJJJCkkkkkKSSSSUpJJJJCkkkklLJJ
+ JJKUkkkkhSSSSSlJJJJKUkkkklSSSSSlJk6SSVJJJJKUokKSUJLgiIQnNVkhDc1NZA1iIUC6EV4VSwwg
+ vZl6gdUEvUmvSXJmsVhjIQGPRRYAkpPCG9kphcEvUBSQgfUhFkKy54Vd70FwYHRIFDc9MCgubTCrLAql
+ atsSWlmQgvMI5Va1Bahc9BdYmsKA4oLlWWKs61SeZQXNJSSyFqOy5VRWUZlZQXBsi1M56iGFOWFJeChe
+ 9CL0Z7EBzEGQFm2xWarFRAVmpJc6lT1erKzKStCootbI3GqLxopMSenNbq5t4WbaNVq5AWXcg2IFCFYY
+ VXCOwoti08pSoSmlJVpQUiVEFIlG1FBYUIHVTsKEDqkwTblC06Vl0FalKLXIbIKclRCYlJjIZhPCgCiA
+ oqpiWqJ0RShPMIrwwc+FXtslNbZCqPtlG14CO4Sqrq1b+kka0FzXrEK9TZCqlsKTHQiouvVZKstdKzaX
+ K9WUmCSUqMKSYpLQxKDYjlV7FGWWLUtKrOCs2BBITWcFHtT7EUNTkIrrQbE2xFJUNyS4FhsUSxGlRJSX
+ Wj2KbWqO5TY9JBKZrFL0k7HBGBCLESgFSKyuFMEIjElpLJrYQ7EdAtCTGWlaUGUa1V0kNisq7UVQrVyp
+ Ja3mIiCwokooXKZMSmlJNKIUCFIlQJSXBE8KpYrVhVO0oMoRjlHYFWB1VqpFBZuGioZBhaTuFmZRTmMu
+ e+yCiVWqrYdVKqUVOvVcrAuVGphKsBhSUlNyj6qE9pCCXQkhvMsVyp0rHrs1WjQ+UkOi1SUGcKZSQxKU
+ piVGUkJAUiVEFOipE9VXq09VnpIRhWK1XCPWihstUlFqkkhSSSSSFJJJJKUkkkihSZOmSUpOmSQKl0ky
+ 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
+ uXFQLyrJoKE+go2prm0hRN8J7KiFTsMJWmmyclN9pWc6yEwtStXCXTGQpC9ZzXozDKVq4S3hcpCwoDGk
+ qyyolK0UoPKluKmKCpigpWpDuKW4o/oFL7OUuIKa+4pbyrBxymNBS4gpBvKW8o3oFL0ClaqQ7ylvKN6B
+ S9ApWpDvKW8o3oFL0ClakO8pbyjegUvQKXEpDvKW8o3oFL0ClxKQ7ylvKN6BS9ApcSkO8pbyjegUvQKX
+ EpAXlN6hRjQU32cpcQUwDyn3FFFBUvQKXEFNYkqMlWjQUwxylxKQBxTl5CsfZyhWUkJcQU1n3EIJyYSv
+ ELPsfCVp4S3/ALUn+1LK9VSFiNq4S6RyUhfKzg9GYZStDfbaSiteUCqslW2UFC1KDyn3lFFBS9ApcQUi
+ 3lLeUX0Sl6JS4lIt5S3lF9EpegUuIKRbylvKL6BS9EpcQUi3lLeUX0Sl6JS4lIt5S3lF9EpeiUuJSLeU
+ t5RfRKXolG1It5S3lF9EpegULUi3lNvKL6BS9AptqRbylvKL6BS9AoWpHvKW8onoFL0Clake8pbyiegU
+ vQKVqRbylvKL6BS9AoWpHvKbeUX0Cl6BStSPeUtxRRQVL0Chams55CA+8hW7aSAs29pCCmYyVZqyZWM5
+ xBR6LNU1T0lF0rRqfKwsZ616Cgp0WFFCBWjhNKlEKJUiolBTApSkUySmUp1EBSQUpNCkkgphCUKSZJSk
+ kkySl06ZJJS6SSZJS6SZJJS6SZOkpSZOmSUpJJJJSk6ZOkpSSSZJSkydMkpdMVJRKSkD0Eoz0ElJTNis
+ MVZhVliSkiSSSSlBOmCdJSlFOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJklL
+ p0ydJSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JTJMnTJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Hr0kkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKTpk6SlJJJklLpJkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKTpkklKSSSSUpJJJJSkkkklKSSSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6SSlk6ZOgkLwokKUpigyBrWNVG5q03iVUtrlBkDmOCYFW
+ nUqHpILmAfCY3QneyFVs0SXJ/tCm29Z25HrMpKpuG2UJzyVJrJU/RlJTX1KIxqKKEdlMIUm1q2qy0Jms
+ hThJBUUCwI5Q3BBTRsaqrwr9oVKxBKAiVJtUpBHrQSplCM3HRa4R2gJKa4oTGpWzCG4pJDRfUq76leeU
+ ByC9p+miMapkKTQkm09QV+pUqldrSYpNthSc5C3QhWWwlbDWqO9yy7irN9qoWPlK140WBRmFV2lHYkyW
+ llKVAlRLkrTadpUiUBr1Lcim0dhQZ1RXoRSWlt0FadL1jVuhXarYRWmLqByRKqNtlGa+UVnClBUwVAKU
+ IraZ7kG1+iTnQqt1qSqa971T3SUS10oTGyUrU2qhKsiuQh0Vq+2vRFFudZWg7YK1LKVUsrhJVqqMK9W9
+ ZodtRmXJIp0w5PKq12yrLTKSqUUF6OQgWIFIar0JEsKDuQX2zCZxSBTOCS60D3IW9Ee1C2oqtlvUHPT7
+ UJ4SXWsbE7LVWcUmFJVunXajixUairLUlrYFiPW9UwEespILdBQ7CmDlB70VlNa1AhFsKDKCU1YVypU6
+ yrlZRQQ2mIiG0oiS1iU0qRUYRSGJKiSpFQKC4IbCqdiuPVV4SXoByrdSrhuqs1hJBSuOizMpaTuFn5AR
+ Yy5T2yVYx6pUSzVW8dqKG/j0SrYx02PEK4CISQXNupgLMvELcyCIWLkpKazHarTxXLIHK0sUpIdurhFK
+ BSdEYlJajcoqRSARRagnTgJyElIXqs9WXqs9JDAI7EAI7EUNhqkotUklKSSSSUpJJJJSkkkkVKTJJJKU
+ kkkgpSSSSSlJJJJKUkkkipZJOkkpZJOkipSSSSCl5SBUU4SSzCRTApSgpiSoEqRUCErUyBUgVABTASUv
+ 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
+ 532ZL7MtHaEtoStTnfZkvsy0doS2hK1OeMZT+yq8GhE2hAlLi340BYeZTErrchohc7njlG0vN2tgqVPK
+ neNU1PKKnXxFtY6xsRbOOmpdCtHCBWjBBVLkqBKclQJQUpOAoypAoLV4TpJIIWSSSQQpJJJJSySdJFKy
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUpMkkkpSSZJJSk6SSSl1FykouSU17EAlHsVYpKSMKtMVRits
+ SUlCScJJKWSSSSUpJJJJSySSSSlJJJJKUkkkkpSdJJJSkkkklLJJJJKUkkkkpSSSSSlJJkklLpwmTpKU
+ UCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUyTJ0ySlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/S69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkkkLpkkxQXBUpi5MShOcgyhIXKBEoZem9RBcyLAVA1hSD0i5JNtW1i
+ zrgtO4rMvKC62r3VmlVCdUelyS63UqaCrTawqdL1dY9JaSyFYT7QEi9CdYitSykq/qIjXSgutJCi4KYT
+ OCCgWnaqNqv2hULQgutrkojHoLk7UFW6Fb1Ya9UKyrDSkm07rEB9qZ5VZ7kE2zNijulBlTalS62RKdqa
+ E4CVJts1FXWKjUrtaVMUikcqtpKuESq9tcpUsty7SVVctC2pVX1oUkFE1HYhBsIrAjS62RCiWo7WSjCi
+ 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
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ 6ZJJJC6UJBSAQKQicFXeFcIVexqDIC03GEPejPYgFqC9mHqW9BAUwkpjZqqdrJV/bKiaZSS5BqKmxhC0
+ DjpDHhBKOqQrTHKAqhTDUksi5Cc4om1NsSUjbKs1qDa0djISUlaEzgpgJEJItpWtVG1i1LGSqtlaCnMc
+ xM1iuGpIVIJRsajhqmypFFaSWq9qqvatJ9arvqQS0g1GYxEFSM2pJKDYkGK16acVpJR1sV2tqhXWrLGQ
+ ixyK4CG8Ip0QXlJjtr2MlVX1K6dU3pykuc40qTKloChTFCKra1dStMrU21wpxCSbYFgQLGKyShuEorg5
+ 1laruqWqa5QzQkq3MFSsVMRzTCdrISUnqYj7dEOtH7IrC07VQtlatjJVR9EpIaAaSrNVaM3HViuqEkM6
+ a1ba1CYIRQUVrB4QXBWDqoFiSkIUwJUticBJSMslV7KlehCeyUlOW9kJmSFbsqQxUklJWVJ/CdjIUnNT
+ UudaEEN1V2xkobatUlMqWK41uihVWrTWJJtCWptqOWptqSUBaqtzFoFqr2MlJLkWVpmV6q8+pJlSSlUs
+ VtrEq60cMSRaDapAIhakAkpjCE8I5CE9JDSsaqrmK88IfpykholhUSwrRFEqX2ZFTmbCnDCtP7KpDFSU
+ 5gYU+wrU+ypfZUlW5JYVEsK1jiqBxklwcvYU4YVpfZk4xkktWphWhS1MyiFYYyEkFMwaJPbKdpTnVFY0
+ rK1WdWtJzJQXVJKc/apAKyakhUkpCGqQrRhWitYkhEypWq2Qk1qINEkM2hSKhKUoqWKiVKU0JIWCdIBO
+ QkhC9V3qw9VnpKYBWK1XCsVoobDVJRapJKUkknRUsknSQUskkkkpSZOmSUpJJJJSkkkkFKSSSRUpJJJF
+ SkkkklKSSSSUpJJJJSkxTpFBLEppSKZBTMFTCGFMFJTNMU6ZJLEpgpFMEVLqD1NDeU4KaN5WPlFa+QsX
+ KCcpyrnaqNVkFRvBlAaSCkp6HEvAWxVlABcnRaQr7MggJ4U9GcwKBzQsB2UUI5RThFBej+2hL7aFzf2o
+ pfaijwoek+2hL7aFzf2opfailwqek+2hL7aFzf2opfailwqek+2hL7aFzf2opfaihwqek+2hL7aFzf2o
+ pfailwqek+2hL7aFzf2opfailSnpPtoS+2hc39qKX2opUp6T7aEvtoXN/ail9qKVKek+2hL7aFzf2opf
+ ailSnpPtoS+2hc39qKX2opcKnpPtoS+2hc39qKX2oo8KnpPtoS+2hc39qKX2opcKnpPtoS+2hc39qKX2
+ opcKnpPtoT/bR4rmvtRS+1lLhU9Ic0IL8sFYIyin+0Epwil0L8iVk5FsqT7CVSuJKlFJa11iq79UW0FV
+ y0ykpuUWQVsYt8LAqBC0KHkIKenoyRCtNywudruIRvtBTSFO99rCkMwLnjklN9qKYYqej+2hROaFzhyy
+ onLKHCh6X7aE4zQuY+1lOMspcKHpvtoS+2hc19rKb7WUuFT0v20JfbQua+1lL7WUuFD0320JfbQua+1l
+ L7WUuFT0v20JfbQua+1lL7WUuFT0v20JfbQua+1lL7WUuFT0n20JfbQub+1lL7WUuFT0n20J/toXNfay
+ l9rKXCp6X7aE/wBtHiuZ+1FP9rKXCl6YZoT/AG4LmPtZS+2FN4UPTHOCgc0LmjmFN9rKICHpftoTjNC5
+ kZRUxlFGkh6X7aEvtoXN/ail9qKXCuD0ZzAq12WCsb7UVB95KcIrkuXkSsTIslWLnkrPtBKfSkJdqjVP
+ QNhRq2FJTqY9sLWoyIWDVIV2t5CSnoa8qFYGYFzovIT/AGkphCHovtoSOaFzv2opfaim0h6H7YEvtg8V
+ zv2kp/tRSpa9D9sHil9sHiue+1FL7UUqU9D9sCX2weK577UUvtJSpT0P2weKX2wLnvtRTfaSlSnovtgS
+ +2DxXO/aSl9pKNKei+2BL7YFzv2kpfaSlSXo/toS+2hc59qKX2ooUuej+2hL7aFzf2opfaihSi9J9tCX
+ 20Lm/tRS+1FKmEvS/bQn+2hc19qKX2opUoPS/bQm+2hc39qKX2opUyh6P7aEvtoXN/ail9qKVKL0n20J
+ fbQub+1FL7UUaWPS/bQn+2hc0MopxlFLhU9C/MCz8jJBWackqvZeSnAJSZF0rPsslPY8lV3SVJS8Mt6K
+ yxVoKkJCTIHWouhamPlALm2PIVqu8hAhaXq68wI320Ll25RCc5ZURixF6Q5o8U320LmTmFN9rKXCoPT/
+ AG0JfbQuZGWU/wBrKVL3pPtoT/bQua+1FL7WUqQ9N9uCX24LmftZS+1lLhQ9N9tHim+2jxXNfayl9rKX
+ Cp6X7aEvtoXNfayl9qKXCp6X7aPFL7aFzX2opfaijwqel+2hL7aFzf2opfailwpek+2hL7aFzf2op/tR
+ S4UPR/bQl9tC5z7UUvtRQ4UPSfbQn+2hc19qKb7WUuFD0320JfbQuY+1lL7WUOFT0/20eKb7aFzP2spf
+ aylwqelOaFE5oXOfayl9qKNJej+2BQOWFgjJKX2gpwC4OvZlBUrshU3XEqvZYSpAFwZ3XqhbanscSqr5
+ KcF4Wc9EqfqgbCiMYQil2sS6FvY2WAFydTi1Xa8gtUMgsL1zc0eKRzQuYGYUjmFRcKx6T7aEvtoXM/ay
+ n+1lHhU9L9tCX20LmvtZS+1lLhU9L9tCX20LmvtZS+1lLhU9L9tCX20LmvtZS+1lLhU9L9tCX20LmvtZ
+ S+1lLhU9L9tCX20LmvtZS+1lLhU9N9tCX20LmftZT/aylwqel+2hL7aFzX2spfaylwqel+2hL7aFzP2s
+ pfaylwoem+2hL7aFzP2spfaylwqem+2hL7aFzP2spfaylwqem+2hL7aFzP2spfaylwqel+2hL7aPFc19
+ rKX2spcKnpftoS+2hc19rKY5ZS4VPSnOCgc4LmTmFR+1lOEUvQ2ZgKzcnKBWecklV7LSVKAkKyLpWc96
+ JaSVWIKOi8J636rSxrYWQwFXKiQggvSY2QAtOrLAXL1WkKy3JITSGIvTDMCf7YFzf2opvtZUfCoPRnMC
+ j9rC577WUvtRS4V70P2sJfbAue+1FI5RRpT0X20JfbQubOUU32socKnpftoT/bQua+1lL7WUuFBel+2h
+ L7aFzf2spfailwsRek+2jxS+2jxXN/aim+1lLhSHpPto8Uvto8Vzf2spvtZS4WUPS/bR4pfbR4rmvtRS
+ +1FLhQXpfto8Uvto8Vzf2opfailwsb0v20J/to8VzP2sp/tZQ4UvS/bR4pjmhc39rKY5ZQpL0f20JfbQ
+ ub+1FL7WUaQXphmhP9tC5n7WUvtZSpa9N9tCX20LmftZT/aylwrw9MM0eKi/MC50ZRUjkkoiLKHRycqQ
+ sPLvlTtuJWde4lSAJad75KrhHewlMKSjSU1D4Wxi3wsdlZCOx5aixyenpywFbbmBcszIIR25JTSGN6UZ
+ gT/bAudGSUvtJTeFT0X2wJxmBc59qKQyilwpelGYFIZoXNDKKl9qKaYrg9Ic0KJzQucOWUxyyhwrno/t
+ oS+2hc39qKX2oo0sL0v20JfbQub+1FL7UUKWvR/bQm+2hc59qKb7UUeFeHpPto8UvtoXN/ail9qKPCue
+ k+2hL7aFzf2opfaihwscnpPto8UvtoXN/ail9qKVLHpPtoS+2hc39qKX2opUyB6X7aE320Lm/tRS+1lC
+ l70n20JfbQub+1FL7UUaYy9J9tCcZoXN/aimOWUqQ9MM4eKkM8eK5U5hSGYUOFL1Ds4KrdlgrD+1kqDs
+ glPEVwbmRkgrMuulQstJVV5JTwF4ZOsTCxBIKcAopLcrtWhRfCyGAqzW4hBhk9DRkwrrMsLnGWkIwyCE
+ 0haHoPtoS+2hc6ckqByym8K8PTDNCf7aFzH2sp/tZTSEvTfbQm+2hc19rKf7UUKS9L9tCX20LmvtRS+1
+ FKlPS/bQn+2jxXNfayl9rKVIel+2jxS+2jxXNfail9qKVKel+2hL7aPFc19rKX2spUh6X7aEvtoXNfay
+ l9rKVKel+2hN9tHiub+1lN9rKFIem+2hOM0eK5j7WU/2spUp6b7aPFMc0eK5r7WUxyyhSnozmhR+2hc5
+ 9rKX2ooqekGYFIZgXNjKKcZRSS9J9tCf7aFzf2opfaijSno/toSOaFzn2opjlFGku+7NCq25gWOckoL8
+ glSAIb1+UCsu/IlCttJVK15KeplZbKDvlDMlSawlJcGYcpsKTaijNqKC9PQ6FsY1sLJqrIV+mQgp3Ksi
+ Eb7SshryE5tKVBDq/aU4yljG4peuUKQ7f2oJ/tYWH65THIKFKd37WE/2sLA+0FP9oKFId8ZYT/awsD7S
+ UvtJQpD0H2sJjlhYH2kpfaChSHe+1hL7WFg/aCl9oKNId77WEvtYWD9oKX2gpUp3vtYS+1hYP2gpfaCl
+ Sne+1hL7WFg/aCl9oKVKd77WE32sLC+0FL7QUaU7v2sJ/tYWD9oKX2gpUl3vtYS+1hYX2gpvtBS4VO4c
+ sKBygsb7QU3rlEBDrOyVVtvlUjcUJ9hKdSmV9srPseiWElVngpLwuHK3S+FQAKPXISpc7VF0LRqyIXP1
+ vIVplxCFLC74ygn+1BYgvKX2gptLS7X2kJvtIWN65S9cpUtdn7SEvtIWP65TeuUqQ7X2oJ/tYWEbym+0
+ FKmUO99rCX2sLB+0lL7SUOFLvfawl9rCwftJS+0lKkO99rCX2sLB+0lL7QUqWl3vtYS+1hYP2gpfaClS
+ 0u99rCX2sLB+0FL7QUqQHe+1hL7WFg/aCl9oKVMod37WEvtYWD9oKX2gpUku6coKJygsT7QVE5BRpY7v
+ 2sJxlhc+ckpxklGlO87KVW7IlZwvJUXWEogBK99srMudKtWSVVewlGkteUap8IZrKk1hCSXTothaVORC
+ w2EhWGWEIUp6BmUEduWFzwvIUhklNIU9D9rCY5YWB9pKX2kpvCp3TlhR+1hYf2gpfaCnUtdz7WE/2sLC
+ +0FL7QUqQ7v2sJfawsL7QUvtBSpTu/awl9rCwvtBS+0FKlO79rCX2sLC+0FL7QUqU7v2sJfawsL7QUvt
+ BSpTu/awl9rCwvtBS+0FKku79rCb7WFh/aCm+0FKkF3DlhROWsQ3lRN5SpDt/a04y1heuU4vKNKd0ZYT
+ /awsL1yn9cpUFwd8ZYSdlBYYyCpeuUuFc3ci+Vi5Vko9lhKoXSU6lNK0yVBnKI9hKi1hRU38d0LYxrYW
+ HUCFeqeQhSHoK8kBF+1BYYvISOQUwhTt/awn+1hYP2gpfaChSHd+1hP9rCwftBS+0FKlrvfawl9rCwft
+ BS+0FClO99rCX2sLB+0FL7QUqU7v2sJfawsL7QUvtBSpTu/awl9rCwvtBS+0FGku79rCX2sLB+0FP9oK
+ VJd77WEvtYWD9oKf7QUuFaXbOWFE5SxvXKb1yjS12vtSX2pYvrlP65RpcHa+1JfagsX1yl65Spc7X2oJ
+ fagsT1yl65SpLufagonJCxfXKRvKQCXSsyAqN90qu64qvY8lOUxuslU3OU7CSgEFFSet6vUWwsxoKs1k
+ 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
+ pcHovtgS+2BYH2gpfaCjS53/ALYEvtgXP/aCl9oKVLS9B9sCX2wLn/tBS+0FKkPQfbAl9sC5/wC0FL7Q
+ UqSHoPtgS+2Bc/8AaCl9oKVJeg+2BL7YFz/2gpfaClTGXoPtgS+2Bc/9oKf7QUqWu99rCcZYWD9oKY5B
+ SpcHoRmBSGaPFc0coqJyymkLnqPtwTjNC5b7YVIZZS4UvU/bQqt+YCFh/ayhvySUhFITZd+5YtzpKs2v
+ LlWcwlSgNqCAIgKcVFTFZTmSWzEOVmp8IHplEa0hBo5HXx74WlVlQuercQrDbiEqYg9AMwJfbAsH7QVH
+ 7SUyl4eg+2BL7YFz/wBoKX2koUl6D7YEvtgXP/aCl9oKVKeg+2BL7YFz/wBoKX2gpUp6D7YEvtgXP/aC
+ l9oKVKeg+2BL7YFz/wBpKX2kpUp6D7YEvtgXP/aCl9oKNBD0H2wJfbAuf+0lL7QUCFPQfbAl9rCwPtBS
+ +0FRFc7/ANrCX2sLA+0FL7QUFO/9rCX2wLB+0FN9oKKHf+2BL7WFgfaCl9oKSnf+1hL7WFgfaCl9oKSH
+ f+1hL7WFgfaCl9oKSnoBmBT+2Bc79oKf7SUlztXZYIWPl3yhPyCVUseXJKQ2ukqVJ1UCwlGqrKCXUxSt
+ nHcsXHbC1aEEutU5HBVKsqw1yCkxKiVGUpQQulCScIKWhMQppiEEMEylCUIIWSTpJKUmTpIqWSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpZJJJJSySSSSl0kkklLqLlJRckpr2KuVYsVcpKZMVtiqMVtiSkwSSC
+ SSlkkkklKSSSSUskkkkpSSSSSlJJJJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpZJJJJS6dMnSUooFiOUCx
+ JTVemanemakps1qw1V61YakpkmTpklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Tr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSTpKUE4KilKCmRKg4SlKcCUFwLXexBdWr5ZKg6tJdbnliQarbq0MsSTaNoRQyUwa
+ jNCSbY+kmNSsAJyEFW0zWo7FaLVAtSTxIQxSDEQNUw1JXEwFamGwiAJQkjiYgJEJ0yCLRuaguYrJUSEq
+ VxNQ1JxUrO1SDEqVxIBWp7EbamhKk8SAsQnVK5CbYhSeJpekpCtWixR2pUu4kQYnFaKApBqVJ4mDWQiA
+ J4TFGmOUmLkFwRim2o0stAGorWKQYpgJUniXaxS2JwpJUm0ZaoEIxUCEaSChIUYRi1RhKl3ExASLU6Up
+ Ui0TmKGxWIlLalSrRsajAJg1TCVIJWLJUfSRgpgI0ttAKlIVwjQmSpHEi2pIhCiQlSrYgp1ElNKVItnC
+ UJAqYSpVsYTFqImKSra7q1D01ZITEJJtCGpi1FITQmqtrFkpNqVjapBiFKtgxkIoCcBKUU2xIUYUiUyS
+ bWhDcyUZMQlSbaprTtqVgtSDUlWxYyESE4TootGQm2oicBBVoi1AeFcIVa0JUi2o4JNCd5SYUUWnYxHF
+ YQ61YCSrY7AnDAnJTFySrX2hMWhMXKO9JVsi0KJYE+5OClS4Fh6YS9MIiSVJthsTQpkpikq2KkCmhJJb
+ bKEtqQKkCkq0ZrTemjJikq0QYpBqkkki1QknTFJVrSmlIhNCSLZApwohOCihmEimBSJSUheqz1Zeqz0k
+ MAj1oAR2IqbLVJQappKUnTJ0lKSSSSUsknSSUsmTpJKWSSTpKWSSSQUpJJJFSkkkklKSSSRUpJJJJSkk
+ kklKSSSQStCaEQBKEFMIThOVFJTOUpUJTpJUSmlMVFFSSVB2qUpQiFNS5krMyKJW45koD6JTlPLXYhKr
+ /YyupdhyofYfJOU8+zFIRxjlbjcJEGGjannnY5QzjFdL9iCb7CPBHjWvNfZil9mK6X7CPBL7CPBLjQ81
+ 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
+ tsVRitsSUmCSQSSUskkkkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLJJJJKX
+ Tpk6SlFAsRygWJKar0zU70zUlNmtWGqvWrDUlMkydMkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//V69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJSkxTpQkpYBEaEwCkE1TIBOWpg5Lcklg5iC5isEqBCSUG1SA
+ UiE0JJZAp5UJTyklcqJCeUklLQnCSZBDOU0qMpJKXJUZTlRKSF0gmUgkpcBShME6SFFQJTkqBKSQzCmA
+ hhECSViEMhFKG5JIYhECGFMJJZEKJCklCK0sAFIBPCdFYtCaE5KaUksgpBRCkEkqKiU5KiSkuCoTEJwU
+ 6SURCaEUhNCSmIClCSUpKYlNKclRSWpWlFBVdpRAUUJCVGVElNKS1nKiUgkUlIyoohCjCSl2ogKgAnlJ
+ S5KbcokqMpKSgpIYKkCkldNCdOAmqUAnhJIoKWJUSUxKiileUkwUgEkrp0ydJKkxTqBKSl5SlQJTgpIS
+ BTCGEQJKWcVUtKsvVO4pLWq8p2FQfypVoqb1SsAIFQVkBJDEhQIRSoFJSMhNCmQmhJKwCmAmAUwklUJi
+ pKJSSxUgFFTCSlbVAhFUHIIRypAqJTBJSWUxKimKSmUpAqCcFJSQKUKAKICkhbaokIqiUlIyEykQmhFC
+ gU6YBOkpE9Vnqy9VnpKYBHYgBHYipsNU1BqmkpSdMnSUpJJJJSkkkklLJJJJKUmTpJKWSTpIKWSTpJKW
+ STpIqWSTpJKWSTpJKWSTpJKWTpJIJXlIlRTFJSiU0pikEFMgpQk0IgCKUZaolqMQoFJSOE4CcppTgplC
+ faoBymHJylemEvTCmClKVqYbAltCclR3IqZQE+0KG5PuTStZbQltCjuS3IKZbQltCjuS3JKZbQltCjuS
+ 3JUpltCW0KO5LcgpltCW0KO5LckpltCW0KO5LckpltCW0KO5LcgpltCW0KO5LckpltCW0KO5LckpltCW
+ 0KO5LcipltCW0KO5LckpltCW0KO5LcipltCW0KO5LckpltCUBR3JbklMi0KJaEtyaUCpbYEgwJ5Tgpq5
+ XphL0wnlKUlLbAn2hKU25JDKAmgKO5LckpltCkGhDlSDkkM9oTbQm3JFySlbQlAUS5RLkkJICUBC3pw5
+ JSTaEtoUNyfcipntCW0KG5PuRUy2hPtChuS3JKZbQltCjuS3IqZbQltChuS3IpZ7QltChuT7klM9oS2h
+ Q3J9ySmW0JtoUdybcmlBZwEoChvS3piEkBPAQ96fcikLloUCwJ9yaUVytoT7QmlNKKWW0JtoTFybciln
+ tCW0KG9SDklLlgTbAnlKUFKDAn2BKUtyCF9gTbAluS3ILVbAlsCW5LcghWwJbAluS3JKVsCWwJbktySl
+ bAlsCW5LcihWwJbAluS3JJVsCfYE25LcilltCW0KO5NuQSy2hNtCbcm3IKLLaEoCjuS3JMRZQE8BQ3J9
+ ySgy2hLaFHcm3IMgZ7Qm2hR3JbkklntCUBQ3JbkViTaEtoUA5SBRUo1hRNQRJTEpyURqCb0giEptyS4M
+ fSCXphS3JbkV7EVhSDAnlLckgr7QmICYuQy5NYizMJaIJcluQSE8BPtCCHIgcguZbAn2BMHJ9yIUraEt
+ oTbk25SIZbQltCjuS3IqZbQltChuS3JUlntCW0KG5LckhnASgKG5LckpntCeAh7ktyCkkBKAob0t6CEk
+ BNAUN6bemlCSAokBR3pt6Cme0JtoUdyfckpfaE20JSlKClbQpBoUZTgorgy2hMWhKUiUQuDAsCgWBEJU
+ CU5eFBgUw0KIKkCios9oS2hNuS3IFYV9gS2BNuS3IIX2BLYE25LckpfYEtgTbktySF9gS2BNuS3JKX2B
+ LYE25LckpltCW0KO5LckpltCW0KO5LckpfaEtoTbk25JTLaEtoUdyW5JTLYEtoUdyW5JTLaEtoUdyW5J
+ TLYEtgTbktySl9gS2BNuS3JKX2BLYE25LckhfYE+0KO5MXJKSQEtEIuUd6CkxAUCwFQ3p96FJCjUFH0Q
+ p70+5JewFITioKe5LcjSCx9MJbAn3Ji5BjKi0JtoSJTSkoK2hLaE0pSkvCtgUg0JpSlJLINCfaFHcluR
+ Uz2hLaFDcn3IrSy2hLaFHcluSWFltCW0KO5NuRSGW0JbQo7ktyTKGW0JbQo7ktyKCz2hLaFDcluRY2e0
+ JtgTbk+5NKlbAn2BNuS3JlJZbQlAUS5RL0KQUmibRD3ptyK1LATQFDclKS4M4CUBRlKUWUKLQoFgUiU0
+ pLmIrCmGBNKkHJJZBgT7Ao7k+5JjkyDQnAChuT7kmNnAUSAolyiXoqZwEoCHuT7kFM4CUBQ3Jbkl4ZEB
+ NAUC5LckuSBoUg0IQcphySws9oS2hR3Ji5Jay2hNtCjuTbk4Lgy2hPtChuS3Jy9ntCW0KG5LcgWIs9oS
+ 2hQ3JbkFrPaEtoUNyW5NXhntCW0KG5LckuZ7QltChuS3JLSz2hLaFDcluSQy2hOGhQ3Jw5JSUNCfaEMO
+ T70VwUWhQLQpFyiSlTIFtoTbAnlPKFJLH0wkGBSToMJWDAn2BPKUoLVtgThoTSm3IUvCQNCeAh70t6QS
+ zLQm2hR3ptykCmcBKAobk+5OUz2hLaFDcluSUzgJQFDcluSpTOEoUNyW5GkMoCUBQ3JbkqUzgJoCjuTb
+ kqQzgJbQo7ktySmW0JbAm3J9yClbQltCbco7klM4CeAh7025JSWAmgKG5LcklnATQE0ppRUygJ4ChKUo
+ 0lnATwELcluQpSWAltCGHKQckQpfYE4YEgUtyYpfaEoCbcolySlyAokBIlNKCFbQnDQmlKUlMoCeAoym
+ 3JIZgBTgIQcn3IKSJQEMvTF6SmcBKAh7k+5JDOAlAUNyW5JTOAlAUNyW5JLOAlAUNyW5JTOAlAUNyfck
+ uZQEoCjuS3JJZQEoCjuS3JKZQEoChuS3IqZ7QltCYFPKS0rhoT7QoyluSQy2hMQFHem3JLwygJoCbcm3
+ JJZFoUS0JtyUpLSsWhLaEpSlJYVw0Jw0JpSlJay2hPtCjKeUlLwE0BNKbckyBlASgKO5LcguZQEoCjuS
+ 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
+ gtYwlCdJBC0J0kkVKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUskkkkpZJJJJS6SSSSl1Fyko
+ uSU17FXKsWKuUlMmK2xVGK2xJSYJJBJJSySSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSk
+ kkklKSSSSUskkkkpdOmTpKUUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUyTJ0ySlJk6ZJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JT//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSlIKKcJIXTEp5UCghcuTb1AqKSbTB6
+ eUEFEBSSzUSFIJFJNsITKUJoSTakkkkkWpMnSSVa0J4TwnSRbGE0KaZJFsYTgJ06SrUEkkiUlWxKiQpJ
+ Qkq1gEQKCcFJNsyoEKUpQkkFHCkFIhRKSbZJKEpSitJZJpTSkittRKSUJJKtkFKVCU8pLrXJQyU5KZBd
+ a4KkFAKQSVbNRKeUxKSrWKiSnKikq1JQknSRagpBNCeEkWulCUJ0kKTpkpSQvCaE8pSkpjCYqSaElMSE
+ 0KUJJJYqQTJwkpkFIKITygq11EpEppSQxKaFJOAkutYBPClCSSbYwkkSmJSVaiolKUkksYTgKUJ4SRa4
+ UwoBSBSRazwqdoVxxVW1FFtFw1U6wncFOsJKttVBWAgVospIXJUZUS5MCkpmlCcJ4SSxSlOQolJNrkqJ
+ KaUkk2pSBTQmSUklMVGU4QQsQltU4ShBNsYShOnRVaMhKESExakhgFMFNCUJKZykSoppSUyShMCnBSUv
+ CYhSlMUlILFVerViqvSUxCPWq4VitFTYapqDVNJSk6ZOkpSSSSSlJJJJKWSSSRUpJJJNKlJJJJKUkkkk
+ pSSSSKlJJJJKUkkkkpSSSSSlJJJIJUmITpIKYkJAJ0klMgpAocp5SSyJUCUiVFFSiVAlShMWpwUx3KQc
+ hkJBOU2WuUpQWlTBRUuSoKRUUlLhOmCkgtKySdJJCydJJJKkkkklLJJ0kFLJJ0klLJ0kkFKSSSSUsknS
+ SUsknSSUsknSRUsknSSUsknSSUsknSRUsknSSUsnhJOkpaE6SYlNSulKjKUpKXTJJ0qQsknSSUspKKUp
+ KZJFQlPKSFFRKklCSmCdPCUJKUnTJJKXSSSRUukkkkpZJJJFKkkkklKSSSRSukkkkpSZOmTCtKySSSat
+ XSTJ0VwXTqMp5RXLqJUkycuYlRKkQmISUtKcFRTpKSBSQwVOUlKKYlIlMmoKpTyopILWUpSopIIZSlKi
+ kkplKUqKSSmUpSopIoZSlKikillKUqKdJK6SSSC4KTJ0yCCpJMkkxFdOmSSQF0ySSDKFJJJJJKk6ZOis
+ UFMKCeUQpnKYlQLlElOSuXKBckVAhJeGW9OHIcJwEl4ShykChhSCSCyTEJ5ToMJRFqbajQmhApCMBTCU
+ JJq5kClKiknBS6SSSkClJJJJKUmSSRUpJJJBSkkkklKSSShBCkk8JIIWTKUJigUMUk5TJqFwpBRCkElK
+ hJSTJJWTpkkVzJJNKSIXBYqJUiolOXBScKKkileUpSTIFYV5SlMkgheUpTJJKXlKUySSF5SlMmSUylKV
+ FJJTKUpUUklMpSlRSSUvKUpkklLylKZJJS8pSmSSUvKUpkklMpSlMkkpeUpTJJKXlKUySSF5STJwkpUJ
+ iEQJikpCVElEcEIhBQX3pb1AhNCTIEoenD0KE4SQUocpAoYUgkxFlCeEgnSUGMJQnSSZAtCUJ0kksU6S
+ SSlJJ0klpWSTpIrCsknSSSFkydJFlCySdJFBUlCSdJjWSlOVEoFKpSlRThClLymSSQpBUnASCkEqWqDV
+ LakFKUlwYwokKZKiSkyhiVFOSkkuWKaU5CjCSWQKkFABTASY5MgknCRSYmJUSpFRSSsnSAUgElLJipQm
+ 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
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSn//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmlJJJCkoSToI
+ YkKJaiJiElI4UgnhIJJZBOmCSSVJJJJJWKipFMUlLKQUYUgkhkmSSSQsUkkkkKTpkkVKTSnTJKUnTJ0l
+ KTSnKiklkCphDCmCklcoblMlQKSWBKaU5CUJLSuFIBMApBFavCaFJMkliU0pymhJIUnASCcJLlQknTFB
+ KpTSkkkhSUJJ0lMUgnISSQuFOFEKUpIWKaU5KiUkKlKUySSl5SBUSkElMwU6iFKUlLFRUiopJUpBMnSU
+ pMSkmKCFiUgU0JwElMwpBRClKSVyokpEqJSSsSokpymIRStKkFGFIJKZhJIJFJDElOCmKZJDIlV7EYoD
+ 0lNdymxQcpsSQ2mFSJUGKZCSkZKdqchIBJSVqmoBSlFSxUCpkqBSSxThKE4SSvCiVKVEoKWUmqKkEFM0
+ xTyolJS0pwVFOElJAnhRBUpSQqExCeUxKSmJCiVMqBSUtKUpEJkksgU5KiE6Skb1VerT1WeipgEetACP
+ WkpsNU1BqmkpSdMnSUpJJJJSkkkklKTJ0ySlJJJIKUkmSQUukmSRUukmSSUukmSRUukmSSUukmSSUukk
+ kglSaU6aEFLSlKSZJSkpSTJJUnCZOCipmAkWpgVKU4KROao7UUpQipg0IgCcBSTlI4ShTKZK1LAJ4TpJ
+ LSslCdJBS0JQnS0SUtCUJ9EtElLQlClKUpKYwlClKUpKYwlClKUoKYwlClKZJS0JQnSSpS0JQnSSpS0J
+ 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
+ SUyTJ0ySlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJT//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKW
+ STpkkKSTpIIUmSSSUpJOmRSumSSSSpJJJJK6ZJJJSkkkkkKSSSSQpJJJFCkkkkkKSSSSUpJJJJKkkk6S
+ VkpSSSSqUkkkkrQlCkkksK0JJ0yC1dMkkklSSSdJcskkkkuUkkkkpSSdJBSySSSSFJJJJIXSlMkkpeUy
+ SSSFJJJJKUlCdJJSySSSSV0ySSSVJ0ySSlJJJIrVoTwknSUsnlMkklUpJJJJWShOkklaEk6SSlJJkkkK
+ SSToqYFAerDlXektQFSYolSYkhssRgEFiOElLQmhSTJKUnlMkkuXlMkkkpZMnTIpVKSZOgpSdIJJq1dJ
+ MkkpSdJJJK8pSmSSQvKUpkkUqSSSSUqE0KSZJSgEinSSSheqz1aeqr0lMArDEAI7ElNhqkotUklKTpk6
+ SlJJJJKUmTpklKSSSSUsnTJ0FLJJJIKUkkkipSSSSSlJJJIqUkkkkpSSSSSlJJJ0EqSTSlKClFMkSmSU
+ ulCSSSVoTKcJoRUxlLcnIQyYRCme9N6gCrvshVrMiE5ToG8BROSFi2Zkd1Wfn+acp6E5QTfawuaOefFN
+ 9tPinBT032sJfawua+2nxS+2nxTqWvS/awl9rC5r7aUvtp8UuFT0v2oJfagua+2nxS+2lKlPS/agl9qC
+ 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
+ aQl9oC5/7YUhmFKlr0H2gJeuFhDLKf7WUaQ7f2gJfaQsM5aGcw+KVKeh+0hN9pC537afFL7afFLhS9Cc
+ gJvXCwRmFSGWjwrg7nrhI3BYoy04y07hbEA7HqhL1QskZSc5KNLyNHVFwUheFinLUPtiBi1Zu8Lwn9cL
+ A+2eaf7YU3hYnd+0BL7SFgHMKb7YUuFeHoPtIS+0Bc99sPil9sKVJeh+0hL7SFz32wp/thQpL0H2kJfa
+ Que+2FP9sPilSnoPtIS+0hc/9sPil9sPilSXoPtIS+0hc99sPil9sKNKeh+0BL7SFz32wpfbD4pcKnof
+ tIS+0hc99sKf7YUCEPQfaQl9pC5/7YU/2wphWu/9pCX2kLA+2FN9sKSHoPtIS+0hc/8AbCn+2FFTv/aQ
+ l9pCwPthS+2FJTv/AGkJfaQsD7YUvthSU7/2kJfaAsD7YUvthRU7/wBpCX2kLn/thS+2FJL0P2gJxeFz
+ wzCiNzPNBc7/AKoTeoFkNy0VuTKSXSD1MFZ7L5VllkpJbKgU4MpEIJRpBPCcBJSgFKEgE6CFkoTpIIWh
+ JOkgtWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKXSSSSUuouUlFySmvYq
+ 5VixVykpkxW2KoxW2JKTBJIJJKWSSSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSS
+ SSSlkkkklLp0ydJSigWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSmSZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Hr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklLpkk6SFk6ZJJC6ZJJJSkkkklykkkkkrpJkkl
+ LpkkklKSSSSQpJJJJCkkkklKSSSRQpJJJJSkkkklKSSSSSpJJJJKkkkkkqTpkkFpUnTJILVJJJJJpSSS
+ SS5SSdMklSSdJJSySSSSlJJJJKUkkkktUkkkkpSSSSSFJJJJKUkkkgpSSSSSVJJJJJUkkkkpSSSSK1SS
+ SSKlJJJJJUkkkklSSSSSVJJJJKWSTpJKWTpk6KGLlXerDlXekhAVJiiVJiSGyxHCAxHCSFJk6SSVkk6S
+ SVJk6ZJKyZOmSSsnTJ0kFdJMnTVqkkk6SlJJJJKUkkkklSSSSKlJJJJKUkkkklQTpgnSUieqr1aeqr0l
+ MQjsQAjsSU2GqSi1SSUpOmTpKUkkkkpSZOmSUpJJJJSydMnQUskkkkpSSSSSlJJJIqUkkkkpSSSSSlJJ
+ JJKUknTIJWJTSkkgpSeEgFIBJS0JwE6dJK0JQnSKKkbkB5R3qtYnBTVtes2+xXrlmZCcpoXWlVHPJR7R
+ JUGVSUVMGglFbW4q5Ri7lpVYEjhOU4gpcn9Fy6EdP8kv2f5I2tee9FyXouXQ/YPJL7B5JcSnnvRcl6Ll
+ 0P2DyS+weSXEp570XJei5dD9g8kvsHklxKee9FyXouXQ/YPJL7B5IcSnnvRcl6Ll0P2DyS+weSXEp570
+ XJei5dD9g8kvsHklxKee9FyXouXQ/YPJL7B5JcSnnvRcl6Ll0P2DyS+weSXEp570XJei5dD9g8kvsHkl
+ xKee9FyXouXQ/YPJL7B5JcSnnvRcl6Ll0P7P8kv2f5JcSnnvRcl6Ll0P7P8AJL7B5JcSnnvRcl6Ll0P2
+ DyS+weSPEp570XJ/Rcug+weSf7B5JcSnnvRcmNTl0X2DyUHYHknAqebcxwQHkhdBdhwsrIohPtLmutIU
+ ReUrmQq8apWpuMuJVlhJVOhsrXxqNyFqRhjipei5bFOFKsjp/kgSp530XJxS5dF+z/JP+z/JN4kPOipy
+ f0nLoPsHkm+weSVqefNTkxpcuh+weSf9n+SVoeb9FyXouXSfs/yUT0/yQtTzvpOS9Jy6H9n+Sb9n+SVq
+ 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
+ tpS2lav2RL7IlS9ytpS2lav2RL7IhSHK2lLaVq/ZEvsiVIcraUtpWr9kS+yJUuAcraUtpWr9kS+yJUuc
+ raUtpWr9kS+yJUtIcraUg0rV+yJfZEqW05oBUoK0PsqX2ZNKHNIKG5pWr9lS+xpWpxixycMctj7EnGEj
+ anJDCnMha/2NV7saAja6LmOsIUPtEKWS3as2x8FG23B0hkqX2lZDbUUWI2ySGjfN6iLSVUDpVioSlbRy
+ NhpJRQ0lFoolX2YkoWxByiwqJaVtHDUDhoWvDkbSltK1vsaX2NC1zk7XJbStb7Gl9jQtTk7SltK1vsaX
+ 2NK0uTtKW0rW+xpfY0rU5O1yW0rW+xpfY0bU5O0pbStb7Gl9jRtTk7SltK1vsaX2NAlDlbSltK1fsaf7
+ GmLS5O0pbStX7Gl9kSQ5W0pbStX7Il9jSU5W0pbStb7Gl9jRU5O0pbStb7Gl9jSU5O0pbStb7Gl9kRU5
+ O0pbCtYYan9iSS4paQm3lq1bcSFm5FW1JcxGRCPXkysp7oKnVZqgl6Cm6Vo0vlYeM6VsY5SS6LEWEKtH
+ CaphCUKcJklLQmUiolBCySSZBDJJMnQQpJJMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKWSSSSUukkkkpdRcpKLklNexVyrFirlJTJitsVRitsSUmCSQSSUskkkkpSSSSSlkkkklKSSSSUpJJJ
+ JS6SSSSlJJJJKWSSSSUpJJJJSkkkklLJJJJKXTpk6SlFAsRygWJKar0zU70zUlNmtWGqvWrDUlMkydMk
+ pSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSU//0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkhZJJ
+ JJCkkkkkqSSSSSpJJJJKkkkkkqSSSSUpJJJJCkkkkkKTpkkkKSSSSUpJJJJCkkkkUqSSSSSpJJJJKkkk
+ kkqSSSQK0qSSSQWqSSSSSpJJJJKkkkkkqSSSQSpJJJJCkkkklKSSSSWqSSSSUpJJJJCkkkklKSSSSSpJ
+ JJJSkkk6C5ZOmTpKWSTpJwWrJJ0kUKTJ0ySVJJJJJUkkkkuUkkkkpSSSSSFJJJJIYuVd6sOQHpIa5UmK
+ JUmIobLEcILEYJKUkkkkpSSSSSVJk6ZJKyZSTFJLFOkkkgrpJJILVJ0ydJSkkkklKSSSSSpJJJJSkkkk
+ kqSSSSUoJ0wTpKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpZOmToKWSSSSU
+ pJJJJSkkkkVKSSSSUpJJJJSkkkklKSSToJYwnhOnASUsApJJEoKVKaVElRlFKSU6gCphJTFwVexquEIL
+ 2pwU5lzVl5IW1e1ZGUE4KcmzlSpElQtOqeg6pyncw2ArboqELGwit2g6JFSQVBMawiyoFyZqtLH0wl6Y
+ T7ktyOqlvTCXphPuS3JKW9MJemE+5Lckpb0gl6QT7ktyClvSCXphPuS3JKW9MJemE+5Lckpb0wl6YT7k
+ tySlvTCXphPuS3JKW9MJemE+5Lckpb0wl6YT7k25JSvTCXphLcluSUr0wl6YS3JbkVK9MJemEtyW5LVS
+ vTCf0wluT7kFMfTCG+sIu5De5OFpDn5LAsHMAW7kuWBmu5UwS4mSqU6q1knVUp1SU6OLqV0GE0GFzuKd
+ V0eCeEEO/jMEK82sKljnRXQ5RytS+wJbAmL0t6ZqpRrCj6YUtybcjqhb0wpCsJtycOS1Qv6YTemE+5Lc
+ hqpj6QTekFOUpRUw9IJekFOU0oKY+kEvSClKfckpj6QS9IKW5PuQUx9IJekFLcluSSw9IJekFPcmlJTD
+ 0gl6QUpSlJSwqCXphPuTbkkFRrCb0gn3JbkULekE4qCeU8opC3phL0wn3Jg5DVcFzWFVvrEK1uVe46Ih
+ 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
+ JekEeEoRUg9IJekEeEoRUg9IJekEeEoQQg9IJekEeEoSWlB6QS9II8JQkhB6QS9II8JQipB6QS9II8JQ
+ kpB6QS9II8JQipB6QS9II8JQkpCKgiekFMBThNJS0L6hCwc1kSulyBouezhynLnnr+U1XKneNVGoaoJd
+ fEW3jLFxAtvGSS6VSMEGvhFTSpSaUiVGUFLkqJKRKaUkKSTJwghdJJJBapOmSSSpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKXSSSSUuouUlFySmvYq5VixVykpkxW2KoxW2JKTBJIJJKWS
+ SSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlkkkklLp0ydJSigWI5QLElNV6
+ Zqd6ZqSmzWrDVXrVhqSmSZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Pr0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpOmTpIWSTpkkKSSTpKUmTpklykkkkkqSSSSSpJJJJSkkkkkKSSSSUpJJJJapOmSS
+ UpJJJJSkkkklKSSSSXKSSSSSpJJJJSkkkkEFSSSSS1SSSSSVJJJJJUnTJJJUkkkkpdMknSQskkkkhSSS
+ SSFJJJJIUkkkkpSSSSSlJJJJKUkkkklSSSSSV0ySSSl0kkkkKSSSSQpMnSSSskkkkuUnTJJKUkkkkpSS
+ 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
+ SE6SB6qb1UqQ2ElX9VL1UqU2EyB6qXqpUpsJkD1UvVSpDYSVf1UvVSpLZCIqYtRPVTSErZHC53PPK28i
+ 3Rc9nWcpwS4t51UKjqo3u1TVHVFLt4hW3jlYOIVt4xQU6lZRZQKyjBBKxKaU5TQghZJPCZBCk4TJwghd
+ OmToIWTpJklKSTpkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpdJJJJS6i5SUXJKa9i
+ rlWLFXKSmTFbYqjFbYkpMEkgkkpZJJJJSkkkklLJJJJKUkkkkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJ
+ JJJKWSSSSUunTJ0lKKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJk6ZJSkydMkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Tr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpIUmSSSQpOmSSUumSSSXKSSSSSpJJJJK
+ kkkklKSSSQQpJJJJSkkkkkKSSSSQpJJJJSkkkkkqSSSSSpJJJJKkkkkkqSSSSWlSSSSS1SSSSSVJJJJJ
+ UkkkklSSSSSlJ0ySSFJJJJIUkkkkhdJMnSQskkkkpSSSSSFJJJJJUkkkklSSSSSVJJJ0lKSSSSQpJJJJ
+ CkkkkkrJJ0kkqTJJJJUkkkkpSSSdJSydMnSQwcgWI7kCxJCAqTFEqTEUNliMEGtGCSl0ydMkpSSSSSVJ
+ JJJJWTJ0ySVkkkkkFdJJJFapOmTpKUkkkglSSSSSlJJ0ySlJJ0ySVJJJJKXCRSCRSSieqr1aeqr0lMQj
+ sQAjsSU2GqSi1SSQpOmTpKUkkkkpSZOmSUpJJJJCySSSSlJJJIJXTJJIqUkkkipSSSSSlJJJJKUkkkkp
+ dMkkglZKUkyCmQKSYJ0lLEJoU0gEkrAKYSATwipYlBeUZyA9OCmpcVlZK07ll5Ccpy7RqlToUrjqhNsg
+ oqd3EcAtmq0QuVoyYWjXmoqd42hQNgWT9tTfbEaWl1vUCXqBZP2tL7Wkp1vUCXqBZP2tL7Wkp1vUCXqB
+ ZP2tL7Wkp1vUCXqBZP2tL7Wgp1vUCXqBZP2tL7Wkp1vUCXqBZP2tL7Wkp1vUCXqBZP2tL7Wkp1vUCXqB
+ ZP2tL7Wkp1vUCXqBZP2tL7Wkp1vUCXqBZP2tL7Wkp1vUCf1Asj7Wl9rSU6/qBN6gWT9rS+1pKdb1Al6g
+ WT9rS+1oqdf1Al6gWR9rT/bEkOt6gUX2BZf2tMctELgmyH6LCzDMq7dkSsrJfKeucnJ5VKNVevEqts1S
+ Q2MbldBhOiFgUNgrXxn7UFPUYz9Fea8Ln6cmFaGYmlTr7wlvCyPtqX2xCkOqbAm9QLKOWm+1pKdb1ApC
+ wLH+1p/tiSHY9QJvUCyPtqY5iCHX9UJeqFj/AGxL7Ykp2PVCXqhY/wBsS+2JKdj1Ql6oWP8AbEvtiCnY
+ 9UJ/VCx/taX2tJTseoEvUCx/taX2tJTr+qEvVCyPtaX2xKlOt6oS9ULI+1pfa0lOwLAn9QLHGYn+2JId
+ c2BN6gWT9sTfa0lOv6oUhYFjfa0/2xJIdn1AlvCx/tqX21Glwdg2BVb7BCpHNQLcqUQEtfNfyueyzqtX
+ Jt3LIv1Tkue7lGp5UHM1RKxCCnWxStzGcudofC1KL4SU9FU8KwLAsOvKhGGWgh2PUCY2BZX2tN9rQWut
+ 6gS9QLJ+1pfa0EOt6gS9QLJ+1pfa0FOt6gS9QLI+1p/taSnV9QJeoFk/a0/2tFDq+oEvUCyftaX2tFLq
+ +oEvUCyvtaX2tFLqeoEvUCyvtab7WiuDreoEvUCyftaX2tJBdb1An9QLI+1pfa0GIuv6gS9QLI+1p/ta
+ Sg63qBL1Asn7Wl9rQZA63qBP6gWR9rS+1pJLr+oEvUCyPtaX2tFY7AsCkLAsYZakMxKlOo94WblPUHZc
+ qlfkSiAlp5RWTcVfvfKz7BKK8IEWtQ2qbBCTIHRxytnGcsCl0LSovhJbJ6Kl4VkWBYdeVCMMxNYS6xsC
+ QsCyTlpDLQSHZFgUg8LGGYpDNTVzsF4UC8LKOaonNSUXTNgTeoFlHLTfa0aWut6gT+oFkfa0/wBrSpTr
+ eoEvUCyftaX2tKlOt6gS9QLJ+1pfa0Uut6gS9QLJ+1pfa0lOt6gS9QLJ+1pfa0kOt6gS9QLJ+1pfa0lO
+ r6gTeoFlfa0vtaCHV9UJeqFk/akvtaSnYFgTiwLIGWnGWkp1/UCXqBZP2tL7WkkOt6gQ3WBZn2tRdlpw
+ XBt22LOvemfkyqdt0py4ILys60q1a+VTeZTgvCByLSdUMtRKxCcl2cN0LoMWzRcxjv2rUpyYUcmMvRtt
+ CTrQscZiRzFHS11fVCXqhZH2tL7Wip1/VCXqhZH2tL7Wkh1/VCXqhZH2tL7Wkp1/VCXqhZH2tL7Wkp1/
+ VCXqhZH2tL7Wkp1/VCXqhZH2tL7Wkp1/VCf1Qsf7Wl9rSU7HqhL1Qsj7Wl9rSU6/qhL1Qsj7Wl9rSU6/
+ qhL1Qsj7Wl9rSU6/qhL1Qsj7Wl9rSU6/qhL1Qsj7Wl9rSU6/qhL1Qsj7Yl9sSQ6/qhL1Asj7Yl9sSU6p
+ sCb1Asr7Wl9rTwEt+ywLKy3ypPyZVDIulFIc3LMrKsGq0ch0rPeNUmQKqGq18QwsqsQtCh0JIL0WK+Fr
+ VWBc5RdCvsyoQYS7YsCXqBZH2xL7Ym0oOsbAl6gWR9sS+2JLw6/qBP6oWP8Aa0/2xBLseqEvVCx/tif7
+ Ykp1/VCXqhZH2xL7YktLr+oE3qBZH2xL7Wgxl1/UCb1Asn7Wm+1pJDr+oEvVCyPtib7Ykyh2PVCXqhZH
+ 2xL7YktLseqEvVCx/tif7YlSwuwLQpiwLFGYn+2pUoO16gUDYFkfbUxzElzqmwJvVCyTlpvtaKC6/qhL
+ 1Qsj7Wl9rSWuv6gTiwLIGWnGWiuDtNeEnWBZAzE5zEqZQnyXiFgZpmVeuyZWTk2Sn0ucnJGqpgaq7cJV
+ fYilPQtnFKxqhC0KLNqDHJ6KhwV5jwsCrJhW2ZaTE7QsCl6gWQMtP9rQpLreoE3qBZX2tL7WhSnWFgT+
+ oFkfa0/2tNXh1vUCXqBZP2xN9rQXOv6gT+oFkfa0/wBrQWF1vUCf1Qsj7Wm+2JLXX9UJvUCyPtiX2xOC
+ 4Ov6gS9QLI+2Jfa0aS6/qBP6gWR9rS+1oUxydf1Al6gWR9rS+2IUsdf1Al6gWR9sS+2JMgdf1Al6gWR9
+ sS+2JL3X9QJeqFkfbEvtiSwuv6gS9QLI+1pfbEUOvvCcPCyPtif7YjSXVdYFVvtVM5ir25MogLwjynrF
+ yHSrt9srNtMpzIGo/lRCm4KICKS2aVrYxWPWYV+iyEGEvRYz1pV2Bc7TkQrjMuECgO3vCjvCyvtib7Ym
+ 0vDr7wl6gWR9tS+2oUp1jYE3qBZP2xN9rTSFhdf1Al6gWR9rS+1oUp1/UCXqBZH2tL7WlSnX9QJeoFkf
+ a0vtaVKdf1Al6gWR9rS+2JUp1/UCXqBZH2tL7WlSnX9QJeqFkfa0vtaFKdf1AnFgWP8Aa04zEKU7G8JF
+ 4WR9tTfbUKU6xsCb1Asn7Yl9rSpLsC0J/VCxvtaf7YjSnZ9UJeoFjfbE/wBtTgEux6gSNgWP9tSOYnCK
+ nSfYFTusVV2Wq1uTKeIpY5L1jZLlcvulZtzpTuFTTsOqgAiObKdtaFLgw2pw1WBUnFSC5VAgrZxXQs2q
+ uFo0CEkOxTZorHqrOrMIu9BDaNyiblVL1EuSQ2/WS9dUtyW4pIb3rp/XVDcUt5QQ3/tCb7QqG8pbygtb
+ 3rpeuqO4p9xSQ3vXS9dUdyW5JDe9dN66pbktxSU3fXS9dUtxS3FFTd9dP66o7iluKSm966XrqjuS3JKb
+ 3rpvXVLcluKSm766f11R3FLcUkt710jeqBemNiKW669VLrUMvQnklJIaWS+Vl2nValtZKpPoJSXhpt5V
+ 7HMIYxyrNVJCS50sayFqVXLIqaQrjHQktLpi9I3Kh6iY2oMZdAXJxcs4WqQsRWl0PWSNyoeon9RBQbZu
+ UTeqheolyTIG566XrqluKW4pLm766XrqluKW4pIbvrpeuqW4pbiktLd9dL11S3FLcUlhbvrpeuqO4pbi
+ koN7103rqluKbcUGUN710/rqhuKfeUUlv+sn9ZZ+9S9RFjLf9ZSFyzw9TD0kNx1yp32ykXIFmqSWhkul
+ ZVy1rmSqFtJKSXPhHqUjQURlRCS5vY74WnTasqppCuVmElOqy5EF6zmvUvUSU6BvTeuqHqJvUSQ3/XS9
+ dUN5T7yghveul66o7ylvKSG966XrqjvKW8pIb3rpeuqO8pbykpveul66o7ylvKSm966XrqjvKW8pJb3r
+ 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
+ HlJTp/aFXvvkIAeUKwko0uDQy3yse3UrWvYSqD6TKcG3BrMCsBO2lFFSK+WyIFWKXQUP0yiVtISaOR1s
+ a2FqV36LDpJCuseUKYg6ZvQzeqZeVAvKbS9veul66ob0t6CXQ9dL11n70t6SnQ9dL11n70t6SnQ9dL11
+ n70t6SnQ9dL11n70t5SU6Hrpeus/eUt6KnQ9dL11n70+8pKb/rpeuqG9Lekpv+ul66ob0t5SU3/XS9dU
+ N6W9KkN/10vXVDeUt5SpTf8AXS9dUN5S3lKkN/10vXVDeUt5SpToC9T9dZoeVL1ClSWzdfIWLlvmVcsf
+ KoXAlJLl2iSpUt1RXVSUWqnVJLexAtrGCy8auFsY7U1LfqCOAhVhHAQKmJCaFIpIKYEJiFMqJCCGKcJJ
+ kFpZJJkkEMkySSSVJJJJJUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJS6SSSSl1FykouS
+ U17FXKsWKuUlMmK2xVGK2xJSYJJBJJSySSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkk
+ klKSSSSUskkkkpdOmTpKUUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUyTJ0ySlJk6ZJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT
+ /9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJC6ZJJJapJJJJSkkkklykkkkkqS
+ SSSSpJJJBSkkkklKSSSSQpJJJJCkkkklKSSSSUpJJJJSkkkklykkkkkhSSSSSVJJJJLSpJJJJapJJJJK
+ kkkkkqSSSSUpJJJJSkkkklKSSSSQpJJJFaV0kySSFJJJJIUkkkipSSSSSVJJJJJUkkkklSSSSSV0kkk1
+ apJJJBSkkkkUqSSSSSpJJJJKySSSSlJ0ySSF0kydJTFyrvVhyrvSWoCpMUSpMSU2a0YILEYJIXTJ0ySl
+ JJJIpUkkkklZMU5TFBcskkkigrpJJIrVJ0ydJSkkkkEqSSSSSpJOmSUpOmSSSpJJJJS4SSCSSkT1VerT
+ 1VekpiEdiAEdiSmw1SUWqSSlJ0ydJCkkkklKTJ0ySFJJJJKWTpk6SlkkkkkqSSSRUpJJJJSkkkkVKSSS
+ SUpJJJBSkkkkkrJJ0kFLJ0ySCmScKITopZhPKhKbcipk4oD1MuUCUVNS0LNvZK13tlVrKZTlPO31FU3V
+ kLo7MSVXdg+SKnEbIRmvcFonAPgkMI+CKmmLCpbyrYwypfZCnLS0t5S3lXfshS+yFJTS3lLeVd+yFL7I
+ UFNLeUt5V37IUvshSU0t5S3lXfshS+yFJTS3lLeVd+yFL7IUlNLeUt5V37IUvshSU0t5S3lXfshS+yFJ
+ TS3lLeVd+yFL7IUlNLeUt5V37IUvshSU0t5S3lXfshS+yFJTS3lLeVd+yFL7IUlNLeU+8q59kKX2QpKa
+ W8pbyrv2QpfZCippbylvKu/ZCm+yFJTUDyn3lWxiFSGIUkhz3SUB9ZK2fsZTfYvJK17z7sclD+ynwXR/
+ YfJL7D5JWpwGY5CssrIWv9i8kvsaVoc8EhObCrxxConEKFoaXqFIWFXPsZSGIUlNUPKfeVbGIU/2QpIa
+ ReVE2FXjiFMcQpIaXqFL1Crn2QpfZCghp7ylvKu/ZCl9kKSmlvKW8q79kKX2QoqaW8pbyrv2QpfZCkhp
+ 7ylvKu/ZCl9kKCmlvKfeVc+yFP8AZCippbym3lXvshTfZCklpbym3lXvshS+yFJTR3lL1Crv2QpfYygU
+ NPeU+8q59kKX2QpqmnvKb1Crv2QpjiFOS0TYUvVKuHEKX2Morg1RYUi4lXBiFSGIUVzmPYSqz6CVu/ZP
+ JMcLySU84cZIY5C6E4Pkm+w+SSnEZUQrDAQtP7F5JfYz4JKaTXEKYeVcGGU/2QoIae8pt5V37IUvshQW
+ tLeUt5V37IUvshQQ0t5S3lXfshS+yFBTS3lLeVd+yFL7IUlNLeUt5V37IUvshRQ0t5T7yrv2QpfZCklp
+ bym3lXvshS+yFFLQLym3lXziFN9kKcuDR3lLeVe+yFL7IUkFo7ylvKvfZCm+yFJiLS3lLeVe+yFL7IUE
+ BpbylvKu/ZCl9kKDKGlvKW8q79kKX2QpJLS3lLeVd+yFL7IUVjS3lP6hVz7IU32QoqaZeVBxJWh9kKcY
+ ZRS5LqyUM45K3Bh+ScYXkla8OB9mKX2chdB9i8lE4XklbIHCFRCK0ELWOF5JvsXkhaJNBriFIPKufZCl
+ 9kKDAWpvKW8q59kKX2QoFQafqFI2lW/shTHEKC9p+qUvUKt/YynGGUgotTeUt5Vz7IU/2QpyxpbylvKu
+ /ZCl9kKKWlvKW8q79kKX2QpKaW8pbyrv2QpfZCklpbylvKu/ZCl9kKSmlvKW8q79kKX2QpIaW8pbyrv2
+ QpfZCgppbyn3lXPshT/ZCghpbilvKu/ZCm+ylJTT3lPvKufZCn+yFJTS3lLeVd+yFMcQpJDS3lLeVc+y
+ FL7IUV7RJJQ3AlaYxCn+xpy4OK6slCNJW8cLyUfsXkja8OEMcorcchbQwvJTGF5I2lyG1kIgJC0zhqJx
+ CmEscmjvKW8q59kKX2QoLGlvKW8q79kKX2QpKaW8pbyrv2QpfZCkhpbylvKu/ZCl9kKSmlvKW8q79kKX
+ 2QpKaW8pbyrv2QpfZCkppbylvKu/ZCl9kKSmlvKbeVe+yFL7IUlNHeUt5V77IUvshSU0t5S3lXfshS+x
+ lBTS3lLeVd+xlL7GUlNLeUt5V37GUvsZSU0t5S3lXfsZS+xlJTS3lLeVd+yFL7IUkNLeU28q99kKX2Qo
+ qaO8pw8q59jKf7IUbS0i4lBeCVqfZCkcNK1wcF9RKAccrozhT2TfYPJK14efbjlHZUQtoYHkpDB8kLUX
+ MYCEUOIV/wCxpjiFJhLRLyo+oVeOIVH7IUkBp+oUt5V37GUvshSZA095T7yrn2QpfZCkppbyn3lXPshS
+ +yFJTT3lLeVd+yFL7IUFhaW8pbyr32QpfZCkxlo7ym3lXvshS+yFJIaO8pt5V77IU32QosoaW8pbyrv2
+ QpfZCkgtPeU+8q59kKf7IUmNpbymNhV44hUDiFJIafqlOLCrX2MqYwymLmmHlPuKvDDKX2QooLQ3FLeV
+ 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
+ H7Ol9nSS53plL0ytH7Ol9nQU5vplL0ytL7On+zoqc0VKQqWiMdOKEkOaaJQnY0rY9BRNCTLBwziqP2Vb
+ hx1A4yLYBcX7MnFC2PsyX2VBim5QqKIGFaQxU4xUra8nPDCnDCtD7Ml9nStiLRDCpemrooT+iktaBrUT
+ WtL0E3oJLw5vplL0ytH7Ol9nQXud6ZS9MrR+zpfZ0kOd6ZS9MrR+zpfZ0kOd6ZS9MrR+zpfZ0lwc70yl
+ 6ZWj9nS+zpLnO9MpemVo/Z0vs6S0ud6ZS9MrR+zpfZ0kObsKbYVpfZkvsySnM2FLYVpfZk4xkFOcKypC
+ paAx1IUIqaIrTOqWh6KRpTlwcezHlVzirdOPKgcZFswLiDGT/Zls/ZkvsyLJI6OIcZO3HWx9lTjFQaOR
+ zWUwrDayrwxlMUJWxBzzWomsrS9BN6Cba8Od6ZS9NaP2dL7OglzvTKXplaP2dL7OkpzvTKXplaP2dL0E
+ lOd6ZS9MrR+zpfZ0kOd6ZS9MrR+zpfZ0kud6ZS9MrR+zpfZ0UOd6ZS9MrR+zpegkpzvTKXprQ9BL0Elz
+ n+ml6a0PQS9BJTn+ml6a0PQS9BFTn+ml6a0PQS9BJDn+ml6a0PQS9BJDn+ml6a0PQS9BJTn+mn2K/wCg
+ l6CSXOdXKC6iVr+gm+zILnF+zIleNC1vsykMeEktammFo0shRZVCtMZCBUlYERQCRKYpkSmlQLkgUlM0
+ xSBSQWrQmhSSQQWKSklCCFkk8JkkhSSSSSVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSU
+ ukkkkpdRcpKLklNexVyrFirlJTJitsVRitsSUmCSQSSUskkkkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJ
+ JJJKWSSSSUpJJJJSkkkklLJJJJKXTpk6SlFAsRygWJKar0zU70zUlNmtWGqvWrDUlMkydMkpSZOmSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSU//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJS6SZOkhZJOmSRSkkkkl
+ KSSSSSpJJJJKkkkkkqSSSQUpJJJJSkkkkkKSSSSQpJJJJSkkkklKSSSSUpJJOklZJJJJNqSSSSTakkkk
+ kFSSSSS1SSSSSVJJJJJUkknSUsknSRUsknTJIUkkkkpSSdJJCkydJJFLJJJJKpSSSSSKUkknSTSySSSS
+ aUknSRUskkkkldJJJNQpJJJJFKSSSSSpJMkkldJMkkpSSSSSlJJJJKUnTJJIWcq71Ycq9iSkBUmKBUmF
+ JFNpiMEBhRwkqlymSSSVSkkkkUqSSTJKUmKSZJKkkkklLpJJIoUnSSSUpJJJBSkkkkkqSSSSUpJJJJKk
+ kkklLhJMEikpG9VXqy9VnpKYBWGKuEdiSmy1SUGqaSlJ0ySSF0kkklKTJ0ySlJJJkkKTpkklKSSSSSpJ
+ JJFSkkkklKSSSSUpJJJJSkkkklKSSSSSpJJJBSySSSSl0kkklLEqJKkU0IqtiSmUoShFTHbKf05UwFII
+ 2pF6AKX2YI4KkClamt9lCicUK5ITEpWlpnGCb7MFcKZG1rT+zBP9mCtJ0bU1PswS+zBW0krU1PswS+zB
+ W0krU1PswS+zBW0kLU1PswS+zBW0krU1PswS+zBW0krU1PswS+zBW0krU1PswS+zBW0kbU1PswS+zBW0
+ krU1PswS+zBW0krU1PswS+zBW0krU1PswS+zBW0krU1PswTfZgriZK1NT7MEvswVtJLiU1BjBSGMFZTo
+ Wlr/AGcJfZwrMpSla62t6ATegFZSStVtb0Am+zhWkyNotq/Zwl9mCtJJWhq/Zgl9mCtpJWpqfZgn+zBW
+ kkrU1fswTfZgraZK0NT7ME/2YK0nStDU+zBL7MFbTJWpq/Zgm+zBW0krU1fswS+zBWk6Vqpq/Zgl9mCt
+ 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
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//1+vSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklLpJkkkKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZO
+ kpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSS
+ SlJ0ydJTFyBYjuQLElNdydiZydiSmyxHCAxHCSl0kkklLpk6ZJSySSSSlkydMkpZOmTpKXTpk6SlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuEikEikpFYqz1ZsVZ6SmAR2IAR2JKbDVNQappKUkkkkpSSSSSl
+ JJJJKUmTpklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSpSlJMkpeUpTJ0lKlKUkklKlKUkkVKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkk
+ lKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkkFKlKUkkQpUpSkknKVKUpJJKVKUpJJKV
+ KUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUp
+ JJKVKeUySaVLylKZJBS8pSkmSUvKUpkklLylKZJJS8pSmSSUvKUpJklLylKZJJS8pSmSSUvKUpkklLyl
+ KZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklKlKUkkVKlKUkklKlKUkklKlKUkklKlKUkklKlKU
+ kklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkkl
+ KlKUkklKlKUkklKlKUkklKlKUkkFKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlJJJJSkpS
+ SSUqUpSSSUqUpSSSUqU0p0kVLSlKdJJSyUp0klLSlKdJJS0pSnSSUtKUp0klLSlKdJJS0pSnSSUtKUp0
+ klLSlKdJJS0pSnSSUtKUp0klLSlKdJJS0pSnSSUtKUp0klLSnlJJJS8pSmToKVKUpJJKUlKSSSlSlKSS
+ SlSlKSSSlJJJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKUpJJKVKSSSSlSlKSSSlSlK
+ SZJS8pSmSSUvKUpkklLymlJJJSpSlJJJSpSSSSUpJJMkpdJMnSUpKUkklKlKUkklKlKUkklKlKUkklKl
+ KUkklKlKUkklKlKUkklKlKUkklKTpkkVLylKZOkpUpSmSSUvKUpkklLylKZJJS8pSmSSUvKUpJklLylK
+ ZJJS8pSmSSUvKSZJJS6UpkklLylKSZJS8pSmSSUvKUpkklLylKZJJS8pSmSSUqUpSSQUqUpSSSUqUpSS
+ SUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUp
+ JJJJSkkkklLpSmSSUvKUpkklKSSSSUpJJJJSpSlJJJSk6ZJJS6SZJJSkpSSSUqUpSSSUqUpSSSUqUpSS
+ SUpJJJJSkpSSSUqUpSSSUpJJJJS8pSmSRUvKaUkklKSlJJJSpSSSSUpJJJJSpTymSSUqUpSSSUqUpSSS
+ UpJJJJSkkkklKSSSSUpJJJJSpSlJJJSkpSSSUpJJJJSkkkklLylKZJBSpSSSSUukmSSUpPKZJJS8pSmS
+ SUvKUpkklLylKZJJS8pSmSSUpOmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUumSTpKWSSSRUum
+ SSSUqUpSSSUqUpSSSUpOmSSUpJOmSUqU8pkklKlKUkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJBSkpSSSUqU8pkklLylKZJJS8pSmSSUqU6ZJJS6SSSSlJSmSSUvKUpkklLpk6SSlJk6ZJSpTy
+ mSSUvKUpkklLylKZJJS8pkkklKSSSSUpJJJJSpSlJJJSpSSSSUpJJJJSkkkklKSSSSUpJJJJSpSSSSUp
+ PKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklKlKUkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSpS
+ SSSUpJJJJSpSSSSUqU8pkklLymSSSUpJJOkpSUpkklLymlJJJSpTymSSUvKUpkklLymlJJJSpSSSSUpK
+ UkklKlJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkpSTJKXlKUkklKlJJJJSkkkklKSSSSUpKUk
+ klKlKUydJSpSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpKUkklKlKUkklKSSSSUpJJJJSpSlJJ
+ JSpSlJJJSkkkklKlJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUqUpSSSUqUpSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSlJJJSpSlMnSUqUkkklKSlJJJSpSlJJJSp
+ SlJJJSpSlJJJSkpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUqUpSSSUpJJJJSpSlJJJSkkkklK
+ lKUkklKSSSSUqUpSSSUpKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkklKlKUkk
+ lKlJJJJSpSlJJJSkkkklKSSSSUpKUkklKlKUkklKlKUkklKSSSSUpKUkklKlKUkklKlKUkklKlKUkklK
+ lKUkklKlKUkklKlKUkklKlKUkklKlPKZJJS8pSmSSUvKaUkklKSSSSUukmTpKUkkkkpSUpk6SlpTymSS
+ UvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLymlJJJSkkkklKSSSSUpJJJJSkkk
+ klKlKUkklKlKUkklKSSSSUpPKSSSl5STJ0lKTJJJKUkkkkpaEk6ZJSkydMkpSSSSSlJk6ZJSk6SSSl0k
+ kkFKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpdRcpKLklNWxVyrFirlJTNitM
+ VVitMSUmCdME6SlkkkklKSSSSUskkkkpSSSSSlJJJJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpZJJJJS6d
+ MnSUooFiOUCxJTVemanemakps1qw1V61YakpkmTpklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Dr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSySSSSlJJJJKUnTJ0lMXIFiO5AsSU13J2JnJ2JKbLEcIDEcJKXSSSSUpJJJJSySSSSlkydMkpZOmTpK
+ XTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuEikEikpFYqz1ZsVZ6SmAR2IAR2JKbDVNQappKU
+ kkkkpSSSSSlJJJJKUmTpklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSStSkkkkrUpJJJK1KSSSStSkkkkr
+ UpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJAqUkkkgpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSK
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSdJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpOmTpKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkkpdJJJJSkkkklKSSTJKUk
+ kkkpSZOkkpZJOkkpZJOkkpZJOkgpSSSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkp
+ SdMnSUuouUlFySmrYq5VixVykpmxWmKqxWmJKTBOmCdJSySSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKU
+ kkkkpZJJJJSkkkklKSSSSUskkkkpdOmTpKUUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUyTJ0ySlJk6ZJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJT//0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSdMnSUxcgWI7kCxJTXcnYmcnYkpssRwgMRwk
+ pdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJS4SKQSKSk
+ VirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZOmSUpJJJFSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSQUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkkVKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SQUpJJJJSkkkklKSSSSUpJJJJSk6ZJFS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS
+ 6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpMnT
+ JKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKTpkklKSSSSUpJJJJSk6ZJJSkkkklKSSSSUpJJJJSkk6SSlkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6
+ ZJSkkkklKSSSSUpJJJJSkkkklKTpk6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUpJJJ
+ JSySSSSlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlkkkklLp0ydJSigWI5QLElNV6Zqd6ZqSm
+ zWrDVXrVhqSmSZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUnTJ0lMXIFi
+ O5AsSU13J2JnJ2JKbLEcIDEcJKXSSSSUpJJJJSySSSSlkydMkpZOmTpKXTpk6SlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSZOmSUuEikEikpFYqz1ZsVZ6SmAR2IAR2JKbDVNQappKUkkkkpSSSSSlJJJJKUmTpklKS
+ SSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkkFKSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJ
+ K1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSRUpJJJJSkkkkFKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSSSRUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZO
+ mSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkk
+ klKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKTpk6Sl1FykouSU1bFXKsWKuUl
+ M2K0xVWK0xJSYJ0wTpKWSSSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlkkk
+ klLp0ydJSigWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSmSZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//T69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUskkkkpSSSSSlJ0ydJTFyBYjuQLElNdydiZydiSmyxHCAxHCSl0kkklKSSSSUskkkkpZMnTJKW
+ Tpk6Sl06ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhIpBIpKRWKs9WbFWekpgEdiAEdiSmw1TU
+ GqaSlJJJJKUkkkkpSSSSSlJk6ZJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJNUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ 5SkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJFS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ kFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ XUXKSi5JTVsVcqxYq5SUzYrTFVYrTElJgnTBOkpZJJJJSkkkklLJJJJKUkkkkpSSSSSl0kkklKSSSSUs
+ kkkkpSSSSSlJJJJKWSSSSUunTJ0lKKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJk6ZJSkydMkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkp/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUnTJ0lMXIFiO5AsSU13J2JnJ2JKbLEcIDEcJKXSSSSU
+ pJJJJSySSSSlkydMkpZOmTpKXTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUuEikEikpFYqz1Zs
+ VZ6SmAR2IAR2JKbDVNQappKUkkkkpSSSSSlJJJJKUmTpklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk1SkkkkVK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUukkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSZJJS6SZJJS6SZ
+ JJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpMnTJKUkkkkpS
+ SSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ OkkpZJOkkpZJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklK
+ SSSSUpJJJJSkkkklKTpk6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUpJJJJSySSSSlJ
+ JJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlkkkklLp0ydJSigWI5QLElNV6Zqd6ZqSmzWrDVXrVh
+ qSmSZOmSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSdMnSUxcgWI7kCxJTXcn
+ YmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJk6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZOmSUpJJJFSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSQUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJMgpdJMkgpdJMkipdJMkkpdJMkkpdJMkkpdJMkgpdJMkkpd
+ JMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk6SKlkk6SSlkk6SSlkk6SSlkk6SS
+ lkk6SSlkk6SSlJk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKTJ0klLJJ0klLJJ0klLJ0kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ0lKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJMkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUukmSSUukmSSUumSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKST
+ J0lKSSTpKWTpJJKUkkmSUumSSSUpJJJJSkkkklKSSTpKWSSSSUpOmTpKXUXKSi5JTVsVcqxYq5SUzYrT
+ FVYrTElJgnTBOkpZJJJJSkkkklLJJJJKUkkkkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJKWSTpJKUn
+ CZSCSligWI5QLElNV6Zqk9M1JTYrVlqr1qw1JS6ZOkkpZMnSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/W69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUskkkkpSSSSSlJ0ydJTFyBYjuQLElNdydiZydiSmyxHCAxHCSl0kkklKSSSSUskkkkpZMnTJKWTpk6
+ Sl06ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhIpBIpKRWKs9WbFWekpgEdiAEdiSmw1TUGqaS
+ lJJJJKUkkkkpSSSSSlJk6ZJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSapSS
+ SSKlJJJJKUkkkkpSSSSSlJJJIKUkkkkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6
+ ZOkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukmSSUukmSSUukmSSUu
+ kmSSUukmSSUukmSSUukmSSUumSSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUsnTJ0lKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKTpk6SlkkkklKTpk
+ 6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkkk
+ lLJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpYoFiOUCxJTWemanemakps1qw1V61YakpdJJJJSySSSSlkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJT/AP/X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJ0ydJTFyBYjuQLElNdydiZydiSmyxHCAxHCSl
+ 0kkklKSSSSUskkkkpZMnTJKWTpk6Sl06ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhIpBIpKRW
+ Ks9WbFWekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlJk6ZJSkkkkVKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJNKlJJJIKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJIqUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJk6ZBSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKTpk6SlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUnSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kySSl
+ 0kySSl0kySSl0kySSl0kySSl0kySSl0kySSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUskkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZOmTpKUnTJ0lKSSSSUpMnTJKUkkkkpS
+ SSSSlJJJJKUnTJ0lLJJJJKUnTJ0lLqLlJRckpq2KuVYsVcpKZsVpiqsVpiSkwTpgnSUskkkkpSSSSSlk
+ kkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpSCipBJSxQLEcoFiSms9M1O9M1JTZr
+ Vhqr1qw1JS6SSSSlkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJ0ydJTFyBYjuQ
+ LElNdydiZydiSmyxHCAxHCSl0kkklKSSSSUskkkkpZMnTJKWTpk6Sl06ZOkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUmTpklLhIpBIpKRWKs9WbFWekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlJk6ZJSkkkk
+ VKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJAqUkkkgpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkknKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpOkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSydJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZOmTpK
+ UnTJ0lKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUnTJ0lLJJJJKUnTJ0lLqLlJRckpq2KuVYsVcpKZsVpiqs
+ VpiSkwTpgnSUskkkkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpSCip
+ BJSxQLEcoFiSms9M1O9M1JTZrVhqr1qw1JS6SSSSlkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0evSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ LJJJJKUkkkkpSdMnSUxcgWI7kCxJTXcnYmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpd
+ OmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSS
+ SSSlJJJJKUkkkkpSZOmSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSS
+ UukmSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKWSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkk6Slkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlk6SSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6ZJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUsnTJ0lKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKTpk6SlkkkklKTpk
+ 6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkkk
+ lLJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpYoFiOUCxJTWemanemakps1qw1V61YakpdJJJJSySSSSlkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJT/AP/S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJ0ydJTFyBYjuQLElNdydiZydiSmyxHCAxHCSl
+ 0kkklKSSSSUskkkkpZMnTJKWTpk6Sl06ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhIpBIpKRW
+ Ks9WbFWekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlJk6ZJSkkkkVKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJG1KSSSSUpJJJFSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSQUpJJJJSkkkklKSSSSUpJJJFSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SZOkpSSSSC
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkmSUukmSSUukmTpKUkkkkpSSZJJS6SZJJ
+ S6SZJJS6SZJJS6SSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJklKSTJJKXSTJJKXSTJJKXSTJ
+ JKXSTJJKXSTJJKXSTJJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSydMnRUpOmTpKUkkkkpSZOmSUpJJ
+ JJSkkkklKSSSSUpOmTpKWSSSSUpOmTpKXUXKSi5JTVsVcqxYq5SUzYrTFVYrTElJgnTBOkpZJJJJSkkk
+ klLJJJJKUkkkkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSkFFSCSligWI5QLElNZ6Zqd6Zq
+ SmzWrDVXrVhqSl0kkklLJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJ0ydJTFyB
+ YjuQLElNdydiZydiSmyxHCAxHCSl0kkklKSSSSUskkkkpZMnTJKWTpk6Sl06ZOkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUmTpklLhIpBIpKRWKs9WbFWekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlJk6ZJS
+ kkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsknShJSkkkklKSTSlKSl0kkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJKUlLpkpSSUpJOmSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6ZJSkkkklKSSSQUpJJJFSkkkkFKSSSRUpJJJJSkkkk
+ lKTJ0kFLJ0oSSUpJMlKKl0ydJBSydJMkpdJMnSUsknhKElKSSSSUpJJJFSkkkk5SkkkklKSSSSUpJJJJ
+ Skk6SClkk6ZJS6ZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJOgpZJJJJSkkkklKTJ0kVLJJ0kVLJJ0
+ klLJJ0klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk
+ 6ClJJJJKUkkmSUukmTpKUkkkkpSSSSSlJJJJKUkmlJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJk6aElLJ0oSSUpJMlKSl0kydJSkkkklKSSSSUpMnShJSydKEklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkoShJSkkkklKSSSSUpJJJJSkkkklKSSShJSkkkklKS
+ SSSUpJJJJSkkoShJSkkoSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpJKW
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpoRUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUp
+ JJJJSkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkoShJSkkkklKSSSSUpJKEklKSSSSU
+ pJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJk6SlJJJJKUkkmSU
+ ukmTpKUkkkkpSZOkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpklKSSSSUpOmTpKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSaUFLpJk6SlJJJJKUkkkkpSSSSSlJJkklLpJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWTpJIqUkkkkpSZOkkpSSSZJS6SSSSlJJJJKUkk
+ kkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SZOkpSSZJBS6SZJJS6SZJJS6SZJJS6
+ SZJJS6SZJJS6SZJJS6ZJJJSk6ZJJS6ZJJJS6SZJJS6SZJJS6ZJJJSkkoSSUukmSSUukmTJKXSTJJKXST
+ J0lKTpkklLpJkklLpJkklKSTJJKXSTJJKXSTSkkpdJMkkpdJMlKSl0k0pSkpdJNKSSl0kydJSkkkySl0
+ kyUpKXSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySdJJSySdJJSySdJJSySdJJSySdJJ
+ SySdJJSySdJJSySdKElLJ0oSSUpJJJJSydKEklKSSSSUpJJJJSkydJJSydJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSlJSkkpSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsnTJ0VKTpk6SlJJJJKUmTpklKSSSSU
+ pJJJJSkkkklKTpk6SlkkkklKTpk6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUpJJJJS
+ ySSSSlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpYoFiOUCxJTWemanemakps
+ 1qw1V61YakpdJJJJSySSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSdMnSUxcgWI7
+ kCxJTXcnYmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJk6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZJJJSkkk
+ klKSSSRUpJJJFSkkkklKSSSSUpJJJJSkkkkCpZOmTptqXShIJ00lTEpinKiUOJS0p5TQnAS4lLhOmATp
+ cSlJJilKcCpdOogqQTwpSUJ0k6lLJJJJUpZJJJMKVJJJIWlSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSqUkkkkqlJJJJKpSSSSSqUkkkkqlJJJJKpSSSZJVLpJJJIUmTpkLQpOmThK0Lpk6RQtSyZJJK0L
+ pJJ0rVayYpyolK1KTqKdK0skkkkrSpMnSRtKySdMlalJJJJJUkkkihSSdJJCkkk6SFJJJQkpSSSZFS6U
+ JBOkpiVElSKgUErynCiFIIJZBPCQToWpgUykVApWpeUpUU6VqXTpk6KlJJJ0ULJJ0yKFJJJIqUkmSSUu
+ kmSTVLpJk6CVJ0ySaSpdMnTJApWSSTKQKXSTJ0aUpJJJNQukmToKUkmToWhSSSSVqUmTpkLUunATKQRt
+ SoTFSlQcUrSxJTApiUgilmE6QClCKmJUZUyFAhJSpUgohTagpcBIhSCYpIYFMnKikpdOoqQStCk6UJQj
+ aLUmTpQlarWSShKErVaydJJC1WpJJJK1WpJJPCVqtZJOklabWTJ4ShK1LJwlCcBK1KhPCSSVpWTJyVEl
+ K0KTqKcJWlkkkE6VqYplIqJStSk6ZOlal0ydJK0LJJ0kbUsknSStSySdJK1LJJQlCVqUklCUJWpZJPCU
+ JWpZJPCUJWpZMnhMlal06YJwErUpJOmhK1LJk5TJWpdOEwCmAjaloSUoSIQtTBMpEJoRtSydKE8JWpSS
+ SQQXLpipJEJKYFMnKZJSpTpkklLp1FOChaGSSQTpWpaFEqZUShamMpSmKQStDIJ0wTpWpSSSSVqUkkkj
+ alJJJJWlSSSSNqUkkkklSSSSSlJ4TJ0kKhRKlKiUltsSVGU5CaElWuCpBRAUwEU2uAknTIqUkmlKUlLg
+ J4SCkEksYTFTKgUlMUkycIKUknShBSydJKErQpJKEoQtSkkoSRUpMnShJSkkoSRVakkoSRRak6SSaUrJ
+ JFMShal04UJUgUrUyATwkE6NqRlRJU3IZStTIKQUQFMBK1LQkpEKJRtSkkkkLUulCaUpStS6inlJK1LJ
+ JJkrUupAKKcFK1MoShKUpStSxCYpyVElK1KSTJBC1MkoSCdK1LFMnTIpUkkkipSSSSClJJJIWpSSSSVq
+ UkkklalJJJJWpSSSSKlJkkklKSSSRUuknSRUpJJMklSSdJBSySdMgpSdMlKVqXSSlKUlLJJ0ySFJJJJK
+ UkkkkpSSSSSlJ0ySSlJJJJKXSTJJKXShOE8JKYEJiiEKBCSlk4UVIJKZQlCQSSUsVFSKiklSdMnAStSk
+ k8JQlamKSchNCVqZBShRClKVoWIUSpEqBRUpOmAUoSUxSlOQooWpkE6iFJK1KKZOVFK1KTpgpBK1KhPC
+ SSFqWTJ0krUsknSStSySdJK1LJJ0krUsnSSStSySdJG1LJJ0krUsnSSStSkkpTSm2pSSSSVqUknhMUbQ
+ pJMlKVqZJJgpI2pZRKnCiQlamEpApEJkLUzBTqITpWpdJJJC1KSSSStSkkkkLUpOmSStK6ZJJG1LpJkk
+ bUpOkkjaVkxUkxSQWKdKEkbW2pOmSStVrpJJJWlSZOmQtKpSlJMlaV5STJ0rUpOmTpWpdMkklaFJkxKU
+ pWhknUQpBK1LwlCdMUrRaySRTJWpdPCYJwjaVQlCdMkpZMnKZJKk6ZJBCkk6SSlJJJIWpZOkklaVJJJI
+ WpSSSSVqWTpJJWlSZOkjalkkoShFSk4CSdJSoShOmJRQsmSJTSkpdOmCcJKUknSIQUxTJymStC6SSdC1
+ LJJ0kLUsknSStSydJJG0rJJ0krUpJJJG1KSSSStSkydJC1LJ0k6VoWTFOVEoWpUpwopwlaGYCUJBOULS
+ xKZOU0I2pSSUJ4StcpJPCSNppZJJKUbTS6ZKUkkEKTJ0oRWqSTwlCSmKSeEySlJJJJKUnSSSUpJPCUJK
+ YpJymSUpJJJJS6SSSSlJJJklLpJkklLpJkklLpJkklLpkkklLpkkySlEppSKZNKmQKkFAKYQtS6ZKUpR
+ UpOmlOipZMnSKSmKSUJQnKZBJIJI0pSZIlRlKlMk6gCpJUpdJMklSl0kySFKXSTJIKXSTJIKXSTJIKXS
+ TJIJXSTJ0bQVJJ0xSWErJBJIIqtkmTpFFNsSmTlRRSyThRCkEaSvCUJ0klLJk6SSlkk6YoKWSTFJBC6S
+ ZJBVrpJkkkLpJkklLpJkkkrpJkklLpJkkUrpJkkQELpJkkaRa6SZJKlWukmSTU2ukmSTVLpJkkLUukmS
+ StK6SZJK1LpJBShK1MUk5CYoqUnUZTyihSZOooqVKSSQRpTIKQCiFMJUq1oSIUlEpUq2JUZTlRSpFryk
+ mThMKV0kkkLSpJJJK0qSSSRtSkkkklKSSSSUpJJJFSkydMUkKlIKKcJLbZgJ4SCcpKtgVAlTchlJFryk
+ CmhSASVa4TpAJ4STak8Jk4KSV4TEJ5TFBLEppSKZJTIFOoqSNqUkkkkpSSSSVqUkkklalJJJJWpSSSSV
+ qUkkklalJJJJWpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSZC1LhShMFIIqWhRKmUMlOUunChKkC
+ kplCYp0xQUsknShJTFJOQmQUunATBTCSmJCYqZCiQkpiklCQSUukkkkpSSSSSlJJJIqUkkkkpSSSSSlJ
+ JJIqUklCSSV0kkpRpYSskmJSlKkWyCSQToJtiVGVIhQKS5eU4UFIJwC4BkE6iCnlIhNLpJpSlRE0ilJJ
+ JJtqpSSSScChSSSSKFJJJIoUkkkkpSSSSSlJJJJJUkkkgpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWTpk6SlJ0ydJSkkkkl
+ KTJ0ySlJJJJKUkkkkpSSSSSlJ0ydJSySSSSlJ0ydJS6i5SUXJKatirlWLFXKSmbFaYqrFaYkpME6YJ0l
+ LJJJJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKUgoqQSUsUCxHKBYk
+ prPTNTvTNSU2a1Yaq9asNSUukkkkpZJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1evSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkp
+ SdMnSUxcgWI7kCxJTXcnYmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJk6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkk
+ kkpZJJJJSkkkklKSSSSUpJJJOUpJJJK1KSSSStSkkkkrUpJJJAqUkkmKbSl5TSokppTTFTOUoUQUQIcK
+ loTwpAJ0OFTCExUyolLhUxKipFNCeApUpwU0JwE4KXlKUkk+1KlJMmStTJJMnTCuUkkkhSlJJJI0pSSS
+ SVKUkkklSlJJJJUpSSSSVKUkkklSlJJJ0qUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUskkkh
+ SlJJ0oQpatCdPCZKkKTFIpilSlJkk6VIUnTJJUpcqKdMhSlk4STpUlcJ0ySVJXSSlKUaSpKEkyVJVCSS
+ SNKUnTJJUpdJKUpSpapOmlKUaQukmlKUqUoqKkmhFSgnCUJJKWKiVIqJQpKykFGUgUKXJAnUAVMJtKWK
+ iQiQmIQpSOE4TkJI0pQTpk6dSFJJJkaQpJJJGkKTJ0kULJJJIKUkkkgQlSSSdNIUpJJJNISumTpkAErJ
+ k6SmASsnSSRUpJJOm0hZOkkhS1SSSSbSlJJJJUhSSSSFKUlKSSNJUSokqSiQjS5gpNCUKQCNKZtClCYJ
+ 5RpKxUCFIlQJSpSlIKCcFCkJAUxKjKUpUhYplKE4CFIYgKQCcBPCVKWTpkpSpFKSSlNKVKpdMlKUpUql
+ JJJSlSqUklKUpUqlJ0yUpUml0k0pSlSqXShNKUpUml4TqMp5SpVLqJTpilSqYkqKkQlCVKpiFIJAKQCV
+ KpcJJ4TJUmliolOVElGlUpOFFOClSqZp1EFPKFIpdJNKUo0il0k0pSlSaXSTSlKVKpSSUpSlSqUklKUp
+ UqlJJJJUqlJJJJUiloShOklSqVCeEkkaTSkkpSlKlUtCaE6SVKpQCkEyUpUqmSRTSmlKlUopoSlKUqRS
+ 8JJpSJSpVKTApiUpSpczBTqIKkEqSsQmhSShKkMITKcJiEKUxSTwmQpC4KkCoJ5QpTKUimlJKlLEJQnS
+ SpCydJJKlKSSSSpSkkkkaUpJJJKkqSSSRpSkkkkaSpJJJKlKTSkUxSpBXlJRUghS2lQn2qQClCVKphtS
+ hThMUaTTEqJKcqBTqVSpTgqCcJUmkgKkChhSBSpVMiVAlOSolJVLJwmThNpVMgnTJShSqUkkkkqlJJJI
+ UqlJJJI0ilJJJI0qlJJJI0qlJJJSiql0ySSaQpYqJUiolNpS0pApiklSkoKlKECpgo0pRUYUimSpS4Cm
+ AohSlKlKKiVIlQKNKWTSnUUqQqUpUSmSpSQFSUAphKlKTQpwlCFJRlNKmQoEJUpW5LcokJQlSmUpSmAU
+ gEKUsnTwnhKlLJSkmSpS6SSdOpSySdJKkrJJ0kKUsknSQpSySdJClLJJ0kqUsknSRpSyZSTI0pZJOnAR
+ pSwCeE8JIqWSSKiSjSlSlKZJKkspThRCcIUpklCQToUpgVElTIUChSlSnBUUglSmadME6NIWSSSSpSkk
+ kkqUpJJJKlKSSTJUpdJMklSlJJJJUpmFMIYKmClSlyoEKRKiSlSmCcJiklSmUpSoylKVKXKZJJCkrhOE
+ yeUqUySTSlKVJVCaE8piUqUslKYlRJRpBXJSCinCVISAKcKDURKlMCFAohUChSmKeUySVKXJTJJBKlMg
+ pKIUkKUpNKcqJSpSk6ZJKlLpJkkqUukmSSpS6SZJKlLpJk6VKUkkmRpS6SZOlSlkk6iUqUqU0pJBNpTI
+ JwEwUkuFSkxUlEo0hiU0pyoo8KmQKkChgqQKXCpImISBUkqUjLU0IpCiQhSGEJJyEkqUsnShKEKSpJPC
+ aEOFSkkoTwlSlkk8JQlSVkk6SNKWSTpQjSVkk8JI0pSUJwnRpaWMJoU0xSpawKaU5TJUpUpSmTpUuXSS
+ AUoQpKyUKUJQlSWMJKSZKlLJJ0kqUsmKdKEqQxKZShKEqQsFIJAJwEqQukklCVKYlMpEJoSpSk8pkkaU
+ vKUpk6VJWTKSUJUlinTwklSFJJJIUpSSSSFKUkkklSVJJJIUpSSSSFKUkkkjSVJJJI0peEkpSlGlKTSk
+ SmJRpS8piUySNKWlJPCQCSFBSCQCkAgpSUJ0kKUwITKRUSUqQukoynlClLpJSkm8KlJJJJcKlJJJJ1JU
+ kkklSlJJJI0pSSSSVKUkkklSFJ0ykEKUsokKcJiEKQjhOE5CZClMgU8qEpSlwqZpk0p5R4UrwnhNKeUe
+ FcFJinlMlS4MSokqZCgQjS5UqQUYThGlpZhPCYJ5SWKSSTSkpSZPKaUlKSTSlKSl06jKeUlLpJpSlJSi
+ mSlKUlKSTJ0lKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSClkoTpkCpcJ0ySFKXlNKSUI0pUp5T
+ QkipkkoynlFS6UJSlKKl1ElPKiUVMSVGVIhNCKlAqYUQFIIKXSTJIqUnTJIKXSTJJql0kySCl0kySCV0
+ ySSClJwmTpILJIppSlFYQskkkiimSRTSnRXUxKaFOE0IrqYpwUoSTk0ylKUySSqXTJJigql5TJpSSVSk
+ kk6ailkk6SCKWSTpJKpZJOkkqlkk6SSqWSTpJJpZJOkimlkkk6cEELJJ0kVtLJJ0kCqlkk6SaU0sknST
+ Smlkk6Saqlkk6SSqWSSSSVTIKYUApSjSqUVAqRKgUVUskknARVSkoUgE8JyqYQlCkQmKKKVKeVAlRlJV
+ JdyaUOU4KSqXShOApAJKphCeFKEoTCFLJJJ02lyySdJKkrJJ0yNKUknSSpSySdJGlLJJ0kqQsmKkmKVL
+ WEJBShMlSGQUpUUkaQsVGFJOAlSFg1SDVIBSAQpTCExRCENyVJYEpSmKilS5ICnlQCkEqSohKE6UJUlZ
+ JOmSpCkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSS
+ pSkkkkqUpJJJKlLhSlRSRpS5KGSpFQIRUtKkCmDVINSUyBSTgJ4SUsE6UJIKWKiUiVAuSUzBUwUAOUw5
+ BSZMQogqSSmMJQpJikpZJJJJSkkkklKSSSRUpJJJJSkkkkVKSSSSSpJJJJSyYlOmIRtYWJKQTkJoS4lr
+ MFSQwpAocS4LlRIUpTIWuDGEk6SkBXBinlKEoRK5UpwU0JBV5oZBOmCeUwIUmSSTwhSSSSchSSSSchSS
+ SSSlJJJIKUkkkklSSSSFKUkkklSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWTpk6SlJ0ydJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSl
+ J0ydJSySSSSlJ0ydJS6i5SUXJKatirlWLFXKSmbFaYqrFaYkpME6YJ0lLJJJJKUkkkkpZJJJJSkkkklK
+ SSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKUgoqQSUsUCxHKBYkprPTNTvTNSU2a1Yaq9asNSUu
+ kkkkpZJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkp//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSdMnSUxcgWI7kCxJTXcnYmcn
+ YkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk
+ 6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSQUpJMn
+ SUpJJJBSkkkySl0kkkbUpJJJEKUmKdMnBTEqKmQlCdSlgiBRAThKgpmClKjKiXIcKmRKaVAuTAo8Kkie
+ FEFECaQpjtT7VNLRMKmG1NtRZCWiYZKQ7SltR4SgICRUhDU+1FgJaKYKRbUtqLoloipFtS2ouiWiSkW1
+ Lai6JaJKRbUtqLolokpFtS2ouiWiSkW1Lai6JaJKRbUtqLolokpFtT7UTRPokpFtS2ouiWiCkW1Lai6J
+ aJKRbUtqLolokpFtS2ouiWiSkW1Lai6JaJKRbUtqLolokpFtTbUXRNoipHtUg1S0TpJYbUxaipjCCkJC
+ baimE2ictR7U+1EEJ9EFItqW1G0TGEkIdqW1F0S0SUi2p9qLologlFtShF0S0SSihKEWAloklFtSgosB
+ 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
+ ip4leEW1LaiaJaJ1pR7U0IqYhVplCJKU5UFGCplKdRCkpAhSSSZSBS6SSSctUkkknKUkkkkpSSSSSVJJ
+ JJKUkkkkpSSSSapSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpZOmTpKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUnTJ0lLJJJJKUnTJ0lL
+ qLlJRckpq2KuVYsVcpKZsVpiqsVpiSkwTpgnSUskkkkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKWS
+ SSSUpJJJJSkkkklKSSSSUpSCipBJSxQLEcoFiSms9M1O9M1JTZrVhqr1qw1JS6SSSSlkkkklLJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSn/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUnTJ0lMXIFiO5AsSU13J2JnJ2JKbLEcIDEcJKXSSSSU
+ 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
+ PaXB7H7eE/28eK439onxTjqB8UhiXB7L7ePFL7cFx46gfFP+0D4qxHEueu+2hSGYCuPHUT4o9XUJ7p5x
+ 6JeubkAoofK57HzJ7rTpu3KnkghvcpoSYZRIUQgpHCdSIUSpBFCkkydPpSkkkkaWqSSSRpSkkkklKSSS
+ QSpJJJJSkkkkFKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUsnTJ0lKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKTpk6SlkkkklKTp
+ k6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJSYJ0wTpKWSSSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkk
+ klLJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpYoFiOUCxJTWemanemakps1qw1V61YakpdJJJJSySSSSlkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJT/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ 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
+ VEpwQsnSSRQpJJJJCkkkklKSSSQUpJJJBKkkkkFKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSydMnSUpOmTpKUkkkkpSZOmSU
+ pJJJJSkkkklKSSSSUpOmTpKWSSSSUpOmTpKXUXKSi5JTVsVcqxYq5SUzYrTFVYrTElJgnTBOkpZJJJJS
+ kkkklLJJJJKUkkkkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSkFFSCSligWI5QLElNZ6Zqd
+ 6ZqSmzWrDVXrVhqSl0kkklLJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUnTJ0lM
+ XIFiO5AsSU13J2JnJ2JKbLEcIDEcJKXSSSSUpJJJJSySSSSlkydMkpZOmTpKXTpk6SlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSZOmSUuEikEikpFYqz1ZsVZ6SmAR2IAR2JKbDVNQappKUkkkkpSSSSSlJJJJKWSSS
+ SUpJJJJSkkkklKSSSStSkkkkbUpJJJK1KSSSRtSkkkkFKSSSQpTFJOmQ4VKTgJBOEuBS4CdOAlCXApiU
+ 4KYpBOEFM5Ve4oxVe7hOAU5eSVlXFaOSVk3HVPCmI5VyhoKoNOqvY5TuJTq49YK0GVBUsYrTrQMlMfRC
+ j6IVhQKZxUtKH0gl6QRkkuNSH0gl6QRkkuNSH0gl6QRkkuNSH0gl6QRkkuNSH0gl6QRkkuNSH0gl6QRk
+ kuNSH0gl6QRkyXGpD6QS9EIySXGpD6IS9EIySXGpD6IS9EIySXGpD6IS9EIySXGpD6IS9EIySXGpD6IS
+ 9EIySXGpEKgp+kFMKSHGpqW1CFl5NQWzbwszJT4zSHAyGQs541WrlLKsOqlGRlCmBXaGyqDHarQxyl7i
+ C6VFUrSqpCqYwWrS1AzQs2kKfohWA1OQmcZQ1fSCcUhHISAS4kIfRCf0gjKJQ4lI/SCf0gpSnBQ4lMfS
+ Cb0QiAqQS4lIPRCXohWEkuNLX9EJeiEdJDjUg9EJ/RCMklxqQeiEvRR0kuNCD0Ql6IR0kvcQh9EJeiEd
+ JL3EIPRCb0ArCSXuIa/oBN6AVoBPCXuJaf2cJegFbIUUfcSgFAUhSEYJwlxkpa5pCq3VBaRCqXjROjJL
+ hZTAFi5Gi3cwLByiphNLQe7VEqOqrPOqJSdU7jU7OMJW1j1grFwzwugxQgZqbLKQiikIlYRYUJkUIBSE
+ /oo6SYZoQeiEvRCOkmnIhD6IS9EIySb7qEPohL0QjJJe6pD6ITeiEdJH3FIPRCXohGSThkSg9EJvRCOk
+ ncS5B6IS9EI6ZHiUi9EJeiEZJMORSH0Ql6QRkkvcUh9EJ/RCKnS9xCH0Ql6IRUkuNCL0gm9IIySPGpD6
+ QS9IIyZHjUiFQUxSFMIgSMipqW0iFj5tQC37eFjZoToyS8tltiVmOGq2MwcrJeNVJ7iU9A1W1iMmFi45
+ 1W9hdkvcS7GPSCFfZQEDFGi0WDRRymVNc0BL0QrBUSm8RUh9IJjUEYlMlxLUPpBN6QRkoS40IfSCb0gj
+ wlCHuIQ+kE4pCLCkAl7ikPohP6IRwnQ9xVNf0Ql6IVhMlxppB6IS9EKxCSXGqmv6IS9EKwklxqpr+iE3
+ ohWUyPGqmv6IS9EKwklxqpr+iEvRCsJI8aaa3ohL0gjlMUuNVIfSCXpBFThLjVSL0AkaArIClCXGVU0H
+ UBVbqQFrOaqd4ThkVTg5LIWReIW3lrDySj7iqabjqi0lVXu1RaDql7iadvFErbxqwViYZ4XQYgS41U3a
+ 6Qp+gESsaIiiMiqmt6AUTQFZKYpcZUQ1vRCXohHSR40Ug9EJeiEdJLjVSD0Ql6IR0kuNVIPRCXohHSS4
+ 1Ug9EJeiEdJLjVSD0Ql6IR0kuNVIPRCXohHSS41Ug9EJ/RCNKcFLjVSH0AkaArASKHGVU1TQE3ohWSoo
+ 8aqQikJ/RCME6XGqmuaQoGkK0QoEJcaqa/ohOKQjQnAR9xVIfRCi6oK0QhPCHGinPurCycpoWzesbKKc
+ Miaca8KrGqtXnVVRynjIls0NlbOLXKyccLcxAkciXSooCuNoCjjjRXWhMM1NQ0BR9AK64KCHGUNcUBS9
+ AI4TpcZQ1vRCXpBWColDjUh9IJ/TCImQ41MfTCXphSlPKHGhGagm9IIsp0fcUh9IJekEZJL3FIvSCXpB
+ FSS9xSL0gl6QRUkvcUh9IJekEVOl7ikPpBL0gjJJcakPpBL0QjJJcaUPpBSFQREpS41MPSCXpBTlPKXE
+ ikfohMaArDVIhLjKacy6gLKyaoXQXN0WRlNTxkRTzuQyFnvGq1soLKs5R9xVKrC0ccLNYdVpYxR9xNOv
+ jsBWlVUFQxitSlA5FUlZUEQVBO1ElMMk0iNQUTSEaUkONVIPRCXohHSS9xVIPRCXohHSQ9xFIPRCXohH
+ SS9xVIPRCXohHSS9xVIPRCXohHSS9xFIPRCXohHSR9xVIPRCXohHSS9xVIPRCf0QjhJHjSg9EJeijpku
+ JSA1BN6QR0yXGpB6QT+kEZJHjUi9IJ/SCInlDiUhNQTekEdII8SUBqCr21BXyFVuGiImpxsloCyMiAtn
+ LWHlFH3ENJ7tVKt2qrvOqnUdUfcU7GNqtnGYCsTEW7ipe4p0KqgjikKNXCsBMMrShNIUDSFZJUCUBIqQ
+ eiE4pCMFII8aEIpCf0UZIlDiKkBqCgagrBKgSlxqQGoJekEZPCPGpCKQpeiEUJ0ONSH0Ql6IRkkPcQh9
+ EJeiEZJD3FIfRCXohGSS9xSH0Ql6IRkkvcUh9EJeiEZJL3FIfRCXohGTo+4lB6IS9EIyYlHjUi9IJ/SC
+ nKcFLiUwFISNARmlTS4ilzbqBCx8uqF0Vw0WHmhSCaHnMlsLPcNVp5fKzHHVH3FJqW6rXxa5hZVHK3MM
+ cJe4p1MekK+ygIWM3RXmjRAztKIUhTFQREgUwyKmHpBMagiykm8SkHohL0QjpQlxoQeiEvRCOklxqQei
+ EvRCOklxqQ+iEvRCMklxoQ+iEvSCMklxqQ+kEvRCMklxqQ+iEvSCMklxqtD6IS9EI0ppR41IxSEvRCKC
+ nlLiUgNIUDSFaKaEuNTV9AJ/QCswnhHjKWt6AS9EKyoylxlKEUhP6IRgnQ4lNc0hVbqwFolU704TU4uU
+ 0BY2QYWzmLByine4pqOfqi0u1VJ7tUah2qHuId/FAK28asFYWEeF0OLwh7im02kKRpCKwJym8amv6IUT
+ UEcqJS41IvSCcVBECmAlxqRCkKQpCKApIcakXohL0QjJShxqQ+iEvRCNKSXGpB6ITekEcpkeNSH0gl6Q
+ RkkuNSH0Ql6IRkkuNSH0Ql6IRkkuNSH0Ql6IRkkuNSH0Ql6IRkkuNSH0Ql6IRkkuNSH0Ql6QRlEo8aUX
+ pBOKwpEpAo2uDE1BDfUFYlQciCVOdfUFk5LIW3esfKKk4lOLeFUI1Vu8qpOqXEhsUtlauNXKzaFtYgS4
+ lOhj0hX2UhCx26K80JspIR+kEvSCKVGUyypGagm9IIspJWUIfSCXohGSR4ihD6IS9EI6SHEpB6IS9EI6
+ SXEpB6IT+iEZJLiUh9EJeiEdMlxKQ+iEvSCMklxFKH0Ql6IRk6XEVIPSCXpBGKiUDJCP0wl6YUpTpnuI
+ YekE3pBFSRGRKH0gl6IRVIJ3uJRCgKXoBFCIEONLX9AIbqAr0KLgkJlLlW0BZ19ULctCy8kKYZFPP5LI
+ WZYNVsZYWRbyj7ilVcrVxQFkVnVauK5L3EO3QwFXmVBUcZy0qigZoXFISNIR2hShN4ihq+iE4pCsQnAQ
+ 41IRSFL0QigKSaZqa5qCiagrBUSUONSIVBSFIRAphD3FyD0Ql6IVhMUvcU1/RCf0QjJkeNCL0gl6QRZS
+ lLjQi9IJekEaUpS41IfSCXpBFlKUuNKL0gn9IIkp5Q41IvSCXpBFlNKXGlF6QS9IIspSjxqReiEhUEWU
+ 4KXGpF6IUhSEQFSCXEVNd1IVO+oLUcFSyBonRkpwMlgCybwtrLWLkHVSDIhq90aoKvOqsUo+4p0aGStO
+ mpUMYLXoal7iEjKQjNoCmxqO0JpmpCKAn9EKwAlCZxFKD0Ql6IR0kuIoQ+kEvSCMklxFSH0gl6QRkkrK
+ kPpBL0gjJJcSUPpBL0gjJIcSkPpBL0gjJJcSkPpBP6QRUkuJSL0gl6QRUkOJCL0gn9IIikEuJCH0gn9I
+ IyYpcSkXpBRNQRSU0pcSkXpBSFQU5Tgo8SmIqCRqCJKUoWVwQ+iFB1AVmUxR4iuDmXUiFkZVYC37+Fi5
+ asRkl57JbCznDVaeUs53KnEkp8Zuq38JkwsPG5XQ4PZRTktLtUVCFZ9EIePwrarGSxrGkJeiEcpBLiSg
+ 9EJeiFYShLiKmt6ITeiFZhNCPEpr+iE/ohHTwlxKa/ohP6IR4TwhxKa/ohL0QrEJQlxFTX9EJeiFYhMl
+ xFSD0Ql6IRkkuJSH0Ql6IRk6XEpB6IS9EI6SXEpB6IT+ijJJcSkPpBN6QR0kuJSD0gn9FGSS4ipD6KXo
+ hGThLiKkQpCXohGCkEOIpDVdQFSvqAC1nBUcgaJ8JFRedy2wsTIMLezQufyuVLxoau7VW8cys+dVexuU
+ ONTuYjZW3j1ArGwhwt/GGiaZqbLKQpmkIrApFRGRtLVNAUDQFbJUCiJFDW9AJ/QCsBPCXGVNf0Qn9EI6
+ ZDjUh9IJeiEZJLjUh9EJeiEZJLiUh9IJekEZJHiUh9IJekEZJLiKkPpBL0gjJJcRUh9IJekEZJLiKkPp
+ BN6QR1Eo8RUUXphOKwpFIIcSylemEjUFMKSFqpAaQl6IRk4R4iuARCkJeiEYFSQ4iuAahoCG6gK8QoOC
+ cJlNOTdSFkZVcLoLxosTMUomqnCyBCpHlXMkqgTql7iKbdA1W7hslYWNyugwuyBmqnax6hCuikIGNwrw
+ 4UUpFFNd1IUPSCsuUUhIopD6IS9EIySXEVUh9EJeiEZJLiKqQ+kEvSCMklxFVIfSCb0gjpJcRXUg9IJe
+ kEdMjxFNIfSCXpBHSQ4ighD6QS9EIySXEtpD6QS9FGSS4lUh9FL0UZJLiTSH0UvRRkkuJVIfRCXpBGSS
+ 4iqkPpBN6QR0kuIppB6QS9IIySPEVUjFISNIRwmKHEU00rags3IYAte1ZeSpBJFOHkhZti08pZdifxop
+ ZnK0Mdqz2crRxkuNVOxjVgrUpqCzsVa9KYZqpI2kJGkI7U5UXEVU1vRCb0QrMJoS4yimqaAl6AVkhKEe
+ NVNb0Qn9EI6SXGpD6IS9II6SXEVWg9EJeiEZOhxJtB6IS9EIySXGlF6IS9EIqSHGpF6IS9EIqSXGpF6I
+ S9EIqSHuKReiEvSCMmKXuKQ+kEvSCISlKXGtR+kEvSCIFKEeNSD0Qn9EIycI8akPohP6IRk4S4ilqvpC
+ p3Uhajgqd4T4zS4WRXCyr2rbyQsbIUgmloEItbUNx1Rain+4udHHrla2PUFnYy2MdNlNBbVVIRxSE1aO
+ FAZrCiNIUfRCsFRQ40IfRCXohGSS41IfRCXohGSS41IfRCXohGSS41IfRCXohGSS41IfRCXohGSS41If
+ RCXohGSS41IfRCXohGSS41IfRCXohGSS41IfRCXohGSS41IfRCXohGSS41IfRCXohGSS41IfRCXohGSS
+ 41IfRCf0QipJcakQpCZ1IVgJOCQkUuVfUAFi5TIXQ5I0WDmKYTU4d+iqTqrWQdVTnVO41NugStjFZKyM
+ dbmIEONTp0VBXWUhBxwrzAmympiKQpeiEUJEqLiKUBqCgagrBUSnCRU1jUEvRCsQnAR4ihAKQpCoI0JI
+ cRUi9IJekEVJDiUi9IJekEVJLiUi9IJekEVJLiUi9IJekEVJLiUi9IJekEVJLiVaL0gl6QRUkuJVofSC
+ f0gipBLiVbAVBP6QRAnlDiK0oDUFA1BHKgUeJai9IKYqCkApgJGS4MRUFMVBSCkCm8RXBC+kLPyqhC1n
+ FUMrhPhIrnmstkLLcNVr5p1WS7lT8WiWzjrYxisjHC2McaKpkKHRqKtNcqlasNUIKmwCnUGqaeChSSSS
+ daFJJJI2hSSSSVqUkkkgpSSSSSVJJJIKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlk6ZOkpSdMnSUpJJJJSkydMkpSSSSSlJ
+ JJJKUkkkkpSdMnSUskkkkpSdMnSUuouUlFySmrYq5VixVykpmxWmKqxWmJKTBOmCdJSySSSSlJJJJKWS
+ SSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSlIKKkElLFAsRygWJKaz0zU70zUlNmt
+ WGqvWrDUlLpJJJKWSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJ0ydJTFyBYjuQ
+ LElNdydiZydiSmyxHCAxHCSl0kkklKSSSSUskkkkpZMnTJKWTpk6Sl06ZOkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUmTpklLhIpBIpKRWKs9WbFWekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlkkkklKSSSS
+ UpJJJJSkkkkFKSSSSUpJJJJSkkkkVKSSSRUpMnTIqWKZOU0IqXCkEwCmAlalwnKZMSkpYpgkSkEVMoQL
+ horCr3FJTj5QWRcNVs5KybhqiprNGqvY6pgaq7Qip2MZaday8YrSrOiBCkyiU8pioiFpWSSSQpSkkkkq
+ UpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkydJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpS4UoUQpJ
+ UhDasvKWpbwsrKTgFwcPLKyLXarVyysa7lSgMqmO1WnilZLOVpYpSpRehxFsUhYuIVsUFNIWtwBIhM0p
+ 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
+ mSUpJJJJSkkkklKSSSSUpOmTpKWSSSSUpOmTpKXUXKSi5JTVsVcqxYq5SUzYrTFVYrTElJgnTBOkpZJJ
+ JJSkkkklLJJJJKUkkkkpSSSSSl0kkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSkFFSCSligWI5QLElNZ6
+ Zqd6ZqSmzWrDVXrVhqSl0kkySlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSdMn
+ SUxcgWI7kCxJTXcnYmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJk6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZ
+ JJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJFSkkkkVKTJ0xRUpIKJKQKSkwClCG1ylKSlihkqZKgnA
+ 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
+ KYCcBShAlTGE8J0pQtTGE0KSSSmKUKUJIWhZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWhKE6SVqWhNC
+ kklamBCaESEoRtaUUJ1OEoRtDCUpUiE0ILgpOAnAThBcGDgs/KGi0XlZ2UdFLBc8/ljVZpGq0ss6rMcd
+ VKdlN3G5W1jHRYWMdVt4xVLIp1K0cBV6irLVCFMoTKSipAhSSSSchSSSSKFJJJJKUkkkkpSSSSSVJJJI
+ KUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJS6i5S
+ UXJKatirlWLFXKSmbFaYqrFaYkpME6YJ0lLJJJJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlkkkkl
+ KSSSSUpJJJJSkkkklKUgoqQSUsUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUyTJ0ySlkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklP//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ 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
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKTpk6Sl1FykouSU1bFXKsWKuUlM2K0xVWK0xJ
+ SYJ0wTpKWSSSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUpBRUgkpY
+ oFiOUCxJTVemanemakps1qw1V61YakpkmTpklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1evSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJ
+ JKUkkkkpSdMnSUxcgWI7kCxJTXcnYmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTp
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSl
+ 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
+ MUULJJ0kkLJJJJIUkkkmqUkkkkpSSSSCVJJJJqlJJJIhSkkkk5SkkkkVKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpdRcpKLklNWxVyrFirlJTNitMVVitMSUmCdME6SlkkkklKS
+ SSSUskkkkpSSSSSlJJJJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlKQUVIJKWKBYjlAsSU1Xpmp3p
+ mpKbNasNVetWGpKZJk6ZJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSdMnSUxc
+ gWI7kCxJTXcnYmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpSSSSSlJJJ
+ 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
+ sqb7KlxqcP7Mm+zLcOKm+yo8anE+zJ/sy2vsqcYqHGpxPsqb7Kt37Kl9kS41OCcVN9lW99kTfZEuNThj
+ FUhirb+yJ/sqXGpw/syY4y3fsqb7KlxqcL7Ml9mW79kS+yJcanC+zJfZlu/ZEvsiXGpwvsyX2Zbv2RL7
+ IlxqcL7Kl9lW79kS+yJcanC+ypfZVu/ZEvsiXGpwvsqX2Vbv2RL7IlxqcL7Kl9lW79kS+yJcanD+zJfZ
+ lt/ZUvsycMiXDOKonFW99lTfZEfdS4BxUvsq3jiKJxUfcU4f2VL7Ktr7MnGMlxocT7In+yLdGIpjETTk
+ S8/9jUhiLoPsaY4ib7iHCGKl9mW4cVR+zI8anEOMonFW99lS+yIcaHB+ypfZVvfZEvsiXGpwfsqX2Vb3
+ 2RN9kS41OF9lS+yrd+yJfZEuNThfZUvsq3fsiX2RHjQ4X2VL7Kt37Il9kS41OF9lS+yrd+yJfZEuNThf
+ ZUvsq3fsiX2RH3FOF9lTfZVvfZExxEuNThfZlIYy2vsqkMVDjRwuMMVI4q3Bipzioe4rhefOKkMVbxxE
+ vsqPuLuFxBipHGW59lTHFR9xPC4Jxkvsy2zipvsyPuJ4XG+zJfZVtDGUhjJe4nhcI4ij9kW/9lTHFS9x
+ XC4P2RP9lW59lT/ZUvcRwuF9lT/ZVu/ZEvsib7iOFwvsqX2Vbv2RP9kS9xHC4P2VL7Kt77Il9kS41cLg
+ /ZUvsq3vsiX2RLjVwuD9lS+yre+yJvsiXGrhcL7Kl9lW79kS+yJe4nhcL7Kl9lW79kS+yI+4nhcL7Kl9
+ lW79kS+yIe4gxcH7Kl9lW99kS+yIcaOFwfsqX2Vb32RL7Ilxq4XC+ypvsq3vsiX2RLjVwuF9lS+yrd+y
+ JfZEuNPC4X2VL7Kt37Il9kR41cLhfZU32Vb32RL7Il7ieFwfsqX2Vb32RL7Ij7iuFwxiqX2ZbX2VP9mS
+ 9xXC4hxlA4q3vsyicVH3FcLz5xFH7GuhOIm+yI+4jhcAYiIMRbf2VOMVL3FcLjjGT/ZlsfZk/wBmTfcV
+ wuN9mTfZVtfZlIYqBmrhcQYil9lW2MVP9lTeNXC4JxlE4y3jioZxUhNHC4f2ZN9lW59lUhiJ3uIpwfsq
+ f7Kt77Il9kS9xDg/ZUvsq3vsiX2RL3EuD9lTfZVv/ZEvsiHuJcH7Kl9lW99kS+yJcaXB+ypfZVvfZEvs
+ iXGpwfsqX2Vb32RL7IlxocH7Km+yrf8AsiX2RLjU4P2RL7Kt77Il9kS40OEMVSGMtr7Kl9lS40ON9mTH
+ FW4MVP8AZUfcS8+cRR+yLofsib7Ij7inn/sicYi3/sif7Il7qXA+yJjhroPsiY4iPurg899j8k4xFunF
+ SGKne6ucUYql9lW0MZP9lQOVRcI4qb7Kt77Il9kTPcYy4H2VP9lW99kS+yJe4pwfsqX2Vb32RL7Il7in
+ B+ypfZVvfZEvsiXuKcH7Kl9lW99kS+yJe4pwfsqX2Vb32RL7Il7inB+ypfZVvfZEvsiXuKcH7Kl9lW99
+ kS+yJe4pwfsqX2Vb32RL7Il7inB+ypfZVvfZEvsiXuKcH7Kl9lW99kS+yJe4pwfsqX2Vb32RL7Il7inB
+ +ypfZVvfZEvsiXuKcH7Kl9lW99kS+yJe4pwfsqX2Vb32RL7Il7inB+yp/sy3TiKJxURkUHE+zJjjLb+z
+ Jvsyd7i5wziKP2Rb32ZN9lS9xThjERBiLaGKiDFQORThfZExxVv/AGRMcRN9xTz/ANlS+yre+yJvsqPu
+ KcI4qb7Mt04qb7KlxocQYqkMVbQxVMYqBmpw/sqY4q3/ALImOIh7iHA+ypfZVvfZEvsiPuKcH7Kl9lW9
+ 9kS+yJcanB+ypfZVvfZEvsiXGpwfsqX2Vb32RL7IlxocH7Kl9lW99kS+yJcanB+ypfZVvfZEvsiXGpwf
+ sqX2Vb32RL7IlxqcH7Kn+yrc+ypfZUfcQXD+ypfZVujFT/ZEvcQ4QxU/2Zbn2RL7Km8a4OCcVR+ylb/2
+ RL7Ihxrg4AxUjire+yJvsieMi4PPnETtw1vfZE/2VE5dEuTVjQrtVMK2MeEVtUKnknamFbIVgBJrIU4U
+ QkhZRKkVEp1oUkkkjaFJJJIoUkkkkpSSSSVKUkkklSVJJJIUpSSSSVKUkkkipSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnT
+ J0lKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUuouUlFySmrYq5VixVykpmxWmKqxWmJKTBOmC
+ dJSySSSSlJJJJKWSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSlIKKkElLFAsRyg
+ WJKar0zU70zUlNmtWGqvWrDUlMkydMkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//X69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSS
+ SSlJ0ydJTFyBYjuQLElNdydiZydiSmyxHCAxHCSl0kkklKSSSSUskkkkpZMnTJKWTpk6Sl06ZOkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUmTpklLhIpBIpKRWKs9WbFWekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkp
+ SSSSSlkkkklKSSSSUpJJJJSkkkkCpZJOkgpSSSSVKUkkkkpSSSSIUpMU6SeFMCE0KcJwE61MQ1ShSATp
+ WlgQolTKgiCpZOknhJSkkxUSYRQkCkIVY2woHIAQIU3xCIIWX9rAT/bQmEKdNJZgzh4p/t48UuEqdLRR
+ gLP+3BN9uCPCUOjASgLO+3DxS+3BLhKnRgJQFnfbgl9uCXCVOjASgLO+3BL7cEuEqdGAlAWd9uCX24Jc
+ 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
+ EeEpb20JbQqX2wJ/tgS4SpvBoUwAs8ZgT/bQmmJU6EKJAVE5o8VA5wSESp0ICaAs77cE4zQjwlToEBR2
+ hUvtgTfbAjwlDfACmAFm/bAnGaEOEqdKAlAWd9uCX24IcJU6MBKAs77cEvtwS4Sp0YCUBZ324Jfbglwl
+ DowEoCzvtwS+3DxS4Sp0YCUBZ324eKX24JcJU6MBKAs77cEvtwS4Sp0YCUBZ324JfbglwlTowE0BZ/24
+ JfbglwlTfgJQFQ+2hL7aEeErXQhKFQ+2hL7cPFDhKm/ASgLOOcPFN9uHilwlLpwEoCzRnDxT/bglwlcG
+ +QExAVH7aE32wJwgVwb0JQFR+1hP9qCRiUtwgJlWGQCptslV5hTYCSgHSpKMBCxUSpFRKeAhSSSSchSS
+ SSKFJJJJylJJJ0lLJJJJJUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTJ0ySlJJJJKUk
+ kkkpSSSSSlJJJJKUnTJ0lLqLlJRckpq2KuVYsVcpKZsVpiqsVpiSkwTpgnSUskkkkpSSSSSlkkkklKSS
+ SSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpSCipBJSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw
+ 1JTJMnTJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSU//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSdMnSUxcgWI7kCxJTXcn
+ YmcnYkpssRwgMRwkpdJJJJSkkkklLJJJJKWTJ0ySlk6ZOkpdOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJk6ZJS4SKQSKSkVirPVmxVnpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZOmSUpJJJFSkkkkl
+ KSSSRUpJJJKlKSSSSpSkkkkKUpJJJBSkkkkLUpOlCUIcSl5TEpiokocSlyUyaU4RElLgKUJgpgJwKkbg
+ gWGFacFSv0UgU1LroVG3KhSyXwsm+wqQBTafmoZzj4rMfYVEElOEVOp9uPil9tPis4NJUvTKeIKbxzj4
+ pvt58VRNZUTW5O4EOh9vPil9vPis703Jem5HgQ6P28+KX28+KzvTcl6bkuBTo/bz4pfbz4rO9NyXpuS4
+ FOj9vPil9vPis703Jem5LgU6P28+KX28+KzvTcl6bkuBTo/bz4pfbz4rO9NyXpuS4FOj9vPil9vPis70
+ 3Jem5LgU6P28+KX28+KzvTcl6bkuBTo/bz4pfbz4rO9NyXpuS4FOj9vPil9vPis703Jem5LgU6P28+KX
+ 28+KzvTcl6bkuBTo/bz4pfbz4rO9NyXpuS4FOj9vPil9vPis703Jem5LgU6P28+KX24+Kz/Tcl6bkOBT
+ ojPPipjPPisoscFEyEeBIdj9oHxUT1HzWK55CEbSlwL3c/aJ8U46gfFYAsKKxxKXAgu6M8+KX24+KyWg
+ lFDSlwLXQOcfFROcfFUthTemUuBaW79uPil9tPiqPpFP6RS4EN37cfFN9uPiqJrcoFhS4EOiM8+KmM8+
+ KygwqYYUuBDp/bj4qJzj4qhsKiWFLgS6H28+Kb7efFZxY5L03JcCXS+3nxS+3nxWb6bkvTcjwJdL7efF
+ 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
+ cHRGefFTGcfFZgrcpBhQEFwdQZp8U/20+KzQwpOBCljjC50hneaI3NWIXkJ2WmUZYxSXpKsqVfqulc3j
+ 2rXxnqhkjqh263SjhUqXK20qERUyKiVIqJRpCySSSNIUkkklSFJJJJKUkkkkpSSSSCVJJJIKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJS6i5SUXJKatirl
+ WLFXKSmbFaYqrFaYkpME6YJ0lLJJJJKUkkkkpZJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJ
+ JJSkkkklKUgoqQSUsUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUyTJ0ySlkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ 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
+ BL3FOF9h8kvsPkt30Al6AS9xThfYfJL7D5Ld9AJegEvcU4X2HyS+w+S3fQCXoBL3FOF9h8kvsPkt30Al
+ 6AS9xThfYfJL7D5Ld9AJegEvcU4X2HyS+w+S3fQCXoBL3FOF9h8kvsPkt30Al6AS9xThfYfJL7D5Ld9A
+ JegEvcU4QwfJI4Xkt70AmdQEPcCXnLMSFStohdLfTCyclkI8SXDsrhB2K3eYVXdqlxKZsrlXaseUGjVa
+ +NXKXEhEzElGGF5LVpoVkUBDjU4gwvJS+xLaFAUvQCHGpwzhqJw1umgKJoS40OF9jTjCW39nTihLjU4n
+ 2LyT/YvJbYoCl6AS41OF9i8kvsXkt30Al6AS41OF9i8kvsXkt30Al6AQ9wKcL7F5JfYvJbvoBL0Aj7iH
+ C+wpfYvJbvoBL0Al7inC+xeSX2LyW76AS9AJe4pwvsXkl9i8lu+gEvQCXuKpwvsXkl9i8lu+gEjQEfcV
+ TgnCUThreNCgaE4ZEU4Rw0hheS3Ps6kMdH3AqnDGD5KYwfJbgxwpegEw5AlwfsPkl9i8lvGgJvQCXGFz
+ hHDQLcWF0ZoVPIogJ8ciXmLqoVcNgrVyq4WeRqnHJolsY62cZY+OFs4wVLIbU6lJV1hVOkK4xRKZpinT
+ FFCkySSSFJJJIIUkkklalJJJJWpSSSSCVJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkkpdJMkkpdM
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ySSmSi5SUHJKa1irlWLFXKSmbFaYqrFarSUmCdME6SlkkkklKSS
+ SSUskkkkpSSSSSlJJJJKXSTJJKXSTJJKUkkkkpSSSSSlJJJJKUkkkkpSkFFOElKKBYjlAsSU1Xpmp3pm
+ pKbNasNVetWGpKZJkkySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6
+ OUB6SmuVJiiVJiSmwxHCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJS4SKQSKSkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJS
+ kydMiEKSSSRUpJJJBSkkkkkqSSSQUpJJJJSkkkklKThMkEEpApKAKeUVLFQIUiVFFKgE6SSSmJTtKYp2
+ pykirX8Kwq9/CKnGygsm0arWylk28oqYsGqv0BUWcrQoTrS6FAV+tqqUBX6wgSpkGp9qmAkoySsLDam2
+ qaSFlTDaltU0keIqYbUtqmklxFTDaltU0kuIqYbUtqmklxFTDaltU0kuIqYbUtqmklxFTDaltU0kuIqY
+ bUtqmklxFTDaltU0kuIqYbUtqmklxFTDaltU0kuIqYbUtqmklxFTENU9qQU0OIqa1rdFl5TVr28LKyip
+ YFLg5QWRadVr5ZWPcdVbGyWLDqtPFKymcrUxUip3MZalQWZirVqUMipMGp9qkFKFCShFCcBShOAmkoY7
+ UtiIApAKMyKEPpptisQmITeIoQbEtqMQowlxFTDaltU0yXEVMdqW1TSR4iphtS2qaSPEUsNqW1TSR4il
+ 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
+ o2VMIThqlCkAjakLmqpc1X3BU704FTj5IWReVr5RWNkFOtTUcUSsqu46otRRtTq4y18cLIxVtYyBKm/U
+ 1WA1CqVgKEkqYlqjtRSopvEVMNqW1TSR4iphtS2qaSXEVMNqW1TSS4iphtS2qaSXEVMNqW1TSS4iphtS
+ 2qaSXEVMNqW1TSS4iphtS2qaSXEVMNqW1TSS4iphtS2qaSXEVMNqW1TSS4iphtS2qaSXEVMNqW1TSQ4i
+ pYNTOaiBM5OBU52SNFhZi38nhYOYFMCpwck6qmDqrmSNVTA1RtTexV0GGOFgYoXQYXZC1OzS3RWQ1BoO
+ isAppKltqfanUgm2phsS2IoCUIWpDsS2IpCaE21I9qcNUk6FlTHaltU0krKmG1LappIcRUw2pbVNJKyp
+ htS2qaSXEVMNqW1TSS4iphtS2qaSPEVMNqRappFLiKkRao7EUplICpgGKQYpBSCRKmOxLappIWpGWpg1
+ TKcI2piWKlks0WgVSyuEgVPOZgWU/la2aVkPOqXEVNnH5W3jBYmMdVt4qCnUpCttVWpWmoKZKJUlEoKU
+ kkkkpSSSSClJJJIKUkkkgpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJIKUnTJ0lLJJJJKUkkkkpdRcpKLklNaxVyrFirlJTNitVqqxWq0lJwkkEklLJJJJKUkkkkpZJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSySSSSl04TJwkpRQLEcoFiSmq9M1O9M1JTZrVh
+ qr1qw1JS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekpr
+ lSYolSYkpssRggsRgkpdMnTJKUnTJ0lKTJ0ySlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUuEikEikpE9VXq09VXpKYBHrQAj1pKbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUpMkkiFK
+ SSSRQpJJJBSkkkkkqSSSQUpJJJJSkkkklKSSSSSvKeVFJJSiUkycIpXCeEgnRUxITgJ04RUvCrXjRW1V
+ v4SCnEy+6yLeVsZax7uU4KYsOq0ccrMYdVo45RS7GOtBizsdaLECpIokqSiU2lpVKUpkkqQvKUpkkqUv
+ KUpkkqUvKUpkkqUvKUpkkqUvKUpkkqUvKUpkkqUvKUpkkqUvKUpkkqUvKUpkkqUvKUpkkqUvKUpkkqUv
+ KUpkkqUyBU5QwpoUpDadFlZRWrbwsnKUsAkOHlrHt5WvlrJtGqtBLBg1WlirPYNVpYwQKnbxVqVLLxlq
+ VKKSm01TUGqahKFkgkUyCGYKeUOUpTCEJJSlDlKU2kMyUxKjKSVKUkkklSlJJJI0pSSSSNJUnlMkjSl5
+ SlMklS5eUpTJI0pSSSSVKXTpkkqUvKUpkyNIZSpAqCkEFM5QLTojKvdwkFOTmLnstb+WVz+WpKU5No1U
+ qRqo2cqdPKNKdrC7LocThc9h9l0GKhSnTYdFOUNimmlSkikkgpZJPCUIUpZJPCUIUpZJPCUJUpZJPCUJ
+ UpZJPCUJUpZJPCUI0pZJPCaElKSShJCkKSSShKlLJJ4ShKkrJJ0kqSsklCUI0lSSUJQilQRAhhEASKkd
+ p0WNmlbNvCxc5OCXm813KxrTqtbNPKx7OU+kJaOVu4XZYVA1W9hDhGlPRYa1a+FlYi1a+EySkhUYU0yj
+ QwhJOUyKFwU8qKSSGUpblAlNKFIZ7kpUJThAhLJJMnTaUpJJJKlKSSSRpSpSlJJKlKlMkkjSlJSkmRpS
+ kkkkqUpSUQnRpS6UpJklLynlRCdJSxKrXFWSqtyIU5GWVhZRW5lrByk6lOc86otB1QHnVFoOqVKd3DPC
+ 6HEOi53DPC6DEOiBCnUaUzkmcJFM6pYJJQlCKFJJ0kKUsknSSpSySdJKlLJJ0oSpSySeEoQpSySeEoSp
+ SySeEoSpSycJQlCVKZBIlMkUqUsSopymSpTIFOohSRpSxTJ0yVKZBEaUMKYKVKZkoVhUiUKwoUpo5JWH
+ llbWQsTLTgFONeVVnVWL+VVHKsRS3cdbeIOFi4wW5iDhGSnaxgr7QqWONFfaFXklYhQRCFAhNQoJ5TJJ
+ pClSkkkEqUumTwkQhSmKZOQkiApZJPCUJwClpSShKE5SpSlKEoSUqUpSSSUqU6aE6bSlJJQlCaQpZJPC
+ UJtKYppUiFEhEBCpUgowpgJ9IZtUimanKCUFp0WVlFadx0WRlOTwFzkZLlmWO1V7Kcsux2qfSkrHarQx
+ ispjtVo4xRpLuY5WlUsrGK1aUCptsCIAoMCKAoypimKmQokIIYpJJJUtUknhJCkLJJ0kKUsknSRpSySd
+ MjSlJk6ZFKkkkkUrylKZOmELVFRUoShNpDFSShPCNJWlKUimRpTIFJRCkiliQmAUkgEUroF50Vgqtfwk
+ EuJmlc9lnVb+aufyuU+lOc46o9B1QHco9CSnZxFuYywsRbuMlSnSrRgg1owTSpRTKRCiQghQKlKinSQv
+ KUpkkELylKSSFIUmSSQpSpSlJJCkqlKUkkgEqSSSUgUqUkkkVKSlJJBSpSlJJIqVKUpJQoyFKlOCmTJU
+ pnKUqEpSnAKZSkSmCcpymredFiZi27+FiZilCXn8oLOcNVp5QWcRqnoT441W7h9liY41W5hjhBTvY3Cv
+ NKo43CvNCjkllKcFMU0plKZymJUZSlClLpJJQhSFJJJJUpSSUJQlSlJJQklSlJJJJUhSSSSVKUkkklSl
+ imUiFGEqUuCnCYBSASpSxTFSIUSEaUspAqKdGlLpJJBKkswpBRCkglZxVPIOituKo5B0RCnFzXcrnsty
+ 3s08rnspOpDnuOqtYx1VRw1VrGGqNKehwTwujxToubwey6LE4QIU6TUxCdnCcpimACdJIoUpYlNKYlRl
+ NIUylPKgCpIUpSZOmSpSpTyopI0plKUpk6cApSUpJI0pUpJJIqUkkmSUukkkkpaUpShKEqUqUpShKE2l
+ KlOCmhOAlSlwpKIUkUrEoLyilBsTgpo3lY2UVr3rGykaQ5F5VXurN5VWdUqU3cdbeIsPHK28QoUp3Mfh
+ XWqjjcK8wJFS5UVMhRhBSydJJKlKSSSSpSkkkkKUpJJJKlKSSSSpSkkkkKUpJJJKkKSSSSpS4ThME4Sp
+ S6Yp0xQpCySSSNJWJUSpEJiEaUspBMApAIpXCZxUgFFySWraVmZJWnasvJTwlx8krLsOq0spZVnKdSl2
+ HVaWMVls5WnjJUp28YrWpKyMYrVpKaQputKkUNhU0wqYkJoUkkkLJJ4SSQxKiVMhQIQQsCpApoUgEKUq
+ UylCaEKQsnlJJOAUvKUpkkaUvKUpkkKUvKUpkkqSvKUpkkKUvKUpkkqSvKUpkkaUvKYlJJGksSpNCaFN
+ oSSuq1/CtEKrfwkFONllYWSdVuZawsk6p4Cmg46otRQHHVFqRpTrYxWxjrGxls46VKdGoqy0qtUrLU0q
+ SSmKSSapiU0KSUJKWSlJJJKpSSSQpSpSSSSpCkpSSQpSpSSSQpCkkkkKQpJJJKkKTpk6VKVKYlJMUaUq
+ UgVFJOpTOUpUQnRSvKSScBFK4UimATlNXBp5HCwc0LfyOFhZoUsVPN5Y1WceVp5YWa4aqUKbeKdV0WCe
+ FzuNyuhweyjkEF6HHOitgqpjjRWwFCQtWJTgpiEglSmUpSmTpUpUppSTJUpUpSkklSl5STJ0qUpJJJKl
+ KlOmhOlSl0koShKlKTJ4TQlSlJSkklSlJJJJUpZJOmSpSkkkkqUqUpSSSpSkyeEoRCViqt/CtFVL+E+K
+ XCzVz+VyugzVz+VynoaPdX8U6qh3V3GOqSHo8I8Lfxzouewjwt/H4TCEt0FRKcJiExS0pSkkihSZOkhS
+ lk6SSFKUkkklSlJJJJUpSSSSFKUlKSSNKVKaU6SVKUkkklSFJpTwmKNKVKkChpwlSEoKYlRCSVKWJUZT
+ lNCNJUFIKMKUJKUoOU1ByKWlkcLEzAtu9YuWEaS4WQFUA1V7ICpxqlSW7jLfw1gY3K3sNKlO9j8K2Cqe
+ PwrgTCpZxUVJygkFLpSmTooUlKSSCFJJJJUhSSSSFIVKSSSFIVKUpJkQEhdNKSScuXSTJIKXSlJJClKl
+ JMnTaUpJJMhSlSlKSSICl00pJJ4Cl5TFOmKISgsKzsgrQsWdkJ4U4+Usm1auSsq1PUxYNVo4yzmcrRxk
+ lO5irWpOiyMYrWpKjIU2wUiUwKRUaVSnUU6aQhkmSSTaUsUxTpinAIWlJJJGlKlJJJKlKSSSSpSkkoSS
+ pSk0p4ShClLJJ00I0pSdNCUJUpeVIFQSRpTPckXKEpFGlKJSlRSCNKZhTCgEQIFTB4VLIV9wVHICIU4u
+ UsTJK28sLEyQpApoE6o1KCRqrFATlOrihbeOFj4g4W1jhAqb9aOEGsIwUJCFyVFSKihSlJJJJUpSSSSV
+ KUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpcJnFOFFyI
+ S0cg6LDy1uZAWHlqUKcPI5VPurmSqXdFTexit7DK5/GK3cMoUp3aSrIKp0K41AqZAqYUQFIJhUyCdMkg
+ pRUSnKZClKSlMnQpS8ppSSSpSpTymSSpS8pSmSSpS8pkkkqUpJJJKlKSlJJKlLymlOmSpSySdJOUoBOE
+ k6SlJpTpikpYlIFMUgkpkSqOUdFdKoZfCKnn80rIcdVqZp1WQ7lJTexjqt3FWDi8rexOEFOrUFaaFXqV
+ kJKXKgVMqBQUpJMnSpSkkkkKUpJJJKlKSSSQpSkkkkqUpJJJKlKSSSSpSkkkkFKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSQUpOmTpKWSSSSUpJJJJS6i5SUXJKa1irlWLFXKSmbFarVVitVpKThJI
+ JJKWSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySSSSlkkkklLpwmThJSigWI5Q
+ LElNV6Zqd6ZqSmzWrDVXrVhqSl0kkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//U69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SKQSKSkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJK
+ UkkkkpZJJJJSySdJEKWSTpIqWSTpIKWSTpJKUmTpIKWSTpJKWSTpJKWSSTpJVCUJwpJKYQnhSTIqWSlJ
+ RJRSuSnBQyU4KKk0qredEeVVvOiSnIyyse46rWylkXcpymLDqtHGWazlaGMUVO1jLSrWZjFaNbtECpOo
+ kJtyiXpoCCyhJQ3pb0aQzSUN6W9KlM0lDelvSpTNJQ3pb0qUzSUN6W9KlM0lDelvSpTNJQ3pb0qUzSUN
+ 6W9KlM0lDelvSpTNJQ3pb0qUzSUN6W9KlM0lDelvSpTNJQ3pb0qUkAU4QQ9T3oEKYW8LIy1qWv0WRluU
+ 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
+ mcJQob0t6VKZwkob0t6VKZwlChvS3oUpnCUKG9LelSmUJ4UNycPSpTKEtqYOUpSUttTEKUqJKKmJCQCY
+ uTbkVJQEQIAeph6BCWblSyArLnqne5GIU4+WFiZIW3lFYuQpQEOeRqrFAQDyjUlOpTs4nZbWOsPFctjH
+ egQp1K0YKrW9GD1CQhIVFMXqO9ClM0lDelvRpTNJQ3pb0qUzSUN6W9KlM0lDelvSpTNJQ3pb0qUzSUN6
+ W9KlM0lDelvSpTNJQ3pb0qUzSUN6W9KlM0lDelvSpTNJQ3pb0qUzSUN6W9KlJEkPelvSpSUBM4KIek5y
+ FJaeQNFh5YW5edFi5alCnAyRqqUarQyQqJGqdSmzjhbmGFiY628QoUp26ArrQqVBV1rkwhSQBShQDk5c
+ mKXSUC9NvRpTNJD3p96VKZpKG9LehSkiSHvS3oUpIkh70t6NKSJIe9LelSkiZQ3pb0qUzSUN6W9KlM06
+ HvS3pUpImUdyYvSpTIlKUMvUd6VKTAqUquHqQelSkySGHp9yVKZEJAKO5SDklLkKhljRXy7RUMo6JBTz
+ eaNVkOGq2c3lZDuUVNvFGq3sXhYWNytzGOiCnWqKsAqnWVYaUlJpUSkCkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJWpSSSSVqUkkkgVKSSSTCpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJ0ydJSyS
+ SSSlJJJJKXUXKSi5JTWsVcqxYq5SUzYrVaqsVqtJScJJBJJSySSSSlJJJJKWSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklLpJJJKWSSSSUskkkkpdOEycJKUUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUukkkkpZJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJT//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGC
+ Sl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SKQS
+ KSkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkkVKSSSSUpJJJJSkkkklKS
+ SSQUpJJJJSkkkklKSSSSSqU8qKaUlJJSlQCdFK6iVJNCKmJCdoTwpAJKVCq3jRWyq15TlOLlBZFw1Wxl
+ FY951SUhbyrtDoWcXwUau6EVPQUWwr7LlztWTCtNy0Rqp2jehm9ZRy0M5asRx2h2PXT+usb7Ul9qT/aQ
+ 7Prpeusb7Ul9qQ9tTs+ul66xvtSX2pL21Oz66XrrG+1JfakvbU7Prpeusb7Ul9qS9tTs+ul66xvtSX2p
+ L21Oz66XrrG+1JfakvbU7Prpeusb7Ul9qS9tTs+ul66xvtSX2pL21Oz66XrrG+1JfakvbU7Prpeusb7U
+ l9qS9tTs+ul66xvtSX2pL21Oz66XrrG+1JfakvbU7QvUvXWIMtP9rS9pTqWX6LMybZQ35UqnbfKfHGlr
+ 5LpWc86qzc+VTe5TCCUjCr1DlmNerVVkJGCneosWhVcsCq+FcZkKMwU7jb0UXrDGUiDLURxIdn11E3rI
+ +1qJy0PaQ7HrpvXWOctN9rR9tDs+un9dY32tP9rQ9tTseumN6x/taY5aXtKdj10vXWN9qS+1I+0h2fXS
+ 9dY32pL7Uj7SnZ9dL11jfakvtSXtJdn10vXWN9qS+1Je0l2fXTeusf7Ul9qS9pTs+ul66xvtSX2pL20u
+ z66XrrG+1JfakPbU7Prpeusf7Un+1Je2p1/XS9dZH2pMcpL20Ox66cXrF+1pDLR9pTt+ug2XLM+1qD8q
+ UhiUkybJWNkulWLr5WddZKf7amu86qVR1QHvTsej7anaxnwtnHtXN0WwtGrIhD21PQsvUvXWKMpP9rTT
+ iU7QvS9dYwy0/wBrQ9pTseul66x/tSX2pD21Ox66XrrH+1JfakvbU7Hrpeusf7Ul9qQ9tTseul66x/tS
+ X2pL21Ox66XrrH+1JfakfbU7Hrpeusf7Ul9qS9tTseul66x/tSX2tL21Oz66X2hYv2tL7Wl7aHa9dL11
+ i/a0vtaXtqdr10vXWL9rS+1pe2p2fXS9dY32pL7Ul7aXZ9dL11jfakvtSXtpdn7Ql9oWL9rS+1o+2l2h
+ epjIWGMtOMtL2lOxZfosrLslDdlqndfKIxKaeTqs5zdVdtfKqlSe2pnUIWnjmFmMMK3VZCXtqd2i2FdZ
+ esKu+FYbkoHGp2henF6xvtSX2tM9pDs+un9dYv2tL7Wh7SHa9dP66xPtaf7Wl7SHb9dL7QsX7Wl9rTfb
+ U7XrpvXWL9rS+1o+2p2fXS+0LG+1JfakvbS7Prpeusb7Ul9qS9tTs+ul66xvtSf7Wl7anY9dL11j/a0v
+ taXtqdj10vXWN9qS+1Je2p2PXS9dY/2pL7Uj7anY9dL11jfakvtSXtqdn10/rrG+1J/tSXtKdf103rrJ
+ OUo/akvbU7IvUvXWJ9qT/a0vaU7JvQLblnfakJ+SiMamWTZKx8hys3Xys66yUfbUgedUSo6qu5ynW9L2
+ 1O1jPhbONbC5ui2Fp03wl7anoGXqZvWKMpI5ab7SXY9dP66xftaf7Wl7SHZ9dL11jfa0vtaXtKdn10vX
+ WN9qS+1Je0p2fXS9dY32pL7Ul7SnZ9dL11jfakvtaHtqdn10vXWN9rS+1pe2p2fXS9dY32tL7Ul7anZ9
+ dL11jfakvtSXtqdn10vXWN9qS+1pe2p2vXS9dY32tL7Ul7anY9dL1lj/AGpL7Ul7anY9dL11kfakxykv
+ bU6xvTeusg5Sb7Uj7anZ9dOL1jDKTjKS9pTsG9Qdcsv7UmOSl7am5bas7IfKZ+Qqdt0ojGpBcVWlSssQ
+ C9SiCm7S6Fp0WwsNlkK3VfCRgp6Om9XGXrna8lWW5SjOJTueul66xxlJ/tSZ7anX9dN66yftSY5Sb7an
+ W9dP66xjlJfa0vbU7Prp/XWL9rT/AGtL21Ox66XrrG+1pfa0vbU7Prpeusb7Wl9rTvbU7HrpvXWP9rTf
+ akfaU7PrpfaFjfakvtaPtKdj7Qn9dY32tL7Wl7SnZ9dP66xftaf7Wh7Sna9dL7QsX7Wn+1oHGp2ftCX2
+ hYv2tL7Wm+2p2ftCXrrG+1pfa0hjQ7PrpeusX7Un+1J/todr7QouvWP9qSOUl7SXQtuWfe+UJ+Sq1l8p
+ 3tpR3GVTcEWyyUAuR9tLJoVukwqQejMshL20uxS+FfruhYTL4VluSl7ancbeifaFhjKT/a004lO59oS+
+ 0LD+1qQy0PaQXa9dP66xvtaX2tD21rs+ul66xvtaX2tD21Ox66XrrH+1pfa0vbQ7Prpeusb7Wl9rS9tT
+ seul66x/tab7Wj7aXZ9dN66x/tSX2tH2lOx66XrrG+1pfakvaS7Prpeusb7Ul9rQONDtC9P66xPtaf7W
+ h7aHb9dMb1jfa032tL20uwb03rrI+1JfakfbU6/rpeusj7UmOUj7aXY+0JDIWKctIZaXtJdr10Ky7RZf
+ 2tRdkyiMSU2RZKybzKNbfKo22Sne2pC/lPWUFz0mPQ9tTr474WrRaufpthaFV8Je2p3mXIovWK3JU/tS
+ acanY9dN66x/tab7Wl7SHZ9dP66xftaf7Wh7aHZ9dOL1jfa04y0PbQ7Prpjesj7UmOUl7anWN6b11kHK
+ UftSXtodoXp/XWKMpS+1Ie2l2fXTeusf7Ul9qR9tTseul66x/tSX2pH2kux66XrrH+1JfakfaU7Hrpeu
+ sf7Ul9rQ9pTseul66x/tSX2pL21Ox66XrrH+1pfak321Ox66XrrH+1pvtaPtqdn11IXrD+1qQy0vbU7Y
+ vTOvWMMtI5aXtJb192ix8uyVOzJlZ99sqaONTRyDKpHlWrjKrFP9tCeg6rYxXxCxajC0aLIQ9tT0ePbC
+ vsvXPVZEKy3KUcsaXb9dMb1jHLTHLUftKdc3pvXWMctL7Wne2p2fXS9dY/2pL7Ul7aHY9dP9oWN9qS+1
+ Je2p2ftCX2hY32tL7Wl7anZ+0Jeusb7Wl9rS9tTs/aEvtCxvtaX2tD20Oz9oS+0LG+1pfa0vbU7P2hL7
+ Qsb7Ul9qS9tTsi9S9dYoyk/2tL21Oz66b11j/a1E5aXtqdk3pvXWN9rS+1pe2p2fXT+usYZSf7Uj7anX
+ N6ib1knKUTlJe2l2PtCb7Qsb7Ul9qS9tTsHIVa26VnnKQ35Eo+2pne+Vm3GUWy6VUe+UvbUwI1RqlXLk
+ Rj4TvbU6+O+Fq02wufqthXa8iEvbU7ovTnIWMMpMcpN9pTs+ul66xhlKX2pD21Osb03rLK+0pvtKb7an
+ XF6kL1j/AGlL7Uh7anZ9dL11j/akvtSXtqdY3pvXWT9qTfakvbU7AvT+usb7Un+1Jwxqdj10vXWP9qT/
+ AGpH21Ov66XrrI+1JfakvaU7Hrp/XWN9qS+1Je0p2fXS9dY/2pL7Uh7SnZ9dL11jfa0/2tL2lOz66Xrr
+ G+1p/taXtKdj10jesf7WmOWl7SnX9dIXrH+1Jfa0faS7PrqDr1k/a1E5SXtKbl1srLyXynsyZVK26U72
+ 1Na4qsiWPlClL20NqkrVxnwsat0K9TbCHtqehothXWXrn6siFYGWgcaXbN6gb1kHLUTlpoxIdc3pvXWR
+ 9rTfak721Oz66XrrG+1pfa0PbU7Prpeusb7Wl9rS9tTs+ul66xvtaX2tL21Oz66XrrG+1pfa0vbU7Prp
+ eusb7Wl9rQ9tTs+ul66xvtaX2tL20Oz66XrrG+1pfa0vbU7PrpfaFjfa032tL21Oz9oTfaFjfa032tL2
+ 0O366cXrEGWpDLS9tLteul66xvtaX2tH21Oz66f11i/a04y0vaS7XrqLr1kfa0jlJe0lv23LPvsQn5Kq
+ W3ypBjSwvdKoPKJbbKquej7akrCrtDoWY16s12wl7ancpsV6u5YNd8KyzJS9tTutvUxesUZSl9qTTiU7
+ Prp/XWN9qS+1pvtIdoXp/XWKMtP9rQ9pDseum9dZH2pN9qS9tDseun9dY32pN9qS9tTtfaEvtCxftaX2
+ tD20O166b11jfa0/2pEY1Ox66XrrH+1JfakfaS7Hrp/XWN9qS+1pe0p2fXS9dY32tP8Aa0PbU7Hrpeus
+ b7Wl9rS9tLs+ul66xvtaX2tL21Oz66XrrG+1pfa0vbU7PrpvXWR9rTHLR9pLseunGQsQ5aQy0vaS7ZvV
+ e65Z32pDfkyiMSlZNkrIvcrN10rPtfKd7akROqLUVVL1Nj0fbU7OO+FqUWrn6bYV+rIhD21O+y5EF6xW
+ 5Kl9rTTjQ7Prpeusb7WkMtD21O0L0/rrGGUn+1Je0p2PXTeusj7Ul9qS9pLr+ul66yPtSX2pL2lOx66X
+ rrH+1JfakvaU7Hrpeusf7Ul9qQ9pDseul66x/tSX2pL20Ox66XrrH+1pfakPbQ7Hrpeusf7Wl9qS9tTs
+ eul66x/taictL21O19oS+0LE+1pfa0vbU7frpeusUZaX2tH21O19oS9dYv2tL7Wj7SXZ9dN9oWN9rS+1
+ pe0l2ftCib1j/akjlI+0pv23Ss3IslRfkyqdt0qQY0te8yqRGqsWPlAKdwKTUCCtrEfCxKzC0KLYTJY0
+ F6Wm6ArHrrAryYRhlqI41rsG9L11j/ak/wBqS9tTseul66x/tSX2pL2lOv66XrrH+1Jfa0vaU7Hrpeus
+ f7Ul9qS9pTs+ul66x/tSX2pL21Ox66XrrH+1JfakvaU7Hrpeusf7Um+1Je0p2fXS9dY32tL7Wl7SnZ9d
+ L11jfa0vtaXtKdn103rrH+1pfa0vaU7HrpfaFj/a032tL2lOz9oS9dY32pL7Wl7SnY9dL11j/a032tL2
+ 1Oz66XrrG+1JfakvbU7XrpvXWP8Aa0vtSPtLg67r1Vut0VI5SBZkSnRxqY5L5WReVbvulZ9r5T+BSA8q
+ zQYVMu1Rqnwh7aHfxHwtqi7Rcxj3QtOrJhNONTvi9I3rIGUonLTPaS65vTeusc5ab7Wj7SHZ9dP66xhl
+ p/tSXtqdj10vXWP9qS+1Ie2p2PXS9dY/2pL7Ul7anY9dL11j/akvtSXtqdj10vXWP9qS+1Je2p2PXS9d
+ Y/2pL7Wl7anY9dL11j/a0vtaXtKdj10vXWP9rS+1Je0h2PXS9dY/2tMctL2lOz66QyFi/a032tL2kO59
+ oT/aFh/bE/2xL2lO166b11jfa0vtaXtJdn10vXWN9rT/AGtH2lOub1B1yy/tSiclIY0tu61ZeQ+VKy+V
+ SutlP9tLWvKqHlGsfKASl7amxSdVsYr4WJW6FoUWwh7aXpaLoCti9c/VkwjDLTTiU7BvUfXWSctR+1Je
+ 0p2fXS9dY32pP9qS9pDseul66x/tSX2pL2kOx66XrrH+1JfakvbQ7Hrpeusf7Ul9qQ9tDseul66x/tSX
+ 2pL21Ox66XrrH+1JfakvbS7PrpvXWR9qS+1I+0l1/XS9dY/2pL7Ul7SnZ9dL11jfakvtaHtqdn10vXWN
+ 9rS+1Ie2p2fXS9dY32pL7Wh7anZ9dL11jfak/wBqR9tTseul66x/tSX2pH20uyL0jescZaRykvaU6Fly
+ z77UJ+SqduRKkGNSPIes+xyJdbKpvene2pM0q9Q5ZbXq3TYl7anex7Fo1WrApuhXWZCacanbFyc3rIGU
+ mOUo/bU6/rp/XWN9rS+1Jpxqdj10vXWP9qS+1Ie2p2PXT+usb7Ul9qThjQ7Prpeusb7Wl9rR9tTs+ul6
+ 6xvtaX2pL21Oz66XrrG+1Jfa0vbU7Prpeusb7Wl9rS9tTs+ul66xvtaX2tL21Oz66XrrG+1pfakvbU7H
+ rqQvWL9qS+1pe2p3BepC9YX2xP8AbEPaU7nrqJvWN9sTHMS9pTrm9R9dZBy1E5ad7SnZ9dTGQsP7WpDL
+ SOJTtG9VbrlQ+1IVmTKQxKXyLJWRe5WbrpWddZKkGNSJxRKnKsXqdb0eBTs471rUWrnqbYWhXfCBgh3m
+ XowvWG3JUxlqM41Oyb03rrHOWm+1Ie2p2fXS9dY32pL7Uj7anZ9dL11jfakvtSXtqdn10vXWN9qS+1Je
+ 2p2fXS9dY32pL7Ul7anZ9dL11jfakvtSXtqdn10vXWN9qS+1Je2p2fXS9dY32pL7Ul7anZ9dL11jfakv
+ tSXtqdn10vXWN9qS+1Je2p2fXS9dY32pL7Ul7anZ9dL11jfakvtSXtqdn10vXWN9qS+1Je2p2fXS9dY3
+ 2pP9qS9tTsi9Ob1jDLSOWh7SnQuukLJyXylZlSqN18p4xpa15lUzyjWvlVy5O9tTapK18Z8LDrfCv0XQ
+ lwKejotVxty5+vJhWBlphxqdr10jesf7Wl9rTPaU6xvTeusn7Um+1I+2p1vXT+usj7Um+1I+2p2PXS9d
+ Y/2pN9qQ9tTs+ul66xvtSX2pL21Oz66XrrG+1JfakvbU7Prpeusb7Ul9qS9tTs+ul66xvtSX2pL21Oz6
+ 6XrrG+1JfakvbU7Prpeusb7Ul9qR9tTs+ul66xvtSf7Uh7anX9ZN6qyftSf7WgYKdb1U4uWR9rTfbE3g
+ U7Prp/XWJ9sS+2JcCnb9dOL1h/bE4zEOBTuG9U8m6QqX2tV7smQm8KmtlvlZxOqNfbKrAyUKU38blbeN
+ wsTGW1jIEKdKsqw1V61YaE1SUJ0wTpqlJJJIWpSSSSbalJJJJvEpSSSSHEpSSSSHEpSSSSHEpSSSSIkp
+ SSSSepSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJ0ydJSySSSSlJJJJKXUXKSi5JTWsV
+ cqxYq5SUzYrVaqsVqtJScJJBJJSySSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWS
+ SSSUskkkkpdOEycJKUUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9br
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpY
+ 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
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kkFKTpk6SlkkkklKSSSSUuouUlFySmtYq5VixVykpmxWq1VYrVaSk4SSCSSlkkkklKSSSSUskkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUskkkkpZJJJJS6cJk4SUooFiOUCxJTVemanemakps1qw1V61Ya
+ kpdJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSn//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiV
+ JiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJS4SKQSKSkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkkVKSSSSUp
+ JJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpOmTpJUnSSRUsU0pymKKlpUgopwkpIAoubKkCnSS1H1SgOx
+ gVfIUYRQ0PsgUhhhXw0KYAStLQGGEjhhaGibRK1OccMKJwwtKAlAS4itcz7GE/2MLR2hPtCXGVOb9jCX
+ 2MLS2hLaEuIqc37GEvsYWltCW0JcRU5v2MJfYwtLaEtoS4ipzfsYS+xhaW0JbQlxFTm/Ywl9jC0toS2h
+ LiKnN+xhL7GFpbQltCXEVOb9jCX2MLS2hLaEuIqc37GEvsYWltCW0JcRU5v2MJfYwtLaEtoS4ipzfsYS
+ +xhaW0JbQlxFTm/Ywl9jC0toS2hLiKnN+xhL7GFpbQltCXEVOb9jCX2MLS2hKAlxFTm/YwpfZAtCAlAR
+ 4ipzziBQOGPBacBNtCPGVzmfYx4KQwh4LRDQphoS4ypzfsYUTiBau0KBaE3jKHL+yBOMQLQgJwAlxlTn
+ /Ywl9jC0gAlAQ4ihzfsYTjDC0YCeAjxFTnfYx4JfYwtGAm0S4ihz/sYTfYwtGAlAR4ipzvsYS+xhaUBL
+ aEeIqc37GEvsYWjASgJcZU532MJfYwtKAmgJcZU532MJfYwtKAlAS4ilzfsYS+xhaUBKAhxFTm/Ywl9j
+ HgtKAlAQ4ipzfsYS+xjwWltCRaEOIqcw4gTfZAtIgKMBLjKmgMQJfYwtEAKYaEuMqck4Q8FA4YWwWBCL
+ QkJlTmDECIMQK9tCmAE7jKmiMMJHCHgtEAKUBLjKnKOEFA4QWsQEMgI8ZU5owwpfZAr8BSACXEVOd9jC
+ b7EPBagaE+wIcZU5f2IJ/sYWmWhR2hDjKnO+yBL7IFowEoCHEVOd9kCX2QLRgJQEOIqc77IEvsgWjASg
+ JcRU532QJfZAtGAlAS4ipzvsgS+xhaMBKAjxFTnfZAl9kC0YCUBHiKnO+yBL7GFowEoCXEVOd9jCf7GF
+ owEoCXEUOd9jCX2MLRgJQEOIoc37GEvsYWlASgJcRU5v2MJfYwtKAlAS4ilzfsY8EvsYWlATQEOIqc77
+ GEvsYWjASgJcZS532MJfYwtGAlATuMpc77GE32QLSgJiAjxlTnfZAnGIFfgKQaEeMqc/7IExxAtMNCYt
+ CXGVOZ9kCb7IFpFoTbQjxlDn/ZAn+xhaIaE+0IcZQ5v2MeCX2MLT2hNAQ4ypzfsYTjDC0ICcAIcRU5/2
+ IJ/sQWjAS0TeIoc37GExwwtLRNAREilzfsYTfYwtKAlAR4ilzvsYS+xhaUBKAjxFTm/Ywl9jC0oCUBLi
+ KnN+xhL7GFpQEoCXEVOb9jCX2MLSgJQEOIqc37GEvsYWlASgJcRU5v2MJfYwtKAlAS4ipzRhhS+yBaEB
+ KAjxlTn/AGQJfYwtEAKW0JcRU5ZwwonDC1S0KJaEuMqcz7IE4xAtAgJQEuMqaIwwl9jHgtAAKQAS4ypz
+ vsQ8EvsYWlATEBLjKnP+yBL7IFeMJtEuMqaBxAoHDC0YCUBLjKnN+xhOMMLR2hPtCXEVOd9jCX2MLRgJ
+ QEuIqc77GEvsYWjtCW0IcRU532MJvsYWltCW0JcZU532MJfYwtGAltCXEVOd9jCX2MLR2hLaEOMqc77G
+ EvsYWjtCW0JcRU532MJfYwtHaEtoS4ipzfsYS+xjwWntCW0JcRU5f2MeCX2MLTLQm2hLiKnO+yDwT/ZA
+ tHaE8BLiKnN+yBN9kC09oTbQjxFTm/Ywl9jC0toS2hLiKnOGGE/2QLR2hKAlxFTnfZAl9kC0YCaAlxFT
+ n/ZAn+xhaEBPAR4ypz/sYTfYgtGAngI8ZQ5hwgm+xDwWpATbQlxlTmfYwkMQLSgJoCaZlTn/AGQJ/sgV
+ +AmMJpmVOecUJvsgV8wlATeIqaH2QJxhhXwApgBLiKnO+xhMcMLU2hMWhLiKnL+xhL7GFpFoTQEeIqc/
+ 7GEvsYWjATwE7iKnN+xhL7GFowEoCPEVOd9jCX2MLRgJQEeIqc77GEvsYWlASgJcRU5v2MJ/sYWjASgJ
+ cRU532MJfYwtGAlATeIqc37GE32MLSgJQEOIqc77GEvsgWhATwEuIqc/7GEvsYWiAE8BO4itc37GE32M
+ LT2hNtCXGUub9jCX2MLS2hLaEuMpc77GE32MeC0toS2hLjK5zfsY8E32QLSICaAjxlTn/ZAn+yBX4CcA
+ JcZU5/2MJfYwtGAlAQ4ypzfsYS+xhaUBKAlxFDm/Ywl9jC09oS2hDiKHM+xhL7GFp7QltCXEUOZ9jCX2
+ MLT2hLaEuIqcz7GEvsYWntCW0JcRU5n2MJfYwtPaE20JcRS5v2MJfYwtLaEtoS4ypzfsYS+xhaW0JbQl
+ xFLmfYwl9jC09oS2hLiKHNGGPBL7GFphoT7QlxFTlnDCb7GFqFoUS0JcRU5oxAnGIFoQE4AR4ilz/sYS
+ +xhaUBLaEuIqcz7GEvsQ8Fp7QltCPEUuYMMeCkMMLR2hKAlxFTn/AGMJfYx4LRgJQEuMpc04Q8E32MLS
+ ICaAlxlDQGGE/wBkCvaJGEuMqc84gUDiBaBhNAQ4ypz/ALIE/wBjC0AApBoQ4ihzfsYS+xhae0JbQhxl
+ TmfYwnGIFo7QlAQ4yhzxiBP9kC0QAlAS4ipzThhN9jC0iAmgJcRU5v2QJ/sgWjASgJ3EVOd9kCX2QLRg
+ JQEuIqc77IEvsgWjASgJcRS532QJfZAtGAlAS4ipzvsgS+yBaMBKAhxlTnfZAl9kC0YCUBLiKnO+yBN9
+ kC0oCW0JcRU532QKQwwr8BSACXEVOf8AYwmOEFpaJEBO4ipyzhhN9kC0yAowE4TKnPGIE4xAr8BKAjxl
+ TS+yBP8AZArsBPAS4ypo/ZAmOIFfgJQEOMqc44gTHEC0YCUBIzKnN+xhOMMLRgJQEzjKXP8AsYS+xhaO
+ iUBHiKnN+xhN9jC0oCW0I8RQ5v2MJ/sYWjASgJcRU532MJfYwtGAlAS4ipzvsYS+xhaMBKAlxFTnfYwl
+ 9jC0YCUBDiKHO+xhN9jC0oCUBLiKnO+xhL7GFowEoCXEVOd9jCX2MLSgJbQlxFTmHDCicMLULQm2hDiK
+ nMGGFIYY8FpBoUg0JcRU5owwn+xhaW0JiAlxFTmnECicMLTICjAS4ilzvsYTjDC0QApBoS4ipzhhhP8A
+ YwtGAngJcRU532QJvsgWiQFHRLiKmh9jCf7GFfEJ4CImVOf9kCY4gWjATQEeMqc44gTfYwtGAlAS4ipz
+ vsYT/ZAtCAngIcRU5/2QJjiBaEBMQEOIqc84gTfZAtCAmgJcRU0RiBP9jCvgBSgIcRU532MJvsYWlATQ
+ EuIqc77IEvsgWjASgI8RU532QJfZAtGAlAS4ipzvsgS+yBaMBKAjxFTnfYwm+xhaUBKAlxlTm/Ywl9jC
+ 0oCUBLiKnN+xhL7GFpbQltCXGVOb9jCX2MLS2hLaEuMqc37GEvsYWltCQaEuIqc77GExwwtPaEtoR4yl
+ yjhhL7GFqbAm2BLjKnNGGFIYYWjtCUBLiKGgMQJxiBXdEpCXEVNP7IEvsgV0EJ9EOMqc84gUDhhakBMW
+ hLjKnJOGPBN9jC1SwJtgS4ipzRhhP9jC0doT7QlxFTm/Ywl9jC0toS2hDiKnN+xhL7GFpbQltCXEVOb9
+ jCX2MLS2hLaEuIqc37GEvsYWltCW0IcRU5v2MJfYwtPaEtoS4ipzPsYS+xhae0JtoS4ihzfsYS+xhae0
+ JbQlxFTmfYwl9jC09oTbQlxFTmfYwl9jC09oS2hLiKnNGGE4wx4LSDQpBoS4ipzPsYUThhau0KJaEeIq
+ co4YS+yBaRaE20I8RS0BiBTGIFeACkAEeMqaH2QJfZAtCAlAR4ylzvsYT/YwtCAnACXGUuacIeCicIeC
+ 1YCbaEOMqcn7EEvsYWoWhNtCPGVOb9jCX2MLS2hPtCXEUOZ9jCX2MLT2hNtCHEUOd9jCcYgWhATwEOIq
+ c/7IE/2QLQgJQEOIqc/7IE32QLRgJoCHEUOf9jCX2MLQgJ4CHEVOacMKJwwtSAo7QniRU5n2MeCX2MeC
+ 09oS2hO4ipzPsY8EvsY8Fp7QltCHEVOZ9jHgl9jHgtPaEtoQ4ilzPsYS+xjwWntCW0IcRU5n2MeCX2ML
+ T2hLaEuIpcz7GPBL7GFp7QltCXEVOZ9jCX2MLT2hLaEuIqcv7EE4wgtTYEtoR4ipzhiBTGIFegJaI8ZU
+ 0vsgTHDCviE+iXGUuacMeCb7EFpQE0BLjKHN+xhL7GFowEoCXGVOd9jCY4YWlAS2hDjKnM+xhIYYWntC
+ W0JvGVOcMQJ/sgWhASgIiZQ5xxAo/YwtOAltCeJFLmfYwl9jC0toT7QlxFDmfYwl9jC09oS2hDiKnN+x
+ hN9jC09oS2hDiKHM+xhL7GFp7Qm2hLiKnN+xhL7GFp7QltCHEVOZ9jCX2QLT2hLaEuIoc37GE4wwtHaE
+ oCXEVNAYYUhhBXhCkIS4ipofYx4JjhhaWiiYS4ipzDhhROGFpkBNAR4ilzPsYS+xhae0JbQjxlTl/Ywl
+ 9jC1NgTFoR4ipzPsgTjEC0doThoR4ylz/sgS+yBaO0JoCXGUuf8AZAm+yBX4CUBAzKGh9kCX2MLRgJ4C
+ bxFDnfZAn+yBaEBPAS4ipzvsgTfZAtGAlAS4ipzfsgS+yBaMBKAlxFTn/ZAn+yBaEBPAS4ipz/sgS+yB
+ aMBKAlxFTnfZAl9kC0YCUBLiKnN+yBN9jC04CbaEuIqc37GEvsYWltCW0JcRU5v2MJfYwtPaEtoS4ipz
+ PsYS+xhae0JbQlxFTmfYwl9jC09oS2hLiKnM+xhP9jC0toT7QlxFTmfYwl9jC09oS2hLiKnM+xhL7GFp
+ 7QltCXEVOZ9jCb7GFqbQmLQiJlIcv7IEhiBaJAUYCPGUtMYgT/YwrwhTACHGVOYcIeCgcMeC1SAhkBLj
+ KHOGIFL7IFegJ4CHGVOecQKJwwtOAn2hLjKnL+xDwTjCHgtQMCfYEOMqcv7GE/2MLT2hNtCXEVOb9jCX
+ 2MLSgJoCXEVOd9jCX2MLRgJQEuIqc77IEvsgWlASgJcRU5v2QJfZAtKAmgI8RU532MJfYwtGAngJcRU5
+ v2MJfYwtKAlAR4ipzfsYS+xhaUBKAlxFDm/Ywl9jC0YCUBLiKnP+xhP9jCv6JaJvEVOf9jCf7GPBX9E4
+ AS4ihz/sQTHCC04CaAjxFLmfYwm+xhaZATQEuMqc77IE/wBkC0ICUBLjKXP+yBROIFowEoCPGVOb9jCk
+ MMLQ2hSDQlxlTn/ZAl9kC0doSICXGVOacQJvsgWiQEoCXGVOd9jCX2QLRgJQEuMqc77IEvsgWjASgIcZ
+ U532QJfZAtGAlAS4ipzvsgS+yBaMBKAlxFDnfZAl9kC0YCUBDiKnO+yBL7IFowEoCHEUOd9kCX2QLRgJ
+ 4CIkUub9jCX2QLSgJoCdxlLnfZAm+xhaUBKAhxlTm/ZAl9kC0YCUBDiKnN+yBL7IFpQEoCHEVOb9kCf7
+ IFowEoCXEVOd9kCf7IFowEoCXEVOd9kCX2QLRgJ4CPEVOb9kCb7IFpwE20J3GVOb9jCf7GFpbQn2hHjK
+ nM+xDwTfYh4LUgJoCXGVOaMIeCmMMLQgJQEuMqaH2QJHEC0ICYgIcZS5pxAoHEC0yAowE0yKnN+xhIYY
+ WltCfaE0yKnOGGE/2QLR2hKAhxFTnfZAl9jC0oCW0J4kUOb9jCX2MLS2hLaEeIqc37GEvsYWltCfaEuI
+ qcz7GEvsYWntCW0IcRU5v2MJfYwtLaEtoS4ipzfsYS+xhaW0JbQlxFTm/Ywl9jC0toS2hLiKnN+xhL7G
+ FpbQn2hLiKnLOEPBN9iC1NoTEBLiKnM+xBOMMLRgJwAlxlTnfYgmOEPBaYAT7QlxlTlHCCb7GFqFoUCA
+ jxlTnjECcYgV6ApABLjKmh9kCY4YWkAE+0I8ZU5Rwh4JDDC1C0JtoS4ypzhiBS+yBX4CeAlxlDnfZAm+
+ xhaUBKAhxFTm/Ywl9jC0oCUBLiKnN+xhL7GFpQEoCXEVOb9jCX2MLSgJQEuIqc37GEvsYWlASgJcRU5v
+ 2MJfYwtKAlAS4ipzfsYS+xhaUBKAlxFTm/Ywl9jC0oCUBLiKnN+xhL7GFpQEoCXEVOb9jCX2MLSgJQEu
+ Iqc37GEvsYWlASgJcRU5v2MJfYwtKAlAS4ipzfsYS+xhaUBKAlxFTm/Ywl9jC0oCUBLiKnO+xhL7GFow
+ EoCXEVOacMKBwwtXaE20JcZU5YwwiDDC0AwKYaEeMpc/7GExwwtKAomEuMqc04YTfYwtEwlAQ4ypzfsY
+ S+xhaYaE+wJcZU5X2MJfYwtUsCiWhDjKnNGIFIYgV+AnACXGVND7IFE4YWnATbQlxFTmfYwn+xhaW0Jo
+ CXEVOd9jCX2MLRgJQEuIqc77GEvsYWjASgJcRU532MJfYwtGAlAS4ipzvsYS+xhaMBKAlxFTnfZAl9jC
+ 0YCUBHiKnO+xhL7GFowEoCXEVOd9kCX2MLRgJwAlxFTnDDCf7EPBaQATwEeJTlnCHgm+xDwWoQFGAlxK
+ c4YI8FL7EPBaIhPohxKc37EPBN9jC0jCgYRBU5/2QJfZArxISEI2pofZAnGIFohoUtgQ4lNAY8KYrhWy
+ 1QIStSICFJOmSUukmToKUkkkkpSSSSClJJJJKUkkkhSlJJJJUpSSSSFKUkkklSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSdMnSUskkkkpSSSdJSlFykouSU1rFXKPYgFJTNitVqqxWq0
+ lJwkkEklLJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSySSSSl04TJwkpR
+ QLEcoFiSmq9M1O9M1JTZrVhqr1qw1JS6SSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Dr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunT
+ J0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhIpBIpKRPVV6tPVV6SmAR60AI9aSmw1TUGqaSlJJJJ
+ KUkkkkpSSSSSlkkkklKSSToqVCZSTJKWSSSSUpJJOkpZJOkkpZJOmQUpJJMkpdJMnSUpOmTpJXSTJIqX
+ USnTIqUkEkklMgUpUUklKJTSkUkVMgU+5QSSUyL1HemShJLIOUtygE6C1luSlMmSUylKVFJJTKUpUUkl
+ MpSlRSSUylKVFJJTKUpUUklMpSlRSSUylKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUy
+ SSl5SlMkkpeUpTJIrlwVMOQ0pQUkLlAuTSmJQQsSnBUU6Sme5LcopJIZbktyikkpkXKJckmhFC+5OHKM
+ J0VM9yW5QToqZbk25RSSUy3J9ygkkpnuS3KCSCWe5LcoJJKZ7ktygkmqZ7ktyjKaUFLkqMpFKElMmlED
+ kIKQKSmRchkpyUxRUxlOClCUIqZhyfcoJIqXLlAuTlMQkpaVIFRhSASUkDlLchgp5QUyLlElMSmKSlSn
+ lRSQUylKVFOgpeUpTJIKXlKUySKl5SlMkkpeUpTJIqX3JbkySSl5Tyop0kLylKZJJC8pSmSSSqUtyZJB
+ S+5LcmSQUvuS3Jkkkr7ktyiknKZbk25MkipeVIFQToqSByRKhKUpKUSmlJJFDIFPKikgpluTFyZJBSty
+ W5MkgpfcluTJIIX3JblGE6QSvKUpkk5LLcluUUkVMtyW5RSQUy3JblFJJTLcluUUklMtyW5RTpKX3Jbl
+ FJJS+5LcmSSUyDlIOQ08pKSblAlNKYpKUSmlJMkpkHKQcoJJKZ70xcopJKUXJtyUJQkpfcnBUYTpKZSl
+ KZJJTKUpUUklMpSlRSSUylKVFJJTKUpUUkFMpSlRSSUylKVFJJTKUpUUkFM5SlRSlFS5KaUkyCl5Tyop
+ 0VLylKikkplKUqKdJTKUxcmTIqXLkpTJJKX3JbkySSl9yfcoJ0UMtyW5RSQUuXJtyYpkFL7kxckmhNUt
+ uSBShKEFMw5TDkIKQKSku5MXKEpSkpcuTbkyZFTPcluUEkVM9yW5QTpymW5Lcop0lMtyW5RSSUy3Jbky
+ SSl9yW5MmQUvKUpkkFKlLclCaEUMtycOUUkkM9yW5RSRSvKW5MmSSy3JblFJJcuXKMpJQgpUp9yaEklM
+ tyW5RSSUy3Jw5RThJTKUtyikktZSlKinSQvKeVFJJTKU25MmSUy3JSopIJZSmlMkkpfcluTJJJXlPuUE
+ 8ooZhyfchylKSmZcoEpSmSUvKQcop0kstyfcoJ5RUz3JtyilKSWW5NuUUklMtyfcoJJKXLk25MlCSl9y
+ YuShNCSliUpShKEFLgqYKgApBJDPcluUZSlBS5KaUySCmW5PuUEkkMtyaUyZJTKUtyZJOpS+5KUySVKX
+ lKUySCV5SlMkkpfclKZJBS8pbkySSl5SlMkipeUtyZJGlL7ktyikipluTSkmRUvKbcklCKl9yW5NCUJK
+ X3J9yikgpluSlMkgpfcm3JkoQSrcn3KKdJTLclKZJOQvKW5MkkpfcluTJIKX3JbkySSl9yW5Mkkhfclu
+ TJJKX3JbkySCmW5LcopJKZSmlMkkpkCpByGnlJTPcmLlGUySly5NKZJJLIOUg5QSQUk3Ji5RlMkpcuUd
+ yRTQkpkHJw5QhOipnuTblFJFTLcluUUklM9yW5RTIKZFyiXJJklK3JApQlCSmYcpbkMJ5QUz3Jtyikkp
+ fcluUUklMtyW5RTpKZbktyikkpluS3KKSKmW5LcopIqZSlKikkplKUqKSSmW5PuUEklJNyW5QlPKSWUp
+ pTSmlJTIlQLk6iUkLFybcnITbUlKDlMOUIUgElJA5PKGFKUlMiVGUpTIKVKUpkklMpSlRSSUylKVFJBT
+ KUpUUklMpS3KKSSmW5KVFJJTKUtyikkhlKUqKSCmUpSopJKZSmlMnRUuCpBygnlJTPcokppTJKUSoynT
+ QileU4cop0VMtybcmTIpZbk4coQnSUk3JblBKUlMy5RlNKZJTKUtyikkplKaUySCF9yW5MmQUy3J9yik
+ kpfcluTJkEMtyfcoJ0FMtyUpkyeFMpSlRSTlMpSlRSTVMpSlRSQSylKVFJBTKUpTJkkspSlMmSUylKVF
+ OiplKRcoylKKlFybckowipluS3qKeElL7ktyaEySl9ycOUU6CmQcn3KKSCmUppTJJqFbktyZJEKZSlKZ
+ JPCl5SlMkipeUpTJIIZSmlMkgpeUpTJJKXlKUySCl5TyopJIXlMXJJikpW5OHqMJQkpJvTFyikkpfclu
+ TJJJZAqUqCdFTKVElKUyKl5TgqKSSWUqJKSYhFS0pApQlCBUyBTyop01C+5LcmSSUvuSlMkkpUpSklCS
+ l5Tyop0lMtyW5RSSUy3JSopJKZSlKikkplKUqKSSmUpSopJKZSlKikkplKW5RSSUz3JblBJJTPcluUEk
+ lM9yW5QSlJSTcmLlGUxKKQs4qEqRUYSSuHKYeoAJ0lMi5QLk6aEkLSnBTQnhBTIFSBUE6SkgKfchynlJ
+ TIuTFyjKaUlMtybcmSSUvuS3JkklMtyW5RSSUvuS3JkklL7ktyZJJTLcluUUkVL7k+5RSSQvuTFySZJS
+ i5NuShKEFK3KQcownASUzDk+5QSSUy3JpTJJKXlKUySKVSlKSSSl5ThyinSUy3Ji5MmSUuXJtyZJJS+5
+ LcmSSUvuS3JkklL7ktyZJBS+5LcmSSQvuS3JkklL7ktyZJJTLcluUUklM9ybcopIqZbktyikkpfclKZJ
+ BS8pSmSQUvKUpkkkr7k8qKSSmW5PuUE6KmW5LcopIqZbk+5QSRUy3JtyZMkpluS3KKSSmW5LcopIJX3J
+ SmSQUvKeVFOmlS+5LcopIKZbk+5QTpwQy3JblFJOUy3J9ygkgpnuS3KCSSme5LcoSlKSme5LcoSlKSme
+ 5LcoSlKCme5LcoSlKSme5MXKMpJKVuSDkySSmYcn3KCUpKZFygSnTIqWlOCmhKElMw5S3IadJTLcmlMk
+ ipfcluUUklMtyfcoJ0EMtyW5RSSUy3JblFJJTLcluUUklMtyW5RSSUy3JblFJJTLcluUUklMtyW5RSSU
+ y3JblFJJTLcluUUklMtyW5RSSUy3JblFJJTLcluUUklMtyW5RSSUy3JblFJJTLclKikipnKW5RlNKSWR
+ eolyYpoQUrcnDlGE4CSkgcphyEE8pKSFygSmlMUlKlOHKKSCme5PuUEpSUy3JtyZJJS+5LcopJKZbkty
+ ikkpluS3KKSKmW5LcopJKZbktyikkpluS3KKSSmUpblFJFTMOT7lBJC1LlybcmTI2pmHJ96gklaly9RL
+ kkxCNqY7lIOTQnAQtSZrkQFABU9yFqZkoZKRKYlIFSxTJJI2pSdMklal0kySSl0kySSl0kySSl0kySSl
+ 0kySSl0kySSl0kySSl0kySapdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdMkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSl00pJklMklFJFTJJRSSUySTJJKXSTJJKXSTJJKXSTJJKXSTJIKXTpgn
+ SUsknKiUlKlPKgnBSUzCZwUgkQkpqWBVirdoVVySmTFbrVRit1pKTBJIJklKSTJ0lKSTpklLJJ0klLJJ
+ 0ySlJJJJKUkkkkpSSSSSlJJ0klKSSSSUskkkkpZJOkkpScJk4SUooFiOUCxJTVemanemakps1qw1V61Y
+ akpdMpJklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekprlSYo
+ lSYkpssRggsRgkpdMnTJKUnTJ0lKTJ0ySlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUuEikEikpE9VXq09VXpKYBHrQAj1pKbDVNQappKUkkkkpSSSSSlJJJJKWSTpklKSlMmlFTKUp
+ UZTpKXTpgnSUqE8J4ShBSySdMUlLJkimSUpJJOkpSeEgE8JKWSTpIqWSSSSUpJKEoSUpJOkipZMnSSSs
+ knSRUsknSSUslCdJJSySdJBCySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSydJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSTpKWSTpkEqTJ00JKWSTwkgpZJOkipZJOkghSSSdFSkkk6Klkk6ZF
+ CkkkkVLJ0kklLJJ0kkqTJ0kipSSSSapSSSSClJJJIKWSTpJKWSTpoQUpJKE6Klkk6ScpZJOkipZKE6SK
+ loSTpIKWSTpoSUpJKE6Clkk6SClkk6SClkk6SSlkk6SSlkk6SSlkk6SKlkk6SKlJJJJIUkkkkpSSSSCl
+ JJJIKUmTpIKWSTpJKWSTwlCKWKdPCUIqWSTpIqWSShKEUKSTpJKUkkkkpSSSSClJJJIKUknSTULJJ0yc
+ ErJJ0k5KySdJJSySdJJSySdJJSySdJBSySdJJSySdJJSySdJJSySdNCSlJJQnSUslCdJJS0JJ0klLJQn
+ SQUtCUJ0klLQknSSUsknSRUsknSSUsknSSUsknSSUsknSQUsknSSUsknSSUsknSQUpJJJJSkkkklLJ0k
+ klLJJ0kVLJ0kklKTJ0kVLJJ0klLJJ0klKhJOkkhaE0KUJQgpjCSeEoTVMYShShKElMYShShJJTGEoUko
+ QUxTp4ShFSyaFKEoSUxhJShKEVMYShShKEVLJJ0kVLJ0kklKSSSSUpJOkkpZJOkgpZJOmSQsknSRQpJJ
+ JJSySdMguCkkkkkqSSToJWSTpkVKSSSSUpOknSUpJJKElqkkkklLJJ0kkLJJ0klLJJ0kkrJJJIJUkkkg
+ pZOlCScFLJJ0oRUsknSSUsknSSUsknSSUsknSSUsknSSUsknSQUsknSSUslCdJJS0JQnSSUtCSdJBSkk
+ kklLJJ0kFLJJ0klLJJ0kgpZJOknhCySdJJSySdJNKVkk6SClkk6SSlkk6SSlkk6SIUsknSTlLJJ0kVLJ
+ J0klLJQnSQUtCUJ0klLQknSSUsknSSUslCdJBK0JJ0klLJJ0k5CySdJBSySdJJSySdJJSySdJJCySdJJ
+ SySdJJSySdJJSySdJBSySdNCSl0ydJBSySdJJKySdJJSySSdJSyUJ0kFLQknTIqUklCScpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJIKUkkkkpSSdKEFLJJ4ShJSySeEoSUsknhKEVLJJ4ShJSySeEoRUsknhKElLJJ4Sh
+ JSydKEoSSpJKEoSUpKEoTpIWhKE6SSloShOkgpZJKEoSUpJKEoSUpMnShJSySdJBSySdJJSySdJJSySd
+ JJSySdJJSySdJJCySdJJSySdKElKSSSSSpJKEoSUpJKEoRUpKE6SSlkk6UIqWShPCSSloSTpJKWSShJJ
+ SkydJJSySdJJSkydJJSySdJBSySdJJSyUJ0kFLJJ0klLJJ4STghZJOkipZJOkgpZJOkglZJOkgpZJOkk
+ lZJOkkpSSSSKlkk6UIpWShPCeEkMYShShKElMYShShKElMYShShMgpZJPCUJIWSTwlCapaEoTwlCSloS
+ TwlCkClkk8JQkpZJPCUJIWSTwlCSlkk8JIKWSTwlCClkk8JQkhZKE8JJKWhKFJMkpaEoTwlCSVoShOkk
+ pZJPCUIqWSTwkkpZJPCUIqWShPCUJJWhKFJMghZJOkgpZJOkkpSSSSSlJJJJKUknSSUsnSSSUpJJJJSk
+ ydMkpSSSSSlJJJJKUkkkkpSSSSSlkk6aElKSShKElKSShKElKSTwlCSVoShShJJLGEoUoTQkpaEoTwnh
+ JDGEoUoTQkpaEk8JQkpZJPCUIKWSTpQkpZJPCUJKWSTwlCSlkk8JQipZJPCUJKWSTwlCSlkk8JQipZJP
+ CUJIWShPCUJKVCUJ4SQUtCUJ0oSUsknhKElLJJ4ShJS0JQnhKEkrQlCeEoSUsknhKEVLJlKEoSUxShPC
+ UJKWhKE8JQkpaEoTwlCSloShPCUJKWhKE8JQkhaEoTwlCCloShPCUJKWhJPCUJKWShOkipaEoTwlCSlo
+ ShPCUIKWhKE8JQkpaEoTwlCCVoSTwlCSlkk8JQipZJPCUIqWSTwlCSlkoTwlCSloShPCUJKWhKE8JQgp
+ aEoTwlCCloSTwlCClkoTwlCClkk8JJwUsknhJOUsknSQUsknSSUsknSSUsknSQUsknSSUsknSSUsknSh
+ JS0JQnhKElLJJ4SRUslCeEoSUtCUKUJoSUtCSeEoSUsknhKElLJJ4ShJSySSSSFJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSeElLJJ0kkrQlCeE
+ oSUtCUKUJoSUsknhKEFLJJ4ShFS0JQnhKEFLJJ4SSUsknhKElLQlCeEoSUtCUJ4ShJS0JQnhKEVLQlCe
+ EoSUtCUJ4ShFS0JQnhKElLQlCeEoSUsknhJMKlkoTpQgpaEoTwlCSloShPCeElMYShShKElMUk8JQipZ
+ JPCUJKWhKE8JQipaEoTwlCKloShPCUJKWhKE8JQkpaEoTwlCKloShPCUJKWShOkipaEk8JQkpZJOlCRU
+ sknShMUsknhKElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSySeEoSUsmhShJJTGEoUoShJTGEoUoShJTGEo
+ UoShJTGEoUoShJTGEoUoShJTGEoUoShJTGEoUoShJTGEoUoShJTGEoUoShFTGEoUoTwkphCUKcJQkphC
+ eFKEoSUxhKFKEoSUxhKFKEoSUxhKFKEoQUtCdJJJSoUSFNKElIyEgFOE0JKXanKZM4pKQWlVHFHtKrEp
+ KSsVutU61crSUmATEKQTFJTGEk6SSlJJJklLpkkklKSSSSUskkkkpSSSSSlJJJJKXSTJ0lKSSSSUskkk
+ kpSSSSSlKSipJKWKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJk6ZJSkySdJSySSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0uvS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekprlSYolSYkpssRggsRgkpdMnTJKUnTJ0lKTJ0ySlim
+ KcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEikEikpE9VXq09VXpKYBHrQAj1p
+ KbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUslCdOkpjCeEkxKKmQThD3Jb0FJZTygeol6iSk0piUL1E3qJ
+ KSEppQ96bekpLKcFB3p/URUnBToAsT+okpNKYlC9RN6iSk0pSg+ol6iSkySD6iXqJKTJIPqJeoipMkg+
+ ol6iSkySD6iXqJKTJIXqJeokpKkheol6iSkiUoXqJb0FJZSlC3pb0lJZSlC3pb0lJZSlC3pb0lJZSlC3
+ pb0lJZSlC3pb0lJZSlC3pb0lJZSlC3pb0lJpSlB9RL1ElJpSlB9RL1ElJpSlB9RL1ElJpSlB9RL1ElJp
+ SlB9RL1ElJpSlB9RL1ElJpSlB9RL1ElJpSlB9RLekpMlKFvTb0kpkyFvS9RBSVMh7029K1JUpQt6XqJW
+ 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
+ heol6iVqSpIXqJeolakqSF6iXqJcSkqSF6iXqJWpKkheol6iKkqSF6iXqJKSpIXqJeokpKkheol6iSkq
+ SF6iXqJKSpIXqJeokpKkheol6iSkqSF6iXqJKTJIPqJeokpMkg+ol6iSkySD6iXqJKTJIPqJeokpMkg+
+ ol6iSkySD6iXqJKTJIPqJeokpKlKF6iY2JKTSlKB6iXqIqTylKB6iXqJKTylKB6iXqJKTylKB6iXqJKT
+ ylKB6iXqJKTylKB6iXqJKTylKB6ib1EFJ5TSg+om9RJTYBUpVYWKQsSUnlNKD6iXqJKSkobyol6G56Sk
+ dhQCiPcgkpKTVlXKyqDHKwx6Sm6HJSq4sS9RJTYlKUEPUg5JTNJRlKUlLpJk6SlJJJJKXTJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpdMkkkpSSSSSlKSipJKWKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKZJk6ZJSySSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSn/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekprlSYolSYkpssRggsRgkpd
+ MnTJKUnTJ0lKTJ0ySlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEikEikp
+ E9VXq09VXpKYBHrQAj1pKbDVNQappKUkkkkpSSSSSlJJJJKWSTpklKSJTKJKSly5Cc9JxQXuSUyNiGbU
+ J7kFz0lNk3JvWVMvTb0lN31kvVVLenD0lN31UvVVTelvSU2vVS9VVN6YvRU2/WS9ZUt6W9JTe9ZL1lR3
+ p96Sm76yXrKnvS3pKbnrJesqe9Lekpuesl6yp70t6Sm76qXrKlvT70lNz1kvWVPelvRU3PWS9ZU96W9J
+ Tc9ZL1lT3pb0lNz1UvVVPelvQU3PVS9VU96W9BTc9VL1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9V
+ L1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT
+ 3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPen3oqbnqpvVVTelvSS2/VS9VU96W9
+ BTc9VN6qqb0t6CG36qXqqnvS3pKbnqpeqqm9Lekpueql6qp70t6Sm56qf1VT3pb0VNv1UvWVPelvRU2/
+ WS9ZU96W9FTc9ZL1lT3pb0lNz1kvWVPelvSU3PWS9ZU96W9JTc9ZL1lT3pb01Tc9ZL1lT3pb0FNz1kvW
+ VPelvQU3fWS9VUt6fekpueql6qp70t6Sm56qXqqnvS3oqbnqpeqqe9LeiFNz1UvVVPelvTlNz1UvVVPe
+ lvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvQU3PVS9VU96W9BTc9VL1VT3pb0FNz1UvVVPelvSU
+ 3PVS9VU96W9JTc9VL1VT3pb0VNz1UvVVPelvSU3PVS9VU96W9FTc9VL1VT3pb0UNz1UvVVPelvSU3PVS
+ 9VU96W9NU3PVS9VVN6W9BTc9VL1VT3pb0FNz1UvVVPelvSU3PWS9ZU96W9JLc9VL1lT3pb0VNv1UvVVP
+ elvRU3PVS9VU96W9FTc9VL1VT3pb0kNz1UvVVPen3pKbnqpeqqe9Lekpueqm9VVN6W9BTc9VL1VT3pb0
+ FNz1U3qqpvTb0Qpueqm9ZVN6benJbnrJesqe9Lekpuesl6yp70t6Sm56yXrKnvS3oKbnrJesqe9Lekpu
+ esl6yp70t6Sm56yXrKnvS3pKbvqpeqqe9Lekpueql6qp70t6Cm56qXqqnvS3pKbnqpeqqe9Lekpueql6
+ qp70t6Cm56qXqqnvS3pKbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3oqbnqpeqqe9Lekpueql6qp70
+ t6Sm56qXqqnvS3pKbnqpeqqe9Legpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Lekpueql6qp70t6Sm
+ 56qXqqnvS3pKbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Leipueql6qp70t6Sm56qb
+ 1VU3pb0lNv1k3rKoXpt6apuesl6yp70t6Sm56yXrKnvS3pKbnrJesqe9Lekpuesl6yp70+9FTc9ZL1lT
+ 3pb0lNz1kvWVPelvSU3fWS9ZUt6fekpu+sl6ypb0t6Sm56yXrKnvTb0lNz1kvWVPem3pKbvrJesqW9Le
+ kpuesl6yp70t6Km76yXqqnvS3pKbnrJ/VVLen3pKbnqpeqqe9Leigtv1UvVVPelvSWtz1UvVVPelvSU3
+ PVS9VU96W9NXNz1UvVVPelvQXNz1UvVVPen3oKbnqpeqqe9Lekpueql6qp70t6Km56qXqqnvS3oqbnrJ
+ esqW9LenIbvqpesqW9Lekhu+sl6ypb0t6Sm76yb1lT3pb0lNz1kvWVPelvTUtz1kvWVPelvQS3PWS9ZU
+ t6W9JTd9ZL1lT3pb04KbnrJesqe9Leihuesl6yp70t6Sm56yXrKnvS3oKbnrJesqe9Lekpuesl6yp70t
+ 6Sm56yXrKnvS3oKbnrJesqe9Lekpuesl6yp70t6Sm56yXrKnvS3pKbnrJesqe9Lekpuesl6yp70t6Sm5
+ 6yXrKnvS3pKbnrJesqe9Leipuesl6yp70t6Sm56yXrKnvS3pKbnrJesqe9LenhDc9ZL1lT3pb0ipuesl
+ 6yp70t6jKW56yXrKnvS3pqm56yXrKnvS3oKbnrJesqe9Leipuesl6yp70t6eFNz1kvWVPelvTlNz1kvW
+ VLelvRU3fWS9ZUt6W9BTd9ZN6yp70t6aVN31kvWVLelvQU3fWS9ZUt6W9BTd9ZL1lS3pb0Qlu+sm9ZU9
+ 6W9FTd9ZL1VS3p96Sm76qXqqnvS3pIbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Lek
+ hueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3oKbnqpeqqe9Lekpueq
+ l6qp70t6SW56qXqqnvS3pKbnqpeqqe9Legpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Lekpueql6qp
+ 70t6Km56qXqqnvS3oqbnqpeqqe9Leipueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Legpueql6qp70t6
+ Cm56qXqqnvS3oKbnqpeqqe9Legpueql6qp70t6Sm56qXqqnvS3pym56qXqqnvS3pKbnqpeqqe9LenKbn
+ qpeqqe9Lekpuesl6qp7029JLd9VL1VS3pb0FN31UvVVLelvSQ3fVS9VUt6W9JTd9VL1VS3pb0lN31UvV
+ VLelvSU3fVS9VUt6W9JTd9VL1VS3pb0lN31UvVVLelvSU3fVS9VUt6W9BTd9VL1VS3pb0lN31UvVVLel
+ vSU3fVS9VUt6W9JTd9VL1VS3pb0kN31UvVVLelvSU3fVTesqe9Lekpuesl6ypb0t6SW76yXrKlvS3pKb
+ vrJesqe9Lekpuesl6yp70t6Sm56yXrKnvS3oqbnrJesqe9Lekpuesl6yp70t6Sm56yXrKnvS3pKbnrJe
+ sqe9Lekpuesl6yp70t6Sm56yXrKnvS3pKbnrJesqe9Lekpuesl6yp70t6Cm56yXrKnvS3pKbnrJesqe9
+ Lekpuesl6yp70t6cpuesl6yp70t6Km56yXrKnvTb0FN31kvWVLen3oKbnqpeqqe9Legpuesl6yp7029B
+ Ld9ZL1lT3pb0lNz1UvVVLen3oqbvrJesqW9Leipu+sl6qpb0t6Km76yXrKlvS3pKbvrJesqW9Lekpu+s
+ l6ypb0t6CG76yXrKlvS3oKbvrJeqqW9Legpu+ql6qpb0t6Sm76qXqqlvS3pwU3fVS9VUt6W9FTd9VL1V
+ S3pb0kN31UvVVLelvSU3fVS9VUt6W9BTd9VL1VS3pb0lN31UvVVLelvSU3fVS9VUt6W9JTd9VL1VS3pb
+ 0lN31UvVVLelvSU3fVS9VUt6W9JTd9VL1lS3pb0lN31kvWVLelvSU3fWS9VUt6W9JTd9VL1VS3pb0kt3
+ 1UvVVPelvSQ3fWS9ZU96W9BTc9ZN6qqb029JTc9VL1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1
+ VT3pt6Sm56yXrKnvS3pKbnrJesqe9Lekpuesl6yp70t6Sm56yXrKnvS3pKbnrJ/VVLen3pKbnqpeqqe9
+ Leipueql6qp70t6Cm56qf1VS3p96Sm56qXqqnvS3pKbfqpeqqe9Leklueql6qp70t6SW56qXqqnvS3pK
+ bnqpeqqe9Lekhueql6qp70t6Sm56qXqqnvS3pKbnrJesqe9Lekpuesl6yp70t6Sm56qXqqnvS3pKbnqp
+ eqqe9Lekpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Leipueql6qp70t6Sm56qXqqnvS3pIbnqpesqe
+ 9Lekpuesl6ypb0t6CW76yXrKlvS3pKbvrJesqW9Lekpu+sl6ypb0t6Sm76yXrKlvS3pKbvrJesqW9Lek
+ pu+sl6ypb0t6Km76yXrKlvT70lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvSU3PV
+ S9VU96W9JTc9VL1VT3pb0VNz1UvVVPelvSU3PVS9ZU96W9JDc9VL1VT3pb0FNz1UvVVPelvSU3PVS9VU
+ 96W9FTc9VL1lT3pb0lNz1kvWVPelvSU3PWS9ZU96W9BTc9ZL1lT3pb0ktz1UvVVPelvQU3PVS9VU96W9
+ JTc9VL1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0FNz1UvVVPelvSU3PVS9VU96W9JTc9
+ VL1VT3pb0VNz1UvVVPelvRU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvQU3PVS9VU96W9JTc9VL1V
+ T3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb
+ 0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1lT3pb0lNv1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz
+ 1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvV
+ VPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1U/rKlvS
+ 3pKbvqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3pKb
+ nqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3pKbnqpeqqe9Lekpueql6qp70t6Sm56qXqqnvS3oqbnqpe
+ qqe9Lekpueql6qp70t6Sm56qXqqnvS3pKbnrJ/WVLelvStTd9ZL1lS3pb0rU3fWS9ZUt6W9K1N31kvWV
+ LelvStTc9VL1VT3pb0FNz1UvVVPelvSU3PVS9VU96W9JTc9VL1VT3pb0lNz1kvWVPelvSU3fWTeqqe9L
+ ekpueql6qp70t6FKbnqpeqqe9LelSm56qXqqnvS3pUpueql6qp70t6VKbnqpeqqe9LelSm56qXqqnvS3
+ pUpuesl6qpb0t6cpu+sl6qpb0t6Sm76qXqqlvS3pKbvqpeqqW9Lekpu+ql6qpb0t6Sm76qXqqlvS3pKb
+ vqpeqqW9Lekpu+ql6ypb0t6Sm76yXrKlvS3pKbvrJesqW9Lekpu+sl6ypb0t6Sm76yXrKlvS3pKbvrJe
+ sqW9Lekpu+sl6ypb0t6Sm76yXrKlvS3pKbvrJvVVPelvSU3PVS9VVN6W9FTb9VL1VU3pt6Sm56qXqqnv
+ S3pKbnqpvVVTelvSU2/VS9VVN6bekpueql6qp70t6Sm56qXqqnvS3oKbnqpeqqm9PuSU2vVT+qqm9NvS
+ U3fVT+qqQepB6Sm36iYvVcOT7klMnOQi5IlDJSUlD0QWKrKfckpt+qnFqp704ekpvtsRmvVBjlYY5JTb
+ BUwgsKKElMkkkklKTpk6SlJJJJKUknSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlKSipJKWKBYjlAsSU1X
+ pmp3pmpKbNasNVetWGpKXTJ0klLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklLhIpBIpKRPVV6tPVV6SmAR60AI9aSmw1TUGqaSlJJJJKUkkkkpSSSSS
+ lJkkklLFRIU0xCSkLggPCtlqE5iSmk9qC5qvOrQzUkpolibarppTeikpp7U4arfopekiprbUtqtekl6S
+ SmoWpi1W/SS9JJTSLUtiueil6KSmnsT7Vc9FL0UlNPaltVz0UvSSU1NqW1W/RS9JJTU2pbVb9JL0klNT
+ an2q36SXpJKam1LarfpJekkpqbUtqt+kl6KSmptS2q36KXpJKam1PtVv0kvSSU1NqW1W/SS9JBTU2pbV
+ b9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL
+ 0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klN
+ TaltVv0kvSRU1NqbarfpJeknKam1LarfpJekgpqbUtqt+kl6SCmptS2q36KXooKam1Larfopekmqam1L
+ arfpJekipqbUtqt+kl6SSmptS2q36SXpJKae1LarfpJekipqbUtqt+kl6SKmptS2q36SXpJKam1Larfp
+ JekkhqbUtqt+kl6SCmptS2q36SXpIKam1LarfpJekgpqbU+1WvST+kkpqbUtqt+kl6SSWptS2q36SXpI
+ qam1LarfpJeknKam1LarfpJekipqbUtqt+kl6SSmptS2q36SXpJKam1LarfpJekkpqbUtqt+kl6SCmpt
+ S2q36SXpIKam1LarfpJekgpqbUtqt+kl6SSmptS2q36SXpIqam1LarfpJekipqbUtqt+kl6SSmptT7Va
+ 9JL0kVNXalsVv0k/pIqaexLarfopekkpqbUtqt+kl6SapqbUtqt+km9JNU1dqbarfpJekgpqbUtqt+kl
+ 6SSmptS2q36Sb0klNXaltVr0kvSSU1dqW1W/SS9JFTU2pbVb9JL0k5TU2pbVb9JL0klNTan2q16SXpJK
+ au1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJqmptTbVc9JN6SKmptTbVc9JL0kVNTaltVv0kvSSU1Nq
+ W1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kFNTaltVv0kvSSU1NqW1W/
+ SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kFNTaltVv0kvSSU1NqW1W/SS9J
+ JTU2pbVb9JL0kVNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kFNTaltVv0kvSSU1NqW1W/SS9JJTU2
+ pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/ST+kkpp7Utqu
+ ekl6SSmntS2q36SXpIqam1LarfpJekkpqbUtqt+kl6SSmntTbFd9JN6SapqbEtit+kn9JJTT2JbFc9JL
+ 0UlNPYlsVz0UvSRU1NiWxXPSS9JFTT2JbFc9JL0klNPalsVz0kvSSU09iW1XPSTekkpqbU21W/SS9JBT
+ U2ptqueil6SSmntS2q36SXpJKam1LarfpJeikpqbUtqt+in9JJTU2JbVc9JL0kVNTan2K36SXopKamxN
+ tVz0kjUigtLaltVv0kvSRWtTaltVv0kvSQKmptS2q36SXpJq5qbU+1WvST+kguam1LarfpJeiglqbUtq
+ t+il6SSmptS2q36SXpIqam1LarfpJekiFNPaltVz0UvSTgtae1LYrnpJekipp7Etiuekm9JJDU2JbFb9
+ JL0kktTYlsVv0kvSTVNTam2q56SXpJqWntS2q56SXpIJam1LarfpJeknBDU2pbVb9JL0k5DU2pbVb9JL
+ 0klNTaltVv0kvSQU1NqW1W/SS9JJTU2pbVb9JL0kFNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klN
+ TaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kVNTaltVv0kvSRU1NqW1W/SS9JJTU2pbVb9JL0klNTalt
+ Vv0kvSRCmpsS2q36SXpJ4Q1NqW1W/SS9JAqam1LarfpJekoilqbUtqt+kl6SYpqbUtqt+kl6SSmptS2q
+ 36SXpIhTU2pbVb9JL0lIFNTYlsVv0kvSTlNPaltVz0UvRRU09qWxXPRS9FAqae1LarnopvSUZU1NqW1X
+ PRS9FBTT2pbVc9FL0UFNPaltVz0UvRRCmnsS2K56KXop6WnsT7Vb9JL0kCpq7Utqt+kl6SCGptS2q36S
+ XpJKam1LarfpJekkpqbUtqt+kl6SKmptS2q36SXpJIam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJK
+ am1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpIKam1LarfpJekklqbUtqt+kl6SSmptS2q36SXpJKam1L
+ arfpJekgpqbUtqt+kl6SCmptS2q36SXpJKam1LarfpJekiFNTaltVv0kvSTlNTaltVv0kvSTlNTaltVv
+ 0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kFNTaltVv0kvSTVNTaltVv0kvSQU1NqW1W/SS9JBTU2pbVb9JL0
+ klNTaltVv0kvSRU1NqW1W/SS9JEKam1LarfpJeknKam1LarfpJekipqbU21XPSS9FBLT2pbVc9FL0kFN
+ PaltVz0UvRSQ09qW1XPRS9FJTT2pbVc9FL0UlNPaltVz0UvRSU09qW1XPRS9FJTT2pbVc9FL0UlNPalt
+ Vz0UvRSU09qW1XPRS9FJTT2pbVc9FL0UlNPaltVz0UvRSU09qW1XPRS9FJTT2pbVc9FL0UlNPYlsVz0U
+ vRSQ09iW1XPSTekkpqbEtit+kl6SSWpsS2K36SXpJKamxLYrfpJekkpqbEtit+kl6SSmpsS2K36SXpJK
+ amxNtVz0kvSSU09qW1XPSS9JJTT2p9qt+kl6SCmptS2q36SXpJKam1LarfpJekipqbUtqt+kl6SSmptS
+ 2q36SXpJKam1LarfpJekkpqbEtit+kl6SSmpsS2K36SXpJKam1LarfpJekipqbUtqt+kl6SSmptTbVc9
+ JL0klNPan2q36KXpJqmptS2q36SXpJJam1NtVz0kvSQU1NqW1W/SS9JFTT2p9qt+kl6SSmptS2q36SXp
+ JymptS2q36SXpIqam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpIIam1LarfpJekgpqbUtqt+kl6SCGp
+ tS2q36SXpJKam1LarfpJekilqbUtqt+kl6SSmptS2q36SXpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q
+ 36SXpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q36SX
+ pJKam1LarfpJekgpqbUtqt+kl6SSmptS2q36SXpJKam1PtVr0k/pJKau1LarfpJekipqbU21XPSTekkp
+ qbUtqt+kl6SSmptS2q36SXpJKam1LarfpJeigpqbU21XPRTekkpqbUtqt+kl6SKmptS2q36Sf0klNPal
+ tVz0kvSSU09qfarfpJeigpqbUtqt+il6KSmptS2q36KXpJKam1PtVr0k/pIqam1LarfpJekkpqbUtqt+
+ kl6SSmntS2q36SXpIJam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJIam1LarfpJekkpqbUtqt+kl6S
+ SmptS2q36SXpIqam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJKam1LarfpJekgpqbUtqt+kl6SSmpt
+ S2q36SXpJKam1LarfpJekkpp7Utquekl6SKGntS2q56Sb0klNTaltVv0kvRQS1NqW1W/RS9FJTU2pbVb
+ 9FL0UlNTaltVv0UvRSU1NqW1W/RS9FFTU2pbVb9FL0UlNTaltVv0UvRSQ1NqW1W/RS9JJTU2p9qtekn9
+ JJTU2ptquekl6SSmntT7Vb9JL0kktTaltVv0kvSRU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1
+ NqW1W/SS9JJDU2pbVb9JL0kFNTaltVv0kvSRU1NqW1W/SS9JJTU2pbVb9JL0kVNTaltVv0kvSSU1NqW1
+ W/SS9JBTU2pbVb9JL0klNPan2q36SXpJqmptTbVc9JL0kktPaltVz0kvSQU09qW1XPSS9JJTT2pbVc9J
+ L0klNTaltVv0kvSRU1NqW1W/SS9JJTT2pbVc9JL0klNPan2q16Sf0klNTaltVv0kvSSU1NqW1W/SS9JJ
+ TU2pbVb9JL0klNTaltVv0kvSRU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2p
+ bVb9JL0klNTaltVv0kvSQU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2ptque
+ kl6SSmntS2q56SXpJKae1LarnpJekipp7Utquekl6SSmntS2q56SXpJKae1LarnpJekkpp7Utquekl6S
+ SmntS2q56SXpJKae1LarnpJvSSU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2
+ pbVb9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kFNXaltVv0kvSSU1NqW1W/SS9JJTU2pbVb
+ 9JL0klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0klNTaltVv0kvSRU1NqW1W/SS9JJTU2pbVb9JL0
+ klNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kFNTaltVv0kvSSU1NqW1W/SS9JJTU2pbVb9JL0kVNT
+ altVv0kvSUZKmptS2q36SXpJlqam1LarfpJekjamptTbVc9JL0kbU09qW1W/ST+kjamptS2q36SXpJWp
+ qbUtqt+kl6SNqam1LarfpJeknKam1LarfpJekkpqbUtqt+kl6ScpqbUtqt+kl6SNKam1LarfpJekjSmn
+ tT7Vb9JL0kaU1NqW1W/SS9JKlNPan2q36SXpI0pqbU21XPSTekgQpqbUtqt+kl6SjKmptS2q36SXpJKa
+ m1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJKam1LarfpJekkpqbUtqt+kl6SSmptS2q36SXpJKam1La
+ rfopeikpqbUtqt+il6KSmptS2q36KXopKam1LarfopeikpqbUtqt+il6KSmptS2q36KXopKam1Larfop
+ eikpqbUtqt+kl6SSmrtS2q16Sb0kVNbam2q16SXpJKau1LarXpJekkpq7Utqtekl6SSmrtTbVb9JN6SS
+ mrtS2q16SXpJKau1LarXpJekgprbU+1WfSS9NJTW2ptqt+kl6SSmqGqQarIqTipJSANShWPTUSxJTXIQ
+ yFYc1DLUlIoS2ooYpitJTX2pw1WfSTipJSNjVYYEm1o7WJKZMCKFFoUwkpdJJJJSk6ZOkpSSSSSl0kyS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpScJk6SlFAsRygWJKar1Fqk9RakptVqw1Vq1YakpkmTpklLJJJJ
+ KXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklP//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGC
+ Sl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SKQS
+ KSkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSk6ilKSl4TEJSnlJTDYm9NFCc
+ BJSH0k3pKxCUJKa/pJvTVmFEhFSD003po5CaElIfTS9NGhOAkpD6Sf0kcBPCSmv6Sb0lZhNCSmv6aXpK
+ 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
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJT//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGC
+ Sl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SKQS
+ KSkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZOmSUsUyklCSmCkE8JQkpQUgVFOkp
+ lKUppSlJS6YpJIqYlMpJklLJwUySSmQKlKhKeUlMpTSmlJJS6UpkklLpJkpSUvKUpkklKlJMlKSl5SlN
+ KUpKXSlMkkheUkySCl5Tyop0UrylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJSpSl
+ MkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeU0pJIhSpSlMknpXlOmSQQukkkgpSSZJ
+ NKl0kySapdKUySSl5TSkkgpSeUySKl0kySSl5STJJKXSTJIqXlKUySCF5SlMkkpeUpTJJKXSlMkgpeUp
+ TJIqXSTJJJXSTJIqXlJMkiFLpJkk5S6UpkkVLykmSQUukmSSUvKSZJBS6SZJBS6SZJJS6SZJJS6SZJJS
+ 6SZJFS6SZJJS6UpkkVLpSmToqVKUpkklMpTSkkgpUpJJJpUpJJJNUpJJJJSkkkklKSSSSUpJKUyKF5Sl
+ MkildJMkipdKUkklKlJJJJS6SZJBS6UpkklLymSSSUpJMkkpdJMkkpdJJJJSkkkklKSTJJKXSTJJKXST
+ JJKXSlJMkpeUpTJJKXSlMkkpdKUySSl5TSkkkpdMkkkpdKUySSl5STJJKXTpkklLpJkklLpJk6SlJJJI
+ KUkkmSUukmSQUukmTykpSSUpSkpSSZJJS6SUpSkpSSUpSkpSSZJJS8pJkkVLpJkkVLpJkklLpJkklKSS
+ STUqSSSQUukkkipSSSScpSSZJFSkkkySlSlKSSSlJSmTpKXSTJJql0kkkFKSSSSUpJJJJS8pSmSSUvKU
+ qKUpymUpSoylKSmUppTSlKKCumSSRWqTpkkFLpJJJpXLpJk6aUqSSSQSpJJJJSkkkkVKSSSTgpdJMlKe
+ hdMlKSKFJJJJKUklKUoFKkk0pIFS6SZKUwpXSlMkgpUpSkmTggrpJkk5C6UpkkFLylKZJJS6SZJBS6SZ
+ JJS8pSmSQUvKUppSlJS8pSmSSUvKUpkkVLpSmSRUvKUpkpRUvKUppSRUulKZJJS6SZJJS6SZJFS8pSmS
+ RQvKUpkkCpdKUySiKV5SlMkmqXlKUySCl5SlMkiFLpJk6mClJJJkVLpJJklLpSmSQKl0kySjKl0pTSlK
+ apdJMkkpdKUySISvKUpJlKFLylKSSaVKlKUySaheUpTJJKXSlJMkpeUpTJIqXlKUySSF5SlMkipeUpTJ
+ JKXlJMkkpdJMkkpeUpTJJKXSTJJKXSTSkgldKUySCl5STJJKXlKUySSl0kkkCpSSSSapSSSScFKSSSTg
+ pSSSScpUpJJIqUkkkkpSSSSClJJJJpUpJJJNUpJJJBSkkkklKSSSRUpJJJOClJJJJylJJJJKVKeUySSV
+ 5SlMkkpeUpTJJIXlKUySSl5SlMkkpeUk0pIKXlKUySSl5TSkmSUukmSlJS6UppSSUvKUppSlJS8pSmlK
+ UlLylKaUpSUvKSaUpSUulKZJFC6UpkpSSylKU0pJJXlKUySSF5SlMkkpdKUySSl0pTJIKXlKUySSl5Sl
+ MkgpeUySSSlJJJJKUlKZJJS8pJkkVLpSmSRUvKSZJJS8pJkklLpJkkkspSTJJIXSTSlKSl0k0pSgpdJN
+ KUpqV0k0pSkpdJNKUpKXSTJJKXSTJIqZJJkk5S6ZJJFS6SZJJS6SZJJC6SZJJS6SZJBS6SZJBC6SZJBS
+ 6SZJBS6SZJJK6SZJJS6SZJFS6SZJJS6SZJFS6SZJJS6ZJJJSkkkklKTpkklLpJkklLpJkklLpJkkFLpJ
+ kklLpJkkkLpikmSSpJJJJSkkkklKSSSSUpJJJJSk6ZJJS6SZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJklL
+ pJkklLpSmSSUukmSSUukmSSUukmlPKKVJJJklLpJk6ClJJJJIVKUpkkVLpJJJKUklKUpKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSCFJJJJKUkkkilSSSUpKUkkkkpSSSSSlJJSlKSFJJSkkpSSS
+ SSlJJSlKSlJJJIqUkkkipSSSSSlJJJSkpSSSSSVJJJJKUkkkkpSSSSSlJJJJIUkkkkpSSSSSlJJJIqUk
+ kkkpSSSSSlJJJIKUkkkmlSkkkpQSpJKUkFKlKUySSl0kydJSkkySKl0kydOUpJJJJSkkkkFKSSSSUpJJ
+ JJSkkkklKSSSRUpJJJJSkkpSlJSkkpSlJSkkpSlJSkkkklKSSSSUpJJJJSkkkklKSSSlJSkkpSlJSkkp
+ TIKUkkkklSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJkklLpJkklLpJkklLpJkklLpJkklLp
+ JkklLpJkklLp1FOkhdKUkyKl5SlMkkpdJJJJSkkkklKSSSlJSkkpSlJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkkFKSSSSUpJJJJSkkkyeFLylKZJFS8pSmSSUvKSZJJS6SSUoKUkkkgpSSSSSlJJJJKUk
+ kkgpSSSSClJJJIKUkkkgpSSSSSlJJJJKUkkkgpSSSSQUpJMknqXSTJJKXSTJJKXSTJJKXSTJJKXSTJJK
+ XSTJJKXSTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5STJSkpdJNKUoqXS
+ TSlKSmSSjKUpKZJKMp5SUukmlKUlLpJpSlJS6SaUpQUumSSSUulKaUxKSmUppUCUgUlM1FwUgnISU0rQ
+ qxCuWhVXDVJTKtXK1TrVytJScJikCmJSUpJNKdJSkydJJSySdMkpSSSSSlkkkklKSSSSUpJJJJSkk6SS
+ lk6SSSlJk6ZJSkkkklKTpk6SlFV7FYKr2JKar0zU70zUlNmtWGqvWrDUlLpk6ZJSkkydJS6dMkkpSSdM
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSn//1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekprlSYolSYkpssRggsRgkpdMnTJKUnT
+ J0lKTJ0ySlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEikEklInqq9Wnqq
+ 9JTAI9aCEdiSk7VNRapJKUkknSUsknSSUsknTJKWSTpklLp0ySSl0ySSSlkkkklKTpkkVLpJJJKUknSS
+ QxTKUJkkrJ0ydJC4TwkE6CmJTEqRUClalSlKipBJK4TpwFKEVIymlSIQykpeU4UFII0pmAlCcBThBNI4
+ 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
+ UpSmShFK8pJQlCSVJSlCaEFUvKdRTgJJpdJPCYhJVMZSlMUggqmUp0wToWhSZPCaEbQukmhJK1LykmSh
+ G1LpJkoRUukmhKEUrpJoSRpS8pJoShKlLpJkkFUukmSQUukmhJJC6SZJJSkkkklKTpoSSUukmSSUpOlC
+ UJJWlKUoTJUleUpTJwhSl0kk6VKUkklCFIUmUoShJDFMpEKMJWq1SnTQnhC0WpJKEycFwVKUpJJ1JUlK
+ SSFIUkkkkpUp0ySCF0pTJJKXlJMkkpdNKSSFqtUpSmSStTJJME6VqUklCaErUuklCeErUsknhMUrStKa
+ UimhFS8pSmhKEEspSlMkipdJMnhGkKSShJKlWpJJJClKSSShKlKSShKElKSShJJSkkkklKSSSSpSkkkk
+ qVakkkklWpJJJJVqSSSSVakkkkqVakkkkaVakkkoSpVqSShNCCmQTqICmAgpUJoUkxSUsmSKZK1LpJQl
+ CVqWSlIhRKVqXlPKgnCVqZSlKiklamUpSmhPCSl0koShFSkkoTQkhdJNCeElLJJQlCSlJJQnhFSyeU0J
+ QlSl5SlNCUJUpdJKEoTTKlKSSShN41WpOklCXGpSSeExCQmpjKaU5UVKNVMpSlRCkESErpJJKGUqUpJM
+ kmcal0ySZPElLpJkkVLpJkkaUulKZJGlMkkySXCpdMkklwqXlKUySXCheUySSVKUkkkglSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipZJOkkp
+ ZOkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKXSSSSUoqJTpklMU4TwkAkpm1OSmCZxSUgtVRys2FVnJKZs
+ VqtVGK0xJSYJFJJJSydMnSUukmSSUpJJMkpdJMkkpSSSSSlJJJJKUkkkkpdJMkkpdJJJJSkySSSlJJJJ
+ KUnTJ0lKKr2I5QLElNV6Zqd6i1JTarVhqrVqw1JTJMkmSUpJJJJS8pSopIKZSlKinSUvKdMkkhdJMnSU
+ pJJJJKkk6SSlkkkklKSSSSUpJPCUJIWSTpkkWpJJJJFqSSSSVakkkklWpJJJJNqSSSSTakkkkVykkkkU
+ 0pJJJJFKSSSSUpJJJJCkkkkEKSSTJKXTJJJJXTpgnSUqEykmKSaWSSTJJpdJMnSVSk6ZOkilJJ0klUtC
+ ZSTJIWSSTJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSU//9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0
+ ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV
+ 6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSlJk6ZBSkkkkVKSSSRUukkkihd
+ JMnSUskkkkpZJJMgpkCnlRTpqlFMQpQlCSmEKQCeE4SUyATkJgU8opYOCEQjFCcipgpAqBTbk5LYaVMF
+ Vw9SD0qSmlRJQ96W9GlJEyHvS3pcJWpEkPelvS4SpIkh70t6XCVJEkPelvS4SpIkh70t6XCVJEkPelvS
+ 4SpIkh70t6XCVJEkPelvS4SpIkh70t6XCVJEkPelvS4SpIkh70t6XCVJEkPelvS4SpIkh70t6XCVJEkP
+ elvS4SpIkh70t6XCUJE8oW9N6iXCVwTpIIsUg9DhK5JCaE29MXhKipeE6GXqPqJcJUmSQfVTixDhKEsJ
+ Qob0t6XCUM08oW9MXpcJQlJUSUIvTb0uEqSynBQd6kHpcJUmSQt6W9HhKkqSFvS3pcJUlSQt6W9Gim0q
+ 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
+ 6W9AxKkgUpQd6W9M4SlMXKJchl6iXpcJUllOCg71IPS4SpMFKEIPT+olwlTMhDISNgUC9LhKl4ThQ3pw
+ 9LhKmcJ4UN6W9LhKmcJ0Pen3o8JUkTKG9LelwlTNJQ3pb0eEoZpKG9LelwlTNJQ3pb0eEqZpKG9Lelwl
+ TNJQ3pb0aUzSUN6W9KlJEkLem9RQygUJkyF6iXqKPgKkqUoO9PvS4CpNKRKEHpb0hApZlRTbk25WYhTI
+ KYQtykHJxCUiYpg5KVUnEpWKZIlNKYIlC6SZOpAFKSSSUgUpJJJOUpJJJOUpJJJG1KSSSStSkkkkLQpJ
+ JJK1KTpJJqVJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKUnTJ0lLJJJklKThMnCSmSi5SC
+ i5JTWsVcqxYq5SUyYrTFVYrTElJQnTBJJS6SZOkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ 6SSSSlkkkklKSSSSUpOmTpKWKBYjlAsSU1XqLU70zUlNmtWGqvWjhJTJMkmSUpOmSCSl4ShOE6CloShO
+ kkpUJQnSSQqEoTpJKVCUJJJJVCUJ0kkrQlCSSSlQlCSSSFQlCSSSCqEoSSSWkKhMnSSW0qE0J0klUskn
+ SSUskkkkmlJJJ0lwWShJJELwqEoSSRXKSSSSQVJJJJIUknSSQslCdJJCyUJ0klLQlCdJBSydJNKS5SYp
+ SmlJKkySZJK6dMkkpknTBOkpdOmSSQpMU6ZJCxTJ0kkKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/R69JJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ sUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJ
+ JJKUkkkkpSZOmQUpJJJFSk6ZOipSSSSKFJJJJKUkkkgpZJJJJS4UgFEKQKapeEilKYlJSxKaUioFJTPc
+ nlDUwilclDcVMoTzCcpG90IJshRtfCo23wilveul9oWQ/KhCOYil3PtCX2hYX23zS+2J8Qp3PtCX2hYf
+ 2xN9sVmMLWu59oT/AGhYX2tP9rTvbCnc+0JfaFh/a0vtaXtqdz7Ql9oWH9rS+1pe2p3PtCX2hYf2tL7W
+ l7anc+0JfaFh/a0vtaXtqdz7Ql9oWH9rS+1pe2p3PtCX2hYf2tL7Wl7anc+0JfaFh/a0vtaXtqdz7Ql9
+ oWH9rS+1pe2p3PtCX2hYf2tL7Wl7anc+0JfaFh/a0vtaXtqdz7Ql9oWH9rS+1pe2p3PtCX2hYf2tL7Wl
+ 7anc+0JfaFh/bEvtiHthTtnITHIWJ9rS+1ojGFO2MhTGSsEZakMtE4lW732lMclYn2zzTHLTfaVbsnJU
+ DkrGOWoHLTxiCLdv7SpDJWB9rUhlpHEEW9AMlS+0LAGWpfbE32lW7n2hMchYn2xROYh7SLdv10/rrD+2
+ Jxlpe2EW7frpfaFi/a1E5iXthVu59oS+0rC+2JfbEfbCrd37Ql9oWF9sS+2Je2FW7v2hL7QsL7Yl9sS9
+ sKt3ftCX2hYX2xL7Yl7YTbu/aE32hYf2xL7Yl7YTbufaEvtCw/tiX2tH2wm3c+0JfaFh/bEvtiXthVu5
+ 9oS+0rD+1pfa004gtJd37Sl9pWF9rT/a032gtt3DkpjkrDOWm+1pwxBNu39pTjIWH9qUhlI+0F1u4L1M
+ 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
+ Fg/bEvtiXthTvfaE32hYf2xN9sS9tTtnJUTkrEOWm+1o+yCp3PtKf7SsL7Wn+1pewEO79oTjIWD9sS+2
+ IeyFO+MhS+0LnxmqQzUPZCXe9cJG8LD+2+aY5vmiMSXc+0KQyFz/ANtRGZk90TiS9C26UQPlY1WTKvVW
+ yqk8am5KdQYZRAFFwIUE6eEyPCpSSSSFKUkkkgpSSSSFqUkkkm2pSSSSaZIUkkkm8SlJJJIiSl0kydSh
+ KkkkkVKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFLpJkklKTJJJKWThMnCSmQTOTpnJKa1irlWL
+ FXKSmTFaYqrFZYkpMEkgkkpSdMkkpSdMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKTJ0y
+ SlJJJJKUnTJ0lLFV7FYKr2JKar1Fqk9Rakps1qwFXrRwkpkVFOVFJS6QKZNKSkgKUocpbklJZSlC3J9y
+ SkkpSh7ktySkspShbktySkspShbktySUspShbktySkspShbktySkspShbktySkspShbktySqSylKFuT7
+ kkUklKUPcm3JIpLKaUPcluSVSSUpQ9yW5JNJJSlD3Jbkk0klKUPcluSTSSUpQ9yW5JSSUpQ9yW5FCSUp
+ Q9yW5JFpJSlC3JbkkJZSlD3JbkkJJTyhbktyCLSylKHuS3JJSylKHuS3IpZymlRlKUErymlNKUpJXlNK
+ aUpSSunUZTgpKZhOFEKQSQunTJ0lKTJ0ySFkkkkkKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5
+ QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSKlJJJJIUkkkipSSSSClkk6ZBSkgUySCmYKUqITpKWKipFRSUuFMBQCmCilchV
+ rTCskqpeU5TnZL4WRfatHKKx7yilr2XFBNpTubJUmUkopRh5KmCVarxCVZbgnwT4mlObJTyVqfYD4JfY
+ T4KxHIAtcuSlJWp9hPgm+wnwTvdCnMkpSVp/YT4JfYT4Je6pzJKUlaf2E+CX2E+CXuqcySlJWn9hPgl9
+ hPgl7qnMkpSVp/YT4JfYT4Je6pzJKUlaf2E+CX2E+CXuqcySlJWn9hPgl9hPgl7qnMkpSVp/YT4JfYT4
+ Je6pzJKUlaf2E+CX2E+CXuqcySlJWn9hPgl9hPgl7qnMkpSVp/YT4JfYT4Je6pzJKUlaf2E+CX2E+CXu
+ qcySlJWn9hPgl9hPgl7qnMkpSVqDBPgn+wHwS9wKcqSol5C1H4RHZVLcctThkCmobSE3rlNayFWJUgmF
+ U2vXKcXFVRqjsYSlxhVJN5KeSUWuglWWYpKHGqmjqn1WkMI+Cf7EfBD3EU5slPJWj9iKf7EfBDjCKcyS
+ lJWn9iPgn+wnwQ9wI4XKkp5K1PsJ8EvsJ8EPcRTmSU0lan2I+CX2E+CHuKpypKUlan2E+CX2E+CXuBVO
+ XJSkrU+wnwS+wnwS90Kpy5KUlan2E+CX2E+CXuhVOXJSkrU+wnwT/YT4Je6mnKkpSVqfYT4JfYT4I+6E
+ 05clKStT7CfBL7CfBL3QmnLkpSVqfYT4JfYT4Je6FU5clPJWn9hPgm+xHwQ9wLSHNkp5K0fsZ8EvsZS4
+ 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
+ ks9yW5QlKUlM9yUqEpSkpnKUqEp5SUzlKVCUpSUzlKVCUpSUzlKVBJJTOUpUEklMpSlRTSkpnKUqEpSk
+ lnKUqEpSklnKeUOU8oIZylKhKUpLWUpSoppSQzlLcoSlKSGcpSoSlKSGcp5Q5TykpnKeUOU8pKZynlQl
+ KUkpJTyhgqUpJZSmlNKaUkrykoynlJLKU4UJUgklmFIKAUgkhmEkwTpIXTJJJIUmTpklKSSSSSpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Pr0kkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKW
+ SSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRap
+ JKUnTJ0lKSSSSUpMnTJKUkkkkpZJJJJSk6ZJJS6SSSSlJJJIqUkkkkhSSZJFS6SZJBS6SSZBSkkkyCmS
+ SZKUlLFMnSSUoKQTAKYCISsVUvV4hU7wnBTjZKybuVq5SyLjqnBKMNkq5RUCqbDqtHGKcl0MfGBWjXiB
+ AxitOtAqa/2QKJxAtBRMJhkVrR+yBL7IFd0S0Q4ippfZAl9kCu6JaJcRU0vsgS+yBXdEtEuIqaX2QJfZ
+ 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
+ uEppCHEVNT7IEvsgVyQnkJCRS5z8QLPycYALees3KGimhIqeYyaQFRLYK1MwrLcdVLKRpLaxxqtvFWHj
+ nVbeKVRyFTsUK41UqCrjSogVMihlTKgU8KWSSST1KSSSRUpJJJJSkkkkFKSSSSQpJJJClKSSSSUukkki
+ lSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKWTJ0klLJwmThJTIKLlIKLklNexVir
+ NirFJTJitMVZissSUmCSQSSUpJJJJSk6ZOkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJ
+ JSkkkklKTpk6Sliq9isFV7ElNR6i1TeotSUnrVgIFaOElKKipFRSUsmKdMkpiU0KSUIrWKSeEoSUsknS
+ SSsknSSSxhKFJJJTGElKEoSUxShShJJTGE6dKElLJJJJKUmTpJJWSTpJJWSTpJJWSTpJKWSSSSUpJJJJ
+ Skkk6C1SSSSS1ZJOmSQsknSSQsnSSSQpOkkkpSdJJJSk6SSSVJ0ySS5eU0pJkkrpJkkksgpBRCcJKZhS
+ CiFIJIZBSCiFJJCk6ZJJCkkkklLJJJJJUkkkklSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkp//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekprlSYolSYk
+ pssRggsRgkpdMnTJKUnTJ0lKTJ0ySlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpSdMnSUpJJJJSkydMkpSSSSSlkkkySl0kkklLpJJ
+ JKUkkkipSSSSSFkkkkVKSSSQUukmToKVCaFMBKEFMITKZCgUlLJSmSSUzBRGlBBU2lEJSlVMhWpVW/hO
+ CnEyxyse4araygsi4apwS1mDVaOMqTG6rQxwnJdbGWnWVnYwWjWgVJZUSVJRKYtKpSlMklSl5SlMklSl
+ 5SlMklSl5SlMklSl5SlMklSl5SlMklSl5SlMklSl5SlMklSl5SlMklSl5SlMklSl5SlMklSl5SlMklSl
+ 5SlMklSmQKnKGFNCkIbTosnLWrbwsrKT4hcHCy1k28rWylk28qwF9sWcrQxis9g1WhjBJVu3ila9BWPj
+ LWpKZJFt1pSJUQUiVHSLYkpgUikAnItkCpAqICkE0oteVElSShBFsJTgp4TIUjiZSlKiklSrZSlKikhS
+ rZSlKikkriZSlKikgriZSlKiklSeJlKUqKSVJ4mW5KVFJGlcTKU8qKeUQEcSiVGUimTlWzBRAUEFTaUC
+ E2llAu4RQUG06IBILiZq5rN7rps0LnMxvKlC63Et5U6OUrW6qdA1RpVu3hdl0eJwudwhwuixeElW6TDo
+ pyhtKclMpVsw5PuUAU6FLSWUpSopJtItlKW5RSQpFspSlRSTaVbKUpUUkKVbKUpUUkqTbKUpUUkqTbKU
+ pUUkiFWylKUydRkIteUpSSSAVa0piU6YqxFHEqUpTJJyrXlKUydClWvKUpJJUq1AogKGFMIEJtHadFjZ
+ q2bOFjZqfAJt5vM7rIsOq2Mzuse3lXI7LrS0HVbeGeFhUnVbeEeEJKt6PEK02cLLxCtRnCrTTaSUpTEq
+ BKgkFrIuTblAlKVAQq2e5NKZJEBFqJUSVKEoUoRbGU4KeEoSpIK4KeUySFJteUpTJJUgleUpTJIUx2vK
+ Upkk4BQK8pSmSUlLwV5SlMkhS615TSkklSbXBTyop5TCtJXlNKaUk1jtmCpShhSlOASCuSql50VglVrj
+ opoheC42YVz2X3XQ5i5/KHKnC8FyX8otHKi9uqLQNU5dbt4XZdJh8LncIcLo8ThQzWEuozhOSos4TuKg
+ 6rbYkpiUxKZIhVrylKZJBVrylKZJJVrylKZJJVrylKZJJVrylKZJKlWvKUpkkqVa8p5UE4RpVswVIFDB
+ UgUqVbJMSkmKVKtiSmlOUyVKtcFPKYJ0qVaiVGUimRpVrypAqCkEqVa5KBYUchAtCVKtz8hyx8py1shZ
+ GSiEguTcq0aq1aECFKAuBT0LZxSsigLXxUSm3bxir7Ss/HV5pUZRaSU0qJKYFCkWzlMSkE8IFFoymRIS
+ 2pqLYapaqe1LahSrYyU4KeE0JUq1wU8qKSVI4l5SlMklSuJeUpTJJUriXlKUySVJ4l5SlMkhSrXlKUyS
+ FJteUpTJIUq15SlMnTgEEqlKUoSUq21wVNQClKBSChtWXklalp0WTlFOCbcbKcsi12q0ssrItOqeq2TH
+ arQxnLKYdVpYpSXW7uMVq0lZOKtegJpRbbaVOVBoU0wqtUpblEpJIJZSlKikhSLZSlKikm0i2UpSopIU
+ i2UpSopJUq2UpSopJUm2UpSopI0q2W5KVFJGk2ylPKiFJFVqlKUk0pKteUpUZSlAqtcuTbkxTJqbZ7kt
+ yilKKbZEpgVElOCnUq2ZVa/hWUC4aIhNuDmLn8s6ro8wLnssaqUKtynnVGo5UHDVGoGqdSrdbE7Ldxli
+ 4g4W5jBClW6FZRQ5CYpqMhFstybcmSUZCrZApwVEBTCCrXlOEycJItlKYlOmKIVbAlRlOVFFFsgVKVAK
+ SjIWrylKZJIBS8pSmSTwFLylKZJGlLylKZJKlLylKZJCkryluUUk2lMpSlMpAJKUkpAJEJwUxBUpUUiU
+ UobzosLOK2rzosPNKkAS87mclZjuVp5fKzXDVSIbONyugwjwufx+VvYR4SS9HjHRXWu0WdjHRXWlRyCk
+ hKcFQlSCapkmlSTFMKCtKaUkyFLV5SlMklSmUpSopJUplKUqKSVIZSlKikkplKaUySSl5SlMkipeUpTJ
+ 0qUvKeUySVJXlNKSSVJVKUpJJKYkqO5SKGUUpA5TDkEFTalSUhKp38K2q140SS4Oaufy10eYFz+WOUlO
+ S/lWcc6oL26qxjt1RWl3MLsuhxeFg4TeF0OKNEqWt5vCRKcDRM5BS0pSoykjSlFybckUyFKZgqQKGFNK
+ lMpSlRSQpS8pSkkhSlSlKZMlSmUpSopJUplKUqKSVKZSlKiklSmUpSopJUplKUqKSVKZSlKiklSmUppT
+ J0aUqU4KZSRXhRKG9ykUF5TgEtW9yx8ty1LysbKKlCHKvKqTqrF5VWdUVN2hbOIViY5W1ipFDt45V9hW
+ fjq81RlSQlRlIlIJiFSlKeEoTSpUpSmSTaQvKUpkkaUvKUpkk6lLylKZJKkrylKZJKlLylKZJAhS8pSm
+ STKUvKW5RSRASy3J9ygnCcq2YKdRBToFPEsSoEqZUCmrgVpUgVBSCITaQFIlMEinhTXtKy8krUtWZkhS
+ AJtwstY9o1W3lNWVaxSUq2swarTxVSYzVaGM1KkW7GMVq0rMxgtWkJpRbaYiKLApwoii1pSlJMhSLXBT
+ ymCdNIVaxKgSpFQKFIteU4KiFJOATa8ppSTJyrZSnlQThNpFspSlMkhSLXlNKSZCk2vKUpkkqVa8pSop
+ 0qVa8pSmSSpVspSlMknUq15SlMmKICbVuUmuQypNKcQq0sqtfwjqvfwmhVuHmrn8rldDmLn8oaqUJ4nM
+ cdUagobhqjUhOVbr4h4W7jFYWIFt45QpVupW5GDlVrKMCmEK4khKaVGU0oUm2cp5UAUpSIRbKUpTJKIh
+ bxLylKZJIBXEvKUpkk8BNrylKZJOTa8ppTJJKtlKUqKSSrZSlKZJJFrynlRThAhbapSlPCRCjpFrSnBT
+ QklSrZSluTJihSbZbktyhKaUQE2lBTkobSpkp9Jtq38LDzSty/hYWaVLFcC8/lnVZrjqtDLOqzjypQut
+ t4x1W/hHhYGNyt/CHCjktJd/HOiutKpY/CutUJLGvKkCopwlal5SlJMkpUpSmSStS8pSkklalSmlOmSt
+ SpTymSStTKUpTJJKVKeUySSl5SlMkkpeUpTJJKXlKUySSl5TSkkkpUpSkmStS8pSkmStSpSDkxTAopZk
+ qredFYlVr+E6KnEzVz2WuhzFgZQViKnMdyreNyqxGqt4w1TyFPQYJ4XR4p0XOYPZdDjHRVZqdEHRM5yi
+ DoouKipSxco7kxKjKNISByeUMFSlJS5KiSkUycFLynlRTpFTKUpTJKIhS8ptyZJNpS+5NuTJkaUylKVF
+ JGlMpTyop0qUylKUydKlLSknhPCbSFk8pQkkApUpSkmTwFwXlKVGUpT6SF5TEppTEormtfwsXMK2bzos
+ TMKkCnEySqJOqt5JVKdU5Ddx+VvYawsZb2GE0qdzGOiugqlj8K4FGULEppTlRSQV5SlMnSWqlKUkk1Sp
+ SlJJCkKlKUkkKUqUpSSQpKpSlJJGkqlKUySVKXlKUydKkKlKUkkKUqU8pk6VIVKUpJI0pUpSkkjSVSnl
+ MkjSWYKi4pKLiiua9xWVklalqzMkJwS4eUsuzla2SFl2NTlI2crSxlQYNVpYwRU7OKtmhZGKFr0JhU3G
+ lIlMExKYpYlRJTEpiU4BaV5SlRThFDKU8qITqMhS8pSkmTaUvKUpkkqUvKUpkkqUvKUpJkqQvKUpk6VK
+ VKUpJI0pUppTpkqUqUgU0JI0pmHJFyilKdSVEqBKdMjSlAojShgIjUiuZFVLzorRVW9AJcfLKwcordy1
+ gZSlCXOcdUeg6qs/lHo5TlO7hnhbuOsHDPC3ccoFRdBhRQUGtGCgIYyolNKcpkKUqUpTJJUpeUpTJJUp
+ eUpSTJUpeUpTJJUpeUpTJIUpeUpTJJUpeUpTJJUpeUpTJJUpeUpTJI0peUpTJJUpeUpTJJUpeUpTJJUp
+ eUpSSSpTIFJxTBM5FLSyTosDNW9k8LCzFKEvPZQ1VGNVo5IVLbqnIbOKF0GF2WHjNW/hjhBTt450V1rl
+ So4VoFNIUlDk8oYKkCm0pdJJJBSpTyoppSpTPcmJUZSSpS8pSmSTaUvKUpkkqQvKUpkkKUvKUpkkqUvK
+ UpkkKUvKUpkkqUvKUpkkqUzBThyHKeUVM5TEppTI2hYlRlSIUYQtTIFTCgAitCQKWLgs3LGi1XDRZ+WN
+ FLApeYzRqsl/K2c0arHeNVKTopsY3K3MRYmMNVt4oVTIp16CrjSqVKtNKiCkpKiU8pk8KWSSSTwpSSSS
+ cpSSSSVKUkkklSlJJJJUpSSSSVIUkkkhSl0kydBKkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkkFKSSSSUpMnTJKWThJOkpdM5SCi5JTWsVcqxYq5SUyYrLFWYrTElJQkkEklKSSSSUpOkkkpZJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJSySSSSl06ZOkpYqvYrBQLElNR6i1SeotSU2K0cIDEc
+ JKUVFSKikpZMnTJKUkmSlK0KSSlJK1UpJJMlaaUkkklaaUkkklal0kydK0KSSSStFqSSSStVrJJJJWpS
+ SSSVrgpMnSStKkkkkrSpJJJK0LJJJJWglSSdMlaOJSdJMharXSTJJIXTJ0klUskknSQskknSVSkkkySK
+ XSSSSTS6SZJJNLpJkkU0pMkkkmlJ0ySSaZBSCgFMJKpkFMKAUwkimQUgohOEkLp0ySSFJJJJIWSTpkkq
+ SSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//V69JJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYp
+ ymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw
+ 1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKWTJ0ySl0kkklLp0ydJSkkkkVLJJJkkKSSSRUpJJJBSk6SSCl5
+ TyopkFLkpikkkpaE0KcJQkphCm0JKQTkrqtfwrRVW86JwU4+Usm3lauUVk2nVOCWDOVoY6z2crQx05Lr
+ Y60Kys/HC0KwgVJVEqUKJCYtWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8J
+ 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
+ AUwEg1TDU0lLFOpbUxCFqYFRKIQowihinCfanhJSySlCUIKYpQpQlCCGKSlCUJKYpKUJQgpikpQlCSmK
+ SlCUJKYwkpQmISUwSUiE0IIXClCYBTAQpTAhRRCFEtQUsERpQ4UmhIBKQnRZ+WdFePCz8vhSwCXnM46r
+ HedVr5vKx38qY7KbeNytzFCw8blbuLwqmRTp1BWmqvUrLQogpkknTKQKWSSSUgUpJJJOUpJJJJSkkkkV
+ KSSSSUpJJJBCkkkkCpdJJJNSpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSk6SSSlkydJJ
+ SycJk4SUyCi5SUXJKa1irlWLFXKSmTFaYqrFaYkpKE6YJ0lLJ0kklKSSSSUskkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKXSSSSUskkkkpZJJJJS6dMnCSligWKwVXsSU1HqLVJ6iElNhiOECtHCSlFRUimSUsolS
+ KiUlLFNKRKigql5TyopIKplKSikkupeUkySSqXlOopSkqmSSZJFaQpOlCSS1SdMmlJDJMmlOklSSUJJL
+ wpJNKUpLl0yUp0lUpJKEyCF0ySSKwqSSSQWKSSSRXBSSSSS5dMkkkpSSUJJIUkknhJSySeEySFJJJJJU
+ kmSSSunTJJJUkklCKVk4SSSSuFIKIUgkpmFIKIUgkhmFIKAKkCghdJIJ4RQVkk8JkkLJJJJJUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1uvSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklLFAejlAekprlSYolSYkpssRggsRgkpdMnTJKUnTJ0lKTJ0ySlimKcpikpZJ
+ JJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkk
+ pSdMnSUpJJJJSkydMkpSSSSSlkkkklKSSSSUpPKZJFS6SZJJS6ZJJJCk6ZOkpZJOkkpZOmTpqlQlCcJ0
+ lMYTKRUSkpUp5UUklLynBUVIBOCWRKqXlWiFVvTgpxsorKtOq1cruse46pwSuw6rRxyshtkFXKL4TkvR
+ Y5C0GELn6MsBXmZoSItTrbgmLgs37aFE5oTeFDp7gluCzPtoS+2hHhQ6e4Jbgsz7aEvtoS4VOnuCW4LM
+ +2hL7aEuFTp7gluCzPtoS+2hLhU6e4Jbgsz7aEvtoS4VOnuCW4LM+2hL7aEuFTp7gluCzPtoS+2hLhU6
+ e4Jbgsz7aEvtoS4VOnuCW4LM+2hL7aEuFTp7gluCzPtoS+2hLhU6e4Jbgsz7aEvtoS4VOnuCW4LM+2hL
+ 7aEuFTp7gluCzPtoS+2hLhU6ocFLcFkjNCl9tCaYqb1rhCx8sotmYCs3JyQVJGKXOylmP5V3JtlZtj9V
+ MAlNWdVo45WOyxaGPajSHocYrUpIWBj3wtGrKAUcgp2GkKW4LMGYExzQouFDp7gnDgsn7cE4zglwodbc
+ EpCzBmhP9sCHCh0pCUhZv20JvtwS4UOnITFwWZ9uCb7aEuFDp7gluCzPtoS+2hHhU6m4Jbgsz7aEvtoS
+ 4VOnuCW4LM+2hL7aEuFTp7gluCzPtoS+2hLhU6e4Jbgsz7aEvtoS4VOnuCW4LM+2hL7aEuFLp7gluCzP
+ toS+2hLhU6e4JSFmfbQn+2hLhU6W4Jbgsz7aE320JcKnV3BOCFk/bQpDOHihwrnWkIFpEKn9uCFZmghI
+ RSgzCudzDytXJyQViZVkqcBTm28p6RqoWHVSqdBTqU7mF2XRYh0XLYtsLbx8oBAhT0DCFPcFlNzAn+2h
+ RGKXVDgnkLKGaFL7aE3hQXTkJSFmfbQl9tCXCh05CUhZn20J/toQ4VrpyEpCzPtoS+2hLhU6chKQsz7a
+ EvtoS4VOnISkLM+2hL7aEuFLpyEpCzPtoS+2hLhS6chKQsz7aEvtoS4VOnISkLM+2hP9tCHAh0pCaQs3
+ 7aE320JCCHTJCaQs37aEvtoTuFToyE8hZv20JfbQlSHSkJ5CzftoS+2hKlOlISkLO+2hN9tCHCl0gQpg
+ hZQzQpjNCRilvWkQsXNKsWZoIWVl5Mp8Qlx808rHsOq0ct8rMedVYCU9A1W9hDhc/S6CtjEuiEil6vEI
+ habCIXO42UAr7c0BV5RtLqlwTSFmHOHio/bgmcKnUJCaQsz7cE324IcC11NwS3BZf20JvtoR4EOrvCW4
+ LK+2hP8AbQjwodXcEtwWWM0J/toQ4UunISkLN+2BL7YEuFLpSEpCzftgS+2BLhWl0pCUhZv2wJfbAlws
+ bpSE0hZv2wJfbAlwpDoyEpCzftgS+2BHhXh0pCUhZv2wJfbAlwrnTkJSFm/bAl9sCXCl0pCaQs77YE32
+ 0IUsLpghSDgsr7aE/wBtCHCxuruCfcFlDNCf7aEuFcHRcQqlxCrnNCr25YKkjFc1stYGV3Wrk3ysXJfK
+ sALw0LOUSg6oLyp1GCn0ud/CPC6PDK5PFthbuNlAKCYWl6WsiFOVkMzgFM54VYx1WukSFAuCzTnjxUTm
+ hERU6e4Jbgsv7aEvtoTuFTqbgluCzPtoS+2hLhU6e4Jbgsz7aEvtoS4VOnuCW4LL+2hL7aEuFTqbgluC
+ y/toS+2hLhU6m4Jbgsv7aEvtoS4VOpuCW4LL+2hL7aEuFTqSE8hZf20JfbQhwqdTcE24LL+3BN9uCPCp
+ 1NwS3BZf20JxmhLhU6ocEtwWWM0JzmhDhU6BcFEuCzzmhQOYE4RU6e4KQeFlfbAnGaEuFTrbwoOcFm/b
+ QonMCQipPeQVj5YVm3LBWZk5AKeIqc3IVMnVHvslVC7VSAJtvY51W3iHhc9TZC18a+EiE29PjEQr7SFg
+ UZYCuDNCglFVumSFGQs12cFD7cEOFFuuCE8hZQzgn+2hDhRbpFwTbgs05oTfbQjwodTcE4cFlfbQnGaE
+ uFFuruCW4LLGaE/20IcKrdLcEtwWZ9tCX20JcKnT3BLcFl/bQl9tCPCp1NwS3BZf20JfbQlwqt1NwTbg
+ sz7aEvtoS4VOnuCW4LL+2hL7aEuFNupuCW4LL+2hL7aEuFTqbgluCy/toS+2hLhS6m4Jbgsv7aEvtoS4
+ UOnuCUhZn20JvtwS4VrrNIU5CyBnjxU/t48U0xXBvWkQsnKIU7M0FZ2RlAp8QloZSybBqr2RdKznv1Uo
+ CmVY1WnihZTHq/j3QjSXosYhalTgudoyYV6vMATSEu614UtwWOM4Kf24KIxU6ZcEtwWX9tCX20JcK109
+ wT7gsv7YE/2wJcKHT3BLcFl/bAn+2BLhQ6e4Jbgsz7aEvtoS4UOnuCW4LM+2hN9sCXCp1NwS3BZf2wJf
+ bAlwpdTcE24LM+2BL7YEuFLp7gluCzPtgS+2BLhS6ocE8hZQzQn+2hDhU6RIUZCzjmhN9tCPCp0w4KYc
+ FlDNCkM0IGKnU3BLcFl/bQm+2hDhU6u4Ji4LL+3BMc4JcKXScQoAhZpzgmGaE8RU6wcEK1whUhmBDsyw
+ QkIpQZZXP5a08nJlYuTbKnjFTQs5U6eUJ7pKnUdU+kO5hnhdBinRczi2QtrHyIQIU79ZCKCFlMywET7a
+ FVMUuluCbcFmnNCgc0IcKHU3BLcFl/bQn+2hLhQ6chKQsz7aE/20JUp0wQnkLL+2hP8AbQhwqdOQlIWb
+ 9tCX20JcKnSkJtwWYc0JvtoR4VOpuCW4LL+2hL7aEuFTp7gluCy/toS+2hHhU6m4Jbgsv7aEvtoS4VOp
+ uCW4LL+2hL7aEuFTqbgluCy/toS+2hLhS6u4Jbgsr7aE/wBtCHCh1NwTbgsz7aEvtoS4UunIUgQsv7YE
+ 4zQlwqdUEJOIWWM4JHOCHClPeRCws0q5dmAhZGVkSp4hTlZSzncq5kPlUSdVJSm3j8rdw+y5+h8LYxbo
+ QIU9RjRC0GRCwcfKAV1uaFDMJdTRMSFnHOCb7aFHSnQJCW4LOOYE32wJ3CguluCfcFl/bAl9tCXCtdTc
+ EtwWX9sCX2wJcKnU3BLcFmfbAl9sCXCh09wS3BZf2wJfbAlwqdPcEtwWZ9sCX2wJcKnT3BLcFmfbAl9s
+ CXCp09wS3BZn2wJfbAlwqdTcEtwWX9tCX20JcKnV3BPIWUM0KX20IcKXRJCiSFnnNCic0IgKdIOCkHBZ
+ X20JxmhLhXOruCbcFmfbQm+2hLhS6gIUtwWT9uCcZwQ4UuqXBVr3CFUOaEC3LBRjFTVzSueywtfKvlYm
+ TZKk4VNBw1VjHOqqvdqiU2QUeFaXpsJ3C6HFdouRxL4W7j5YAQMUO+HCExIWaM0KJzQo+FLpghPuCyhm
+ hS+2hLhU6e4Jbgsz7aE320I8KnVDgn3BZQzQn+2hDhU6hcE0hZhzQm+2hDhU6gITyFljNCf7aEuFTpyE
+ 24LN+2hN9tCXCp09wS3BZn20JfbQjwodPcEtwWZ9tCX20IcKnT3BLcFmfbQl9tCXCp09wS3BZn20J/to
+ S4UulITyFmfbQl9tCXCp05CUhZn2wJ/tgS4VOlISkLN+2BL7aEuFToyFIELM+2hOM0IEJdMkITyFROaE
+ N+aEQFJMghYeWVcuywVlZN8qcBDm5Cpxqj3PlVt2qfSm/jLdwyueofC18a+ECEPT4zhCvtcFgUZYCuNz
+ QoJRS6hIQyQs85wUDmhNEUOiXBLcFm/bAm+2BO4UOoHBPuCy/toT/bQhwqdPcEtwWZ9tCX20JcKnT3BL
+ cFmfbQl9tCXCp09wS3BZn20JfbQlwqdPcEtwWZ9tCX20JcKXT3BLcFmfbQl9tCXCp09wSkLM+2hL7aEO
+ FTp7gn3BZf20JfbQlwoLqbglIWX9tCkM0JcKy3SkJpCzvtgS+2BKk26MhNuCzTmhROaEuFNusHBSDgsc
+ ZwUhnhDhXAuxuCi5wWWM8eKY5wSEVzctcFmZJSszAVSvyQVPCKmjlLJt5V/ItlZtjlPwoXr5WnirIY+C
+ r+PdCXCh6PGhalRC56jKAWhXlhRTiq3aa4Jy4LLGYE5zQoOBBLpbgkCFl/bQnGaEuFDqghSkLKGcFL7c
+ E0xU6ZIUSQs05wUTnBERQ6khPIWUM0KQzQlwpdIuCiXBZxzQonNCIil09wThwWX9tCcZoS4UOpuCW4LM
+ +2hN9tCHCh1NwS3BZf20JfbQjwpdTcEtwWZ9tCX20IcKnT3BLcFmfbQl9tCXCp09wS3BZn20JfbQlwqd
+ PcEtwWZ9tCX20JcKnT3BIOCy/toT/bQlwpdUOCkHBZP24JxnBDhU6jnBUchwhAdnBVLssFPjFTWyysPJ
+ 5WjkXysq98qYBTVPKPSqxdqiVvhGlO3ilbGOQudovhadGUAgQp36yEcELHrzAjjMCiMUunITFwWd9sCi
+ cwJvCl0twSkLM+2hL7aEeFBdUOCW4LL+2hP9tCHCtLqbgm3BZn20JfbQlwodTcEtwWX9tCf7aEuFLpyE
+ pCzPtoS+2hLhS6chKQs37aEvtoS4VOlISkLN+2hL7aEuFTpSEpCzPtoS+2hLhQ6chLcFmfbQl9tCXCh0
+ 9wSkLM+2hL7aEOFDqSE+4LL+2hL7aEuFTqbwlvCyvtoTfbglwJdXcE24LK+3BL7cEeFIdYOCkXBZIzh4
+ qX20IcK5tZDhCwM08q7dlghY2XfKkiFzkZZ1WcTqrmS+SqJ5UoCW7jHVdBhO4XOUGFr4t21MkFperxnC
+ Fea4Ln6MwBXG5oURC115CkCFlDNCkM0JpCnTkJiQs77aExzQlSnRkJSFmfbQm+2hGlOpuCfcFl/bQl9t
+ CXCp1NwTbgsz7aEvtoS4VOnISkLM+2hL7aEqU6chLcFmfbQl9tCVKdPcEtwWX9tCX20JcKnU3BLcFl/b
+ Ql9tCXCp1NwS3BZf20JfbQlwqdTcEtwWX9tCX20JcKnU3BNuCzPtoS+2hLhU6e4Jbgsz7aEvtoS4VOnu
+ CW4LM+2hL7aEuFTp7gluCyznBN9uCPCl1S4KneRCrnOCr3ZYIToxS0s08rnso6rVy75WJkPkqzEIa06q
+ 7jcqhOquY7oTyFPRYR4W/jOELl8W6FsUZYCrTCnoGuCcuCyW5wTnOCg4VOoXBRLgsz7cExzQiIqdLcEt
+ wWX9tCX20J3Cp1dwS3BZYzQn+2hLhS6m4Jbgsv7aEvtoQ4VOruCW4LL+2hL7aEOFa6m4Jbgsz7aE320J
+ cKnTkJSFm/bQl9sCXCp0pCUhZn2wJ/tgR4VOnuCcOCy/toS+2hDhS6m4Ji4LM+2hMc0JcKnSLgmBCzPt
+ oTjNCPCh1QQnkLLGaE5zQhwqdIuCbcFmHNCj9tCPCuDqbgmLgsz7aEvtgR4VzolwUS9Z5zAmOWiIqT3u
+ 0WJmGVbtyZWVk3ypKU5mSFTjVWL7JVXdqkh0MZb+GeFzlD4Wzi3wmlT1GORCuAhYVGWArQzQoyEOiXBR
+ 3BZ5zQo/bAhwoLpbgn3BZn2wJfbAjwrXT3BLcFmfbQl9sCXCp09wTbgs37aE320JcKnT3BLcFmfbQl9t
+ CXCp09wS3BZn2wJfbAlwqdPcE+4LL+2BP9sCXCl09wS3BZn2wJfbAlwqdPcEtwWZ9sCf7YEuFTpbgn3B
+ Zn2wJfbQhwodPcEtwWZ9tCX2wJcKnT3BLcFmfbAl9tCXCp09wS3BZv20JfbQlwqdLcEtwWb9tCX20JcK
+ 4OoHBIkLMGaExzghwrm7aQszJITvzAVRvyQVLEKaOUVk2q9k2ys216kpSzeVoYyy2v1V2i2EqU9FilbF
+ Lguax8mFpVZgCYQp3muCcuCyBnBOc8eKj4VOpuCUhZYzgnGaEOFaXTkJSFnfbQm+2BLhQ6W4Jbgs37YE
+ vtoS4VOluCW4LM+2hL7aEuFTqbgluCy/toS+2hLhU6m4Jbgsv7aEvtoS4VOpuCW4LM+2hL7aEuFDp7gl
+ uCzPtoS+2hLhU6e4Jbgsz7aEvtoS4VOnuCW4LM+2hL7aEuFTp7gluCy/toS+2hLhS6ZIUZCzftoTfbQj
+ wqdPcE4cFl/bQl9tCPCl1Q4KYcFkDNCkM4eKaYrnUc4Kpe4Qqrs4eKrW5oKdGKUeUVi5KuX5MrMvtlSg
+ Karhqi1IDnqVdkJ1JdvFK2sdy5qi+FqUZYCBCC9FW4IwcFjV5gRhmhQmKwuoXBR3BZpzQm+2hN4UOnuC
+ W4LM+2hL7aEeFTp7gluCzPtoS+2hLhU6e4Jbgsz7aEvtoQ4VOnuCW4LM+2hL7aEuFTp7gluCzftoTfbQ
+ lwqdPcEtwWZ9tCX20JcKnT3BLcFmfbQl9tCXCp09wS3BZn20JfbQlwqdPcEtwWZ9tCX20JcKnT3BLcFm
+ fbQl9tCPCp09wS3BZn20JfbQlwqdPcEtwWZ9tCX20JcKnT3BLcFmfbQl9tCXCp1Q4JnOCzBmhJ2aEOFK
+ XJIhYOYJV67LBWVk3SpgEuRkt1VHbqr17pVQ8p1IbWMIK6DCMQueodC1sa6EqU9NQ8QrjXhYNWXCsDOC
+ ZKKnZDgpghYwzx4ogzwojFLrbgolwWZ9uCY5oSEVOluCUhZf20J/tgR4UOnIS3BZv2wJvtoS4VOnuS3B
+ Zn20JfbQlwqdPcEtwWZ9tCX20JcKnT3BLcFmfbQl9tCXCp09wS3BZn20JfbQlwqdPcEtwWZ9tCX20JcK
+ nT3BLcFmfbQl9tCXCh1NwTbgsz7aEvtoS4VOkXBNuCzftgS+2BLhU6YcFIPCyvtgUhmBDhQ6m4JiQs37
+ YEjmBDhU6JISDgss5oTDOCXCl1i4KhlEQgnNCqZGWCFJGKXNzeVkPGqvZV8rOL5KmI0U3MblbmKVhYx1
+ W5iqlkCnXpVpqq0hW2hRBTJRKmVEpwUskkknKUkknRtSySSSVqUkkkhalJJJ0OJCySSdDiUskkklxKUk
+ kknJUkkkipSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJIqUknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSQUpJJJJSyZOmSUpOopwkpkEzk6ZySmt
+ Yq5VixVykpkxWmKqxWmJKShOmCSSlJ0kklKSSSSUsknSSUsknSSUsnSSSUpJJJJSySdJJSySdJJSkkkk
+ lKTJ0xSUskkUklLhSCiFIJKWKr2KyVXtSU03qLVJ6i0JKbFaOECsKwAkpYqJUyhkpKWJUCUnFCc9ApDM
+ uSlAL04sTCWURTylKEHpjYlbIIJCUtyrm1N6qVp4A2dyW5VvVTG5K1cLa3Jtyqm5IXJWgxbYciBU22qw
+ x8pWxmKYBOQk0qUJWx0idohF0Ir1UsdCVqpKHojTKpB+qsVvStNNkBRdopAoVjkrXgMS5NvQXvUA9K1/
+ C2w5EBVRr0QWJWjhbCgShm1QNiVoISypAquHojXJWxSCYJJgU6VsSySdJG14YlRJTuKC56K+kocpgqqL
+ FNtiSKbCSgHSpApKpcKQCYKQKSKVCiQppQiqkcJoUyExSTTFMpJikmmMpSmJQy6Ek0mBUpVcWKQsSTSU
+ lNKhvSlJVMwVMIYRAkpmFMKAUwkhUpwUoTgIoZBTAUApgpIXIUSnlRKSFkkkkkKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1+vSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklLFAejlAekprlSYolSYkpssRggsRgkpdMnTJKUnTJ0lKTJ0ySlimKcpikpZJJJJS6dMn
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpSdMnSUp
+ JJJJSkydMkpSSSSSlkkkklKSSSRUpJJJJSkkkklKSSSSQpOmTpKUkkkkpSSSZNUvKUpkySl5TJ4Twkpi
+ knhJJSoUwFCU4KclmVVvCsFyr2mU4KcbLasW8arfyWysm+qU8JclxhO20hHfQUI0lOSlZkkI7csqkKip
+ Coo0pu/bCm+1lVRUU/pFFa2ftZS+1lVvSKXpFJTZ+1lL7WVW9IpekUlNn7WUvtZVb0il6RSU2ftZS+1l
+ VvSKXpFJTZ+1lL7WVW9IpekUlNn7WUvtZVb0il6RSU2ftZS+1lVvSKXpFJTa+1lL7WVW9IpekUlNn7WU
+ vtZVb0il6RSU2ftZS+1lVvSKXpFJTZ+1lL7WVW9IpekUlNn7WUvtZVb0il6RSU2ftZS+1lVvSKXpFJTZ
+ +1lP9sKq+kUvSKCmwcslAsvJTekUxpKcEhq2vJVV8rRdQUJ2MU+000WyrVTiFIYxRWY5CXEqk9VpCsty
+ SFWbSVP0igSikxyyhuzChuqKE6kpqKTfbCpNyyqnolTFJStFNwZZUvtZVUVFS9IoIpOcsqBzChGkqBoK
+ CKTfbCnGWVW9ApxSUkU2hllP9rKrekUvSKVqpsfayn+1lVvSKXpFJVNn7WUvtZVf0il6RRVTY+1lL7WV
+ X9IpekUk02PtZS+1lV/SKXpFFVNj7WUvtZVf0il6RSVTY+1lL7WVX9IpekUlU2PtZS+1lVvSKXpFNKqb
+ P2spjllA9IpGooWqkpyyo/bSgmkqBpKNrqbYzT4pzlkqmKSpiopwpNMrLy5U7TKtGkqDqCnAppzXtTNE
+ K87HKj9nKNqpjU8hXq8ghV2Y5R20FK1UnGUU32sqHoFMaCgqkoyyn+1lA9ApvRKCKbP2spfayq3pFL0S
+ mobP2spfayq/olL0Sktpsfayl9rKr+iUvRKSqbH2spfayq/olL0Sgqmz9rKX2sqt6JS9EpJbP2spfayq
+ 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
+ KXpFJTZ+1lL7WVW9IpekUlNn7WUvtZVb0il6RSU2ftZS+1lVvSKXpFFTa+1lL7WVW9IpekUlNn7WU/2s
+ qr6RT+kUlNn7WU32sqv6RTekUlNg5hTfbCq/olN6JTCUtn7YUxyyq3olL0ikCpK/JJVW2wlF9EqJoKlB
+ Q0HyUOFoHGKb7MU+1NauQrlVhCQxipigpWhsMySET7WVW9IpjUU0qbBzCkMsqt6RUhSUwobH2opfaihC
+ kpjSU21JTllL7WVXNRUfSKFqbX2spfayq3pFL0iiChs/ayl9rKrekUvSKeEtn7WUvtZVb0il6RRU2vtZ
+ S+1lVfSKXpFJTZ+1lL7WVW9IpekUlNn7WUvtZVb0il6RTVNn7WUvtZVb0im9IoILaGWVIZZVQVFSFRQW
+ tv7WUxyygCopeiUE0lOWVA5ZUDQVA0FC0gJPthTfbCgmgpvQKVrgGyM0+Kl9sKqeiU4qKeFzZOUShPvJ
+ UPSKRqKliUIbHyqz9VcNJUTQVLaqaXCIx5CMccpxjFK0UkqvIVtmSVUbjlGbSUEU2ftRTHLKD6RUTUVG
+ aQlOWU32wquaSm9EqMoptDMPin+2nxVT0Sn9EppVTZOaU32wqv6JTeiULVTaGYVMZZVQUlSFRRTTa+1l
+ R+1lA9IpekU4KpP9rKX2sqv6RS9Ioqps/ayl9rKq+kUvSKKqbX2spfayqvpFL0igqm19rKX2sqr6RS9I
+ oKptfayl9rKq+kUvSKCqbX2spfayqvpFL0ikqm19rKX2sqr6RS9IpJptfaym+1lVvSKXpFFVNn7WUvth
+ QBQU4oKOik32sqDsklR9ApjQU5VIrLSVVeZVs0FDNBRtNNIhONFa9BL7OUuJFImWEKyzIIQ/QKkKChaa
+ bLcoooyyqgpKmKShaqbX2opjlFB9IpjSULCqZnLKb7WUE0lQ9EpWFU2hllS+1lVBUVL0iktIbP2spfay
+ q3pFL0ikqm19rKX2sqt6RS9IoKps/ayl9rKrekUvSKFpptfayl9rKq+kUvSKFqptfayl9rKq+kUvSKFq
+ ptfaym+1lVvSKXpFG0U2ftZTHMKrmoqBqKVoptfbCnGYVT9IpxUUVU3BmFP9rKqioqXpFOVSc5ZUDllC
+ NJUTSUVUlOYU320+KAaCo+iUk0225hRhllUG0lGbUUV1Nh+SSFRutJVg1FBfQUlwDnvkqArV77OURuMl
+ a6mmxkI7Hlqs/Z1B1BTSVpC7ckhGbllVfQKkKSmLG4MsqQzCqgqKf0igpt/bConMKrGoqPpFJTa+2FL7
+ WVV9Ip/SKSm19rKX2sqt6RS9IpKbP2spvthVb0il6RSU2fthT/bCqnpFP6RSU2vtZS+1lVvSKXpFJTZ+
+ 1lL7WVW9IpekUlNn7WUvtZVb0il6RSU2ftZTfayq/pFL0ikpsfayl9rKr+kUvSKSmx9rKX2sqv6RTekU
+ lNn7WUvtZVb0il6RSU2ftZSOWVW9IpekUVJjllR+1lC9ApfZylaU4yymdkkoYxykaCnApa91pKo2SVov
+ oKCccqeJQ0AxWKxCOMdTbQU8lTKuwhWW5JCAKSpeiVWmVNj7YU320+KrGkpCkqO1NoZZUvtRVYUlS9Eo
+ 2pMcspvtZQTSVH0SiCpsjLKf7WVV9IqXpFSBTZ+1lL7WVW9IpekUips/ayl9rKrekUvSKiJQ2ftZS+1l
+ VvSKXpFC1Nn7WU/2sqr6RS9IoqbX2spfayqvpFL0inKbX2spfayqvpFL0ikptfayonLKr+kU3pFFSc5Z
+ SGWUD0SkKCkhsjMKc5hVb0SkaSlSU5yym+1lANJTeiUUhsjLKf7WVWFRT+kUlzZ+1FP9pKrioqQqKSWb
+ 7yVSusJVo1FAfQSlanNsJKGAVfdjFMMUoWhFVorldpCZuOUQUFAlSdmSQiDLKq+kUvSKba1tfaym+1lV
+ vSKXpFK0Fs/ayl9rKrekUvSKVobP2spfayq3pFL0ilamz9rKX2sqt6RS9Ip1qbP2spfayq3pFL0iihs/
+ aym+1lV/SKXpFFLZ+1lL7WVW9Ip/SKSmz9rKX2sqt6RS9IpJbP2spfayq3pFL0ighs/ayl9rKrekUvSK
+ CGz9rKX2sqt6RS9IpKbP2spfayq3plL0ygps/ayl9rKremUvSKKW19rKX2sqr6RS9IpJDZOYVE5h8VWN
+ RUTUUVzZOWShuvJQhUU/pFFKKx8qq/VXTSUM0FG1NJFY4hG+zlOMcpWpmy4hHblEIIoKkKCmkqT/AGsp
+ vthQvQKb7OULQnGWVMZZVYUFTFBTSUNkZZT/AGsqt6JT+kULQn+1lL7WVX9IpvSKeFNj7WUvtZVf0il6
+ RRU2PtZS+1lV/SKXpFBTY+1lL7WVX9IpekUkNn7WUvtZVb0il6RQU2ftZS+1lVvSKXpFJTZ+1lL7WVW9
+ IpekUrU2ftZS+1lVvSKXpFC1Nj7WUxyyg+iU3oFG1JTllN9rKEaCl6BStKb7WUvtZQvQKRoKNpS/aym+
+ 2HxQDSVA0lJLZOafFDdlkoPolOKCilTriUB5JVkY5S+zFG0tEgphIV44xUTjFG0oWWEKyzIIQ/s5UhQU
+ rQW0zKKKMsqmKSp+kU1YWz9rKb7WVX9IpekUENj7WUvtZVf0il6RSU2PtZS+1lV/SKXpFJTY+1lL7WVX
+ 9IpvSKSmz9rKX2sqt6RT+kUlNj7WUvtZVf0il6RQU2PtZS+1lV/SKXpFJTY+1lL7WVX9IpekUlNj7WUv
+ tZVf0il6RSU2PtZS+1lVvSKXpFFTZ+1lL7WVX9IpekUlNj7WUvtZVf0il6RSU2PtZS+1lV/SKXpFJTY+
+ 1lL7WVX9IpekUlNn7WUjllVvSKXpFFSR+SSq1lpKIaSomgp1pab9ULarxoKb7OlxKa7NFarsITCgqYpK
+ HEpIMghMcshQNRQzSUrUnGYURuYVUFBRW45Q0U2hllL7UUIY5T+gUNFJPtRT/aygGkqJqKSmz9rKb7WV
+ W9IpekUlNn7WUvtZVf0il6RSU2PtZS+1lV/SKXpFJTY+1lL7WVX9IpvSKSGz9rKX2sqv6RS9IpKbH2sp
+ fayq/pFL0ikpsfayl9rKr+kUvSKSmx9rKX2sqv6RS9IpKbH2spxlFVvSKcVFJDZGUU4yiqwqKl6RTVNj
+ 7UVE5ZQfSKgaigpI7MKh9sKC6kqPoFAJbQzCoWZJKEKSk6kqeAU1bbSUNpko7qCpMxzKfLZLZxQt3FCy
+ 8amFs4zYVHIp0qQrbVWqVgFQhTNQKkSolPClkkkkVKTpkkqUpOmSSpSkkkkKUukmSQpCk6ZJNpSkkkkQ
+ FKSSSTwlSSSSKlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkipdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklLJk6ZJSycJk4SUyTOTpnJK
+ a1irlWLFXKSmTFaYqrFaYkpKEkgkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpMU6YpKWKZOVFJTIKQKgnBSUyJQLEYlAsSU1XhM0KTk7AkpNWEcBDrCNCSkbkFxRnqs8pKRvcgPepPc
+ gOKBTFYvTB6iQnhRlsxDPeousUSEN6TKIrutUPVQnFQSXcKf1VE2oSYhJHCk9VSFqrwptCSDFuMsVut6
+ z6wrTDCTFKLosei7lRa+FM2wkxGKWxyo2vU7LlRttSTTPfqrNVizBZqrNT0lcLqh+iDY9DFmiFY9JeIs
+ XvUQ9Bc9SaUmThbAen9RDCRCSOFmbU2+UOFNrUlpikaUdhQ2MRmtSYpRStKmChgJ5SYaSSkVDcnlELgG
+ D1WeVaIlBexOZKahdCdtiVjYVcmEkU6DLJVlhlZdT1fqdKSKbKYlOFBySqZhyIFXBRWlJVMyEMqZKG4o
+ qWlMSoF0IbrEksnuVd70n2IDnSkuZGxOLUApJKbbbEVr1RDoRG2JKb7SigqmyxWWOlJScIgQmlEBSQkA
+ UoUQVKUULFRlSKjCS1Up0gFKEkMUlKExQQskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUm
+ JKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpZJJJJSkkkkVKSS
+ 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
+ 1qTEROXOdfXCzbRC2Lwsm8JIRsfBWhQ9ZIMFXaHpIddplIhBqfKsDVFSOFIFSIUCkpnKi5MCnKSmvYqz
+ 3K3YFUe1JKIulICU4YjMYilGK0xrVwVpnsSU5zxChvhHubCqHlJTbqer9RlZtK1KAkhsNCIna1SLUkMA
+ VIOUSEwRQmBlTAQmIwSWqhIpyVAlJCimKaUkFqkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5Um
+ KJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpZJJJJSkkkk
+ VKSSSSUpJJJJSkkkkkKTpk6SlJJJIKUmKdMgpgVGEQhLakpZqICogJJKZSmlQJTbklJAU6GCpgp4SuQo
+ kKSiSnBTAhNCTnQhm0BPSkACmAFV9cJfaAlSW2IT6Kp9pCX2kIcJU2SmKr/aAl64R4StTpIHrhL1wjwl
+ SdJA9cJeuEuEqTpIHrhL1wlwlSdJA9cJeuEuEqTpIHrhL1wlwlSdJA9cJeuEuEqTp1X9cJeuEuEqbCSr
+ +uEvXCXCVNhJV/XCXrhLhKmwkq/rhL1wlwlTYSVf1wl64S4SpsJKv64S9cJcJU2ElX9cJeuEuEqbCSr+
+ uEvXCXCVNhMgeuE3rhLhKQWxATgBVheFMXBIxK/iTbQmLVD1gmNwQ4SriZwnBCrm8KJvCPCUcTcBCeQq
+ P2gJxkhLgKOJukhRKq/aAn9cJcBRxJymhB9YJ/VCXCjiTJ0D1gm9YJcCOJsSnVX1wnF4S4FcTZSVf1wn
+ 9cIcJRxJ06r+uEvXCXCU8TYSVf1wl64S4Sq2wkq/rhL1wlwlNthJV/XCXrhLhKrbCZA9cJeuEuEptOkg
+ euEvXCXCVW2ElW9cJeuEuBBk2YShAF4UvWCbwI4ksJIJuCGcgIiCeJtyEpConJCQyQncBTxN7RKAqgyA
+ iC8IcBXcSfaE20IfrBRN4Q4SniSwExQDeFH1wncJRxJymQhaFL1QjRVxJE6CbQm9YIcJQZNhJV/XCXrh
+ LhK3ibCSr+uEvXCXCUcTYSVf1wl64S4SribCdV/XCXrhLhKuJsJkD1wl6wS4SniTpIHrBL1glwlPEnSQ
+ PWCb1glwlXEnSQPWCb1gjwlXE2E6r+sE/rBDhKuJsJ1W9cJeuEOEotsJKv64S9cJcBRxJ0lX9cJeuEeB
+ XEnTqv64S9cJcCuJsJ1W9cJeuEuEp4mynhVvXCkLwhwlPE2ICYtCF6wTeuEOErrSloUYCEbwoG8JwiVW
+ 2NEpVb1wl64R4CnibSSrC8J/XCHCUcTYSQPWCf1glwlHEmSQfWCb1glwlHEnTyq3rhN64S4FvE2pSVUX
+ hSF4S4CkSbCSB64S9YIcJX8SdJA9YJesEuErTJPCUIHrhL1wlwli4k6SB64S9cJcJXCSaEoQfWCXrBHh
+ K4STQlCD6wS9YJcJXcSeEoQPWCXrBDhKeJsAJ4Vb1wn9cJpgsMk5CiQheuEvWCZwLOJLCcIPrBRN4TxB
+ Ik2JSlVTeFH7QE/gK4SbeiaAqwvCmLgjwkMgkm2hLaEP1gmNwQor7SQEyCbwom8IGDGZNkJwFWFwRRaE
+ 3gWcSYBPCF6oUTcEeFXEnSgKv64S9cI8JVxNhJV/XCXrhLhKuJsJKv64S9cJcJVxNhKFX9cJeuEuEq4m
+ xCUKv64S9cJcJVxNiEoVf1wl64S4SribEJKv64S9cJcJVxJ04Vb1wkLwlwlXE2wkqwvCf1whwlXEmKiU
+ I3hQN4ThEq4k6dV/WCcXBLhKuJsJigesEjcEuEq4kpTIJuCb1gjwlXE2AnVcXBP6wS4SriTp1X9YJ/WC
+ HCVcSeAnDQq/rhP64S4SvBbEBKAq/wBoCY5AQ4Cq2wYSkKqcgJvtAR4Ci25KUqqMgJ/XCHAUW2ColB9c
+ JvWCXCi0ycKv6wT+sEuFFtgJ1X9YJeuEuFFtnRNoq3rhL1wlwqtspKv64T+uEuEqtOkgeuEvWCXCVWnS
+ QPXCXrhLhKbTpIHrhL1wlwlVp06r+uEvXCXCU22ElX9cJeuEuEptsQkgeuEvXCXCVWnKgUI3hRNwS4Si
+ 00qYKq+sEvXCXAjiboITyFR+0hL7SEvbKeJuyExIVL7SFIZAS4CnibRhRIQPXCf1glwlPElITIJuCY3B
+ O4Sm2wFIFVPXCcXhDhKuJtykSqvrhL1wlwFXE2JSVf1gl6wS4SjibCSB6wS9YJcJW8SdJA9YJeuEuFHE
+ nhKED1wl64Q4VcSdJA9cJeuEeEq4k6SB6wS9YJcJTxJ0yB6wS9YJcJVxJ0kD1gl6wS4SnibCSr+uEvXC
+ XCU8TYTIHrhL1glwlXEmSQfWCXqhDgVxJk4QPWCXrBDgVxNkBSCrC8JxeEuBXE2YUCEL1wom8IiJVxM3
+ IZUDcFH1QniJVxJgFMBAFoRBaECCriSbU+0IZtCibghRVxJwApSFV9cKJyAlwFXE25CaQqn2kJDICXAr
+ ibUJQgC8KYtCBijiSbU0JvUCY2BN4U8TKE4QjaFH1gjwK4m0FJVBeE/rhHgKuJtaJjCr+uEvXCHCVcSc
+ pkD1wm9cI8JWlOkgeuEvXCPCUJ0lX9YJesEuEpTpIHrBL1wjwlSdOq3rhP64S4SpsJKv64S9cIcJU2El
+ X9cJ/XCbwqTpkD1wmN4S4FJ1IKr64UheEeBTZTFB9YJjcEeEqSJxCrm4JeuEeEpbYhSgKmMgJ/tIQ4Cp
+ tGFEwq/2gJvXCQgVJ04VYXBTFwSMFNhMUL1gom8JnApKUlXN4SF4REFNlKED1gl6wTuEoTpQgesEvWCX
+ CVJ4ShA9YJesEuEoTwlCB6wS9YJcJUnhKED1gl6wS4ShPCUIHrBL1glwlSeEoQPWCXrBLhKk8JQgesEv
+ WCXCVJimKCbgmNwR4Upk6ri4KYtCXCpLCaFEWBP6gQpK8JwFH1Al6oQpKUKYVb1gm9cJcJS2pCYwqv2g
+ JfaAlwFLZgJbAgC8IguCXCVMixRLFL1AomwJC0FgQkCousCEbQngLW0CiAqiLwpjICBgU23ExVcXhL1w
+ m8JUlIUUM3BRNwTuEqThSBVb1gl64S4Shtgp1UF4UheE3hKWymhA9cJesEuEqTQkgesE3rhLhKE6SB64
+ S9cI8JUnSQPXCXrhLhKk6SB64S9cJcJUnTqv64S9cJcJU2ElX9cJeuEuEqbCSB64S9cIcJUnSQPXCb1w
+ lwlKdJA9YJvXCaYKbKSreuEvtASEEtjRJVvXCcXhP4CpsQlCALwl64S4SpMlogG8KBvCPAUNsEKYIVD7
+ QFIZISMCpvSFEqsMgKXrhN4ChIQkAheqEvWCXAhOApQq/rhL1whwoTwmhB9cJvXCXCpNCUIHrhL1wncJ
+ SnTQgeuEvXCXCVJ0oQPXCXrhLhKk6dV/XCXrhLhKmxCUIHrhL1wlwlTYT6Kt64S9cIcJU2dExVb7QE3r
+ hHgK22wUyB64S9YJcCeJOnCB6wT+sE3gTxNgJ1W9YJeuEuBdxNlKQqvrhN9oCPAm21om0Vb7QEvXCPAU
+ 22YCW0Kv64Ti8JcJTbY2hKEEXBP6wQootkQoFRNoUDaE4ArSUoUgq/qhSFwRMSi2yFJVhcE/rhM4Sjib
+ KWireuEvtAQ4FcTaSVX1wn9cJcCrbBUSg+uFH1wiIJtMkgesEvWCPCq06eFX9YJ/XCXCVWnhKED1wl64
+ S4SriTwlCB64S9cJcJVxJ4Twq/rhL1wlwlXE2EoVf1wl64Q4SribEJQq/rhL1wlwlXE2IShV/XCXrhLh
+ KuJsQEyB64S9YI8JVxJk4QfWCXrBLhKeJsAp5VU3hROQEuAq4m0SFGAq32gJxeEuAp4mxtCcNCALgpes
+ EuEq4k0BIwq5vCibwlwlXE2CmVf1wpC4JcCuJOAnAQRaEjcEOFXEnlKQqpyAm+0BLgVxNpKFWF4UvWCP
+ CVnEnhKEH1gm9cJcJVxNhKFX9cJeuEOEp4mxCUKv64S9cJcCuJsQlCr+uEvXCHtp4mxCUKv64T+uEvbR
+ xJ4ShA9cJeuEuBXEnhKAgeuE3rhHgRxNmAlAVb1wn9cJcJVxJ4TQg+sEvVCPCVcSQhMVA2hRNoRoq4ki
+ QQfVCXrBHhKRJshSCqi8J/XCHCV4k2ktFV9cJ/XCHCU2nICiQEL1wom4JcJXWmgKQhVvWCf1wjwlbIts
+ JKr9oCf1wm8JYmyUxVf1wl64R4SpOkgesEvWCXCVNiE6reuE/rhDhKmwkq/rhN64S4SpOkq5vCb1wjwl
+ TZCkFVF4UheEuEqbKYoHrhMbwhwlSdJA9cJeuEeEqTpIHrhL1whwlSdKFX9cJeuEeEqbEJQq/rhL1wlw
+ lTYhMgeuEvWCXCVJ0kD1gl64S4SpOkgeuEvXCXCVJimQvWCY3BDgSnBTyqxuCb1wlwJbWiW0KsLwpi8I
+ 8JUm2BPsCELgn9YIUUpYCWirm8KByAhwobchNKqfaAnGQEOBDbSVcXhP64R4FNiU0hVjeFD7QEeBTbJU
+ VXF4T+uEeEpTwnhA9YJesEuEqbEJQgeuE/rhNMUJoShB9cJeuEuFSaEoQfXCb1wjwlSeE0IPrBN6wR4S
+ pNCUIPrBN64S4SpNCSB64T+sEeEoTJIPrBL1glwlCZOq/rBL1glwlTYUlV9cJ/XCHCUhspiq/rhMbwlw
+ lcnKZVzeEvXCPCUtkIgCpi8IrbwgYlLaACYtCELwkbwmcJUyLU0IZuCj6wR4EJoTwgesEvXCXAhPCaEH
+ 1gl6wS4FqaE8IHrBL1glwITwlCB6wS9YJcKk0JQg+sEvWCPCVJoShB9YJesEeEqTQlCD6wS9YJcJSmhJ
+ B9YJvWCXCUpoShB9YJesEuEqTJQg+sEvWCXCVJ0kD1gl6wS4ShNCUIPrBL1glwlCaEoQfWCXrBLhKk0J
+ Qg+sE3rBLhKk0JQg+sEvWCXCUtgKQIVQ3hN9pCXAVzcJCiYVT7SE4yAlwFLaACkGhVxeFMXBAxKU20JE
+ BBN4UTeEOEqTFMq5vCb1wncBWthOq4uCmLQhwoSwlCH6oTG4IcCEydVzeFH1wlwIbSZVvXCf1wjwlIbC
+ Sr+uE/rhHhKU6Sr+uE/rhLhKk6SB64S9cIcJQnSQPXCXrhLhKk6SB64S9cJcJU2ElX9cJeuEuEobEJig
+ euE/rBLhKkhCiVH1QoG0JcKkkpByrm4KPrhHgS3AVIFUxeFMXhLgU2wU4IVT1wl9oCHAUtyQnkKj9pCQ
+ yQlwFLcKgQgC8J/WCXCUsy1IBDNoUTcEeFLZEKchUvtASGQEuAqLcMJlWF4UvXCXCVhTpIHrhL1whwlC
+ dJA9cJeuEuEqTpIHrhL1wlwlSdJA9cJeuEuEqTpIHrhL1wlwlSdJA9cJeuEuEqTpIHrhL1wlwlSdJA9c
+ JeuEuEqTpIHrhL1wlwlSdJA9cJeuEuEqTpIHrhL1wlwlSdJA9cJeuEuEqTpIHrhL1wlwlSdJA9cJeuEu
+ EqTpaKv64TG8I8JU2SQomFX+0BL1wlwFKeAkGhBFwUhcEuEqTBoUgAgesEvXCHCVNgAJ1W9cJeuEOAqb
+ JUSUD1wo+sEeEqTkpkH1gl6oR4VJU6B6oS9YJcKmwAnVf1wl64Q4SpspKv64S9cJcJU2Eyr+uEvXCXCU
+ NhJV/XCXrhLhKmwkq/rhL1wlwlTYSVf1wl64S4SpsJKv64S9cI8JU2ElX9cJeuEuEqbKWireuEvtAQ4S
+ psEKJCD64T+qEeEqSbU4CH6oTi0IUpOAnQPWCY3hDhKkxKgUE3hDN4ThErk8JBqCLgpttCJBSlDVMBDF
+ gUw5QSihmE6hKeU3hQyTJpSR4VKTpJk6lLpJkkqUukmSSpS6SSSVKUkkkhSlJJJIUhSSSSVKUkkkklSS
+ SSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kipdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklLJk6ZJSycJk4SUyTOTpnJKa1irlWLFXK
+ SmTFaYqrFaYkpKEkgkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpZMp
+ JQkpjCSlCaElMSgvKM5AsSUgcVJhQ3FSYUlN6so4VaoqwCkpg8KpYFceqzwkgtGxqruarr2oBagV8N2r
+ tTgI5YmLVEXQxlEouKI5AeUGcFiSkHITnJg5Jc2NyG5yjuQ3FJVrlydrkElSaUlhb1blbrKz63K5W5Ji
+ k3WqcBAa5TL0mEsbAFQuAVux6o2uSUgPKmwoLipNKSW41yZzkAPUXPSZYhIXJtyrl6kHJMwCfcmJUWog
+ CSiELlCSjligWJLCFVkq7UVVYxXampNeYbLFNRaFJJrlaFIBMEUBOCQoaJF8JnGFWsthOSq58rNu1R32
+ SguEpKaZGqNU6E7q1ECEkOhS9Xq3Ssmp0K9VYkpuobgkHykUlMQpAqKUpKU4SgOrlHlPCKmqK0RrYRS1
+ QOiSWQKg8qJcg2PRSgvKpuOqNa5VidUkNugrWxysakrUockh02lOUFj0QFJaViE0KYEp9qSFmhEBUYSl
+ Jba5KgVJNCKFk6UJIIXTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKf//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0y
+ dMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1
+ VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKWSSSSUpJJJFSkkkklKSSSSUpJJJJC
+ k6ZOkpSSSSClJJJIKXTwmSSUoqJTkqJSUwKZOU4CKlAIgCYBEARCWJCC8wrDgqtxhPCmtbbCpWZMJ8l8
+ LJvuKeltvzIQjneayLLygG4pwS7n2/zS+3+awPVKkLHJ4U7wz/NP9v8ANYPqOT+o5PC13vt/ml9v81g+
+ o5L1HI6Id77f5pfb/NYPqOS9RySXe+3+aX2/zWD6jkvUckp3vt/ml9v81g+o5L1HJKd77f5pfb/NYPqO
+ S9RySne+3+aX2/zWD6jkvUckp3vt/ml9v81g+o5L1HJKd77f5pfb/NYPqOS9RySne+3+aX2/zWD6jkvU
+ ckp3vt/ml9v81g+o5L1HJKd77f5pfb/NYPqOS9RySne+3+aX2/zWD6jkvUckp3vt/ml9v81g+o5L1HJK
+ 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
+ 49sqnOgp1WmUQBBqMqyAobUxhMiEKBRUskknRUsknSSUsknSSUpJJJJCkkkkEKSSSSUpJJJBSkkkk1Kk
+ kkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJFS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKWTJ0ySlk4TJwkpkmcnTOSU1rFXKsWKu
+ UlMmK0xVWK0xJSUJJBJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJOmSUuk
+ mTpKUkknSUjcq1itOVa0JKajk7CmekxJTdqKtNKp1FWmlJS7kF4RSUJySC13hAdorD1UtMIFfBg58IZs
+ QrHoBsURb0Gw56C4yob0plBsBiQkGogEogYkuQ7VBzVb2KDmJKaRCQRnsQyElpS1lW6yqTFbqSYZNxhU
+ imrCLtSYS1bAqlgWg9qq2NSUGkWqTWIu1FYxJcEOxCexaHpoT60meDn7URjUUsUmsSZlNaiAKQamISRb
+ AlRlJygkgpmFWqyqbVYrKTXyN1pU4QWFGBSaxXAROEPcousRClWuhZ9r0e2xU3mU5cxmUVjJQ2NVypiK
+ ERqQX1wtLYg2VpIaI0RmPhReyFCYSQ32WIwdKz2PVpjklJyolSGqZwSUw3QpB6C8whGyEUt0OlIiVWZa
+ rLHApJRuYq1jFoGCq9jQipy7GoG1XrWoBakhVQWjSqdYV6oJIbTEUIbAigJLSkapoYU5SWlcqJTpiElp
+ WCdMlKKF0yUpIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkp/9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ
+ 0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPV
+ V6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpZJJJJSkkkkVKSSSSUpJJJJSkkkkkKTpk6S
+ lJJJIKUkkkgpSSSSSliolOUxSUsnCUJwEVMwiBDCmEUruVK9XCql6cEuNlLHvC2slZNo1UgU5rmEphQS
+ rorkq1TQCnpc1mGSjtwT4LcpxAVdZhBK6U8yMA+Cf7AfBdWMIJfYghxrXlP2efBL7AfBdX9iCX2IJcan
+ lPsB8EvsB8F1f2IJfYglxqeU+wHwS+wHwXV/Ygl9iCXGp5T7AfBL7AfBdX9iCX2IJcanlPsB8EvsB8F1
+ f2IJfYglxqeU+wHwS+wHwXV/Ygl9iCXGp5T7AfBL7AfBdX9iCX2IJcanlPsB8EvsB8F1f2IJfYglxqeU
+ +wHwS+wHwXV/Ygl9iCXGp5T7AfBL7AfBdX9iCX2IJcanlPsB8EvsB8F1f2IJfYglxqeU+wHwS+wHwXV/
+ Ygl9iCXGp5T7AfBL7AfBdX9iCX2IJcanlf2efBP+zz4LqhhBS+xBDjU8g7AI7KvZiELsrMMQszJxgE4S
+ U8rZUQqzmlbeTSAs59eqkBXU0wCisrJRW1q3TTKXEqkVdBKtMxCVfoxgVpU4oTTJFOKME+Cf7AfBdIzE
+ CJ9kCaZqp5f7AfBN9gPgup+yBL7GEOJFPLfYT4JfYT4LqfsQS+xBLjRTy/2A+CX2A+C6kYYTjDCHGqnl
+ f2efBMennwXWfYwonDCHEqnk/sB8EvsB8F1X2MJfYwjxIp5b7AfBL7AfBdV9jCX2IJcSaeV+wHwS+wHw
+ XVfYwl9iCXGqnlfsB8EvsB8F1f2MJfYwlxpp5T7AfBL7AfBdX9jCX2MJcaaeU+wHwS+wHwXV/Ygl9jCP
+ GqnlPsB8EvsB8F1X2MJfYwlxpp5cYB8E/wBhPguo+xhMcMJcSwh5Y4RUDhFdS7DCgcMI8SKeZGCfBSGA
+ fBdM3DCK3DCBkkB5gdPPgovwSOy637GEC7EACQmup427GLVnXNLV1WXjgLByqoUgkmnJcSpMkqT2aotL
+ NU7iVSemouV6vEJRMSkGFuY2MCEOJVOJ9gPgonAPgurbhhI4QTONXC8qMA+CkMA+C6gYQT/YwlxraeY+
+ wnwTfYT4LqfsYS+xhDjRTy32A+CX2A+C6n7GEvsYQ40U8t9gPgl9gPgup+xjwS+xjwQ41U8v9hPgl9gP
+ guo+xhP9jCXGqnlvsB8EvsJ8F1H2MeCX2MeCXGmnl/sJ8EvsJ8F1H2MJ/sYR41U8t9gPgl9gPgup+xhL
+ 7GEONNPLfYD4JfYD4LqfsYS+xhMORVPLfYD4JvsJ8F1P2MJfYwkMiqeW+wnwS+wnwXUfYwm+yBSiauF5
+ j7CfBL7CfBdP9jCf7GEeNHC8v9hPgl9gPgup+xhL7GE3iVTy32A+CX2A+C6r7GEvsYS4kU8t9gPgpDAP
+ gunGGEQYQQM008k7AI7KpdjFq7S3DELHzcYBOjJNPKWgtVUuK08uuCs1zdVaimmbASrlVRKDQyVsYtIM
+ JFVI68QlHGCT2Wvj4wKvMxAoZTpNPNHAPgoHp58F1n2MJvsQURminkz08+Cj9gPguuOEPBROEPBQnIin
+ k/sB8E4wT4LqfsQ8EvsYThNbTzIwT4IgwT4LoxiBSGIFJxIp5v7CfBROCfBdR9lCb7IEOJIDyhwD4Jvs
+ B8F1f2MJvsQQ419PK/YD4J/sB8F1X2IJfYglxrSHlfsB8EvsB8F1X2IJfYx4JcbHTyv2A+CX2A+C6r7G
+ PBL7GPBETSA8r9gPgl9gPguq+xhL7EE/jXgPK/YD4JfYD4LqvsYS+xhDjXU8r9gPgl9gPguq+xBP9iCB
+ mmnlhgHwUxgnwXTDDCf7GEwyWEPLnCPghnCK6o4YQzhhM4llPL/Yj4KQwD4LpRhhEGGE8STTzP2A+Cg/
+ CI7LrDiBV7cUQpYyXAPIXY5aqFrSF1GXjgLCyaoUwK8Byi4qbCSk9mqLSzVOtfTZpqLlfqxC5PiUzC38
+ XGBUUisIccYBPZMenHwXVswwpnCCrmWqynj/ANnnwTfYD4LrjhBROEEeJFPJ/YD4JfYD4LqvsQT/AGIe
+ CXEqnlPsB8EvsB8F1f2IeCX2IeCXEqnlPsB8EvsB8F1f2IeCX2IeCXEqnlPsB8EvsB8F1f2IeCX2IeCP
+ EqnlPsB8EvsB8F1f2IeCX2IeCXGqnlPsB8EvsB8F1f2IeCX2IeCXEqnlPsB8EvsB8F1f2IeCX2IJcaqe
+ U+wHwSGAfBdV9iCX2IJcSqeXGCfBP9hPguoGGEvsYR41U8t9gPgm+wHwXVfYwl9iCXGqnlvsB8EvsJ8F
+ 1P2IJfYwlxqp5b7CfBL7CfBdR9jCb7GEuJVPMfYT4JfYT4Lp/sYT/Ywlxqp5f7CfBROEfBdUcMIbsQI8
+ aqeTfhkKpZjELrrcULLyccBLiUA809hCHqtG+qFTLNU/iZRFZgJVuuglNRXK18agFLiTwtSvEJRhgE9l
+ uUYgKuswwmmSOF5f7AfBIdPPgur+xhIYYTOJHC8sOnnwT/s8+C6sYYS+xhDiRwvKfYD4JvsJ8F1Rwwon
+ ECXEjheX+wnwS+wnwXTfZAl9kCHErheY+wnwS+wnwXUfYwl9jCXGjheW+wHwS+wHwXVfYgl9iCPErheV
+ +wHwS+wHwXVfYgl9iCPGrheV+wHwS+wHwXVfYgl9iCXGrheV+wHwTfYD4Lq/sQS+xDwS4008p9gPgn+w
+ HwXVfYx4JfYglxq4XlfsB8EvsB8F1X2IJfYghxp4XlfsB8EvsB8F1X2IJfYx4IcauF5X7AfBL7AfBdV9
+ iCY4YThNBDyv2E+Cb7AfBdV9jCX2MJ3Etp5b7AfBL7AfBdUMIJHCCXGmnk3YRCr2Y5C6y3EAWbkY4Cdx
+ Jp5uyshAcCtW+qFQezVOtNIACUZlZKkxiu0VSlaaRMxyUduIStKjHBWhVihDiVTgjCPgn+wHwXTNwwpj
+ CCaZqp5b7AfBL7AfBdV9iHgl9iCHGinlvsB8EvsB8F1X2MJvsYTeJbTy32A+CX2A+C6n7GEvsQQ40U8t
+ 9gPgl9gPgup+xBL7EEONVPLfYD4JfYD4LqfsQS+xBLjVTy32A+CX2A+C6r7EE32II8aaeW+wHwS+wHwX
+ VfYgl9jCXGqnlfsB8EvsB8F1X2IJvsQR4008r9gPgl9gPguq+xhN9jCcJpp5cYJ8FIYJ8F032QJDECPG
+ qnmxgnwS+wnwXTDECf7IE0yRTyxwT4KJwT4LqTiBROIEOJVPL/YT4J/sB8F04wwpDDCHEqnlvsB8EvsB
+ 8F1X2IJDCCXEqnlDgHwQn4JHZdgcIKvbhCFIJqp4u3FIVKyohdbk4oCxsmgBO40U4sEItcoj64KlUzVD
+ iVSephKu14xKfFqlbWPjApGSqcsYRKY4J8F0rMQFE+xBMMk08ocA+Cb7EfBdWcIeCgcIJvEqnlxhHwUh
+ gnwXTfYgnGGEeJVPMjBPgpDAPgunGGE/2QJcSqeY+wHwTHBPgup+yBROIE4TTTyxwj4JvsR8F05xAl9j
+ CPGqnmfsJ8E/2E+C6YYYUvsYUZmp5b7CfBL7CfBdT9jCX2MICanlvsJ8EvsJ8F1H2MJfYwnianl/sJ8E
+ 32E+C6n7GEvsYS41PLfYT4JfYT4LqfsYS+xhLjQ8t9hPgl9hPgup+xhL7GEjJTy32E+CX2E+C6n7GEvs
+ YTOJTy/2E+CcYJ8F0/2MJfYwlxKeZ+wnwTHAPguo+xhL7GEeJTyv2A+CX2A+C6sYYSOEE7jU8g/CIVS3
+ HLV2N2IAFjZeOApRNTzNjSEAkrRyWQqBGqfamVYJV2qkuQcdklbeJQDCBkpBXhkoowD4Lex8QEK63CCi
+ lNTyv2A+CcYB8F1Rwgm+xhM4lPMfYT4JjgnwXUfYwl9jCPEp5U4B8EvsB8F1X2MJfYwlxJeV+wHwS+wH
+ wXVfYwl9jCXEp5X7AfBL7AfBdV9jCX2IJcaHlfsB8EvsB8F1X2IJfYwlxoeV+wHwS+wHwXVfYwl9jCXG
+ p5X7AfBL7AfBdV9jCX2MJcanlfsB8EvsB8F1X2MJfYwhxIeUOAfBN9hPgurOEFH7EEuJTy4wD4KQwD4L
+ pxhDwRBhBLjU8t+zz4JfYD4Lq/sYUTiBLjS8ocA+CicA+C6s4gUThhLiU8mcA+Cb7AfBdZ9iCb7CPBLi
+ S8qMA+CkMA+C6oYI8E/2IJcSXl/sJ8FB2IQurOGFUuxQEuNLyttJaqdgIXQZVICx72Qlxqc5xKdjSUQt
+ 1R6KwURNYV6qCVdrwiVaxaAVs4+KCjxLbcQYB8EvsB8F1LcMJzhhDjVbyn2A+CRwT4LqvsYTHCCPGq3l
+ PsJ8EvsJ8F1Bwgm+xhLjVbzQwT4KYwD4LpRhhTGGEONVvL/YD4KJwD4LqvsgUTiBDjVbypwT4JvsJ8F1
+ Jwwm+xBLjVby4wD4J/sB8F1IwgpDCCXGq3lfsB8EvsB8F1X2MJfYwhxqt5T7AfBL7AfBdX9jCX2MI8ar
+ eU+wHwS+wHwXVfYwl9jCHGq3lfsB8EvsB8F1X2MJfYwlxqt5X7AfBL7AfBdV9jCX2MJcareW+wHwTfYD
+ 4Lq/sYTfYwjxqt5b7AfBOMA+C6n7GEhhhLiSC8uMA+Cf7AfBdSMMJ/sYQ4l4eTOAfBQdgnwXXHDCC/CC
+ cJJePfiEKrZQQuuuxAFl5GMApgUPOPYQoQVpXVQq2xOtSNjCVbroJT01haePSChxIarMQlGGCfBbNGMC
+ rzMQJhmp5n7AfBROCfBdX9jCicMKPjQ8qcE+Cb7CfBdScMJDDCaZKeX+wHwT/YD4LqRhhP8AYwhxKeV+
+ wHwS+wHwXVfYwl9jCIkh5X7AfBL7AfBdV9jCX2IJ3Ep5X7AfBL7AfBdV9iCX2IJcaXlfsB8EvsB8F1X2
+ IJfYgjxqeV+wHwS+wHwXVfYgl9iCaZqeV+wHwS+wHwXVfYgl9iCZxqeV+wHwTfYT4LqjhBMcMJ8ZqeX+
+ xHwTjCPgul+yBOMQKTjW8LzX2E+CX2E+C6cYgT/ZAmmSeF5f7AfBL7AfBdT9kCX2QJvEu4Xlv2efBL9n
+ nwXVDDCf7GEuJIi8p+zz4JjgEdl1n2MKD8MJcS7heSdhkID8YhdVbiBZ9+MAniSqebfWQq7pC2MimFm2
+ MT+JVNcSUVlRKkxiv49QKXEjhQMxSVYZhErVoxgVoVYgS40cLgDBPgpfYT4Lpm4YU/sYUZmjheW+wHwS
+ +wHwXU/Ygn+xBN4kU8r9gPgm+wHwXV/Yh4JfYh4IcSuF5T7AfBL7AfBdUcMJvsYS4k8Ly4wT4J/sJ8F1
+ Awwn+xhOE08Ly32E+CY4J8F1JwwmOGEeNXC8t9hPgl9gPguo+xhOMMJGa0h5b7AfBL7AfBdV9iCX2IJv
+ GinlPsB8E/2A+C6r7GPBL7GPBDjVTyv2A+CX2A+C6r7GPBL7GEuNNPK/YD4JfYD4LqvsYS+xBDjVTyv2
+ A+CX2A+C6r7GEvsYS41U8r9gPgl9gPguq+xDwS+xhHjVTyv2A+CY4B8F1f2MJvsQR4lU8kennwSHTz4L
+ rfsQUhgjwR4008q3p58E7sIjsur+xAIFuKAEhNVPJW45Co2MIXTZNACxsiqE8SVTlmVJgJRHM1RKmI8S
+ qZ1VEq2zEJRsaoFa1GOChxKpyBhFP9hPgukZigqf2MJvEmnl/sRSGEfBdOcMJhhhLiVTzYwT4JfYD4Lp
+ xiBS+xhNMlU8qcA+Cb7AfBdX9jCX2IJvGsIeU+wHwS+wHwXVfYgl9iCPGinlPsB8EvsB8F1f2IeCb7GE
+ 7jTTyn2A+CX2A+C6v7GE32MJcSaeV+wHwS+wHwXVfYwl9jCXEmnlfsB8EvsB8F1X2MJfYwlxK4XlvsB8
+ EvsB8F1P2MJ/sYS4kcLyv2A+CX2A+C6r7GExwwhxIp5f7CfBL7CfBdP9jCX2MIcaKeZ+wnwS+wnwXTjD
+ Cf7GEONVPLnBPgonAPgur+xhL7EEuNNPJHp58E37PPgut+xDwS+xDwRGRIDyYwD4Kf2A+C6kYQSOEE8T
+ XU8k/DIVO2ghdfdiABZGVjgKQSXAPNWNIQdxWjk1ws9zdVJa6mbJKt1UFyDjskrdw6AYUcpLSGmzBJ7I
+ 46efBdDj4YIVwYQ8FCZsTyg6efBSHTz4LqvsQTjDCXGp5X7AfBL7AfBdV9jCY4YS41PK/YD4JfYD4Lqf
+ sYS+xhLjU8t9gPgm+wHwXV/Ywl9jCXGp5P8AZ58Ev2efBdX9iCX2IJcanlRgHwTjAPgup+xhP9jCXGp5
+ b7AfBMcA+C6r7GE32MJcanlfsB8E32A+C6v7GEvsYS41PKfYD4JfYD4Lq/sYS+xhLjU8p9gPgl9gPgur
+ +xhN9jCXGp5X7AfBL7AfBdV9jCX2MJcanlfsB8EvsB8F1X2MJfYwlxqeV+wHwS+wHwXVfYwl9jCXGp5X
+ 7AfBI4B8F1X2MJfYwlxqeTPTz4Jv2cfBdb9iHgnGCPBLjXB5MdOPgovwSOy684QVa/EACMZLnjbsctWf
+ aCF1GZQAsDJrgqxEoc7cUaskoZZqrWOySpDJTapqLlfrwyVPEpBhbuNjAhVZyU4owCeyY9PPguqZiCE5
+ wwouJDyRwD4JDBPgupOGFH7GEeJTzQwT4J/sB8F0wxApfZAjxJeUOAfBQOAfBdYcMKBwwniaHlfsB8E/
+ 2A+C6j7GE/2MJGanlvsB8EvsB8F1P2MJ/sYUZkp5X7AfBP8AYD4LqfsYS+xhN4lPLfYD4JfYD4LqfsYS
+ +xhO4lPK/YD4JfYD4LqvsQS+xBHjU8r9gPgl9gPguq+xBL7EEuNTyn2A+Cf7AfBdV9iCX2IJcaHlhgHw
+ UhgHwXUfYwnGGEONaXl/sB8EvsB8F1YwwkcMJcaHk/sB8EvsB8F1Rwwo/YwnCa4PL/YT4JHBPguo+xhM
+ cMJ3GueWOEUxwyunOIEN2IE4TXPLvxSFVspIXUW4oWbkUAJ1qeesYQgGVp31Qqbmao2pGxpKu00FyjTX
+ JWziUAppKmtXhE9kYYB8Fv4+ICFcGEFEZIeUOAfBN9gPgurOGFH7GEuJDy32A+CX2A+C6n7GEvsYS4kP
+ LfYD4JfYD4LqfsYT/YwhxKeV+wHwS+wHwXVfYx4JfYx4IcSnlfsB8EvsB8F1X2MJvsYQ41PLfYD4JfYD
+ 4LqfsYT/AGMJcaXlfsB8EvsB8F1P2MJfYwjxqeW+wHwS+wHwXU/Ywl9jCPGl5b7AfBL7AfBdT9jCX2MJ
+ caHlfsB8EvsB8F1X2MJfYwhxoeV+wHwS+wHwXVfYwl9jHglxqeV+wHwT/YD4LqfsQS+xhLiQ8t9gPgm+
+ wHwXVfYwl9iCPEl5X7AfBL7AfBdV9iCf7EEeNTywwD4JHAPguqGEExwwlxrnkX4RHZVbMYhdfbiBZmRj
+ AJ4kl5exhCAZWvkUQqD607iUhbJVmuslRrYtHHqlLiUwrxiVYbhE9lpY+OCtOrEBTTJDzn2A+CY9PPgu
+ sGGExwgmcaHkvsB8E4wD4LqvsQS+xhHiWl5gYJ8FL7CfBdMMMKX2MIcSHlzgnwUTgHwXVfYwm+xhLjXh
+ 5X7AfBL7AfBdV9jCX2MI8aXlfsB8EvsB8F1X2MJfYwhxoeV+wHwS+wHwXVfYwl9jCXGp5X7AfBL7AfBd
+ V9jCX2MIcaHlfsB8EvsB8F1X2MJfYwlxKeV+wHwS+wHwXVfYwl9jCXEh5X7AfBN9gPgur+xhMcMJcSnl
+ PsJ8E4wSuoOEEhhhLiU82MA+CkMA+C6YYYUvsgS41PLnBPgonCPguoOIFA4gREkvLnCPgkME+C6f7GE4
+ wwjxKeXOCfBCfhkLrThhVL8UBESS8jbQQqNrSF02TQAsXIqhOEkuWZRKwSpGvVHprTrSlpqJV2vFJRcW
+ mVs0YwKBkhxxgk9lL7AfBdKzECKMIeCiM1ryv2A+Cb7AfBdYcIKP2MIcanlfsB8EvsB8F1X2MeCX2MeC
+ HGp5X7AfBL7AfBdV9jHgl9jHglxqeV+wHwS+wHwXVfYwl9jCXEp5X7AfBL7AfBdV9jCX2MJcSnlfsB8E
+ vsB8F1X2MJfYx4IcanlfsB8EvsB8F1X2MeCX2MeCXGp5X7AfBL7AfBdV9jHgl9jHglxqeV+wHwS+wHwX
+ VfYx4JfYwlxqeV+wHwS+wHwXVfYwl9jCPEp5X7AfBL7AfBdV9jHgl9jHglxKeV+wHwS+wHwXVfYx4JfY
+ x4JcSnlfsB8EvsB8F1X2MeCX2MeCPGp5b7AfBL7AfBdV9jCX2MJcanlRgHwSOAfBdWMIJnYQRE1PH2YZ
+ CpW0ELsb8QBY2VjgJ/El5uxpCFJWhkVwqRbqlamdclXaqiUChkrYxaZS4lIWYpKKMEnstmjFBV5mGE0y
+ U8z+zz4Jfs4+C6wYQUvsQ8E0zU8j+zz4JvsB8F1pwgoHDCXEp5cYJ8FIYR8F0n2QKQxAjxKeZ+wnwTHA
+ Pgup+xhL7GEOJTyn2A+CX2A+C6v7EEvsQ8EuJTyn2A+CX2A+C6v7EEvsQ8EOJDyn2A+CX2A+C6v7EPBL
+ 7EPBLjU8p9gPgl9gPgur+xDwS+xBLjU8p9gPgl9gPgur+xBL7EEuNTyn2A+CX2A+C6v7EEvsQS41PKfY
+ D4JfYD4LqvsQT/YglxqeU/Z58Ev2efBdYMIJ/sQS9xDyP7PPgl9gPgusOEFE4QQ9xTyowD4JxgHwXU/Y
+ gpDCCByKeV+wHwS+wHwXVfYwl9jCQyJeTOAfBV7cMhdk/DCz8nEACsQyKePspLVBsgrYyqAFmuZBUkp6
+ JbWM5bmI5YWONVtYioZJqdzHKvNWfjlXmFQiSWZQyiFDKeJKWSSTp3EhZJJOjalkk6SVqWSTpJWpZJOk
+ halk6SSVoUmTpkLUpJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJFS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKWTJ0ySlk
+ 4TJwkpkmcnTOSU1rFXKsWKuUlMmK0xVWK0xJSUJJBJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpZJOkkpZJMlKSmSdRlSCSmLlXtCslAsCSmk8JmhTeEzQkpsVqwCq7EYFJS5KG5ydxQ
+ HvSUs9yqW6oj3oLjKBTFqWBV3BXnNlAexRFsxk1lMFOWpAJMwmkajNQmBHaEmTiZQolqIAnLUkcTUexB
+ LVce1AcElpkiaFbqCrhWaikxyk3KwjIVZRCUmEyRWFU7CrNrlQtckoSUHaqxWVRDtVaqKS8Sbg4QbEQc
+ IViTYgUBU2ITipNekztkBRc1M16luRQhcxR9NHJTIILAMRGiEgVIFJr5CkaYRA9AlMXJNUlM61AfchPe
+ glyIXBK6yUwEobRKtVMlFevWxXK2wosrRwIRQuAhvaiSmcgho2MVVzYWi9sqs9iKGu3RWK3IRbCdroSU
+ 32GUQhVa7FYD5SUhtaqVmi0XiVStYilALIVhl6quYQogkJKdIXpnWSqIeVPcUkr2OQCVN2qhtRQmqKv0
+ qjU1XqklpbrAigITCigpLSukkkktLIKUJmqSS0o3BDJRXIRRRagVIKAUwgpdOkmSSpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//U69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklK
+ TJ0ySlJJJJKWSSSSUpJJJFSkkkklKSSSSUpJJJJCk6SSSlJJJIKUkkmQUukkkkpYpoUkoSUxhSAShOkl
+ cKQUFIFPUuVUvVoqpfwiEuPlFZVrtVp5SyLTqpApkw6rQx1lsOq0cYp6XaxwFoVgLNxitJh0UclJYCbR
+ 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
+ vZKruqSpLUa3VXKWqLalZrZCVLwUgboh2NVkBQe1KmxCQc14Q5hW31oJqSpsCYYB6IHqIrKkKylSDML7
+ kt6f0ym2FKlpmFw5EBQwwozWJUwTkCpRIRgxMWJU1S1XBQ2K2a0hWlS8Iq61dqrUWMhWWCEaX2za1OQp
+ BRJRpFsCmJTlRQRaxEobmIwCRCSraNjIVd2iv2MVV9aKrRsfCs12KsGIzGlJVtoGUzq5SYEcBFVtF9CC
+ 6laZYhOrSVbnempBitmtN6aSba3pqQqVkMRAxFFtdtcI7BCltTgJItKwooKAEVqSwpQnCi1TSQVwlKYl
+ RlJYWRKgQnTpIYwpBOkklZJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJT/AP/V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGC
+ Sl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCS
+ SkT1VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKWSSSSQpJJJFSkkkklKSSSSSpJ
+ JJJSkkkklLpJkkFLpkkkEqTpk6SlJ4SCdJSySdRKSVSnCipNCcFMiqt40VuFWvGicFOHlhZFw1WzlrHu
+ 5TwpEzlaOMs5nK0cZOS7OMtFnCzsZaVfCYVMyhlEKgQmhaWKdKEoTkKSShKElKSShKElKSShKElKSShK
+ ElKSShKElKSShKElKTpJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlBTUQpwgVILeFl5S1beFlZSeEuHlLJ
+ t5WrlFZFp1UiWLDqr+OVnt5V7HSU7mKVr0LGxVsUJhQ3GhSITMUimKRkJwkUyKLZSlKimlBDOUlGUgUE
+ MoSTSnlC1KSSSQtSkkkkLUpOmSStKkkkkbSpJJJK0qSSSStKkkkkrUuE6YJ0UFYqBUyokJyGKk1NCkEl
+ JAEG0aI6DadEAlxsxc9mHldBmlc5mHlSAqtyrTqp0HVAtOqnQdUbQ9DhHhdFijRc1gnhdJiHRK1Og0aJ
+ yk06JFMSsnSTpKUkkkkhSSSSapSSSSSl0ySSFqUnTJJKUkkklalJJJJKUkkmQRakkkkkWpJOkjaVkk6S
+ NpWTpJklLpJkkUrhTCgEQJFKOzhZGYtezhZGaiFPOZndY9nK1808rHtOqdxFSSjlbmF2WFQdVu4R4S4i
+ p6PEGi02N0WbhnRajOEwlSxCjCIUMoIYpJEqMpUhkmTSlKCF06hKfclaGUJJpSlK0hdJNKSSV0kySSl0
+ kySSl0kySSl0k0pSipdJNKUpKXSTSlKSrXlMSlKYpKUSoykUySmQKmFBoRAipRCrXDRWyqt50SBU42Ws
+ DKK3swrn8o8p3Eq3OedUag6qs86o1B1S4k27+H2XQ4nC5zCPC6HEOiFot02cJymYUimqYpJJJFS6SSSa
+ pSSSSSlJJJJKUkkkipSSSSSlJJJJWpSSSSVqUkmThFS4SThJJTEppTlMkpkE6YJ0lMSoFEKgUVMVIFRT
+ hJTIob0RQekpoXrGy1s3rFy0bU415VXdqj5B1VOdU4FNuhjlbmIeFz+MVu4Z4SJTbv4yutVDGKvtTCi1
+ OUFMqMJKtcKUJBOki2BCaFMhNCCrYwpAJJwghSdJJBSxTJ0yFqUkkklalJk6ZK1KTpkkrSpOmTo2pSSS
+ SSVJJJJKUkkmTglRUSU5UU5LIFTlQapoFSG1ZOUFrW8LLykUODlBZVg1WvlBZNvKVqY18rSxVms5WljJ
+ Wp3MZalKysZalJQtTcapIbSpEoKUSmTSnSUsknhPCSGKSlCUJKWSTwlCCFkylCUJKWSTwlCSlkkoShJC
+ ySeEoSUpPCQTpWq2JCaFJMjaLUE6QTpJYFQKIQokIqWCkEwClCKVJwVEpwklLKr3nRFlV7zogAlxc0rn
+ 8o6rezVz+VynKaBOqsUFVXHVHoOqKncxDwtvGKwcQ8LcxilanTrKJKDWipqlyVGU5CjCSFwVIKICkEEL
+ pQklKSFQmhPKSFqtZJOmSRak6ZJBK6ZJJJSkkkkVKSSSStSkkkkrUpJJJJKkkkklKTpkpRSyTqEqQKSl
+ 4TkJBSIQtLTvGiwc0LoLxosPNCdanmcsarNcNVrZY1Wa4ao8Sk2MNVvYXZYmONVu4Q4StTvY3C0G8Khj
+ DRaDRogSpScJFNKCV0xTSlKC0qSSSStapJOmStSkkkkrUpJJJC1KSSSStSkk6SVqWSSSStSkydKErUtK
+ dKEoRUsVEhTKiklYBOAnCeEVMSoypkKJCSlAqYUQFMBJSlVvGitkKrfwkFOHmLnssroM0rncs8oqc9x1
+ VnG5VRx1VvG5QU9BhDhdDijRc9g9l0WLwlaG8BomcFNvCi5BTBOklCSlSkEoSASUyATwkFJJSMhRIRCo
+ FJSwUkwClCKlkk6ZJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJFSkkkpSStCdRlPKK5clCeVMlCekEtS
+ 9yx8ty1shY2WnWhyL3KpOqsXlVZ1StTdx1tYoWJjlbmIlanZxwrrQqmOFdaECVLFIFIqMoISJKG5PKCl
+ ymSTpIWTpJJKUkknSQsknSSUpJJJJSkydJJSySdJBSySdJJS0JwEk6VoVCYhSSSUwIUYRCopyWICkAkF
+ JBNqTOUlByS5r2rOyCtC0rNyCnqcrJKyrStHJKyrSilZpV7HWc06q/jFJDuYq2KFjYpWxQU0qbzU5UWl
+ OSmKYkqJKRUU5DKU4UQpBJC6ZOmlBDIKQUAVKUFWuVEpEqJKSLUkmlOiuUknSSUsknSQUsknSQUsknSS
+ SsknSQUsnSSRUpRKkolFTAlO0pEKTAipIAgXjRWQFXv4QtLh5iwMo6rezSudyzqngqaTnao1JVRx1Vig
+ o2p28QLaxwsTEPC3McpWpvsCMEJiKEFKlMnhKE1S4TwkE6SlkydMktUkkkkhSSdMkpZJSSSQxhKFJJC1
+ WxhKFJJK1WxSTpJWi1JwmTpKtdRJTqJKSlSlKinCKWSSQTwklZJKE8JJXCkVEBTIQK5p5HC5/OPK6DIG
+ i5/OCkBTbzuWdSs8nVaGUNVnxqpLVbcxuVv4XZYOMNVvYQ4TJFBd7HOiutKpY/CutCiWslIKIUwkpZMQ
+ pJikpjCUJ0klKSTpJKUmTpkFKShJOkpaEk6SSlkkkklKTJ0oQUsknhKElLJJ0oStSySeEoQtSySeEoSt
+ SySeEoStSk4TJwnhTNVsjhWJVXIOiIU4OeeVzeW7VdDnu5XM5btU+1Nbdqr+KdVlB2q0cQ6pcSnpcLst
+ 7HGi5/BPC6DGOiaSpuAJipBRcmqYpJikipkFKFEFSlBS0JoUpUUlKhJJJK1KhJJJBSkkkklKSSSQUpJJ
+ JK1KSSSStS6ZJNKVoZQnAUNyQcihKmKjuTEpKUUyYlNKcpmE6iFIJJUoOU1FyS5pX8LDzCtzI4WHmJ4K
+ nBySqfdXMnlU41RtLdxuVvYfZYWMt7DStTuY/CutVLH4V1qYVKKjCcpIKUkkkkhZJOmSQpOmSSQpJJJJ
+ CkydMgpSSSSQSukkknJUkkkgVKTpkk1Sk6ZJC0KSSSQtS6SZJG1LpJk6cEqUHKag5OCmvaVnZBWjaszI
+ UgU5OSVmWFaOSsyxOUszlaOMs1h1WjjFFTtYy1aQsnGK16VGVNkBIhO1SIUdqRwnhShKE0lCySUJJtqU
+ kkknWlaEk6SVpWSTpJWhZJJJK1LJJ0yVoUkkkkpSSSdK1LJwkkErUyTqKUoqZFMokptyKmcJQmDk8pKU
+ lKSSSWLiqlytuCq3JwU5OSFjZIW1klYuSVIFOe/lSrKG86qVacl1cYraxisTFW1jBNKHTqVkKvUrIURU
+ ohRUiooIUkkkkpSSSSSlJJJJKUkkkkpSSSSSVJk6SSlkk6SSFkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlk
+ k6SSmQTkpgnckkNLIOiw8wrbyeFg5hTwlxMk6ql3VnJdqqW7VFTfxluYiwcYrdwylanapOisgqrRwrYC
+ CmQKIFABEATSpUJiFJRKCmKQKRKZJTMFPKgnCCmSSZJJC6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SSZB
+ SpSlMU0p4UzlOoAp0qUuVElOmKVKYlIJEJwEqQuVSyjorxCoZXCSXns0rJcdVq5vKyXcpWpuY3K3MVYW
+ Nyt3ETSLU61IVtqq0q21DhUuolTKgUqUskkkgpSSSSSl0ySSClJJJIKUkkkkpSSSSSlJ0ySSlJJJIqUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpMnTJKUkkkkpdRcpKLklNaxVyrFirlJ
+ TNitVqqxWq0lJgkkE6SlkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUsU0
+ J0klLKQTJ0VLlBeUUoL0lNZ5TNSemakpssRYQmIwSUjc1BcxWShkJKaxrTemrBCiQipGGpi1ESR4U2hL
+ EgxFhKEuFPEwDVJOmQ4U8RUkmSSpXEViJQzXKMlCFI4i1/STiuEeEkqVaMNT7VNJKkIyxQNSsQnhGlNY
+ VKYZCNCaEqTbGExbKmlCPCniKE1yoGlWoShLhV7hanoJxSrUJQlwq9wtX0kvRVqEoQpXGWsKlIVo8JQh
+ SOJDsS2IsJQhSEWxIMRYShKk2xAhTBTJI0m2cpiVGUkCi100J0k1VqATpkkFWxLZQzXKOlCCra3opxXC
+ sQmISVbACFMFMmSVbKUxTJIqtaEtqkknKtaEk6ZJVrpAJgpBJVsgEQBRaiBJDIKSYJ0lLFMpJoSQsnSh
+ OgpSZOkipZJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJT/AP/W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ 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
+ UpJOmQUpJJJBSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pOkmSUpJJMkpSdMkkpkouUlBySmtYq5VixVykpmxW61UYrVaSk4STBOkpSSZJJS6SZOkpZJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkmSUpMnTJKUpBRUgipRQXoxQXpKar0zU70zUlNitHCAxGCSli
+ oEqZUCkpiSokpyolFS0pJJI2lUpJkkrUpMnSQtSySSSFqUkkkhal5SlMklal0kkkrUqU8pkkbUylJMkj
+ alJJJI2peUpTJJWpeUpSSQtSkpTJ0LUqUpSSQtSkkkkLUpMnSRtSySSSKVJJJ0ChSSSdBSySdJNUpKUk
+ ySl5TJJJKWTJ0klLJJ0ySl0koTpylkylCZFSymFFSCSkjUQIQRAlSmYTpgU8pKUkmlKUFLp1GU8pIUmT
+ pklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//X
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJK
+ 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
+ JJBSkkkklLpk6ZBSkkkkFKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKTJ0ySlJJJ0lKUXKag5JTWsVcqxYq5SUzYrVaqsVqtJSYJ0wTpKWSSSSUpOmTpKWSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6SSlkydJJSykEycIqUUF6MUGxJTVemanemakpsMR
+ ggsRgkpYqBUyoFJTApipFRKSmKScpkEqSSSQUpMnSQUsknSQUsknSQUsknSSUsknSSUpMnTIqUlKZJFS
+ 6SZJJS6dMkipdJMkgpdJMkkpdJMnTVKSSSQUpOmSTwpdJMkpFLpJkkCpdOmSTVLpJkkFLpkkkFKSSTIq
+ XTJJIKXTJJ0VKTpJ0VLJk6ZOUpOEycJIZhTCgFMJKZAp5TJJKVKUpkyCmUp5UU6CmSSYJ0VKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//Q69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkk
+ klLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSl
+ J0ydJSkkkklKTJ0ySlJJJJKUmSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSQUumKdMgliVGFOEtqSm
+ ICcBSDU8IJWhOEk0oqZhSBQ5ThyIUycVUvVglAsEpwU4+S2Vk31rfurlULKJTgpw3VFJtZWocZIYqepo
+ NaQigFXBjKX2ZJTQIKgWlaX2ZN9mSWubtKfaVo/ZkvsyCnO2lLaVo/ZUvsqSnO2lLaVo/ZUvsqSnO2lL
+ aVo/ZUvsqSnO2lLaVo/ZUvsqSnO2lLaVo/ZUvsqSnO2lLaVo/ZUvsySnN2lLaVo/ZkvsySnO2lLaVo/Z
+ kvsySnO2lLaVo/ZkvsySnO2lLaVo/ZkvsySnO2lLaVo/ZkvsySnO2lLaVo/ZkvsySnOgp4K0PsyX2ZJT
+ nFpUTWStP7MpfZU4KcR9BKA7HK6E4qE7EUoK5wPs5RGUlbBxPJOMRK1OeyshGawq8MZTGMhaGjBUSCtE
+ 46gcZC0OfBSAKv8A2ZIYyCGkAUoKvjGS+zIKaEFRIK0fsyb7Mghz4KUFaH2ZOMZBTnwUoK0fsyX2ZJTn
+ QUoK0fsyX2ZJLnQUoK0fsyX2ZJTnQUoK0fsyX2ZJLnQUoK0fsyX2ZJLnQUoK0fsyX2ZFLnQUoK0fsyX2
+ ZJTnQU8FaH2ZL7MghoQUoKv/AGZL7MhaHPIKaCtA4yj9mRU0gCkWlXhjKX2ZOU5L6yVWspJW8cVDdiJ1
+ qeddjlMMcrfOF5JhheSVqcmukhWmMIV9uJ5IoxUrU0QClBWh9mTfZklNCClBWh9mT/ZkCpz9pTbStH7M
+ l9mTbU520pbStH7Ml9mTVOdtKW0rR+zJfZklOdtKW0rR+zJfZklOdtKW0rR+zJfZklOdtKW0rR+zJfZk
+ lOdtKUFaP2ZL7MipztpSgrR+zJvsySHOgp9pWh9mS+zJIc/aUtpWh9mS+zJJc/aUtpWh9mS+zIqc/aUt
+ pWh9mS+zIrnO2lPtK0PsyX2ZFTn7Sngq/wDZk/2ZJLnEFDcwlan2ZROMipxn1Equ6hbzsVBdipKcYUlW
+ KqyFf+yojMZJSCsEI2qsNx1P0EENIymIKumhL7OkhowU20rQGMn+zIIc3aUxaVp/ZkvsqSnK2FNsK1fs
+ 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
+ JJJJKUkknSUsknTJKWTpJJKXUHKai5JTVsVcqzYq5SUyYrdaqsVqtJSYJJBOkpiknSSUpJJJJSySSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSySdJJSykEycIqUUCxHKBYkpqvTNTvTNSU2GIwQWI
+ 4SUsVAqZUSkpgVEqZUSEVMEykQmhKkrJJ4ShKlLJKUJQhSmKSlCUIUpikpQlCFKYpKUJQlSmKSlCUJUp
+ imU4ShGlMIShT2pbUaUwhKFPaltSpTCEoU4ShKlMU0KcJQlSmEJ1KE8IUphCUKcJQhSmEJQpwlCFKYQk
+ pwmhOAUxTKUJQnIWSTwlCClk6UJQgpZOlCUIKUmTwlCClkk8JQkpZMpQlCSlgnCUKQCKlJJwE8JymKZT
+ hNCKmKcBPCcBJS4CmAogKYCSlQnTwnhBTCE0KcJoQUtCeE8J4SUtCSeEySlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//R69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklK
+ 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
+ pHtS2okJQmqR7U21FhKE4KRbU21FhKE5SPaltRIShBSPam2osJQgpFtS2osJQmqRbU+1EhKElI9qW1Eh
+ KElI9qbaiwlCSke1PtU4TwipgGp4UwE8IqR7U0IkJiE5SOE4ClCUJKUApAJAKQQUqEkkklLJJFNKCl06
+ jKeUFKKZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJT//0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekprlSYolSYkpssRggsRgkpdMnTJKUnT
+ J0lKTJ0ySlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEkgkkpE9VXq09VX
+ pKYhHYgBHYkpsNUlFqkkpSdMnSUpJJJJSkydMkpSSSSSlJk6ZJSkkkklKSTpklKSSSRUpJJJJSkkkklK
+ SSTpKWSTpkFKlKUxTIJZynlQCSClymhKUgipUKQakFMIqYwkpJiU5SydRlJFTOUpUExRpK5cm3qBTI0p
+ JKdDCmgtXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJK
+ XSTJJKXSTJJKXTJJklLwlCaU6VrlQmhOmJStCoTqMpAoWpmE8KIUkLQpJJMlalJSopIWhlKUqKSVqZSl
+ KZJK1MpSlRSStTKUpUUkrUylKVFJK1MpSlRSRSylNKZJJLKU0pkkkrylKinStTKU6gnQJQySTSmlNtDJ
+ JNKdG1LFMUiokp1qXSUZSRtTJJME6VqUmSKZK1Mk6gpBK1MkkyZC1MklGUpQtTJKVGUpQtTKUpUZSlK1
+ MpSlRlKUrUylKVGUpStTKUpUZSlG1MklGUpStTJJRlOlaF0kySVqXSTJJWpdJMklaV0kySNqXSTJJWld
+ JMklaV0kyYlFTJOEOVIFJDOExCcJFJTAhMnKjKVqXCkFAKQStDNJNKYlC1KKZMSklaFJJJ4StS0J0oSS
+ tS6SikhaWSSiklamSSiklamSUqKSVqZSlKikiplKUqKSSmUpSopJKXSTJ0rUsnSTJWpknUJTykpkkoyl
+ KSl0lGUpSUyTJJkbUpJMUkrUyCdQBUgUrUyTSmlMULUvKUqKSSmUpSopJKZSlKikkplKUqKSSmUpSopJ
+ KZSlKikkplKUqKSSmSSinStTJJRSlFTJJRlJJS6ZJJK1KhKE4CeErUwhNCJCiQlamKSRCSNqZBOohSQU
+ ukopJWlkkmSSUumSTJWpknhME6VoXhJNKUoWpkkoylKSmSYppSlJCimSJTJWpdJRSStTJJRSStTJJRSl
+ K1MklGUpRSySUZSlJTJJRSSSyTJkkVMkoUUpQSzhKFEFSBStTEhRIRCFAhK1MZTgqJTJWhKHKQcghSCC
+ UpKiSmTFJSxKinShG1KAUgEwUghaFAKSZJK1LpKKSSmSSikkhkkopJKZJKKSVqZJKKSFqZJKKSVqZJKM
+ pSlalFRJSJUUrQyCkFAKYStS6SSYpWpSSiSmlK0pAnCGCpApWpmmKUpiilRKjKYlRlJKSUlEJ0rUpMnI
+ TJWpkE6iE6VqXKZMSmlK0MwnCgCpApWhdMUkxQtSimSTJWhkFJRCdK1MlEpiUxKVqXJTSmTJWplKUqKS
+ NqZSlKiklaWUpSopJWplKUqKSSmUpSopJKZSmlMklamUpwVBOErUkCeFEFPKVpXhMUiVElK1LpKMpApW
+ pmkohOlalJk5USUbUpKE0pwUrUvCaE6SVqWSSSStS6SZJC1q6SZJK1LpJkkrUukmSStS6SZJK1LpJkkL
+ UukmSStK6kFBOClamUJ4TApSjalEKJCkmKVqYwlCRTSlamQCkAoAqYKNqXhMQnlMSgpiQolOSoko2peE
+ oTBSARtS0JoU4TFqVqYpwkQmQtTMJwoBSCSmSSZMSkpRTFIpklKSSSRtSk4TJ0LUyCdRlKUlLlNKaUyS
+ mUpKKSSmSSikkpkkopJKZJKKSSmSSikkpklKikkplKYpk6SloTQpJJWlQCkFFPKFqZymJUZTEpKXJUdy
+ YqKSme5SBQlIJKSSkoBPKSlEJQkklaFQnSTFK1KlKUxTIWplKeVBJK1M5SlRSStTKU8qCSVqZylKgkla
+ mUpSopJWhlKUqKSFqZSlKikjamaSjKUpWpmnUJTgpWpmlCYFOlalQmhOmKNpWKiU6iUrSpJMklal06in
+ StK6aUlFK1MpTyhpwlamcp1EJ0kKTpkyVqZSpAoacFC0JAU8oYKeUFMiUxKYlRJStDKU0qMpJWpeUpUU
+ yNqZSlKikjaWUpSopIWplKUqKSFqZSlKikhamUpSopJWplKUqKSVqZSnBUE4RtKUKSGCpSjalyoFIlRJ
+ RUukmTo2pSSUJ0rUpJMkhaWSSilKVoZSkoSlKFpZpk0pJWhSSZMjaGSSikjamSSikhaGSSiklamSSinS
+ tC6SZMhamSSinStS6iUkxStSk4TQnAStTIJSmSStK8pKMpApWpmlCYJ0bSqE0KSYpWpaEoSUglaVbUtq
+ dKUrStCUJEppStC6SjKeUULpKMpiUlLlMmJTSlamScKAKkErUySTJJKWKZIpkrUunUU6VqZJJJIWpSSZ
+ JK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1MklGU8pWpdJNKaUrUyTJkkrUumlMU0pWpmCpB
+ DBUgUrUkSUQUpSUopkxKhuStSVJDDk8pWpkSmlRlJK1LynlQSStTOUpUEkrUzlKVBJK1M5SlQSStTOUp
+ UEkrUzlNKiklamUp5UE4StDNMUyRKFqUnChKcFK0MwnUQU6VpXTJJkrSukmSlG1MkyZJK1KThMkjaWUp
+ EqKZBS8p1FJK1MwU8qATpKZJpTJikheU0pkySmUpSopShaGcpSoJJWpnKaVFJC0MpSlRSRtLKUpUUk60
+ spSlRSQtTKU8qCSFqZylKgklamcpSoJJWpnKaVFJK1MpSlRSRtTMJ4UApSipchRITkqJKKlQlCaVJFTG
+ EoUkklMYTwkmlK1MgFIBQlSBTbUyhKE0pSm2peE0JSmlK1KSlMmStTKU0qKSKWUpSopIWhlKUqCSVqZy
+ lKgklaGcpSoJJWpnKUqCdC1MpSlRSStTKUpUUyVqZSmlMmRtTKU4KgnCVqSBSCGCpSlamaShKUopZJoT
+ SlKVqXhNCkkjaWEJQnKYlK0KSTSkipkmTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXS
+ TJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJIFS6dRCkm2lYhMpQmIRtTFPKYpkLUkCdDBUwUrUyhM
+ QkmKVqWKZIqKVqZhSCGCpApWhkmJTSmKVqVKUqKSVqZSlKZMlamUpSopJWplKUqKdG1LylKZJK1LylKZ
+ MlamUp5UE4StTMJ4UQU8oqXhKExKaUlMkpUZTpKUSoEpyFAhJS+5IOUCEgkpKCpAoQUwkplKYlJMgpYp
+ JJJKUnSSSUpJJJBSkkkklKSSSQUpJJJJSkkkkFKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpOmTpKUmSSSUpJJJJS6i5SUHJKa9irFWLFXKSkjFarVRit1pKTBJIJJKUkmS
+ SUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJMkpdJMkkpdSCinCKlygWIxQLElNV6
+ Zqd6i1JTZrRwq9aOElLlQKkVEpKWThMnlFTMJ1CUtyepmkobk+5JTNJQlPKCmaShKW5BTNJQlKUFM0lC
+ UpSUySUZTbklM0lDcluRUkSUNyW5FTNJQ3JbkVM0yjuTbkFM0lDcluSUzSlQ3JbkFM5SQ9yW5BSRJD3J
+ bkFJJSlD3J9yKmaShuS3IoZpKG5Lcgpmkobk25BSRJD3Jbk1SRJQ3JbklM0lDcm3JKSJIe5PuSUzTqG5
+ LcipmnUA5PKKWSYppTEoqUkmlKUlMk6iCnlJTJMSmlJBSimlIpkFLp0wTwgpSSdMipSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Pr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunT
+ J0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0l
+ KSSSSUpMnTJKUkkkkpSZOmSUpJJJJS6ZJJJSkkkkVKSSSSUpJJJJSkkkklKSSSQUqE0J0kErQknSSUxS
+ CdMkpkCpyoJ0VLkqJKdRTgpUpwmToqXCeEwTopYkJoU0ySmICkkkgtUkkklalJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpZMVJRKVqWSlKEkLSumKSU
+ JWpinCScBC0MgpBQCkErUyTFKUyClikkkghUJ4STpKWhKE8pSkpZJJJJSkkkklKSSSRUpJJJJKkkkkUq
+ SSSSUqEkkklKSSSTSpYpJJkELgqUqKdFSioFSKYoqYpwlCcBOUuFJRCdJSiolSKikpSdMnSUpJJJBSyS
+ dMmqUknTIKUkkkkpSSSSSlJ0kkVLJJ0klLJ0kklKSSSSQpJJJJSkkkklKTpkkbSukmSSUpJJJG0qTpkk
+ rUpRKkmIStTFTaVCFIJWpKCmJTApEpWpiVFSKilaFwnCZOlal5TFJJJSySSSCFwpBRCkCkpdMUkpSUxK
+ SSSSVJJJJKUkkkkpSSSSSlJJJJWpSSSSVqUkkklalwkkkkpRTFOmSUslKSSNqUkkklalJ0ydK1LpJJJW
+ pYqKkUyVqWThKEkrUukkklalJJJIWpSSSSNqUkkklalJJJ0rUsknSStSySdJK1LJJ0krUskkklalkk6Z
+ K1LpJJJWpScJk6NqXCkohPKFqXUSE8pilamJCjCkUkbUoJ0ydK1KTJ0yFpXSSSStSySSSVoXCdMklal5
+ TSkmSUvKUpkkELylKZJJS6SZJJSkkkklKSSSSUpMnSRtSySdJK0qSSSRtSkkkkrSpOkkjaliokqSiQha
+ lAqYKHCmELSzTEJApEpWpgQmhSKZK0LAKYCYJwlal4TEJ5SStTEhNCkklalgnSSQUvKZJMkpSSSSSFJJ
+ JJWpSSSSVqUkkklalJJJIKUkkmRtS6SSZJSyZSTIIXCkFEKQSUumKUpikpYqKkU0JWlQUgVFOEbUylIp
+ kkrSsVFSKaEbUuFJRCdK1Lpk6ZK1LpJJkrUsUycpkLUuE4KinStDKUkySFqUkkkkpdKUySSFEpkkySl0
+ 6YJ0VKhJOklalkkkkrSpJJJK1KSTpJWpZJOklalk0KSSSlkk6ZK1KlKUySNqXJUSU6iQlalSnBTQnASt
+ TMJ1EJ5StS5UCpKJStKyQKUJBK1MgU6inStSkkkkrQpJJJJCkkkkFKSSSStSkkkkrUpJJJJSkkkkrUpJ
+ OkglZNKdMkpeU4KinRUylMUkyVqWKZOU0IqUCpAqMJ0lM5TEpkkrUxJUVIhNCNqXCIEMBTCVqZhKEwKe
+ ULUxIUCFMlRKKllIKKdJS8ppSTJKUkkkkpdJJJJS6ZJJJSkySSSl0oSCdK1LQlCdJJS0JQnSSUtCUJ0k
+ lLQlCdJJS0JQnSSUtCUJ0klLQnSSSUpMnTIJWKSUJQkpSSUJ0lLQlCkkkpjCeE6SSFoSTpklLJJ4TIKX
+ lJJJJSyUKSSSmMJ06SSloShOkgpaEoTpJKWhKE6SSloShOkkhaEoTpJKWhJOmSUpMnSSUpPKZJJTIFSl
+ QTykplKSilKKVFMU6ZFLFJOkkpQTpk6SlFRKkmSUxhOAlCcJKXAUgohOkpRTFOmSQxTpJIKXCdMkgpcp
+ ikkkhZJJJJSoShOkilaEoTpIqWhKE6SapaEoTpIKWhKE6SSloShOkkpaEoTpJKWhKE6SKlJEpJkQlYlJ
+ KEoRUuFIJgnCKl0kkklLJk6ZBSyYp0yClk4TJ4QUuE6YJ0lLJk6SchZJOkkpZJOkkhZJOkkpZJOkgpZJ
+ OmSUpJJJBSk8Jk4SUqFKEyeUlKUSpSolJTFJOkkpcKUqAUkUrymJSTJKVKcFRTpJZyokpJiipRKaUySV
+ qZSkmTo2hUpikklamKSeEoStSgpBRThK1MkkyUpWpRTJ0yFqUnCZOkpdMlKSSlJJJJWpSSSSVqUkkkkp
+ SSSSSlJJJJKUkkkgpSSSSSlJJkkVKSSSSUuE6ZJJSxUSpFNCSlk4KUJBJTKUiUySSmJKiSpEJoSUoFSB
+ UQFIBJS6dME6SlJJ0klMYShSSSUxhKFJMkpaEoTpJKWhKE6SSloShOkipaE6SdBCyYp0xTVMU4ShKElM
+ gpSop0lKTJJIqUkkkklSdMnRUumSSSUpMnTJKXSTJ0lLpJpSlJS6YpSlKSlimTpIKWSSSSQpJJOgpSZO
+ kkpZJJOiFKSSSTkqSSSQUpJJJBSkkkkFKSSSSUpJJJFSoSSSRUpKUkxRUsSmlOmTlLgqQUQpBJTJMUkk
+ lLFRTlMgpUpwUySCmUpSmSTSpeU8qKSCl0kkkVKSSSRUsknSQUskkkkpSSSSCFJQkkkpUJJJJKUknSSU
+ tCUJ0klLQlCkkkpjCUJ0kVLJSkkkpUppSShFK4KkCoBSCSmcpEqMpEpKUSoynKZFSkkk6NqWSTpJWpZJ
+ Oklalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpSSSSNqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSS
+ VqWSTpJpKlBTCiE4TUskxCeUxKSmBCiVMqJCSlgpApoThJTJIppSSQsoqSZJSykEySSl0kkklKTJ0klK
+ TQnSSUtCUJ0klKSSSSQpJJJFSkkkklLQknSSStKUpFRKcFKJSlMkEVMwVMIYUwUFMoUSE8pEpKRkJoUy
+ mSUuApKITykpSiU5KZBSk6ZJJS6SSSClJJJJKUkkkkpSSSSClJJJJKUkkkgpSSSSSlJJJJKUkkkipSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSdJJSySdJJSySdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSTpKUouU1BySmtYq5VixVykp
+ mxWq1VYrVaSkwTpgnSUsknTJKUnTJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lKTJJJKUmTpklLJ0
+ kklKUkycIqUVXsVgoFiSmo9RapvUWpKT1o4QWIwSUuVEpyokpKUUxKYlRJRUvuS3KEpJwKEm5LcoJSla
+ me5PuQpSlC0pdyW5DBUghaGUpblFMSlame5LchSnBStSSUpUQnStSpT7lApiUbSk3JbkKU4KVqSbktyh
+ KUo2hnuS3IcpSlamcpblFJC1MtyW5RTIWpluSlRSStLKU25MokoWhJuS3IUp5StSXcluQwU6cpluS3KK
+ UoKZbktyikgpluS3KMJigpnuS3IZKUoKSbk8qARAElLSm3JOCETCKk29PuQA5TBRUlDk+5DlMXIqS7kt
+ yDuTykpLKUocpwUlJQVIFCBRAglkkkE8IKYwlCnCUIKYgJ0k0pKXTJSkkpSSdMipSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Tr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpM
+ nTJKUkkkkpZJJJJSkkkkFKSSSRUpJJJFSkkkklKSSSSUpJJJJSkkkkFKSSSQUpJJJJSkkkklKSSTpKUm
+ Tpk5KkkkkVKSlJJOUvKZJJJSkkkkwoUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJIFSySdJNUsknSSUtCUJ0kLSpJJJJCk6ZJJS6SSSSlJJJJKU
+ kkmSUpJJJJSkkkklKTpkkVKSSSSUpJJJJS6ZJJFSkkkklKSSSQUpJJJBSkkkkVKSSSRUpJJJFS6ZJJFS
+ kkkkFKSSTpKWSSSQUpJJJBSkkkkFKSSSSUpJJJJSkkkkVKSSToqWSTpJKWSTpk1SkkkkFKTpk6Slk6ZJ
+ FSkkkklKSSSRUpJJJJSkkkklKSTpJKWSSSSUpKEk6SlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJS6ZJJFSkkkklKShOkkpZJOkkpZJJOkpZJJJJSkk6SSloSTpJKW
+ Tpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpJKWSTpJKWTpJIqUkkkkpSSSSSlJJJkl
+ Lpk6SSlJJJklLpk6ZBKkkkklKSSSSQumSSSUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSSUpJJOkpZJOm
+ RSpJJOkpZJJJJKkkkkVKSTpkFKhJJJBSkpSSSUpJJJJSkkkklKlJJJJCk6ZJJS6ZJJJS6ZJJJSkkkkFK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJ0klLJ0kkFKTJJ0lLJQnSSUtCSdJFSySSSSlJQnSSUsnT
+ JJKXSTJJKXTJJJKUknSSUsknSSUsknSQUsknSSUsknSSUsknSSUpJJJFSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJFSkkkkFKTJ0klLJQnSSUtCUJ0kVKSSSSUpJJJJSySdJJSkkkklKSSSSUpJJJJCkkkklKSSS
+ SUpJJJBSkkkklKSSSSUpJJJJKkkk6Slkk6ZJSkkkklKSSSSUpJOmRUpJJJJSkkkkVKSSSSUvKUpkySl5
+ TJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSZJJS6SZJJS6SZJJS6SZJJS6SZJJ
+ S6SZJJS6SZJJS6SZOkpZJOkkpZOkkkpSSSSSlJJJJKUkkkkpZJOkkpSSSSSlJJJJKWTpJJKUkkkkpSSS
+ SSlkk6SSlJJJJKUkkkkpSSSSClJJJIqUkkkkpSSSSSlJJJIKUkkkgpSSSSSlJJJJKUkmToqUnhMnRUtC
+ SdJFSydMkileUySSSlJJJIKUmTpIKWhJOkmqUkkkkpZJOmT0KSSSSUpJJJJSkkk6Slkk6ZBCkkkklKSS
+ SSUpJJJJSkpSSSUpJJJJSkkkklKSSSQSpJJJFSkkkkkqSSSSUsnSTpKWSSSSQpMnSSUtCUJ0klLJJ0yS
+ lJJJJKUkkkkpSSSSSlJJJJKXSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSRUpJJJJSkkkkl
+ KTQnSSUtCSdJJSkydJJS0JQnToqYwlCdJJSkkkklKTpkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkkl
+ KSSSTUKSSSQUpJJJFSkkkklKSSSSSpJJJJSkkkklKSSSSUskkkkpSdMkkpdMkkkpSSSSSlJJJJIUkkkk
+ pSSSSClJJJIqUkkkilSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkipSSSSKlQlCdJFSySdMkpdMkkkpSSS
+ dJS0JJ0yClJJJJqlJJJJKUkkkkpSSSSKlJJJJKUkkkgpSSSSSFJJJJKUkkkkpSSSSSl0kkklKSSSSUpJ
+ JJJSkkkklKSSSSSpJJJJSkkkklKSSSRUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukmToFSk6ZJNUvKUpkklKSSSSUskkkkpSSSZFS6ZJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSk0J0k4KWhKE6SclZPKSZBS8pSmSS
+ UvKSZJJS8pSmSSUumSSQUpOkkkpSdMnSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6
+ ZOkpSSSSSlJJJJKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkydJJSkkk6SlKLlNQckprWKuVYsVcp
+ KZsVqtVWK1WkpMEkgkkpSSSZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySd
+ JJSlIJk4RUsUCxWCgWJKaj0zVJ6i1JSdiOEFiMElLFQKmUMpKWJUSnShJS0JQpQkUrQxUSU5KGShalyU
+ pUZThBSQKYQwiBBS6gVNQKFqYFOExThK1JApKAKeUrUoqBUimhFTFOE8J4RtSkxTqJKNqWlPKjKQStTO
+ UpUQU6VqXlMmlNKCmSkFAFOCmqZFQKkmKFqYJJyEyfFTIFOCoJ5UqGRKaVElRlBSUFSCECiBNUuolSKg
+ 4oKYkpAqJKQSUmYUYKu0qYckpk9V3oxdKE4JKYAorShQnBRSmlRKYFTARUsApAKQCeElMEk5CZJTNqK0
+ IbAjtCClwEk8KJKCWUpiUMuTbkFMyVFIFSAQUxUkoSRUumSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlA
+ ekprlSYolSYkpssRggsRgkpdMnTJKUnTJ0lKTJ0ySlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpSdMnSUpJJJJSkydMkpSSSSSlkkk
+ kFKSSSSUpJJJFSkkkkVKSSSSUpJJJJSkkkklKSSSQUpJJJBSkkkklKSSSSUpJJJJSkkkkQpSSSScEqSS
+ STlKSTpkipSSSSjKFJJJIWpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSNqUkkkgpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSl0kySVKXSSSSpSkydMlSlJJJJU
+ pSSSSVKUkkklSlJJJI0pSSSSVKUkkklSlJJJJUpSSSSVKUkkkhSlJJJI0pSSSSNKUkkkjSlJJJI0pdJM
+ nQpSkydMlSlJJJIEKUkkkhSlJJJIUpSSSSVKUkkklSlJJJ0aUsnTJ0aUpMnSSpSySdJNIUskkkhSlJ0k
+ kqUsnTJI0pSSSSVKUkkklSlJJJI0pSSSSVKXTJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUp
+ SSSSVKUkkkhSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSNKUkkklSlJJJJUpSSSS
+ VKUkkklSlJJJJUpSSSSVKXSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKS
+ SSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkydJKkrJJ0yVKUkkklSFJJJJUpSSSSVKUkkkl
+ SlJJJJUhSSSSVKUkkklSlJJJJUpSdMklSlJJJJUlSSSSVKUkkkjSV0kkkqUsnTJJUpSSSSFKUkkklSlJ
+ JJJUpSSSSVIUkkklSlJJJJUpSSSSVKUkkkhSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJU
+ pSSSSVKUkkkhSlJJJJUpSSSSVKUkkkjSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSS
+ SFKUkkklSlJJJJUpSSSSVKUkkkjSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKU
+ kkklSlJJJI0pSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUhSSSSVKUkkkhSlJJJJUpSSSSVKUkkkl
+ SlJJJJUlSSSSVKUkkklSlJJJJUpSSSSVKUkkkjSlJJJJUpSSSSVKUkkklSlJJJI0pSZOmSpSkkkkqUpJ
+ JJKlKSSSSpSkkkkqUpJJJKlKTpJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklS
+ lJJkkqUukmSSpS6SZJKlLpJkkqUukkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKXSTJJUpdJMklSl0
+ kySVKXTJJJUpSSSSVKXTJJJUpdJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkk
+ qUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSRpSkkkkKUpJJJClKSSSQpSkkkkqUpJ
+ JJKlKSSSRpSkkkkaUpJJJGlKSSSRpKkkkkqUpJMkhSl0kkyFKXTJ0yFKUnTJJUpdMkknUhSSSSVKXSTJ
+ JUpdMkklSlJJJIUhSSSSVKUkkklSlJJJJUpSSSSVKUkkkhSlJJJI0lSSSSVKUkkklSlJJJJUlSSSSVKU
+ nTJ0qQpJJJClLJJ0kqUsknSSpSySdMlSlJJJJUpSZOklSlkk6SVKWTpJJUpSSSSVKUkkklSlJJJJUpSS
+ SSVKUkkklSlJJJJUpSSSSVKUkkmRpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkkaUukmSSpS6SZJKlLpJJ
+ JUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJI0pSSSSFKUkkkhSFJJJJUpSSSSVKUkkklSlJJJJUlS
+ SSSVKUkkklSlJJJJUpZJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpCkkkkqUpJJJKlKSSSSpSkkkkaSpJJJK
+ lKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJGlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkKUpJJJKlKSS
+ SS4VKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqQpJJJClKSSSSpSkkkkqUukkklSlJJJJUpSSSSVKUkkklS
+ lJJJJUlSSSSVKUkkklSlJJJJUpSSSSClJJJIWpSSSSNqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSS
+ VqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqXSTJJKXSTJJUpdJMkjSl0ySSVKUkkmSpSkkkkqUp
+ JJJGlKSSSSpSkkkkqUpJJJKlKSSSSpCkkkkqUpJJJKlKSSSSpSkkkkqUpJJJClKSSTpKWSTpIpWSTpJK
+ WSTpJKWSTpJKWSTpJKWSTpIKWSTpJKWTpJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSdMnSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJJKXSTJ0lKSSSSUsnSSSUuouUlFySmrYq5Vm
+ xVykpkxW61VYrVaSkwSKQSKSlkkkklLJJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSS
+ SUsknSSUpOEydFSigWI5QLElNV6i1SemCSk9aMEFiMElLFQKmVApKYFKU5UCUVMtyYlDJSBTqQyKiQpB
+ PCHCpHCcBSITQhwqXCmFBOChwqZJilKeEOFTAppUyFAhLhUuCpAoam1HhUyAUoSCklwqYwmKRKiSjwqU
+ SolKUkeFS0JwFIBSDUuFTEBKETakQlwqREKJCKQokIcKmCcJQkm8Kl06ZJDhUqEoUgpAJ8QhEQokIxCG
+ QpKQjKYBSITgIUldrUYNTNCKEKQjLUJwR3ILkKSihOAnhTAQpTGEpU9qiQlSlpSTQkAlSlQm2ooCltRp
+ SECFMGE7hCE4wjSUwepb1U3KQchSmwSkEMFEaUlJWBHagtKKCgpkUJymSolNUjKQCmGqQagpgAphKEkF
+ LpkpTIpUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ p//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpM
+ nTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEd
+ iAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKWSSSQUpJJJJSkkkkVKSSSRUpJJJJSkkkkVKSSSQUp
+ JJJBSkkkkFKSSSSUpJJJJSkkkklKSSSRUpJJJOUpJJJFSkkkkipSSSSjKlJJJIKUkkkipSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSKlJJJJylJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJ0ySSlJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSCl
+ JJJIqXTJ0ycpSSSSSlJJJJKUkkkkpSSSSSl0ySSCl0ydMgpSSSSClJJJJKUkkkipSSSdFSySSSKl0kkk
+ lKTJ0kwqWSSSQUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKTpk6SlkkkkEqSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkkUKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJKkkkklKSSSSSpJJJJSkkkklLpk6ZBCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Skkk6SlJJJJKUmTpJKWSTpJKUkkkkpSSSSSlJJJJKUkkkkpZJOkkpZJJJBSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkkVKSSSSU
+ pJJJJSkkkklKSSSQUpJJJJSkkkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklK
+ TJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kySSl0kySSl0kySSl0kySSl0kySS
+ l0kySSl0kySSl0kydFSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJFSk6ZJJS6SZJJS6SZJJS6SZJBS6ZJJBSkkkklKTpkklLpk6ZJSkkkk5Skk
+ kklKSSSRUpJJJJSkkkkEqSSSQUumSSQUpJJJJSkkkkUKSSSRUpJJJJSkkkklKSSSSUpOmSSUpJJJBSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOkgpSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0yIUumSSRUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpOmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSQ
+ UukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ kVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJBK6SZJ
+ JS6SZJJS6SZJFS6SZJAqXSSSUZUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSTgpSSSSepSSSSSlJJJklKSSSSUpJJJFSkkkklKSSSSUpJJJJSk
+ kkklKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkkFKTpkkFLpJkkErpJkklLpJkklLpJkklLpJkklLpJkkl
+ LpJkklLpJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklKSSSSU
+ pJJJJSkydMkpSSSSSlJJJJKUnTJ0lKSSTJKXSSSSUuouUlBySmvYq5VixVykpmxWq1UYrbElJgkmCdJS
+ ySSSSlJk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkmSUunTJwipRQLEcoFiSm
+ q9RapPUWpKbDEYILEYJKWKgVMoZSUsVAhSKYlEKY7UoSLgoOsAUoCEkpblWNwUfXSpTblMSq3rKJvCFK
+ bMptyqnICb10KU3Q5FbqqDbVYZcEKU2w1MWKDbwnNwKVKYFsKMwndYChkpUpIHp96BKeUVJS5RJUJUS5
+ GlJJUggb1Nr0qU2WqYVcWJG4BKlNiUxKqnICGckJUpuEqJKp/aQnF4KFKbSZAFsqQehSkqQUA5SBQpTM
+ KQKHKiXpwCExKgUP1E+6U9Ck4SUSYQUz3wn9VVH2Qq7r0FOibZUd0qg2+VYrdKCmwERqG1S3QgpKmIUA
+ 9SDpSUsWptqIE8JJYAQpSolQLkVMnFCcJSL1H1AklWxOGpvUCXqBJTMKQKFvUgUFNhrkQOVdqK0IKSyn
+ CgFIJqkgClCi0qUpqlioFSJUCUFLJ0ydFKkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklP/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUm
+ JKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpZJJJBSkkkklKSS
+ SRUpJJJFSkkkklKSSSRUpJJJBSkkkklKSSSTVKSSSSUpOmSSUukmSSUumSSSUpJJJOClJJJJyl0ySSRU
+ pJJJMKlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSKlJJJ0VLJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkkipSSSSKl0ydMipSSSSSlJJJJKUkkkkpSSSSapSSSSClJJJJK
+ UkkkkpSSSSKlJJJ0VKTJJIqXTJJJKUkkkmlSkkkkFKTpkklLpJkklKSSSSUpJJJJSkkkkVKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJFS6SZJJS6ZJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUpJJJJKkkkklKSSSSQpJJJJ
+ SkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSSpJOmSUpJJOklSSSZJS6ZJOkpZJJJJCkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJS6SZJJS6SZJJS6SZJJS6SZOkpSSSSSlJJJJKUkkkkpSZJ
+ JJSkkkklKSSSSUpJJJJS6SZJJS6SZJBS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6ZJJFSkkkklK
+ SSSSUpOmSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkkEKSSSSUp
+ JJJJSkkkklKSSSSUpJJJFSkkkkVKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkkEqSSSSUpJJJJSkkkklKS
+ SSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSySdMkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIoUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJJUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklLpkkkkKTpkklKSSSQUpJ
+ JJBKkkkkFKSSSRUpJJJJSkkkkVKSSToqWSSSSUpJJJJSkkkklKSSSQSpJJJBSkkkklKSSSRQpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6SSlkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSFJJJJKUkkkkpSSSSSlJJJJJUkkk
+ kpSSSSSlJJJJKUkkkkpSSSdJSySSSSlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSS
+ FqUkkklalJJJJWpSSSSKlJJJIqUkkkkpSSSSSlJJJIKUkkkkpSSSSKlJJJJIUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkglSSSSSlJJJJKUkkkkpSSSdIqUkkkoypSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkiFKTJ0ycpSSSSKlJJJJKUkkkipS
+ SSSSlJJJJKUkkkkpSSSSSFJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJIKUkkkgpSSSSSVJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSl0kydBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTp
+ k6SlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpOmSSUyUHKSi5JTWsVcqxYq5S
+ UzYrVaqsVqtJSYJJBJJSkkkklKTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJJKXSSTJKUkk
+ kkpSkFFSCKlFAsRigWJKar0zU71EJKbDEYILEYJKWKiVIpklI3IL3wjPVC98J0VLWXwqz8lVbrkDeSrc
+ YobZvTesUFrCVP0iiYhTM3ob8hRcwhV3tKHCpKckqTL1TLCptaQhwqdFl6IMiFRbKmQShwqbf2uE4zFn
+ uaUIkhLhU7TMmVZY/csCu4grRx7kDFTqgSmIhDZaIULLgE0RUu98ILrVWtyFWdkKQQU3/VUhas0XSits
+ lHgU3TchPyIQCSg2EpcCkj8pAdlqtZKrulLhU6Ay0ZmTKymgq1U0ocKnUZdKO2xUa2lWmNKHCptsfKMC
+ q7AjgJvCpTnID7IRXqnYURFBSC1HY+VnhysVvRpa3gVF5TMck/hClNG98LOst1V7ICzLRqlSmxVZJWnQ
+ ZWRQNVsYw0TSEtrgIT7IRHmAqN1kIUpOLkVlsrLFuqtVOlKlOi16luQGFSJhKlMy5Be9QfbCqWZCNJSv
+ thV3ZEKu+6UBziUqU2zlKTcmVmmU7XEIUl2GXSrVbpWNVZCv0WoUp1axKOGqrTZKuNMqMqWhRRSEJwQU
+ yBUpQpTgoUpmSoEp+U0IUpQUk0J0krpkk6SlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJT/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbL
+ EYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpZJJJBSkkkklKSSSRUp
+ JJJFSkkkklKSSSRUpJJJBSkkkklKSSSTVKSSSSUpJJJJSkkkklKSSSSUpJJJOUpJJJFSkkkkVLpJk6YV
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSl0kkkVLJ0kkbUsknTJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkkkpSSSSS
+ lJJJJKUkkkhalJJJJWpSSSSVqUkkkhalJJJI2pSSSSNqXTJJI2pSSSSVqUkkklalJJJIWpSSSSFqUkkk
+ halJJJJWpSSSSVqUkkkjalJ0ySNqUkkkjalJJJI2pSSSSbalJJJIKUkkklalJJJJWpSSSSVqUkkklalJ
+ JJJWpSSSSSlJJJJWpSSSSNqUkkklalJJJJWpSSSSVqUkkklalJJJJKUkkklalJJJJWpSSSSVqUkkklal
+ JJJJWpSSSSSlJJJJKUkkkkpSSSSSlJJJJWpSSSSVqUkkklalJJJIKUkkklalJJJJWpSSSSVqUkkkkpSS
+ SSNqUkkklalJJJJWpSSSSVqUkkklalJJJIWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVq
+ UkkklalJJJJWpSSSSSVJJJJKUkkkkhSSSSSlJJ0yVqUkkkipSSdMlaFJJJJWpSSSSVqUkkkhalJJJJWp
+ SSSSVpUkkklalJJJJWlSSSSFqUnTJI2pSSSSSFJJJJKUkkkkpSSSSSlJJJIqUkkkkpSSSSVqUkkklalJ
+ JJJWpSSSSVqUkkklalJJJJWpdJMklalJJJJWpSSSSVqUkkkkpSSSSSlJJJJWpSSSSVqUkkkgpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJI2pSSSSVqUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJWpSSSSVqUkkklalJJJJWpSSSZK0LpJkkrUukmSStS6SZOlalJJJJWpSZOmStSkkkk
+ 61KSSSStSkkkkLUpJJJK1KSSSStSkkkkLUpJJJK0qSSSStSkkkkrUpJJJK1KSSSStSkkkklKSSSRtSkk
+ kkrUpJJJK1LpJk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOkkkpSSSSVqUkkklalJJJJWpSSSS
+ VqUkkklalJJJJWpSSSSVqUkkklalJk6SVoWSTpJWpSSSSVqUkkklalJJJJWpSSSSVqWSTpJWlZJOklal
+ kkkkrUpJJJK1KSSSStSkkkkrUpJJJG1KSSSStSkkkkLUpOmTpWpSSSSNqUkkkhalJJJJWpSSSSVqUkkk
+ lalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJI2pSSSSVoUkkkjalJ
+ JJIWpSSSSFqUkkkhalJJJIWlSSSSNqUkkklalJJJI2pSSSSNqUknSRtSySdJK1LJJ0kLUsknSQtSySdJ
+ C1LJJ0kLUskkknWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqXSSSRtSkkkkrUsknSStS
+ ySdJK1LJJ0kLUsknSStSySdJK1LJJJJWpSZOkhalkk6SVqWSTpJWpZOkklalJJJIqUkkkkpSSSSSlJJJ
+ 0rUpJJJK1KSSSStSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1LJJ0yVqUkkkjalJJJJWpSSSSVqUkkklal
+ JJJJWpSSSSVqUkkklalJk6SFqWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWTpJJWpSSSSVqUk
+ kklalJk6SVqWSTpJWpZJOklalkk6SVqWSTpJWhZJOklalkkkkrUpJJJK1KSSSStKkkkkrUpJJJK1KSSS
+ StSkkkkrUpJJJK1KSSSStSkkkkrUpJJJG1KSSSStSkkkkrUpJJJK1KSSSStSkkkk21KSSSStSkkkkrUp
+ JJJK1KSSSStSkkkkbUpJJJG1KSSSStSkkkkrUpJJJC1KSSSStSkkkkrUpJJJG0KSSSStSkkkkrUpJJJK
+ 1KTpJJWpSSSSVqWTpJJWpZOkklaVJJJJWpSSSSVqUkkklalJJJIEqWSSSTFKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJEKXSSSTrUpJJJK1KS
+ SSRtSkydJK1LJJ0yVqUkkkjalJJ0krUsknSStCkkkkrUpMnSQtSySdJK1KSSSStSkkkkLUpJJJK1KSSS
+ QtSySSSSlJJJIJUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpMnTJKUnT
+ J0lLqLlJRckprWKuVYsVcpKZsVpiqsVpiSkwSSCSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJOkpSZOmSUpMnTJKXThMnCKlFAsRygWJKar1EKT1EJKTsRkFiMkpYpJFMgpHZwsvKK1HrOy
+ GypIKca3lKpslFtr1UWe1Wxshv0VAqwaQq1VwCsC8FBSF9KCceVdBDkVjAU61Ob9lUDjwtn0wgW1oWhy
+ xXCK2uVN4hRFgCVqXNIhVbaYV31QhPO5BTm7SCrNLiFM0yiMoKSUzbTCDbcUX0iEC2opBTRttKB6hViy
+ ooPpJyGdbiVdqEqtVWtCmtG1MwyVF9SuMYk5iVqcmylANC1LAFXICSmqyhXKqEzYVqohBTNlKO2tJpCn
+ uTSlk1qIAhBynuTVMbFRtVt7lStciEFCTCIyyFVe+EP1YTqWuwy1EL5WSy9HF6FKSXmVnWjVWLblRstQ
+ pTYp0K1aHwFhV3QVeqyNECFOlbbos2+1NbkaKhZbJQpLaY+StGjVY9L5K18YpUp0WDRRs0UmHRQtKVKa
+ F74WbbaVoXtlUn0klKkomkuVhlUp6qFfqqhJTSNCC+uFrPYAqdwQpTSmEeq2FXenZym0p2se1alL5Cw8
+ ZbFCaQluKDgptTEJikJSUiE0IKZNUwFEKYKSlEKJUiVEpqVkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6
+ OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpMnTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKW
+ SSSQUpJJJJSkkkkVKSSSRUpJJJJSkkkkVKSSSQUpJJOkpZJJJNUpJJJJSkkkkFKSSTpKWSSSTlLpJk6K
+ lkk6SKFkkkkVKTpJJqVJJJJKUkkkkpSSSSSlJJJJKUkkmSUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSToFSkkkkFKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSZOkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJIKUkkkkpSSSSVqUnTJ0CVLJJJJtqXTJ0yNqXTJ0yNqUkkkjalJJJI2pSSSdBSyS
+ SSVqUkkkhalJJJIWpSdMnStSkySdK1LJJJI2pSSSSNqUkkkjalJJ0yNqXTJ0yClJJJIKUkkkkpSSSSSl
+ JJJ0lLJJ0klLJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSdJSySdJJSySSSSlJJJIqUkkkhalJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSFqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqU
+ kkmSUukmTpKUkkkkpSSZJJS6SZOkpSSSSVqUkkmStS6SZOlalJJJJWpSSSSFqUkkklalJJJJWpSSSSVq
+ UkkklalJJJJWpSSSSVqUkknRSskkkkpSSSSSlJJJJKXTJJ0lqySSSSlJJJJKUkkklalJJJJWpSSSSVqU
+ kkklalJJJIWlSSSSVqUkkklaVJJJJWpSSSSVoUknTIoUknTJKUkkkklSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJkklLpJkklLpJkklLpJkklLpJkklLp
+ JkklLpJJIKUkkkkpSSZJJSk6ZJFS6SZJJS6SSZJS6SZJJS6SZJJS6SZJJS6SSSSlJJJIKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkhSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJIWpSZOkiCpZJJJOt
+ SkkkkrUpJJJBSkkkklKSSSQUpJJJJSkk6ZJKkkkklKSSSQtSkkkkrUpJJJFSkkkkVKSSSSUpJJJJSkkk
+ klLpJJJKUmTpkkKSSSSSpJJJJSkkkkkKSSSSUpJJJJS6SSSSVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkhSSSSbalJJJkrUukmSStS6SSSVqUkmSRtS6SZJK1LpJkkrUukmSStS6SSSFpUkkkjal
+ JJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkkkpSSSSVqUkkklalJJJIWpSSSSV
+ qUkkklalJJJJWpSSSSVqUkkkjalJJJJWpSSSSSlJJJJWpSSSSVqUkkkjalJJJI2hSSSSClJJkkLUukmT
+ oWlSSSSVqUkkklalJJJJWpSSdMjalJJ0yNqUnSSStSkkkkrUpJJJC1KSSSStSkkk6balkk6SVqYpJ0yN
+ qUkkklalJJJJWlSSSSVqUkkklaFJJJI2pSSSSVpUnTJ0rUpJJJK0KSSTJWpSdJJJSkkkkrUpMnSSUpJJ
+ MlaF0kkkrUskkklalJJJJJUknSStSySSdK1LJ0kklKTJ0klLJ0kklKSSTpKWSSSSUpJJMkpdJJJFSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJK1KTJ0kFLJJJJWpSSSSVqUkkklalJJJJWpSSSdK1LJJ0krUskkk
+ halJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSNqUkkklalJJJJKUkkkkpSSSSVoUkk
+ klalJJJIWpSSSSVqWSSSStSkkkkrUpJJJG1KSSSStSkkkkkqSSSSUpJJJK1KSSSStSkkkkLUpJJJK1KS
+ SSRtSkkk6NqWSTpkrUpJJJK1KSSSQtSkkkkLUpJJJC1KSSSStSkkkkrUpJJJK1KSSSRtSkkkkbUpJJJG
+ 1KSSSQtSkkkkrUpJJJK1KSTpkrUpJJJK0KSSSRtSkkkkrUpJJJK1LpJJJWpSSSSVqUkkklalJJJJWpSS
+ SSVpUkkkhalJJJJWpSSSSNqWSSSRUpJJJJSkkkkkKSSSSUpJJJJKkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6ClJJJIWpSSSSVqUkkklalJJJI2pSSSdK0LJJJI2pSSSdK0r
+ JJJIWhSSSSVqUkkklalJJJJWpSSZOhalJJJIWpSSSSVqUkkkhalJJJ08KWSTpkUqSSSSUpJJJJSkkkkl
+ KSTpJKWSTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJMkkpdJMnSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkk
+ pSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKTpk6Slkk6ZJSkkk6SlKLlNQckprWKuVYsVcpKZsVpiqs
+ VtiSkoSSCdJSySSSSlkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKWSTpJKWUgmT
+ hFSxQLEcoFiSmq9RCk9RCSk7EZBYjBJSxUVIqJQUwcqtrZVtyBYpIKcu6tUbPatW4LPuYrkUNYWkI1d5
+ KrmsolbIRIU6dL5V6srNp0V1j4TSptyq9pSNqC98ptKa1xVF9kK3cZVCwIoXFxVqo7lRa0yr+O1JTdqq
+ lWm0BNQFaHCaSlrOqVeyoK68qtY5EKc+yoKu6sBW7XqlZYnoSMACuVELMFqsV3JKdQOChZYFWFyFZckp
+ lbaqjrUK21VXWpKbzbVaqtWQyxXKXoKdZlinvVSso4QUmDkQFCYEdrU1KJ6qWhaDmKtYxOitLl2AquQV
+ ovqlDNEqRDTbKKHFHGOkaYSU07HlUrHlaFtao2M1QpTBjzKt1vKrV16q9TTKFKYuJKAWErTGNKX2VBTU
+ oYZWvjCFXrohXamwgptNKZ2qZpUwJQS13VSo/Zlda1S2hC1NNtACnAajP0VO2yEgljbYAqNtkpXWqm+y
+ UVMzqi1MVdhlXaAmlTcx2LVpEKlQ1aFYUZSnCcqIKUpil4TQnClCCkZTSpOCGUlMpTqAUgmlS6SdJBKy
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//9Lr0kkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKW
+ SSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRap
+ JKUnTJ0lKSSSSUpMnTJKUkkkkpZJJJJSkkkkEqSSSRQumSSRUpJJJJSkkkkrUpJOmSUpOmSSRa6UJBOg
+ i1oTKUJkFWskkklSrUkmSCVKtdOkE5CKrYppSKiSim2UpSoynCKmSSZOEkrwlCcJ0lMUlJMlSlkkkkqU
+ pJJJKlKSSSSpSkoTp4SUxhJThRKSmKUpilKVKXSSCdKlKTJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSyd
+ JJKlLJ0kxQKlJSmlMmqZSnUU6Sl0ySSSlJJpTo0pSUJ0kqUsknTJUpSUJBSCVKYwkpwolKlLJJkkqUuk
+ mSSpS6SZJClLpJkkaUukmSSpS6SZJGkLpJkkuFS6SZOhwpUkkkhwKUkkkjwqUkmSS4VLpJJwlSlQlCeE
+ oQpTFJOUySlJJJ0ErJJ0yFKUmlJMUqUvKUqMppSpCSUlEKSPCpSSdMjwqUnhJOjwqWhMpQmKNIWlNKRT
+ I8KWSSYJ02kgKSSSSpNKSSSSpapJJJKkWpJJJKkqSSSQpSkkkkaTSk6ZOEqQsknTFKltqSUZThKlWunh
+ IKUJUm2CScqJSpcqU6hKcJUmmSSSdKlUsnhJOlSFoTKSZGkLJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKU
+ kkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJ0kKUsmTlMUqUqUp
+ UU4SpTJKEgpgJUhhCSkQolKlWtKSaUglSrZQnhIKUIUq2EJKZCiUaUskmTpUlSSZJLhUukmSS4Urpkkk
+ uFVKSSSS4VKSSSR4VKSSSS4VKSSSS4UKlOop02krpJlIJIVCUJ08JUi2CScqJRpVrpKKcJUupdPCQUoS
+ pVMYShShMUqQxSTlMjSFJJJJcKLUkkklwqUkkkhwrlJJJJUpSSSSFLbUkkklSQVJJJIUuUkkkjSlJJJk
+ aRS6SSSVKUkkklSFJJJJUpSSSSVKUkkklSlJJkkqSukkkjwqUmSSS4UrpJk4S4VUqEk6SVKpZMnTJUhS
+ dMnSpSkoThPCFKYpJymSpFrJJJI0lSSSSPClSSSSHCpSSSSXChSSSSVKUkkklSlJJJIUpSSSSVIVKSZI
+ JUpklCQUwEqVbCEoU4TEJUq2CScpkqVakkk6VJWTpJ4SpSyZShIhKksUkimSpS6SSSVIUkkklSl0kySV
+ KXSTJJUpdJMklSl0ySSVKUkkklSlJJJJUpSSZJKkLpSmSSpS6SZJKlLpJkkqUukmSSpS6SZJKlLpJkku
+ FS8pSmTJUmmSSYKQTqTSkk8JEIUqmKSRUUqRTJJRCkEqVS8JQpAJ4QpVMITSpEKBSpSpSlRlOEqUySSC
+ SVKUknSQpSySdJKlLJJ0kqUsknSRpSySdJKlLJJ0kqUsknSSpSydMklSaXSSCeEqVTFJOVFKkKlJMklS
+ GSSYJ0qXAKTpJJUnhWSTpkqRSkkkyVIXSSSSpCkkkkaUpJJJKkqSSSSpSkkkkqWkqSSSSpVqSSSS4Vyk
+ kkkuFVKTpk4Q4UKhKFIJ4Q4VMITKZCiUeFSySSSXCmlJJJ0uFNLJJ0yXCqlJJk4S4UUpJOklwqpSSZJL
+ hUpJJJLhQpJJJKlKSSSSpSkkkkqUpJJJKlKTpkkKSpKUk0pUpdOohSCVKVCUJwnSpTGEk5TJUpSSSZKk
+ qSSTJUql5SlMmlKlUyTqMp0qUukmSSpCkkydKkLpJJ0qUskkUxSpVqlKU0pJUq2SSZJKlWumTpkqUpKU
+ ySVJXTpk6NIUkkkjSlJJJIUpSSSSFKUkkkhSlJJJJUpSSSSVKUkkkjSVJJkgUaSySSCdGlUxSlIqMpUq
+ mUp5UJTylwqpkkmSSpS6SZJNpS6SSaUKQvKSaU0pUpdJJJLhSpJJJHhUpJOklwrbUmTpJUq1kk6SVL6U
+ mTpJUilkk6SNIWTpJkqUpOmSSpS6SSdKlLJJ0xSpdSydMkEqQQvCeE4TwlS1hCSmQoFKkrJJk4SpNLpJ
+ JJUqlJJJJUqlJJJJUgqSSSSpbakkkkqTakkkkqSpJJJKlKTpkkqUpJJNKVItdJMFJKkWsmTlMUaVapSU
+ U8pUuZJJBOlSaWTJyolKk0vKUqMpApUimaSYKQSpCyScqJQpS6SZJKlLpJkkKUukmSSpS6SZJKlLpJkk
+ qUukmSSpS6SSSVKWSTpJUpUJQnSSpTFJOmSpSkkySVJXTqKdLhVSkk6SXCqlkkkyXCql0kySVKpdJJOl
+ SlJk6ZKkKSTpkqUpJJJKlKSTpkqQpJJOlSlkk6ZKlKSSTJUpSSZSCVKVCUKQCeEqUwhNCmQolKlLJJJJ
+ UpSSeEoSpSySlCaEqSpJJOlSlkykmSpSydJOAlwqWhKFKEoSpTFJOmKVKWSlIqMo0pknhRCmAlSloShT
+ hMQlSmCScpkKUpJJJClKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkaUpJJJKlKSSSRpSkkySXCpdJIKUJcKm
+ KUpFRJS4VMpSUZTpcKl0kkkqQpJJMlSl0kk6VKUkkklSlJJJJUpSSSSVKUkkklSlJJJI0pSSSSFJUkkk
+ jwqUkkklwqUkkklwqUkkkjSaUknSSpVMUk6ZKlUpOmToUqlJQnSSpFLJJ0yVKWSTpJKWSTpJKWSSSQUp
+ JJJJSkkySSl0kySSl0kySNKXSSSSUpJJJJSk6ZOlSl0ydJDhUsknTJUpSSSSVItSdJJKkhSZOkjS6lkk
+ 6YpUilJSmKZClrKUlFOlSrXSTJJUi10kySVJUnTJJUldJMkhS0ldJMklSLXSTJIUuC6SZJKk0ukopSls
+ pknUQnRtCkkimStS6dRThK1KTpJFK1LJJioykpnKShKeUVMkkySSV00pJklLylKjKUpJplKdRBToqpdM
+ kmSVS8pSmTJIZSnUQpBJCoShSATwkpgknKZJSkkkkFKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJS6SSSSlJJJJKUkkkkpSSSSSlJk6SSlkkk
+ klKSSSSUpOmTpKUmTpklKTpk6Sl1FykouSU1rFXKsWKuUlMmK2xVGK2xJSYJJBJJSySSSSlJk6ZJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6SlJJJJKUkmTpKUnCZSCKligWI5QLElNV6gFN6iElJ2IwQ
+ WIwSUsVAqZUCkpg5BejFCeE6KmnYFVeyVee1AcxW4lDSNScMhWCxMWomSGI0Tm2FB+iq22Qham0chN60
+ rMNxRK7JStTeJlCcyUSsSi+mhamq2tXKWQmFas1MStTZq0RSUNgRCEEobHKna9WrFStTrQ1LXqk8kq3Y
+ EH05StSBoKsVgojKZVquhG1IQChvaVoihQfQlanFtaVWLCti2hVnUIWpp1sKv0VlNXStCilC1L11o7WI
+ rKoCkWwlalmNVhoQGlHaU0pU8QqlhCsWugLOuthOihnoURjAVRbbqr1D5TyUUmFIQ30q23hQs4TQdVU4
+ +QyFnWN1WtkrLs5T7VSqmSVq41UrOo5WxiphKqbLaBCTqQFYbwoWGE2001S0BR3QlY9V3WJ1optteite
+ s9r0dj0E032uTl6qCyExuTVJrHSqVoJR/UlMRuRS5VtZKrOrK2nUgqtZRCVoc5ohXaXQgPbtUWPgppKX
+ coetKoysPGsWzQZCjKmyExUwExCapQUlAKUppKlihkIhKiULUxAThKE6SV0kySClJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Pr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpM
+ nTJKUkkkkpZJJJJSkkkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkkVpZBOmCdBapNCdJJC0JiFOEoRU
+ jhIBSITQkpcJJJFJLBygVMqMJJUApAJwFMBJcxhPCdMUkqSlMmTkspTSmSRUukmThJS8JQnATwgpjCSe
+ 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
+ KUmKRUSgpdMmSSUsVAohCjCSlBFahgIgQUyUSnlRKSlimhOkAkpaElKE0JKWSTwlCClkk8JQipZJPCUJ
+ KWSTwlCSlkk8JQkpZJPCUJKWShPCUIqYEJQpQlCIUoKSaE6KmJUCEQhRISUxAUgEgFIBJSoShPCUIIYE
+ JlMhRhJSk6aEoSUvKSikkpkkmCeElKSTwmhJSkkoShJSkkoShJSkkoShJSkkkkUqSSSSUpJKE8JJCydK
+ EklykyRTJKUkknASQpJPCYhJS8ppTFRQUzlJQCmEkLwnhIBJBC0JQkkkpaEoUoShBTFKE8JQkpjCUKUJ
+ QkpjCUKUJQkpjCUKUJQipZKE8J4QUxhKFKEoRUxhJShNCKlJJQkkpSSSSSCqE8JJ0li0JlJRKTLFSUpk
+ yTKyTJJwEFhWhKFIBS2pMZRwlCJtUSElrFJPCUJIWSTwlCC8LQlCeEoSXLJJ4ShJiksknhKElqyUJ4Sh
+ JkisknhNCS9iUykQmhRlC4U4UQFKEELEKKmQokJKWCkE0JwihdMU6YoqYlRKkQmhJSwTgJwE4CKloUgE
+ 8J4RXMYSLVNMUkoiFFFIUCEUsVIJkgkpknhIKQCSmEJoRYTEJIRwpBPCSSGQTqMpSktUVEpymSUpJJJB
+ KkkkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpOmSSUumSSSUpOmSSUyUXKSg5JTXsVco9i
+ rlJTNitsVRitMSUnCSYJJKUkkkkpSZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJS6cKKkEVKKDYjFAsSU1XqIUnqISUnYjBBYjBJTEqBUyhlJTEpiJTlKUQpGWSoOqRt4US8KwChrOr
+ Q3MVhzwhucE5DTsYs69q1bCFQuAQU5pbqj0NTFolWKQElN6hitCtBpIVoPCKmIrRWMTB4RGPCCkrWpy1
+ JrgnLghaWvY1UrWK+8qpaQihoPYoBqM8hDlFSapqu1sCpVFX6ihakwYhvYFYCHYErS59rFUc1XblRe5F
+ DOtolaFLQsxlkFXqbQgpvxAQLHQmN4hVbbklJg9Ga9ZzbJKt1ulJTK52iyshy0reFl5CeFIWv1WjjvWS
+ DBVyiyE5TuMfomsdoqtduik6yUKS1clZlg1Wjc6VQfykhenla+MYWRWYK0KbITSl1g/RBteg+tohvtlB
+ TCxyCU7nSk3VFTNjVYa1NU1WA3RBTWeYVZ90K1cFmXSElNhuQrDL5WPuIRmWlJTseqEKx4hUhaU5sJQU
+ juKrA6o7hKTKpKYUtrF5W7jHRZONVC16GwmlTdBUXFIKLkxSpSlRSTVMpSlRCcIKZJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Tr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0ySlJ0ydJSkydMkpYpinKYpKWSSSS
+ UunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUn
+ TJ0lKSSSSUpMnTJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkkkqSSSSUpJJJJCkkkkkLp0ySSKXlKVFK
+ UlUkCdQBTyiqlyop5TFJVKTEpJikuAWKQTJwkmmYTkpgouckupReo70B9kIBvhFNOgCCp6LNGUApjMCd
+ S1v6KJKpHMCg7MCIipvbk4cFlnNHim+3DxTuFDrhwUg4LIGcPFEGaPFAwU6chMSFnfbR4pHNHihwpb5I
+ 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
+ bAncK0unvT7lmjLCX2sIcC109wTbgs77WE/2sJcLJFvylKofawl9rCXCyugCE4IWf9rCX2sIcKwukCE+
+ 4LN+2hROcPFDgWF0y4KJcFmnOHim+2hHgWuluCW4LN+2jxS+2BHhQ6W4Jbgs37YEvto8UOFcHS3BLcFm
+ /bR4pfbR4pcK50twS3BZv2wJfbQlwsZdLcEtwWb9sCX20JcKx0twS3BZv2wJfbQlwsodLcEtwWb9tHil
+ 9tHilwr3RLgm3BZpzQl9tCPt2h0w4KW4LLGaE/20eKHtKdIuCbcFmnNHim+2jxS9ta6e4J9wWX9tCf7a
+ PFH21OnuCYuCzftoTfbR4pe2p0twTSFnfbAkMwJcCHTBCmCFljMCkM0eKHAl05CYuCzvto8VB2aPFDhS
+ 6JsCj6izDlgqTciUuFLpB0pKtXZKODKbSVFJPCZBTIIgQwpApqkiSiCnlC0LFRUiolNtatKUpkkOJC8p
+ JkkRJS6SSSelSSSSSVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUnTJJKUkkmSUpOmTpKXUXKS
+ i5JTWsVcqxYq5SUzYrTFVYrTElJgkkEklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUmTpklLpwmThFSig2IxQLElNV6iFJ6iElNhiKEFiMkpYqJCkUySkTlXsshWXqheiFIn5MI
+ Jy1WuJVUkqcIdH7TKc3rPbKKAUUJ32qpbYiFpQXsKSkBeiV2QhmoqTaykpvV3wjDIVFrSpQUlN0ZCKzI
+ WcAURkpKdRl6MLlmslWWyglM+xVLbEVwKrWNKNoQPsUA6U7mFSZWUlJ6QtGkKpVXCu1iElNloUbAnaU7
+ tUkube1Zt2i2bmSs2+pJDQ3wisvhDfUVDYQkpuHIQnXSg7SpBhKSk9TpK0aeFRprK0amQElKsGiyskLY
+ e3RZ2RXKcCpySYKNU+E76TKdlRCfam3XYiGxAYwooYULUjeZVZ6uGslDNJQtTWborDHwo+kVIVlC1JPV
+ UDamLCo7ChamQfKMwoLayrDGFK0tqoqyCq1bSrDQlakdglUraZWpslRNMoWpwzjlOKSFrnHCgaEbU5oq
+ KmKld9FTbUgpptolWK8dWmVKyyoJhSjpohXq2QmYyEYJhUuAolqICkU1SEtTbUUhNCaVMA1PCkkgpjCZ
+ STFFSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/
+ 1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFAejlAekprlSYolSYkpssRggsRgkpdMnTJKUnTJ0lKTJ0y
+ SlimKcpikpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgB
+ HYkpsNUlFqkkpSdMnSUpJJJJSkydMkpSSSSSlkkkkkKSSSSUpJJJJSkkkkkqSSSSSpJJJJSkkkklKSSS
+ CSF0k4SSQxUVIqJSUuCpAqCkEVMpTJJJJUmTpJLgxThJOElyig2ORSVWuKS4BqX2Qsy7JhWcl6xMm1EK
+ ISvzo7of7RPism2wlCBJUwYy7g6gT3THNPisytjirAocU5CZ2afFR+2nxQjjOUfszkrU2RmnxRBmnxVU
+ YrlMYzkrU2ftp8UjmnxVb7O5McdyCmwc0+Kic0+KrmhyiaHIqbP24+Kf7cfFVPQcl6DklNz7cfFL7cfF
+ VPs7k/2dySmz9uPil9uPiq32dyX2ZySmz9uPil9uPiq32ZyX2dySmz9uPil9uPiq32ZyX2ZySGz9uPil
+ 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
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkk6SlkkkklKSSSSUuouUlFySmtYq5VixVykpmxWq1
+ VYrVaSkwSKQSSUsknSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ0klLJJJJKUnC
+ ZSCKligWI5QLElNV6iFJ6i1JTYYihCYjBJTEppUihlJTFyq2slWiolsohTlWY8oP2RbXpApeiFMEOQ3F
+ RBjLT9IJ/TCKHLOMonFWrsCb0wkpyDiJxiLXFQUhUElOUMRL7ItcVBP6QSU4/wBkTjGWsagm9MJKc9tE
+ IzaVa2BOAkprGlCfjytCEtgQS5RxlNuNC0fTCWwIoajaoU4hHLUMhJTEFTBlQhTaElLOZKr2USroCYtS
+ U5L8WUI4i2TWE3pBJTjjEUxirV9IJjWElNJlEKw1kIu2EoSUjLZVd9Mq7CWxEFTluxkwxlqGsJvTCdan
+ PFCmKFc2BSDUlNP0Exx1eDQpbQm2lzTjJjjrSLAolgStTmnHTDGWl6acVpKc9uOjMoVwVqQYhamu2qEQ
+ Vo0JIWpgGJ9qlKjKVqWLUMsRZTEIqQFiQaikJoSUu0IzSghTBTSlOHKQcggqQTCpOHJ5QgppqmUpiUxU
+ SmlTKUtyhKaUFJJTKIUkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSU//9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ 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
+ kkkkpSSSZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkmSUunCZOEVKKBYjlAsSU1
+ XqLVJ6i1JSdiMEJiMElMSoFEKgUlMCknKiUQpknlDlKVIEM5TEqMpiipeU4KinCSkgUpUAlKSmcpbkMl
+ NKSkpKiSoSmJSUuSlKipAJKZAqQKiAkkplKYuUCVElJTMlNCiCpBJStqeITykSkpUqO5MSoEpKShykCg
+ AogKSkhKg4pSoFJSxKcKKcIKZhJMknBS8ppShPCKGKUqW1RIQtK4KcFQhJBTOUpUU6SlwpBRCkELUukS
+ kolJSi5RLkiolFS5cm3KMJJKSAqQUAphJSoTEKSYoKYpApikEEpWorQhsVhoTSpQCdSUCU1SxUSUi5Rl
+ NUulCYFSCCl06UJIqUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkp//9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxQHo5QHpKa5UmKJUmJKbLEYILEYJKXTJ0
+ ySlJ0ydJSkydMkpYpinKYpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV
+ 6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpZOmTpIKySSSSFJJJJKUkkkklSSSSSV
+ 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
+ KiXKBclalyUyipgJWpcJ5TwolK1L7kpUJThK1LlRhEAS2pWpHCkCnIUSlamUpQohEaErUx2pQi7UxCVq
+ RpJyEoRtSgFMBRCkEbUvCiQpSkULUjIUVMqJStSycKKUoWpICnlDlPKFqZymKjKeUbUpNCdJK1MYShST
+ JWpQUgmTSlamUpiUxKiSlaVEpBRUmoKbFastVatWGlNKmRQnFEJQnJqkZKYJyE4CaVLgIgCZoRQElMIT
+ IhCgUVLJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ f//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsUB6OUB6SmuVJiiVJiSmyxGCCxGCSl0ydMkpSdMnSUpM
+ nTJKWKYpymKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEd
+ iAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKWTpk6SFkkkkkLpk6ZJKkkkkkqSSSSUpJJJJKkkkkl
+ KSSSSUskEk4SUuApJBOkpgVAlTchlFKpTqKkElwXTQpAJ4SSjISCkQkAiutYoFx0VgqtdwkkOVlFYeUV
+ s5RWHlFJJaJ5V3FGqoE6q9iO1SYZPSYLeFu0s0WHgvGi3KXiElqQtQi1GLwhF4SUtCYhPvCReElLQnAU
+ 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
+ S1W1LalvCW8JMgVtS2pbwlvCS9faltS3hL1AgtK21LalvCW8JLVtqW1PvCbeElK2pEJbwmLwkhYhRhMX
+ hR9QJKSAKQCELAiNsCCme1Rc1S3hMXhJTUuYsjLC2bXCFj5rgkucHIOqhQdUsl2qFQ7VJL0mCeFv0DRc
+ 7gHhdFj8IJTEKBCKUMpKWCdJMUFKlKVGU4QWskoSClCCEZCaEUhQIQQxTpikiFLpJk6elSSSSKVJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJS
+ kkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJ0ySSmSg5SUXJKa1irlWLFXKSmbFarVVit
+ VpKTBOmCSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJkkklKUlFOip
+ RQLEcoFiSmq9M1O9RakpssRggMRgkpRQyiFQKSmKcFMVGUVJgUiUDelvSQkJQyluSRUxhOApAKQCSmEJ
+ EIkKJCSmCcJimlJTNJRBTpKWKYqaUJKRwmhE2p9qSkYCkFKFEpKZSolRlOElLQpAJAJ4SUyCkoSnBSUu
+ QoEKaUJKRgIgTQmlJSWUxUNycFBSoShOkipilKRUCUVM9yeUKVIFBTIqJTpigpikpQmhJSyZOQooKZAq
+ SiApAIqXTKSiUlKSSSRUpJOmSSxTKUJQkpjCm0JAKYCCmbEZpQgiAoFTMlQKdIpqmEJAKRCZNUzapgoQ
+ KcOSUkJUCmlJOClJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKf//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKYlAejlAekprlSYouUmJKbLEYILEYJKXTJJJK
+ UnTJJKXTJ0klMSmKkolJSySSSSl06ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcJJBJJSJ6qvVp
+ 6qvSUxCOxACOxJTYapKLVJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSQpJJJJSkySSSlJJJJLlJJJJKUkkk
+ kpSSSSSl0ydMkpSQTJJItmCnlQBTyki1FQIU00IpthCkAnhPCSbUnTJJJtRSASUgkutiQql40V0hVLxo
+ kuBcPLWFkrfywsTJYiNUkuW46qxj2QUN9eqTGkKxGFsRd/Eytq1qs6ByuVqeQrLbyE720PSnP81A53mu
+ f+0FN9oKXtqeh+2p/tq58ZBUheUvbU7hzE321YnrlRNxS9tTu/bvNL7d5rnzeU32gpe2p6EZ3mpjN81z
+ gvKmLyl7aHohm+aRzVz4vKRvKXtqd45vmo/bvNYJvKj65S9tT0H27zS+2+a5/wBcp/XKXtqd/wC2+aX2
+ 3zWB65S9cpe2p3/tvml9t81geuUvXKXtqd/7b5pfbfNYHrlL1yl7anf+2+aX23zWB65S9cpe2p3/ALb5
+ pfbfNYHrlL1yl7anf+2+aX27zWB65TeuUPbU9B9u80vtvmuf9cp/XKXAp3xm+aRzFgi8pzeUeBTqXZcr
+ Kyb5Q32kqrY4lHgUgvfKpk6qy9pKH6aXAplUYWrjWQs1jIVuqQjwKd2jIhXWZawGPIRRcUOBTu/bExzV
+ iG4pvWKHtqdr7b5qQzFheqVIXFL21O8MxL7YsMXFL1im+2p3PtiX2xYfrFL1il7aHc+2JfbFh+sUvWKH
+ tqdz7Yl9sWH6xS9Yo+2p3PtiX2xYfrFL1il7anc+2JfbFh+sUvWKPtKdz7Yl9sWH6xS9Yo+0p2/tab7W
+ sb1il6pS9pTs/a0/2xYhuKibyh7SXd+2+aX2xYXrlOLil7SndGYn+2LC9Yp/XKXtqds5vmonNWGbym9c
+ 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
+ Zdz7Yl9sWH6xS9Ype2sdz7Yl9sWH6xS9Ype2yxdz7Z5pfbFh+sUvXKXtr3c+2JfbFheuUvXKeMS0u79s
+ T/bFheuU4vKd7K13PtaX2tYnrFL1ih7Sna+1qJzFjG4qJuKHtIdg5aj9rWObim9Upe0p2hlqYzFh+qU/
+ rFD2lO79sSOYsL1yl65TfbU7FmXIWXl3yhG0qpc4lL21zUvfJTUHVRe0ko+PXqmnGl3cA8Losd2i5/Cb
+ ELdp0CYYJbm5QJUZTSm8KkiYpAp0OFTApBOUyHCgswphDBUgUOFayUCpSolDhQxKipJkqUpOmTopUkkk
+ klSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUnTJJKXSTJJKXSTJJKXSTJJKXSTJJKUkkkkpSSSSSlJJJJKUmSSSUpOmSSUyUXKSg5JTXsVYqxYq5SU
+ zYrdaqMVutJSYJJBJJSkkkklLJ0kklKTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0ydJJSkySSSlJJk
+ klLp0ycIqUUCxHKBYkpqvUWqT1FqSmwxGCDWjBJSioFTKgUlMSoFEKiQkpEUymQltStDEKYSATwlalwp
+ AqKSVqZEqJSSStTAplOEoStTBSCUJ4StSgnTJJWplKSiklamRKGVNRIStSNSCltShK1KCdKEkrUxTgpQ
+ lCVqZAp5UYTpWpRKgVJNCVqYqQKUJAJWpmCnUAnRtSioEKcJQlaUcJwpQnhK1LJJ4SQtSyUJ0kLQwITQ
+ iQlCVqYAKQTwklalJipJoRtTFPCeEoStKySeEyKlkkkklMgphQCkElMwphQCkE0qZhOmCdBSxCYhSSIT
+ VMEk8JQkpZSTJ04KXTJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKf/0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpiUB6OUB6Smu5SYouUmJKbLEYILEYJKUkkk
+ kpSSSSSl0kkklLKJUlEpKWSSSSUunTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6t
+ PVV6SmIR2IAR2JKbDVJRapJKUnTJ0lKSSSSUpMnTJKUkkkkpSZOmSUpJOkkpZJJJJSkkkkkqSSSSUpJJ
+ JJSkkkklKSSTpIWTKSZJCydMUkkLp1EKQRSpJJJJSkydMkuVKkCoSnBSSEhVa4aKxKDYJSXBxslkrKup
+ lb91cqk+iUYqcI40pDFW0MZTGIrsCFpcQYxUvQK2xipfZVJxBDiegUvQK2jipvsqHEFOOKSpCkrW+yqQ
+ xkuIKcn0CmNBWyMZP9lS4gpwjjlN9nK3fsib7IlxBThigqQoK2fsqX2ZLiCHI9EpvRK2Psyb7MlxBTjm
+ gpvQK2fsyX2ZLiCnG9ApegVs/ZkvsyXEFON6BS9ArZ+zJfZkuIKcb0Cl6BWz9mS+zJcQU43oFL0Ctn7M
+ l9mS4gpxvQKXoFbP2ZL7MlxBTjegUvQK2fsyb7MlxBTj+gU/oFbH2ZP9mQMgpxvs5T+gVs/Zgl9mTeIK
+ cb0Cn9ArY+zJfZkuIKcU0FCdjlb32VMcRO4gp584qYYq3zh+SX2PyR4gpw24yK3HK2BiKQxUuIKcoUFS
+ 9ErVGMpDGS4gpyfQKX2crYGMnGMEOIKcf7OUvQK2fswTfZghxBTkegUvQK1/s6b7OlxBTkegU/oFa32d
+ L7OlxBDk+gUvQK1vs6X2dLiCnJ9ApvQK2Ps6b7OlxBTkegU/oFa32dL7OjxBTk+gU3oFa/2dL7OlxBTk
+ egUvQK1/s6X2dHiCnKFJS9ErV+zp/s6HEFOQaSoGgrYOOm+zo8QS4/oFSFBWt9nTjHS4gpyvQKY0Fa/2
+ dL7OhxBTjGgpvQK2fsyb7MlxBLkigqYoK1BjKYx0OIKcr0CmNBWv9nSOOhxBTiOoKC/HK3jjITsZLiCn
+ n3Yyj9lW+cVR+yJcQU4rcVFbjLYGKiDFS4gpxxjlSGOVsjFT/ZUuIIcb0Cl6BW19mCY4yPEFOL6BS9Ar
+ YOMl9nR4ghyPQKf0CtX7On9BLiCnK9ApegVregl6CXEFOT6BS9ArW9AJfZwlxKcn0Cl6JWt9nS+zpcQX
+ ByfRKXola32dL7OlxBBcn0Sm9ErX+zpfZ0uIMZcn0Sl6JWt9nS+zpcQQ5PolL0Stb7Ol9nS4gvDk+iUv
+ RK1vs6X2dLiC8OT6JTeiVr/Z032dLiCXK9Ep/QK1fs6cY6XEEFyvQKXola32dRNCHEGMuT6RS9IrTNCQ
+ oR4gpzPRKXoFaox1L7OhxBcHGNBQX45W8cZCdjI8QXhwHYyh9lW67GUfsyXEF4cZuKjMxitZuKjNxUuI
+ ILkNxyp+gVsDGSOMhxBjLjegUvQK1zjpDHR4gpyfQKXoFa/2dP8AZkuIKcf0Cl6BWx9mS+zJcQU4/oFL
+ 0Ctj7Ml9mS4gpx/QKXoFbH2ZL7MlxBTj+gUvQK2PsyX2ZLiCnH9ApegVsfZkvsyXEFOP6BS9ArY+zJfZ
+ kuIKcf0Cl6BWx9mS+zJcQU4/oFL0Ctj7Ml9mS4gpx/QKXoFbH2ZL7MlxBTj+gUvQK2PsyX2ZLiCnH9Ap
+ egVsfZkvsyXEFOP6BS9ArY+zJfZkuIKcf0Cl6BWx9mS+zJcQU5HoFMaCtj7Ol9nS4gpw3Y5QHYxXQnGU
+ DiJcQXB504iYYi6A4iX2RLiC5w24pRW4xWwMRTGKlxBBcptBUxQVqjGUvsyHEFrkegU3oFbH2dL7OlxB
+ Dj+gU/oFa32dL7OlxBDk+gUvQK1vQTeglxBTk+gUvQK1vQTeglxBTlegUvQK1vs6f7OlxBTj+gUvQK2P
+ syX2ZLiCXH9ApegVsfZkvsyXEFOP6BS9ArY+zJfZ0uIKcf0Cl6BWx9nS+zo8QQ4/oFL0Ctj7Ml9mS4gp
+ x/QKXoFbH2ZL7MlxBa4/oFL0Ctj7Ml9mS4gpx/QKb0Ctn7Ml9mQ4gvDjegU/ola5xlH7OlxBRcr0Sn9E
+ rU+zpxjpcQWFyTQVE45WyMZS+zBLiCQ4JxihOxCuiOKFA4gS4gzB5w4ab7GuhOIo/ZUeIJLhtxEdmKVr
+ jFRWYyBkGIuW3GKl6BWwMYJHHCbxIcU0FR9ErZOOofZ04SC1yfRKXola32dP9nR4gkOR6JS9ErW+zpfZ
+ 0uILw5PolL0Stb7Ol9nQ4gguT6JS9ArX+zpfZ0uIMbkegUvQK1/s6X2dLiCQ5HoFL0Stf7Ol9nS4gyuR
+ 6BT+gVrfZ0vs6XEFOT6BS9ArX+zpfZ0uIIcj0Cl6BWv9nS+zpcQQ5HoFL0Ctf7Ol9nQ4ghyPQKXoFa/2
+ dL7OhxBTkegUvQK1/s6X2dLiCnI9ApegVr/Z0vs6XEFOR6BS9ArX+zpfZ0eIJcj0CmNBWx9nTfZkeIJc
+ R2OUJ2Kt84yicVHiCXnDiJhiLoTiKP2RHiCnGZjQrLKCFptxkQY6RkFOWaShmkrZNCgcdDiCHIFBRBQV
+ pjHRBjocQQ5XoFMccrZ+zhN9nCbxBDjfZyl9nK2fswT/AGYJcQQ4hxym9AraOMFE4ycJBLj+iUvQK1vs
+ 6X2ZHiCnJ9ApegVr/Z0vs6XEEuR6BS9ArX+zJfZkuIKcj0Cl6BWv9mS+zJcQU5HoFL0Ctf7Ml9mQ4gpy
+ PQKXoFa/2ZL7MhxBTkegUvQK1/syX2ZLiCHI9ApfZytgYyf7MEuIIcf0Cn9ArX+zhN6AS4gpyTQVE45W
+ z9nS+zBDiCnEOOUhjlbX2YJ/swR4gpxhjlS+zlbAxgl9nS4gucU45Qn4y3jjIbsZLiC4PPuxUwxVuHFS
+ GKlxBc47cYooxitduKiDFR4gouN6BS9ArZ+zJvsyPEGMuP6BS9ArY+zJfZkuIIcf0Cl6BWx9mS+zJcQS
+ 4/oFL0Ctj7Ml9mS4gpx/QKXoFbH2ZL7MlxBTj+gUvQK2PsyX2ZLiCnH9ApegVsfZkvsyXEFOP6BS9ArY
+ +zJfZkuIKcj0Cl6BWv8AZkvsyXEFOR6BS9ArX+zJfZkuIKcj0Cl6BWv9mS+zJcQU5HoFL0Ctf7Ml9mS4
+ gpyPQKXoFa/2ZL7MlxBTkegUvQK1/syX2ZLiCnI9ApegVr/ZkvswS4gpyPQKb0Stj7MonGS4gkOT6JS9
+ ArW+zp/syPEFzivxyqz8UrojjIbsRLiCHmziJ24i3zieScYiXEFOKzFR245WsMVEGMhxBTkigpeiVr/Z
+ kvsyXEEOSKSpCkrUGOpDHS4ghyTSVE0FbP2ZN9mQ4gpxfQKkKCtf7Mn+zI8QQ5HoFL0Ctf7Ol9nQ4gpy
+ PQKXoFa/2dP9nS4gpx/QKXoFbH2cJfZwlxBTj+gUvQK2Ps6X2dLiCnH9ApegVsfZ0vs6XEEuP6BS9ArY
+ +zpfZ0uIKcf0Cl6BWx9nS+zpcQU5HoFL0Ctb7Om9BDiCnK9ApjQVr+gn+zocQU4poKgaCt04ygcVLiC0
+ uCaCoHHK3jiIZxEuIIDh/Z04xltfZE4xUeIMsXHGMiDHK1hiqYxkuIMjkigqXoFawxk/2dLiDGXI9Apv
+ QK1/s6X2dLiCxyPQKf0Ctb7On+zo8QQ5PoFN6BWv9nS+zpcQU5HoFL0Ctf7Ol9nS4gvDkegUvQK1/s6X
+ 2dLiCi5HoFL0Ctf7Ol9nR4gxlyPQKXoFa/2dL7OlxBAcj0Cn9ArW+zpfZ0uIMocj0Cl6BWv9nS+zpcQS
+ XI9ApxQVrfZ04oCHEFhcsUFL0CtUUJeghxBTkGgqJoK2Djpjjo8QS4/oFL0Ctf7Ol9nR4glxzQVB2MSt
+ v7MkcZLiCXnnYiEcNdIcVQOJ5I8QU86MREbikLd+yJDER4gpyW0FEFJWqMZSGOlxBTleiUvRK1vs6X2d
+ DiC1yfRKXola32dL7OlxBDk+iUvRK1vs6X2dLiCnJ9EpeiVrfZ0vs6XEFOT6JS9ErW+zpfZ0uIKcn0Sl
+ 6JWt9nS+zpcQU5PolL0Stb7Ol9nS4glyfRKf0Ctb7OnGOgZBTk+gU32crY+zhL7OE3iCHH+zlP8AZytf
+ 7OE/2cJcQU4/oFL0Ctj7OmOOlxBc45oKiaCtk46icZHiCXGNBS9ArZ+zJfZkeIKcX0Cl9nK2/sqRxUuI
+ KcM45UDjrcOMhnGS4gpxTjJxjLY+zKYxUuIIchuMUVuOVrNxlMY6HEFrkegVA0Fbf2dROMlxBTi+gUhQ
+ Vs/ZkvsyPEEOP6BSNBWx9mTHHQ4gpxTSVH0Stk46j9mS4gpym0lFFJWkMdEGOlxBTkmgqBoK2vsyY4yX
+ EEuKKCpCgrX+zJ/syXEFOR6BS9ArX+zpfZ0eIKcj0Cl6BWv9nS+zocQU5HoFL0Ctf7On+zpcQQ4/oFL0
+ Ctj7Ol9nQ4gpx/QKXoFbH2dL7OlxBTj+gUvQK1/s6f7OjxBLkegVE0FbP2dMcZHiCXBdjFCOKugOKonE
+ R4glwPsikMVbv2ROMVHiCXFGMUQY5WwMVOMZDiCXIFBT+gVr/Zk/2dDiCnI9ApegVr/Z0vs6HEhyPQKR
+ oK1/s6X2dLiCHH9ApvQK2Ps4S+zhLiC1yPQKf7OVrfZwn+zhDiCnI9ApvQK2fs6X2ZLiC5xvQKXoFbP2
+ ZL7MlxBBcb0Cl6BWx9mS+zI8QYy4/oFL0Ctj7Ml9mS4gkOP6BTegVs/ZkvsyXEGUON9nKXoFbP2ZL7ME
+ uIKLjegUvQK2fsyX2ZLiCwuN6BUhQVr/AGZL7MlxBDk+gUjQVr/Z0jjpcQU4jscqu/GJXQHGUDipcQXB
+ 5x2Io/ZF0JxE32TyR4gyBw2YisMxiFrDERBjJcQWlzG0FS9ErVGOn+zocQYi5BoKgaCtk46j9nR4guDk
+ egU4oK1vsykMdLiC9yPQKXoFbH2dMcdDiCnH9EpvRK1/s6X2dDiCHI9EpegVr/ZkvsyPEFhcf0Cl6BWx
+ 9mS+zIcQWOR6BS9ArX+zJ/syPEEhx/QKf0Ctf7Ml9mS4gvDkegU/ola32ZL7OlxBc5PolP6JWr9nT/Z0
+ uIJcn0Cl6BWt9nT+gEuILC5H2cpfZytf0An+zhDiCxx/s5THHK2xjBL7MEuIJDguxyhOxiuhOKhOxUeI
+ Lg88cZR+yrfOIm+yI8QZA4YxUQYpW0MRTGKlxBc4oxipDGK2hihP9mCHEGMuOMYp/sxWyMYJ/s4Q4gtc
+ X7OUxoK2jjhROMlxBLjegUvQK2PsyX2ZLiCnH9ApegVsfZkvsyXEEOP6BS9ArY+zJfZkeIKcf0Cl6BWx
+ 9mS+zIcQU4/oFL0Ctj7Ml9mS4gpx/QKXoFbH2ZL7MjxBTkegU3oFbH2ZL7MlxBTjfZynGOVs/Zk4xglx
+ BTjjHKl6BWwMdL7OEOIJcU0FRNBW2cYKJxkeIKcX0Cn9ArX+zJfZkuIJcj0ConHK2vsyX2ZLiCnBdiyh
+ HEXRHFUTiJcQS879kU24xC3fsiQxEuIKcllBCKKStQYyl9mS4gpyfRKXola32dN9nS4gtcn0Sl6JWt9n
+ S+zpcQU5PolL0Stb7Ol9nS4ghyfRKXola32dL7OlxBTleiUvRK1fs6X2dLiCnK9EpeiVq/Z0vs6XEFOT
+ 6JS9ErW+zpfZ0OIKcn0SnFBWr9nUhjpcQU5XoFL7OVrjHT/ZwlxBTjfZyl9nK2fs4THHS4gpxvQKb0Ct
+ g44THHCXEFOR6BT+gVq/Z04x0uIJcr0Cl6BWuMdSGMlxBTiHHKgcYre+yqJxUuIJefdjFDOMugdioZxU
+ uIJcH7MpDFW19lUhioiQQ47cYozccrWbiogxgjxBDkCgp/QK2PswSOMhxBTjegU3oFbH2dL7OlxBTj+g
+ UvQK1/s6X2dHiCnI9Ep/RK1fs6X2dLiCnLFJTikrUGOpDHQ4gpyvQKiaStj7OonHQ4gpxzSU3oFa5x0v
+ s6PEFOR6BS9ArX+zpfZ0uIKcj0Cl6BWv9nS+zpcQU5HoFL0Ctf7Ol9nS4gpyPQKXoFa/2dL7OlxBTkeg
+ UvQK1/s6X2dLiCnI9ApegVr/AGdL7OlxBTk+iUxoK1/s6X2dHiCnDdjlCdirfOMonFR4gkPPHETjEW99
+ kTjER4glxG4qIMcrYGKpDGQ4gpyPQKXoFbH2YJ/syHEFOQKCn9ArXGMn+zocQQ4xoKiaCto44TfZkuII
+ cb0CpCgrX+zhL7OEuIIcoUFL0Ctf7Ol9nQ4gpyDQVH0Ctg46b7OlxBTkeiUvQK1vs6f7OlxBDkegUvRK
+ 1/s6X2dDiCnI9EpeiVr/AGdL7OlxBTkegUvRK1/s6X2dLiCXI9EpeiVr/Z0vs6XEFOR6JS9ArX+zpfZ0
+ uIKcj0Cl6BWv9nS+zo8QU5HoFP6BWt9nT/Z07iC9yDQUJ2MVufZ1E4yXEFPPuxUM4i6A4qb7KjxBDgtx
+ EZmMVsDFUxjJcQU5baCp+gVqjHT/AGcJvEFOQaComgrZOOonGS4ghxvQKf0Ctf7Ml9nS4ghyRQU/oFav
+ 2dP9nS4gpyfQKXoFa/2dL7OlxBTkegUvQK1/s6X2dLiCnI9ApegVr/Z0vs6XEFOT6BTegVr/AGdL7Olx
+ BTk+gUvQK1vs6X2dLiCnJ9ApvQK1/s6X2dLiCnI9ApegVr/Z0vs6XEFOSKCpCgrU+zp/QS4guDkmgqBo
+ K2fQTHHR4lzi/Zyl6BWz9mT/AGVLiC0uKaChnHK3TiqBxUuILHBdjoZxlvHFUDio8QZIuH9mTjGW19lU
+ hiJcQZXJZjFGbjlarcVFGMgZBYXJ9ApjQVtfZgmOME3iWFxfQKXoFbBxgm+zo8QWuR6JS9ErX+zJfZke
+ IIcj0Cl6BWv9nS+zIcQXByPQKXoFa/2ZL7MlxBc5HoFL0Ctf7Ml9mS4gxlyPQKXoFa/2ZL7MlxBY5HoF
+ L0Ctf7Ml9nS4gyxcj0Cl6BWv9mTfZkuIL3HNJS9ErY+zJvsycJhaXIFJUhSVq/Zk/wBmTvcCHK9EpeiV
+ q/Zk/wBnQ4whyPRKb0Stf7Ml9mS4wpx/QKXoFbH2ZN9mS4whyPQKXoFbH2ZL7MhxhTj+gUvQK2PsyX2Z
+ DiCnH9Aob8crd+zIbsZN4guefONqrFGNBWmcVErx4TSQlfFqhatbYCBTVCttEKElcsUykVFC1MwpKIUk
+ 1CxUU5TJWhcFSBUU4QWspSTJIIWKSSSClJ0ySCVJJJJJUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSZOmSUpJJOkpdQcpqLklNWxVyrNirlJTJit1qqxWq0lJgkkE6SlkkkklKSSSSUskkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJ0lKTJ0ySlJk6ZJSkkkklLpwmThFSigWI5QLElNV6i1SemakpOxHCDWjgJ
+ KYlRKIQoEJKYpoUkoSUwhKFOE8IIYbUoU4TwkpHCUIkJQkpHCUIkJQkphCUKcJQkpHCUIkJQkpFCUIkJ
+ QkpHCUIkJ4SUj2pbUWEoSUi2pbUWEoSUi2pbUWEoSUi2pbUWEoSUi2pbUWEoSUi2pbUWEoSUi2pbUWEo
+ SUi2pQiQlCSmEJQpwlCKWEJQpwlCCmEJQpwlCCmEJQpwlCSmEJQpwlCCmEJQpwlCKmEJQpwlCSmEJQpw
+ mhFTCE0KcJoRUwhKFOE0JKWAUgEgFIBJSgphMAnCCmQTpgnQUpJJJNKlkydMkpSdMnTgpSSSSKlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0+vSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSk6ZOkpiUB6OUB6Smu5SYouUmJKbLEYILEYJKUkkkkpSSSSSl0kkklLKJUlEpKWSSSSUu
+ nTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKUnTJ
+ 0lKSSSSUpMnTJKUkkkkpSZOmSUumSTpKWSTpkkqSSSSUpJJJJSkkkklKSSSSQpJJJJC6RTpFJDAqKkVF
+ JDIKQUQphFSkydMUlWsmKdMUkgsSnBTJBJdaQFRcJThPCS62s9koPpK6WptiIVbVbQiClWAxShPElNb0
+ k3pKyQmhHiKGv6Sb0VaAT7UuNTT9FP6StbUtqXGprCpSFSPtUgEuJTX9FMaVahMQhxqapqUfSVohNtR4
+ 1NX0kvSVraltR40NX0kvSVnaltS4yprekl6Ss7UtqHGprekl6Ss7UtqXGVNb0kvSVnaltS4yprekl6Ss
+ 7UtqXGVNb0kvSVnaltS4yprekl6Ss7UtqPGVNb0k3pK1tUdqaZqa/pp/TR9qkGJnGpr+kn9JWQxPtS41
+ NYUqQoVgBTAR4ypq/Zwl9nCuAJQlxlTSNAUTSrpCgQncZU1PST+krEJQjxqQCtP6aNtShDiUh9NL00aE
+ oS4lIPTS9NHhKEuNSD00vTR4TQlxoQ+ml6aNCUJcakPppemjQlCXEpD6aXpo0JQjxKQ+mm9NHhKEuJSD
+ 00vTR4ShLiUg9NL00eEoS4lIPTTemrG1LajxJa/ppemrG1KEuJKD00vTRoShDiQh9NL00aE8IcaUHpqQ
+ rRYShN41I9iXposJQhxlSA1qJqVraltQ4ypqeil6Ct7U0JcZU1xSpCpGhPCXGVIfST+mipI8aEPppjWj
+ JoTuNSA1pvTR4ShHjKGv6aWxH2ptqdxKQ7EtiNtS2pcSkOxLYjbU+1LiUh9NP6aNtTwm8aQg9NL00eEo
+ S41FB6aXpo8JQlxsZQeml6aPCUJcaAg9NL00eEoS414Qeml6aPCUJca8IPTS9NHhNCXGlD6acVo0JwEu
+ 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
+ ROAhxKR+mmNaOAn2pcRQ1jWm9NWC1RIQ40IdicMRITgJcakfpp/TRQE8JcakHppemjwlCXGpB6aXpo8J
+ QlxqQeml6aPCUJcakHppemjwlCXGpB6aXpo8JQlxqQeml6aPCUI8akHpptiPCaEuJcEOxOK0UNUgEeJK
+ IVJ/SRgE6HEgoPSTGlWEyHEVjVNAUTQFbShO4yyRanoJxQrMJ4S4yvtAKlL00aEoQ4itKH00xYjEJoS4
+ lhQeml6aPCUJca1B6aXpo8JQlxqQeml6aPCUJca4IPTS9NHhKEuNcg9NL00eEoQ42MoPTS9NHhKEuNYg
+ 9NL00eEoS42WKD00vTR4ShLjXoPSS9JWITwhxlaWt6SXpKxCaEOMrUHpJemjwlCXGVIPST+kjJ4R4yhB
+ 6Sb0lYhKEuMqa/pJekrEJoS4ypB6Sf0kZPCXGVIPSTGpWIShLjXBpmlIVQrZam2ocaUbWwiJohMShaVE
+ qKRKcJWpkFKEwUwELUxITEKcJiErQwhOnhKELWqSSTFK0KTJFJK1LpJgnRSpJJJJKkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSk6ZOkpZJJJJSkkkklLqLlJRckprWKuVYsVcpKZsVutVGK3WkpMEkgkkp
+ ZJOmSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJJKXTJ0ySlJk6ZJSkkkklLpwmThFSig2IxQbE
+ lNV6i1SemakpsVo4QK0cJKUVAqZUSkpilCScJKXATwkE6Clkk6SSlQlCdJJS0JQnSSUtCUJ0klLQlCdJ
+ JTFKE6SSloTwknSUqEkk6Slkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSloTQpJJKYwlCkkipjCUKSS
+ CmMJQpJIKYwlCkkgpjCUKSSSmMJQpJJKYwlCkkkpjCaFJKEVMITQpwlCKmEJQpwlCKmEJwFKEoSUtCdJ
+ OghSSSSClJJJIKUmTpIKWTpJJwSpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJT//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SmJQHo5QHpKa7lJii5SYkpssR
+ ggsRgkpSSSSSlJJJJKXSSSSUsolSUSkpZJJJJS6dMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuE
+ kgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpSdMnSUpJJJJSkydMkpSSSSSlJk6SSlkkkklLpk6ZJKkkk
+ klKSSSSUpJJJJSkkkkkKSSSSQyTFJMUkMSmTlIJIZBTCiFJFSxUCVIqBKSqXlMmTpJAWThPCUJLlwpKK
+ UpLqZJKG5OHIqpmmSBToqYFIJymRQyCkogqQKClJJ5SQUxTp0kVKlMSlKYlJSxSSlIIqXhKFIJIKYEJl
+ MqKKlkk6SSloShSSQQxhKFJJJTGEoUkklMYShSSSUxSUkyKloShSThAqYgKQCcQpaJlKYwmU5USUqUsn
+ BTSlKdSmUpblGUpSpSiVElOUyKllIJlIJKUmhSlNKSmMJJ5SlJSySeUpSpSySeUpQpCySeUpRpSySeUp
+ SUsknlNKKlJJSlKSlJJSlKSlkk8p0krQlCkkgljCZTTJKYpk8pIqUklKeUKUskpSmQpSycJJwm8KlwE8
+ JwnQpTAhRKKVEhKlI00ohCiQlwqYymlSKZO4ULSnSSlO4VKTwkCnlKkLQlCknSUwhKFNLRK1MYShSS0S
+ tTGEoUkySVoShOkhSitCUJ0kqYytCUJ0kqQFoShPKSVLwtCUJ0kqXhaEykklSVoSTpJUgqUSFJJKmMoo
+ TgIkJJUpYBOnlNKNLgsVEhSlIJUvDGE4CknQpdawCSdMSlSCtKZKU4KNLFQlCdOkpinSlKUlKSSlKUlK
+ SSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSl
+ KUlKSSlKUlMSmlSTJUuCwKeUkkqXKJUZUiopUgqBUwohSCVLVwnSBToILEhNClKaUqQqEoTgp5CSmJam
+ hTlMSElMYTpSlKKVJJSlKSlJJSlKSVJJSlKSlJJSlKSFJk8pSkhZJPKUoqWSTymlJS8pSmlIFCkrpEJw
+ UpQpJYwmhTTSisKycJpTylSQuklKUpMiyiVJJJKMpkQhRhKlhWCcJQnCVLVwknlKUqQsknSlKkhZJPKU
+ pUuWSTylKVIKySeUpSpjKySeUpSpcFkk8pShTIFkk8ppRpSySeUkqQsknSQpCySdJKkLJJ0kqUsknSSp
+ SySdJKlLJJ0pSpLEplJMjSVSnBSTopVKiVNMQklgUgpQkkhQCmAmCmECpUKJCnKiSmrWBTKRKjKNIXCk
+ AmBUpQpCoUSpSmJRCWKSeUpTlKSSlKUEqSSlKUlKSSlKUkqSSlJJSkkpSQpCkgknBSpC4CYhOCkShSEZ
+ CjCISoo8KlAKQCQhSCFKWUSplQKVJYFIJykEuFK4UwkFJClzFMVNRKVJDAlNKkVFEBK6dMnlOpYVJJSk
+ ihSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpSkpZJPKUpKWSTylKSlkk8pSkpZJPKUpKWSTylKSlkk8pSk
+ pZJPKaUlKSTp0khjCSkkglYKQTJ0lLpiU8qJKSmJKiSpFMjSmKdOnQpCySdMlSFSlKScJUpSSdOlSGKS
+ kklSmKSkkhSmKSkklSmKSkklSmKSkklSmKSkklSVkykklSmEJQiJaIUpHCdSTFDhUxlKUiUyPCtK8pwV
+ EKQS4UBkCnlME6VMoVKiU6ZGlzEplJOEqWFYBPtUgpJLUcJkQqBSpCySeUpRpCySeUpSpkCySdJKlFZJ
+ OkixlZJOkkoLJJ0pSZQsnSTgpJK0JEKUpEoMZRkJoU0yKFAKQCQUwguYwmIU0xQXIimUyopylAqQKYJw
+ klUpipJiEFIykFIhJFC4UkwTyktUmTylKCFkk8pSipZJPKUpKWSTylKClkk8pSklZOlKUpJWTQpSnSQj
+ hKERMYQpDEBOAlKeUqUqEoTylKK5iUylKYpUlipApkpSpTMFPKgCnBSpK5KiVJKEkMQpBOlKCGJKGSpk
+ oZKdS1aVMFQlSBSpCQKSiCpAoKUmITylKCmMJoU0klMIShSKaUqSoJ00p5SpSyYqUppSpTFJPKeUaUxS
+ UkkKUxSUkkqUxSUkkqQxSUkkqUxSUkkqSsmKlKYo0lgUgVJIBFcuCpSkAkgliUMopUCEVME4TwnCKlBO
+ kE8oIYwlClKZCkLQlClKeQhSGEJQpJJUhYJ0kpSpKkkpSlGlFSSUpSlTGVJJJSlSQpMnlKUqZQsknlKU
+ qUVkk8ppSpjXTppTylSlKJUpUSUqUxUwoqQKVLgzCdMClKC5YqBRCVAooLBOEk4SpjK4CeEgnSXBiVEq
+ ZKiSlS9ZOE0qQKVKXATpAp0KQsklKUpUsKkkpSlKlikkpTSlSQukmlKUqZAumTylKVLlkkpTylSVoTbV
+ MJ0lhQlqUIpUClSxhKeUiUyNKVKUpJJUvC4KkEwUkqXheUydMkliVAohUUqWFiApgJBTCVLVoShTTEoK
+ YpJ5SlKlLJJ5SlKlLJJ5SlKlLJJ5SlKlLJJ5SlKlLJJ5SlKlLJwlKUpUpdIpSlKSmJUVIlRlGlKCkEwU
+ glSVkxU0xQSjKjKmVAo0pQKkCohSCVJZSmJThIhKlIyUgVIhKEqUoKSYKUpUsWSTymlKlKSSlKUqUpJK
+ UpSpSkkpSlKlKSSlKUqUpJKUpSpSkoTylKVKVCUJ5CeUKUsmhPKaUqSqE0KUpSlSmEJQppJUlilKkmSp
+ SpTSlKUpUlYlMpJQlSmKcKUJkqQVJSlKSchSZOkkpQThMCpAoKUolSlMSkpgUlIlNKVKUFMKIKkChSli
+ oFEJUClSmCkEk4RpSklJJClMUlJNolSlkk+iWiVKWShPonkJUpjCUKUhKQjSmMJKUhKUqUxSKlKYpUpg
+ U0qRShFcFwVJMApIJYOQyilQIRQsFMJgFMIKUknSlJSoShOCnlBDCE0KcppCSGMJ4TyEpSpDGElKU0pU
+ pZJPKUpUpZJPKUpUhZJPKUpUpZJPKUpUpZJPKUpUpZJPKUpUpZJPKUpUkLFRKmolOXsE4TpwkpkFJMFL
+ RNUwKgUUqBRCkacJ04RpauApJBSlNUwIUSEQpikhFCcBSSSpSgE6QTylSmKSkklSmKSkklSmKSkklSmK
+ SkklSmKSkklSmKSklKVKYwlCkkiuDGE8J5SlJKyiSpEqBKKCrcm3JkkqWMpSlMFIJUyRVKcFMnSXryml
+ JKUFpUnhKU4SWFaElJMSktYpJ5SlKlLJJ5SlKlwWSTylKVJWSTylKFLCsknlKUqWLJJ5SlKmULJJ5SlK
+ lykk8pShSFiolSJUSUuFatKUpJSlwqVKdMpBLhQpJJOlwqYpJ0kqUxlPKSSXCpUpwUyeUuFcumKW5RLk
+ eFKioFOSlCFJYwpAJwE4CFKXCkEyUo0pkmKaU0oUhdJNKSVIXTFOkUKWsCmUimSpSgnTJ0UqSSSSSpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUpJJMkpSdMnSUuouUlBySmvYq5VixVikpIxWq1V
+ YrVaSkwTpgnSUpMkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlkkkklLJJJ0lKUgo
+ qQRUsUCxHKBYkprPTNTvUWpKbNaOECtHCSlFRKkVApKUkEycJKZBOmCkgpZOkkkpSSSdJSkkkklKSSSS
+ UskkkkpZJOmQUpOmTpKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdJMkpdJMkildJMkgpdJM
+ kgpdJMkghdJMkkpdJMkkpdJMkkpdJMkipSSdJFSyeEkkVLQknSSUsnSTIIUkkkgpSSSSClJJ0yClJJJJ
+ wSpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Xr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpOmTpKYlAejlAekpruUmKLlJiSmyxGCCxGCSlJJJJKUkkkkpdJJJJSy
+ iVJRKSlkkkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiS
+ mw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKUmTpklKSSSSUpJJJJS6ZJJJKkkkklKSSSSUpOmTpIUmTpkk
+ KTFOmSQskEk4SUzCkohSRUwchlTcoFJKgpBRCkEkrwnhIKQCS4MSoOKIUF5SXBg58KHqwh2vhU7LoRCn
+ RF4Cf7SFhvy4Qzm+akAWu+ckJvtAWCMzzS+1p1Id77SE/wBqC585ZUfthSpT0YygnGSFzgzD4qYzPNCl
+ PQ/aQl9pCwRlpfa0KU7hyQonJCwzlqJy0aU7v2kKQyQuf+1lOMtGlPRDJCX2kLAGYl9sTaU7xyQo/aQs
+ I5hTfa/NGlO99pCX2kLB+1nxS+1nxSpTv/aQl9pCwPtZ8UvtZ8UqQ7/2kJfaQsD7WfFL7WfFKlO/9pCX
+ 2kLA+1nxS+1nxSpTv/aQl9pCwPtZ8UvtZ8UqU7/2kJfaQsD7WfFL7WUqU7/2kJfaQsD7WfFN9sKVKeh+
+ 1BL7UFzv2w+Kb7afFClPR/agm+1Bc99tPinGYfFKlPQfaQn+0BYAy0/2zzR4Uu/9oCX2gLB+2+aX23zS
+ 4VO964TeuFhfbfNP9sR4VO59oCb7SFhnLUTlnxS4VO99qCX2oLnzmFL7WfFDhQ7/ANpCX2kLA+1lL7WU
+ qU7/ANpCX2kLB+1nxS+1lKlO99pCX2kLB+1lL7WUqU732kJfaQsH7WUvtZSpDvfaQl9pCwftZS+1lKlO
+ 99pCX2kLB+1lL7WUqU732kJfaQsH7WUvtZRpTvfaQl9pCwftZS+1lKlO99pCX2kLB+1lL7WUKS7/ANpC
+ f7SFz/2sp/tZSpLvfaQmOSFg/aymOWUqU7pyQl9pCwTllN9rKNKd/wC0hP8AaQsD7WU4yylSnf8AtIS+
+ 0hYIyyn+1lClO79pCf7SFhfail9rKVKd4ZIUhkhc99rPil9t80OFT0X2kJ/tAXOjN81IZ3mhwpd83hRN
+ 4WF9t80vtnmjwqds3hROQFinLUTlo0h2/tAS+0hYRy0xyyjSHe+0hP8Aaguf+1lN9sKVIei+1BL7UFz3
+ 2wp/th8UKU9D9qCX2oLn/tZS+1lKlPQfagl9qC577WU/2spUp6D7SEvtIXP/AGs+Kf7WUqU7/wBpCX2k
+ LA+1lL7WUqUXf+0hL7SFgfayl9rKVMZd/wC0hL7SFgfayl9rKVKDv/aQm+0hYP2spfaylS8O/wDaQl9p
+ CwPtZS+1lKl4d/7SEvtIWB9rKX2spUl3/tITfaQsH7WU32spUou/9pCf7SFz/wBrKkMspUxl3/tIS+0h
+ YP2spjllClO6ckJjlBYJyyo/ayjSQ7/2kKQyQue+1lSGZ5o0vD0QyAn+0hc79t80vt3mm0vehOSFA5IW
+ B9u8032zzRpBd77SE4yQsH7WU4yylTG74yQl9pCwftZS+1lKlO79pCb7SFhfaym+1lKlO99pCX2kLB+1
+ lL7WUaU732kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1lKlO99pCX2kLB+1lL7WUqU732kJfaQsH7WUvtZS
+ pTvfaQl9pCwftZS+1lKlO99pCX2kLB+1lL7WUqU732kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1lKlO99p
+ CX2kLB+1lL7WUqU732kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1lKlO99pCX2kLB+1lL7WUqU732kJfaQs
+ H7WUhllKlPQDICf1wsEZal9rQpcHb9cJjkBYhzPNDOb5o8K53vtAS+0BYH23zUhlpUgu8LwpDICwhlJ/
+ tRSpa7n2kJjkhYZyyoHLKHCgu8coJvtQWAcs+KX2so0h6D7UE/2oLnftZT/ayhSnoftQTfaguf8AtZT/
+ AGspUp3/ALSEvtIWB9rKf7WUqU732kJfaQsH7WUvtZSpc732kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1l
+ KlO99pCX2kLB+1lL7WUaU732kJfaQsH7WUvtZQpa732kJfaQsH7WUvtZRpTvfaQmOSFhfaym+1lKlO79
+ pCQyQsH7UUvtZSpcHoBkhP8AaQuf+1lP9rKFKd/7SE32kLA+1nxTfaylSwu/9pCf7SFz/wBrKf7WUaSH
+ oBkhP9pC5/7Z5pfbfNCmYPQfaQl9pC577d5pvt3mlwqL0P2kJfaAufGb5qQzEqYy732gJfaAsMZaX2op
+ Utdv7QEvtIWGcopvtZRpDu/aQl9pCwvtZS+1lCkh3ftIS+0hYX2spfaylS53ftIS+0hYX2spfaylSC7v
+ 2kJfaQsL7WUvtZRpjLu/aQl9pCwvtZS+1lKlwd37SEvtIWF9rKX2spUyh3ftIS+0hYX2spvtZSpTvfaQ
+ l9pCwftZS+1lKlrvfaQl9pCwftZS+1lCkO99pCX2kLB+1lL7WUqQ732kJfaQsH7WUvtZSpTvfaQl9pCw
+ ftZS+1lKlO99pCX2kLB+1lL7WUqU732kJvtIWF9rKX2spUl3vtIS+0BYQyypDLRpLui8J/XCwvtaX2zz
+ S4Uu764S9cLB+2+aX23zQ4Uu764TfaAsP7Ym+1o8Kne+0hP9qC585ZUTmHxQ4UF6E5QUTlBc/wDbD4pv
+ th8UuFa75yQl9pCwPtZT/ayjSHfGSFIZQXPfayn+1lCkPQfagm+0hYP2spfaylSXe+0hL7SFg/ayl9rK
+ NKd77SEvtIWD9rKf7WUqU7v2kJfaQsH7WUvtZQpLvfaQl9pCwftZT/aylSnd+0hL7SFg/ayl9rKVKd77
+ SEvtIWD9rKf7WUqU7v2kJfaQsL7WU32spUh3vtQSOUFz5yyonMPilSHoDlBL7UFz32spxllKlPRDJCl9
+ pC54ZZUhllKlO+ckKJyQsL7WUvtZSpLufaAnGQFh/ainGUlS4O8MgKYyAuf+2JHN80OFcHf+0hMcgLnz
+ neab7d5pcKXfOQE3rhYYzPNL7WjSi7f2gJvtIWGctN9rKNLC7v2kJ/tIWB9rKf7WUqQ732kJfaQsH7WU
+ vtZSpTvfaQl9pCwftZS+1lKlO99pCX2kLB+1lL7WUqU732kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1lKl
+ O99pCX2kLB+1lL7WUqU7v2kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1lKlO99pCX2kLB+1lL7WUqU732kJ
+ faQsH7WUvtZSpTvfaQl9pCwftZS+1lKlO99pCX2kLB+1lL7WUqU732kJfaQsH7WUvtZSpTvjJCkMgLnx
+ llTGWUKSHe+0BL7QFhjLSOWlwrnb+0BL7SFhHLUDm+aVId/7SE32kLnjneaX27zSpT0H2gJfaAsAZnmp
+ jLRpTu+uE/2gLE+1JHKSpDtHICY5AWIctROWUqQ7n2gKQyAsEZZUhlJUh3ftAS+0hYn2tROWUKU7v2kJ
+ faQsH7WU32tKlO/9pCX2kLB+1lL7WUqU732kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1lClO99pCX2kLB+
+ 1lL7WUqU732kJfaQsH7WUvtZSpLvfaQl9pCwftZS+1lKlO99pCX2kLA+1lN9sKVKd85ITHJCwPth8U/2
+ so0h3ftAS9cLDGUVMZSNLS7YvCkLwsQZSf7WhSg7gvCX2gLD+2eaic3zQpli7pyAonICwjm+ab7Z5o0v
+ d37QEhkhYX2tL7WUqWF3xkhP9pC5/wC1lL7YUKWO+ckKJyQsH7YU32so0h3vtIS+0hYP2spfayjSHe+0
+ hL7SFg/ayl9rKVMgd77SEvtIWD9rKX2spUou99pCf7SFgfayn+1lKmMu99pCX2kLB+1lL7WUKQHd+0hL
+ 7SFg/ayn+1lGmYO79pCf7SFg/ayonLKVJL0H2oJvtQXPHMKX2s+KVMZeg+1BOMkLnxllSGWUqU9AMkJx
+ lBc/9rKX2w+KFJeh+1BMckLn/th8UvthS4VzvHJCX2gLB+1lL7WjSXfGQE4yAsD7Z5pfbfNClPQfaAl9
+ oCwPtvmnGalwqd03hR+0BYv2tMctGkO39pCb7SFhHLKb7WUqQ732kJ/tIWB9rKf7WUqWu99pCX2kLB+1
+ lL7WUqU732kJfaQsH7WUvtZSpTvfaQl9pCwftZS+1lClO99pCX2kLB+1lL7WUqS732kJfaQsH7WUvtZS
+ pTvDJCkMkLnxllSGWUqU732kKJyQsM5ZUDllKkO6coJfagufOWU32so0p6IZQT/agudGWVIZZSpc9B9p
+ Cb7SFg/ayn+1lCku59pCX2gLD+1FL7UUaS7wyApDICwRlKQy0qU7wvCf1wsIZaX2xDhQ7hyAonJCw3Zv
+ mhOzfNLhQXdOSFA5IWEcxL7WU4BDu/aAnGSFhfain+1FKkO+MkJ/tQXP/ayl9sPihSHoftQS+1Bc99sP
+ ipDLPihSnoPtIT/aQuf+1lL7WUqS75yQo/aQsL7WUxyylSne+0hP9pCwPtZS+1lKlO/9pCX2kLB+1lL7
+ WUqU7v2kJfaQsL7WUvtZSpTu/aQl9pCwvtZS+1lKlO79pCX2kLC+1lL7WUqU7v2kJ/tIWD9rKX2spUh3
+ vtIS+0hYP2spfayhSne+0hL7SFg/ayl9rKNJd37SEvtIWD9rKcZaVJd4ZAUheFgjLT/bPNKlzvfaAl9o
+ CwPtvmm+2+aXCl3zkBRN4WH9s80/2tHhS7XrhN9oCxTlKJyilSnc+0hL7SFgnLKb7WUqWu99pCX2kLA+
+ 1lL7WUqQ9B9qCX2oLn/tZS+1lClr0H2oJfaQuf8AtZT/AGspUp3/ALSEvtIWB9rKf7WUaXO99pCX2kLB
+ +1lL7WUqQXe+0hL7SFg/ayl9rKVMZd77SEvtIWD9rKX2spUkO99pCX2kLB+1lL7WUqZQ732kJfaQsH7W
+ UvtZSpRd77SEvtIWD9rKX2spUsd77SEvtIWD9rKX2spUh3vtIS+0hYH2sp/tZSpTu/aApDJCwPtaY5kJ
+ UuD0QyQl9qC5z7d5pfbvNDhZHojkhMckLnxm+akMxKlpd37QE/2gLC+1lL7UUaYi7wyQl9pCwftZS+1l
+ DhXB3TkhROSFifayonKKNL3c+0hSGSFg/ainGWUqU74yQl9pCwftZS+1lCkO99pCb7SFg/aym+1lKlhd
+ /wC0hL7UFgfayl9rKVLHe+0hL7SFgfaz4pfayjSQ7/2kJfaQsD7WU/2soUyB3/tIS+0hYH2sp/tZSpc7
+ 32kJ/tIWB9rKf7WUqS74yQn+1Bc/9rKY5h8UKWF6A5QUDlBYBzD4qP2wogLHf+0hOMgLAGWVMZSNJd31
+ wnF4WIMpL7WlS4O6LwnGQFg/bEvtvmhS8O/9oCY5AWD9t80vtiHCudw5AUftAWIctROWU6mMu8MkKQyQ
+ ue+1lP8AbChS16H7SFE5IWB9sKX2spUp3vtIT/aQsD7WUvtZSpTv/aQl9pCwPtZS+1lKlO/9pCX2kLA+
+ 1lL7WUqU7/2kJfaQsD7WUvtZSpTv/aQl9pCwPtZS+1lKlO/9pCX2kLA+1lL7WUqU7/2kJfaQsD7WU32s
+ pUp6D7UE32oLn/tZS+1lKlO/9pCX2kLBGWU4yyjSneGSE/2kLB+1lL7WfFCku/8AaQmOSFg/ayl9rKVJ
+ d05ATeuFh/a0vtaNKdwXhSF4WD9sT/bfNKlO+Lwl64WCM3zTjN80OFLum8KJvCxftaY5aVKdr7QE32kL
+ DOWVH7WUaWl3vtIS+0hYP2spfaylSHe+0hL7SFg/ayl9rKVKd77SEvtIWD9rKX2spUp3vtIS+0hYP2sp
+ faylSne+0hL7SFg/ayl9rKVKd77SEvtIWD9rKX2spUp3vtIT/aQsD7WUvtZSpTv/AGoJHKC5/wC1lMcs
+ oUp3zlhL7WFzxzD4pvth8UaS9EMoKQygucGYVMZhQpT0QyQn+0Bc8Ms+Kl9rKFJd77SExyQsP7WUxyyj
+ SXc+0hL7QFgnLPil9sSpTvjICkLwufGYpDN80qS7xyAonJCwzm+aGc3zSAQXe+0hOMkLn/tnmpDLKNLX
+ f+0BL7QFiDKKY5RSpTt/aQn+0hYJyym+1lClO/8AaQm+0hYP2s+Kb7WUqU7xyQm+0hYX2spvtZRpTvjJ
+ Cl9pC58ZZTjLKFKd85IUTkhYf2spjllKlO59pCcZIWD9rKX2spUp3/tIS+0hYP2spfaylSne+0hL7SFg
+ /ayl9rKVKd77SEvtIWD9rKX2spUp3vtIS+0hYP2spfaylSne+0hL7SFg/ayl9rKVKd77SEvtIWD9rKX2
+ spUp3vtIS+0hYH2spxllGlO99oCkLwsEZakMzzS4Vwd4XhL7QFg/bfNN9t80OFLvHICj64WH9sTjLSpT
+ uC8J/tAWIMpI5SVIdo5ITfaQsM5ZUDllKkO/9qCf7UFz32wpfbD4pUp3zlBN9qC585hTfbD4pUh6H7UE
+ /wBqC50ZZUhllKkPQfaQm+0hYP2spfaylSne+0hL7SFg/ayl9rKVId77SEvtIWD9rKX2spUp3vtIS+0h
+ YP2spfaylSne+0hL7SFg/ayl9rKNKd77SEvtIWD9rKX2spUp3vtIS+0hYP2spfaylSne+0hP9pCwPtZS
+ +1lKkh6D7SE32kLB+1lP9rKXCvdz7QE4yAsL7WmOYlSnoBkhP9pC505vmm+3eaHCp6I5ITHJC5/7d5p/
+ tnmlwod37QEhkhYX2tL7WUaU74yQn+0hc/8Aayl9sPim0h6H7SExyQsD7YfFL7WlSHe+0hN9pCwvtaX2
+ so0p3vtIS+0hYP2spfaylSne+0hL7SFg/ayl9rKVKd77SEvtIWD9rKX2spUp3vtIS+0hYP2spfaylSne
+ +0hL7SFg/ayl9rKVKd77SEvtIWD9rKX2spUp3vtIS+0hYP2spfaylSne+0hL7UFgHLKicwpUueg+1BL7
+ UFz32w+KcZh8UeFL0H2kJvtAWEMsqQykqWl2/XCXrhYv2pL7WlS12xeFIXhYQy1IZnmlS+LueuE32gLE
+ OZ5qJzPNDhZXcOQE32kLC+2eaX2tKlpd77SEvtIWD9rKX2spUxl3/tIUTkhYP2spfaylS13ftIS+0hYX
+ 2spfayjSHe+0hL7SFg/ayl9rKVLg732kJfaQsH7WUvtZQpc732kJfaQsH7WUvtZSpYXe+0hL7SFg/ayl
+ 9rKVLHe+0hL7SFg/ayl9rKVMgd77SEvtIWD9rKX2spUvd/7SEvtIWD9rKf7WUqQ7n2kJjkBYn2tN9qKV
+ LXb+0BL7QFifail9qRpTufaAnGQFhfainGUlSnd+0BP9oCwhlKX2pCkO39oCXrhYn2pL7UlSna+0BN9o
+ CxTlKJyilSXb+0hL7QFhfa0hlpUkO768qQtlYrMpWqr5SpLph0ogVSp8q2woFLMBPCQTpimJUSVIqJRU
+ tKaUkkkLynCiFJBaySKaU0pIUUyUppQKl06ZOmpUkkmSSukmSSUukmSSUukmSSUukmSSUukmSSUukmSS
+ UukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlkkkklKSSSSUuouUlFySmtYq5VixVykpmxW61UYrVaSk4SSCSSlJJJJKUkkkkpZJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpJKWSSSSUpSCipBFSxQLEcoFiSmq9M1O9M1JTYrRw
+ gMRwkpRUVIqKSlk4TJ0lMgpKIUkFKTpkklLpJkklLpJJJKUkkmSUumSSSUpJJMkpdJMnSUukkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZMU6YpKUmSSRSvKSZJJS8pkkk1SkkkklKSSSQQpJJJJSkkkkVL
+ pJk6Sl0kydFS6SZOipSSSSSlkkkkkLJ0kk1SkkkkFLpJJJKUmTpkUqSSSRUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9br0kkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ Tpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOm
+ TpKYlAejlAekpruUmKLlJiSmyxGCCxGCSlJJJJKUkkkkpdJJJJSyiVJRKSlkkkklLp0ydJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySl
+ JJJJKUkkkkhZJJJJSkkkklKSSSSSpJJJJKkkkklKTpkkkLpkkklKTJ0oSQsnCUJJKZBOSoylKKqWKgVI
+ pkk0sFMJgE4SXUyCcJk4STSxQLCjlVrikuAaN74WXkWwruS5Y+S9EJpr23IPqkqD3SUmNlSAsZbDHEom
+ qlTVKttxpRtDQMqBJWk7GQjjJWppAlEaSrIxlNuMlamuCUpKuDGTnGStTQJKjJV446b7Mlamlqn1V4Yy
+ f7MlaGjJSkq6cZN9mRtTSkpaq79mS+zIWppapaq79mS+zJWppSUpKu/ZkvsyVqaUlKSrv2ZL7MlamlJS
+ kq79mS+zJWppSUpKu/ZkvsyVqaUlKSrv2ZL7MlamlJTaq99mS+zI2poGU2q0PsqRxUVOeJUhKu/ZU5xk
+ VNEuIUHWkK2+iFTtZCSmBvITfaFVsMIW9FToi8lFbaSqFZlXamykpLuJSJKOymUUYySmlqkAVfGKpDFQ
+ U0IKUFaP2VL7KhanOgpQVofZUvsybanPgpQVofZkvsyFoc+ClBWh9mS+zIWpz4KUFaH2ZL7MlanPgpQV
+ ofZkvsyNqc+ClBWh9mS+zI2pz4KUFaH2ZL7MlanPgpQVofZUvsqBkpz4KWqv/ZkvsyHEloQUoKv/AGZP
+ 9lR4lOdBTQVpfZUjio2pzYKcArQ+ypfZkbS0QCpAFXhjKQxkVOfBTEFaRxlA4yKnNMqBcQtB+OqttMJU
+ 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
+ 2ZC0OfBSgrR+zJfZkrQ50FKCtH7Mm+zJWuDnwUoK0fsyX2ZK1znQUoK0fsyb7MhbGXPgpQVofZkvsyVr
+ HPgpQVo/ZkvsyVssXOgpQVo/ZU32ZK17nwU+qvHGTfZkVrS1S1V37Mn+zJIaOqWqv/ZkvsySmhqn1V37
+ Ml9mSQ0xKkJVsY6kMdJTTgpQVe+zpfZ0lOeZUDK0TjoZx0lOeZUS4hXnY6q21Qha5gy6FdovWS47SjUW
+ aoWl6bGsladRlYWG+VtU8IEpbISJTKJKapkVEpSkkpaEoTp0rQxhOnTIWtWlMSkVEpWhUp0ycIKXUlEK
+ SC5SZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSTpklKSSSSUuouUlFySmtYq5V
+ ixVykpmxWq1VYrdaSkwSSCSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkk
+ kpSZOmSUpSUVIIqWKBYjlAsSU1Xpmp3pmpKbFaOEGtHCSliolTKiQkpinCUJJKZBOmCdBSkkkklKTpkk
+ lLpJJJKUkkkkpZJJJJSkkkySl0kydJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkkpSZOmRUskn
+ SRSsknhJBSySeEkFLJJ0kFLJJ0kFLJJ0klLJJ0kULJJ0ySl0kySKl06ZJFS6SZJJS6SSSSFJJJ0FLJ0k
+ kFKSSSQUpMnTIpUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkp/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOmSUpOmSSUpJJJJSk
+ 6ZJJSkk6UJKWSTwmSUpJJJJSkkk6SlkkkklLpkkklKSTwlCSlkkoSSUpJJJJSkk6ZJSkkkklKSSSSUpJ
+ JJJSkk0pSkpdJNKdJSySeEoSUpJJJJSkkkkrUpJJJK1KSTJSkpdOmTpKYlAsVghV3pKa7lJii5SYkpss
+ RggMRgkpdJJJJSkkkklLpJJJKWUSpKJSUskEkklLp0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ 4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlJ0ydJSkkkklKTJ0ySlJJJJKUkkmSQpJJJJCkkkkkqSS
+ SSSpJJJJS6SZJJKkkkklKSSSSQukknSUsmTkqJKSlSlKZJFS6SQCkAkuWhOnhKElwUkEycJJUVVv4Voq
+ pfwkkORlFYuS5bGWsPJKK4tNztVYo1VQnVXMYapzEXYxa5WpXRIVPCZwtumvRFa0jjoZxlrmpDNaCnL+
+ zKYx1f8ATThgSU0hjpjQtAMSNaSnMNCQoWga0hWkppjHT/Z1fFafYkpzTjpvs60jWm9NJDnfZ0/2daHp
+ pemkpz/s6X2daHppemkpz/s6X2daHppemkpz/s6X2daHppemkpz/ALOl9nWh6aXppKc/7Ol9nWh6aXpp
+ Kc/7Ol9nWj6aXppKc77Om9BaJrUSxEKaHoJ/QVzYphidamiMdM7GWkGJOrQ4kuFfRAWPlMhdPk16LAzW
+ RKkBQ4F5hVd2qtZIgqjOqKm9QZWvjNlY+Mt3DbMJKdGmqVbbQnx2aK81iaSppihTFCubE+xMtTS9BP6C
+ ubEtiVqaXoJegruxLYgppegl6Cu7Etiahpegl6Cu7EtiSml6CXoK7sS2JKaXoJegruxLYkppegl6Cu7E
+ tiKml6CXoK7sS2JKaXoJvQV7YlsQKmj6Cb0Fe2JtialpihSFCuBikGIhTS9BMaFf2JixOU55oTegrxYm
+ 2JwS1BQpChWwxSDErU0jShupWiWITmogqcyypUL64Wza1ZuSE8FThZAhUnHVaGSFnu5RUmqWlQyVm0cr
+ XxgkpuVVSrbKE1DVfrYmlDWFCl9nV4Vp9ijtTn/Z032daGxNsQQ0RQpChXNiW1IqaooT+irUJQmqavoq
+ JpVyE21BTTNCj6CvbEtieFNH0EvQV7YlsRUWl6CXoK7sS2JMRaXoJegruxLYkoBo+gl6CvbEtiS8NL0E
+ vQV3YlsSXho+gl6CvbEtiS9o+gl6CvbEtiSC0fQS9BXdiWxJjLS9BP6CubE4YkhpDHUvs6uhilsQtcHJ
+ tohZmSyF0FzNFi5ghFeHByDCoufqrmWYWY92qK9u0ukrXxWysLHdqt/C1hJaXXoqkK0KEsZuiuhiBY2g
+ aE3oK8WJtiSml6CXoK9sS2IJaPoJegr2xLYkpo+gl6CvbEtiSmj6CXoK9sS2JKaPoJegr2xLYkpo+gl6
+ CvbEtiSmj6CXoK9sS2JKaPoJegr2xLYkpo+gl6CvbEtiSmj6CXoK9sS2JKaPoJegr2xLYkpo+gl6CvbE
+ tiSmj6CXoK9sS2JKaPoJxQruxIMSU1BQovoWgGKD2aIKcS+qFk5Ihb+U1YWWOVJFcHJtOqG06qd3KE06
+ qRLeoErWx2SsvGW3ihBDcqqVgUqVLVaDEwlDTNKiaVfLFAsQtaWoKFP0FZDVKErU0jSoekrxaoFiSGsK
+ lIVI4apBqSmsaVE0K7tS2JqWj6Cf0Fd2JbEktL0EvQV3YlsQS0vQS9BXdiWxJTS9BL0Fd2JbElNL0EvQ
+ V3YlsQQ0vQS9BXdiWxJDS9BL0Fd2JbEVNP0ExpV3amLE8FcGgaUvQV3YlsRtRaYoUxjq2GKYYgSsLROO
+ g2UwtQsVe1iAKQ4t1cLMvELcyGrHyQnMwcywoMolqCDqiktunVamMyVl462sRvCDEW/RVKtilLHZorjW
+ IWtaZpUfRV4sUNqQKGn6Kf0Vb2pbUUhqeil6Kt7UtqVrw1PRS9FW9qW1JBanopeire1LakxFqeim9FXN
+ qW1K1wafopeirm1LalbKGn6Kf0Vb2p9qVoafoJegrm1PtQtDS9BL0Fd2pbUENL0EvQV3altSQ0vQS9BX
+ dqW1JTT9BL0Fc2pbUlNL0EvQV3altSU0/QS9BXNqW1JLT9BCsoWkGIdjEQUuBk1QsfJELpMti57MESnp
+ cmx0Jq36qFx1Uajqkp2MbVbeNXKxMPsujwmygpssolSOOrtbNFMsTSVOb9nT+grxYmLErWtP0U3pK2Wq
+ Jakgtf0kvSVjakGoIQekl6KshqkGoKanoJegrm1Laklp+gl6KubUtqSmn6CXoK5tS2pJafoJegrm1Lak
+ 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
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6SlkkkklLJ0kklLqDlNRckpq2KuVZsVcpKZsVqtV
+ WK1WkpME6QSSUskkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJkkklKUgo
+ qQRUsUGxHKBYkpqvTNTvTNSU2K1YCBWjhJSiolTUSkpjCeE6SSlgnSTpKWTpJJKUknSSUsknSSUsknSS
+ UsknSSUxSTpJKWSTpJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSdEKWSTpJyVkk6SClkk
+ 6SClkk6SapZJJJBSkkk6Slkk6SKGKSdMkpZJOmTlKSSTpKWTpJJKUnTJ0kLpJJIKUkkkgpSZOmSUumSS
+ SSpJJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9Dr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk21KSSSRtSkkkkVKSSSRUpJJJFS
+ kkkklKSSSSUpOmTpKUkkkgpSeEkkFLJlIpigpZOmUgELUsmUlEpWpSdMklalJJSmStSpTSnShFS4TwmA
+ UkUrFRlOSoEpKZhSAQwUQFJS8JinlRJSQpJNKUpKXSSSQUxKaVIhNCSlBSCYBSCSlwE8JBOSkpgQoqRK
+ hKSl06ZOkpSSYpSkpkEoTAqSSWJTKRUSkpZMSnTEJKWJTSnhNCeEMgVIKAUgUSFJAEoTApEphUsUyRKa
+ UwlS6eEgpJhkpaFEqRUSlxKYlIJFOAlxKXCmAogKYRElMHBAsCsOVexPBU1nJ2pnJNTgpssRggMRgnUp
+ eUkySVKXSTJ0FLykmTpKUmTpJqmMJJ0klKTJ0yKlJJJJKUkkkkpSSZJJS6SZJJS6SZJJS6SZOkpcJ0wT
+ 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
+ 4SW2kapFQapFNSGnkcLCy1u5Cw8tOteA4t6rFWb+VVKNrwGbVZpVVpVqlK17rYq2sdYuKtrGQtaQ3mpF
+ JqRCC2mBTJyEoRtaQpJPCUJWsKySUJ4StbaySUJQlarUklCUJWpSSUJ4StVLJJ4ShK14WSShPCVpVCUK
+ QCUJWhiknIUYSUylJRCkAkpUJiFKExCSmKQTFMkpIE8KAUwgpRCgWohUSlamvYFk5gWvadFkZiNpeeyR
+ qg08qxkjVBqGqFqd3APC6Cg6Ln8EcLfo4QtKcoZCKUMoWpYBPCdJNtS0JwknCFqVCYhThMQhakRTBSIU
+ U3iVTMFSlQCdEFVLlMkkpAhSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUnTJ0VKSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpIKWSTpJKWSTpklKSST
+ JKXSTJ0lLqLlJRckprWKuVYsVcpKZsVqtVWK0xJSYJ0wSSUpJJMkpdJMnSUsknTJKUkkkkpSSSSSlJ0k
+ klLJJ0klKTJJJKUkkkkpdJMnSUpMnSSUpOEydJSxQLEcoFiSms9Ranemakps1qwFXrVhqSl0ydMkpZJO
+ mSUukkkkpdJMkkpdJMnSUpJJJJSkkkySl0kySSl0ySSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSdMkkpdJJJG1LJ0kyCl0kySSl0ySSSlJJJJKUnTJJKXSTJJKUkkkkpZJOkkpaEk6SSlkk6
+ SSlJJJJKUnTJJKUkkkkpdMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKf/R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUp
+ 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
+ SlJJJJKUkkkgpSZOmSUskkkkpSdMkkpkouTqLklNexVirFirlJTNitMVVitVpKTBOmCdJSySSSSlJ0yS
+ Sl0ydMkpSSSSSlJJJJKXSSSSUpJJJJSySSSSlJJJJKUnTJ0lKSSSSUpOmTpKWKBYjlAsSU1Xpmp3pmpK
+ bNasNVetWGpKXTJ0ySlJk6ZJS6SSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSQUpJJJBSkkkklKSSSRUpJJJFSkkkkVKSSSSUpJJJJSk6ZSQKloTQpJQgpiknhMgpUpp
+ SKaUlMpTyoAqQSUumKdMUVMCoohCaElMQphMApAIqWKiVOExCCVgpBNCSSkgShQlPuSQvCaEpSSUtCeE
+ 6SKloSTEqJcipIlKHuTykhclQJUoShJSwKdKEklMSmUimhJSgiAKACmEFMwnKjKYlBKzkMqRKikpcKQU
+ QpBBS6SSSCVJk6UIhTGUlKEtqkCGEJ4UoTFOUtCUJiUgU0qVCeE4TwmlTFKUimTaUpEahhTBSpSUKLim
+ lMTKVKQvUEUiVHakpihPRiEB6KkDk7ExTsTlNqtGCDWjhJS6SSSSlJJJJKWSSSSKlJk6ZNUpOmTpKXSS
+ SRUskkkkpSSSSSlkkkklKSSSSUpJJJJSk6ZOkpcJ0wTpKQvVZ6svVZ6SmAR60AI9aSmw1TUGqaSlJJJJ
+ KUkkkkpSSSSSlkkkklKTJ0klLJJ0klLJJ0kkLJJ0klLJJJJKUknSSQskkkkpSSSSSl0pSTJKXTJJJJXS
+ ThJJLEplIpkkrhTCiFMJJUnCZJFKnFUsg6K24qpegUhxctYeQt7KasXJYjHdRc4nVHpfCA9pBTMJCv44
+ ilhdzHuhaNeSucqtIVpt5ClMQh3vtSX2oLD+0lL7SU3hCnd+0hL7SsMZJT/aClwhTufaU32pYv2gpjkF
+ LhCnaOUm+1LEOQU32go8IU7n2pL7UsP7QU32gpcIU732sJfagsH7SUvtJS4Qp3vtQS+1LCGSU/2gocIU
+ 7n2pL7UsP7QUvtBR4Qp3PtSX2pYf2gpfaClwhTufakvtSw/tBS+0FLhCnc+1Jfalh/aCl9oKXCFO59qS
+ +1LD+0FL7QUuEKdz7Ul9qWH9oKX2gpcIU7f2pN9qWL9oKb7QUOEKdv7UnGWsP1yl65TeEKd4ZSc5Swhk
+ FS+0FLhCnTuyJWVk2Sk64lVbHEpcIU1LzKqxqrVjSUL0ylwhTOnRamM+FmMaQrdRIS4Qp3qboVpuQsNl
+ pCMLilwhTsfaEvtCyPXKXrlLhCnX+0JfaFkeuUvXKXCFOv8AaEvtCyfXKXrlLhCnW+0JfaFk+uUvXKXC
+ FOt9oS+0LJ9cpeuUuEKdb7Ql9oWT65S9cpcIU632hL7Qsn1yl65S4Qp1vtCX2hZPrlL1ylwhTrfaEvtC
+ yfXKXrlLhCnX+0JfaFkeuUvXKXCEF1jkJvtCyTeU3rlLhCHXGSpDIWL65UheUuEJdn7Sl9oWOLyn9cpc
+ IU6pyE32hZXrFN6xS4Ql1xkJxkLH9cp/XKXCEuuchQOQsz1yom4o8IS333qnddKrutKA+wlHhClrnyqb
+ iiPJKCQUuEKZsKu0vhUGgqxWSEuEKdim1XmXrEreQrLbShwhTreum+0LM9YqJuKHCEOsMhP9oWP65T+u
+ UuEIdf7QmOQsn1ymN5Q4Qh1TkJvtKyTeU3rlHhCnZGSpfaVii8qQvKHCEOv9oS+0LI9cp/XKPCFzrfaE
+ vtCyfXKXrlLhCnW+0JfaFk+uUvXKXCFOt9oS+0LJ9cpeuUuEKdb7Ql9oWT65S9cpcIU632hL7Qsn1yl6
+ 5S4Qp1vtCX2hZPrlL1ylwhTrfaE32hZXrlL1ilwhTq/aEvtCyfWKXrlLhCnX+0pfaFj+uU/rlLhCnY+0
+ JfaFkC8p/XKXCFOjZes7ItlQfcVUteSjwhSC98qk46o9klVyClwhSao6rVxrIWRWCrtLiEOEKeiovhWh
+ kLCrtIRfXKBiFOuchQOQso3lRN5Q4VOschN9pWT65TeuU2lOv9oS+0LI9cp/XKVKdb7Ql9oWT65S9cpU
+ p1vtCX2hZPrlL1ylSnW+0JfaFk+uUvXKVKdb7Ql9oWT65S9cpUp1vtCX2hZPrlL1ylSnX+0pfaVkeuUv
+ XKVKdj7Sl9pWR65S9cpUp1/tKX2lZHrlL1ylSnX+0pfaVkeuUvXKVKdf7Sl9pWR65S9cpUp1/tKX2lZH
+ rlL1ylSnX+0pDJWR65S9cpUp2hkqL8lZHrlMbylSm3fdKysh8qb7SVUtJKkjEKalpQxyiPBQw0p/CFNu
+ l0LUoshY9chXK3kIcIU7VdyMMhZDbSFL1ihwhTsDIT/aFji8qXrlDhCnW+0JvtCyfXKXrlLhCnYGQpfa
+ VjC8p/XKbwhTrnJTHIWSbyo+uUuEKdgZCcZCxxeU/rlLhCnX+0JfaFkeuUvXKXCFOv8AaEvtCyPXKXrl
+ LhCnX+0JfaFkeuUvXKPCFOv9oS+0LI9cpeuUuEKdf7Ql9oWR65S9cpcIU6/2hL7Qsj1yl65R4Ap1/tCb
+ 7Qsn1ymN5S4Al1vtCQyFkeuU4vKXCEux9oTHIWULikbihwhLpHISGQso3FN65R4Qh2RkKLshZPrlI3lD
+ hCm5bdKzMh8p32kqra4lHhCmtaZQEV4JQw0pcIU2KTC06HwsqsEK5W4hLhCnbquhWm5CxGWkIovKXCEO
+ uchR+0LKN5TeuUOEKdb7Ql9oWT65S9co8IU632hL7Qsn1ym9cpcIQ6/2hL7Qsj1yn9cpcIU632hL7Qsn
+ 1yl65S4Qp1vtCX2hZPrlL1ylwhTrfaEvtCyfXKXrlLhCnW+0JfaFk+uU3rlLhCHX+0JfaFkeuUvXKXCF
+ Ov8AaEvtCyPXKXrlLhCnX+0JfaFkeuUvXKXCFOv9oS+0LI9cpeuUuEJdf7Ql9oWR65S9cpcIS6/2hL7Q
+ sj1yl65S4Ql1/tCX2hZHrlL1ylwhTsjIUXZCyReUjeUuEKbV9srIyHSj2WkqlaSUeEKaVqgwaor2kqIY
+ UuEKbmO6FsY1sLDqBCvVPIS4Qh3mZCmclYwuISN5Q4Qh1/tKX2hY/rlSF5S4Qh1TkJvtCy/WKb1ilwhT
+ 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
+ 9cpeuUuEKdb7Ql9oWT6xTeuUuELnX+0JfaFk+uUvWKXCFOt9oS+0LJ9cpesUuEJdb7QnGQsj1inF5S4Q
+ p1vXUXXrN9YpjaUuFa2rbVm5D5RH2EqlaSUeEKatxVUlHsBKDtKXCFJ6itPHfCyawQrtRIS4Qp3aLoVx
+ l6w67SEcXFNMQp2PtCichZXrlRN5Q4Qp1TkKJyFlm8qBvKPCFOt9pS+0rH9cp/XKPCFOx9oS+0LIF5S9
+ YpcIU6/2hL7Qsj1il6xS4Qp1/tCX2hZHrFL1ylwhTr/aEvtCyPXKXrlLhCnX+0JfaFkeuUvXKXCFOv8A
+ aEvtCyPWKXrFLhCnX+0JfaFkesUvXKXCFOv9oS+0LJ9YpesUuEILq/aE/wBoWT6xS9YpcIWOuMhI5CyP
+ XKRvKXCFwdC2+VnX2yoPtJVax5KXCGQIrXKs4qbyUEgpcIXhkCrFTlUAKMyUuELnVoshaVN8LDrcQrbL
+ SEuEIdsZCc5Kx/XKibyhwhBdj7Sl9pWN9oKcXlHhCwux9pS+0rI9cpeuUuELC6/2lL7Ssj1yl65S4Qsd
+ f7Sl9pWR65S9cpcIQ6/2lL7Ssj1yl65S4Qp1/tKX2lZHrlL1ylwhcHX+0pfaVkeuUvXKXCFwdf7Sn+0r
+ H9cpeuUuEJdn7Sl9pWL65S+0FMMQh2DkpvtKxvtBS9cptIdn7SnGSsYXlOLyjSXZ+0pjkLI9cpeuUqU6
+ xyE32hZXrlL1ilSnWF6f11ki4pxcUqU6hvQ3XrPNxUHWlKlNyy9Z+RbKi+0qpa8lKkobHyVKg6oJBJVn
+ HZqhSnbwit2g6LEw2wtujhMkEtoJiE4TqFLAhRIRCokIhSNSCYpJ1KSAp5UAnlNpS5KZNKSVKXSTBOkQ
+ pSdJJMK1SSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJkkklLJJJJKUkkkkpdRcpqDklNa
+ xVyrFirlJTNitVqqxWq0lJgkUgkUlKTJ0ySl0kkklLpk6ZJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSS
+ SUpOmTpKUkkkkpSdMnSUsUCxHKBYkpqvTNTvTNSU2a1Yaq9asNSUumTpklKTJ0ySl0kkklKSSSSUpOmT
+ pKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ T//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJNUpJJJJSkkkkVKSSSRUpJ
+ JJFSkkkklKSSSQUpSCZKUlMkkwKdNUsQolTUSkpgUykVFJSgphRAUwEaUulCSUo0pUJbU4KkAjSmEJlM
+ oTnQjSmUpIPqJw9NKkqiQkDKmBKalGkiFqiQkhYJwmToqZJFRlKUULFQKmU0IqYgKYCcNUwElLAJ4SJh
+ RL0VLkKMJt6QclSl9qfanBU0FI4TFEKE4pKUSolyiSoygpJKQUQiAIKUE6UJIJUkmThBK4UgEgE6QUqE
+ 6iSmlSBDIoblKUxTlIikCnITQjSkjSpIYKkChSlFNCknATaUxhJThRKFKYynlRKjKdwqSJ4UAVNLhUwc
+ FWsCtOVewIUprEJ2BJwUmBJTYrRghMCMElKSTpkFKTJ0yVqUkkkkpSSSdBSySdJFSkkkySlJJJJKUkkk
+ kpZJJJJSkkkklKSSSSUpOmTpKXCdME6SkL1WerL1WekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkp
+ ZJJJJSkkkklKSSSSUpJJJJSkkkkkKSSSSUpJJJJSkkkkkKSSSSUpJOkkpinSSSSukmSlJKimSKZJLMKQ
+ KgCnlJTKUlGU4SSoqva2VZQ3tlJLkX1Ssu/HldFZVKrOxpRGinl7MQlC+yFdV9hnsm/Z48FZjkpaXmRj
+ EKfoFdEcDyUDg+Sf7qHnjSUvRK3zgpvsPkl7qnCFJUhSVujBUhg+SHuqcH0CkaCug+wpfYfJL3VPOmgp
+ egV0BwfJP9g8kfdU896BTGgro/sHkmOB5Je6p5s0FL0CuiOB5JvsHkl7qnAFBT+gVv8A2DyT/YfJL3VP
+ P+gUvQK6D7D5JvsPkl7qnA9ApegVv/YfJL7D5Je6pwPQKXoFb/2HyS+w+SXuqcD0Cl6BW/8AYfJL7D5J
+ e6pwPQKXoFb/ANh8kvsPkl7qnA9ApegVv/YfJL7D5Je6pwPQKXoFdB9h8k/2DyQ91Tz3oFL0Cuh+w+Si
+ cHyS9xTgCkqQqK2/sPknGEl7inE9ApHGJW6MJTGEl7innDiEqP2Mrp/sI8E32EeCXuKeaGIQpjGIXQnC
+ Hgo/YkvcU4gpKkKitn7Gn+xpe4pxvSKXpFbX2NL7Gl7inF9Ep/SK2fsaX2NL3FON6RS9IrZ+xpfY0vcU
+ 43pFL0itn7Gl9jS9xTjekUvSK2fsaX2NL3FON6RS9IrZ+xpfY0vcU43pFL0itn7Gl9jS9xTjekUvSK2f
+ saX2NL3FON6RS9IrZ+xpfY0vcU43pFL0itr7Gl9jS9xDiGopjUVtnDTHDQ9xDiekU4qK2fsacYaXuJcc
+ VFP6RWyMNP8AY0fcU4volN6JW39jTfY0vcS4volP6RWz9jT/AGNH3EuL6JTGkrb+xpfY0vcS4RoKGccr
+ oDhpvsXkl7innTjFR+yldH9i8k/2IeCXuKecGKURuMVv/YR4JxhJe4pxW0FEFJWwMNS+yJe4hxTUVA1F
+ bhxFE4iXuKcT0il6RWz9kT/Y0PcQ43pFN6JW39jS+xpe4hwzSU3olbhw032NL3FOKKSn9Era+xpfY0Pc
+ U43pFL0itn7Gl9kR9xLjekUvSK2fsiX2RL3FON6RS9IrZ+yJfZEvcU43pFL0itn7Il9kS9xTjekUvSK2
+ fsiX2RL3FON6RS9IrZ+yJfZEvcU43pFL0itn7Il9kS9xTjekUvSK2fsif7Il7inF9IpjUVt/ZFE4aXuK
+ cX0il6RWz9jSGGl7inIFRT+kVsDDUvsaXuKcQ0lCfjkrofsaicJL3FPNOxSVD7IV05wfJN9gHgl7inm2
+ 4hR2YxC3hgjwUvsSXuKcUUkJ/SK2fsiicRL3FOMaim9IrY+yJxiJcanG9IpeiVtfY0/2NN4lOJ6JS9Er
+ b+xpfY0uJTieiUvRK2/saX2NLiU4nolL0Stv7Gl9jS4lOJ6JS9Erb+xpfY0uJTieiUvRK2/saX2NLiU4
+ nolL0Stv7Gl9jS4lOJ6JS9Irb+xpvsaXEpxfSKXpFbX2NL7GlxKcX0il6RW19jS+xpcSnF9IpekVtfY0
+ vsaXEpxfSKXpFbX2NL7GlxKcX0il6RW19jS+xpcSnF9IpekVtfY0vsaXEpxfSKXpFbX2NL7GlxKcQ0Eq
+ DsYlb4w0/wBiThNTzTsQof2QrpzheSgcHyTvcU883FKM3HIW4MJSGGl7inE9EpekVtnEUTiIe4pxhUU/
+ pFbAxE4xEvcU4/pFN6RW19kS+xoe4pxvSKXpFbP2NP8AY0PcU4vpFL0itr7Gm+xpe4pxvSKf0itn7Gl9
+ kQ41ON6RS9IrZ+yJfZEuNTjekUvSK2fsiX2RH3FON6RS9IrZ+yJfZEvcU43pFL0itn7Il9kR9xTjekUv
+ SK2fsiX2RH3FON6RS9IrZ+yJfZEvcU43pFMaitr7ImOIl7inF9IpxUVsfY04xEPcXOSKSkaStkYic4iX
+ uKcM0lQ9IrcOIonDS9xTi+kUvSK2fsaX2NL3FOKaSoOxiVv/AGNL7El7innDiFN9kK6T7F5JfYgl7inn
+ m4pCIMchb32IJfY0vcQ4gpKf0itn7Im+yJe4px/SKb0itn7In+yJe4pxfSKXpFbX2RL7Il7inF9IpekV
+ tfZEvsiXuIcX0il6RW19kS+yJe4pxfSKXpFbX2RL7Il7inF9IpekVtfZEvsiXuKcX0il6RW19kS+yJe4
+ pxfSKXpFbX2RL7Il7iHF9IpekVtfZEvsaXuIcX0il6RW19kS+xpe4lxfSKXpFbX2NL7Gl7inF9IpekVt
+ fY0vsiXuJcX0il6RW19jS+xpe4lxfSKXpFbX2RL7Gl7iXF9IpekVtfY0vsaXuKcb0il6RWx9kTfZEvcU
+ 4xpJUDjErdGIpDCS9xTzhxCm+xldN9iHgl9hHgl7innG4pCKMchb32LyS+xpe4hwzSVA1Fbpw1A4aXuI
+ cUVFTFJWuMNTGGl7iHG9EpeiVufY0xw0vcU4folN6JW4cNN9jS9xDiekUvSK2vsaX2NH3EuL6RS9Ira+
+ xpfY0vcS4vpFL0itr7Gl9jS9xTi+kUvSK2vsaX2NL3FOL6RS9Ira+xpfY0PcU4vpFL0itr7Gl9jS9xTi
+ +kUvSK2vsaX2NL3FOL6RS9Ira+xpfY0vcU4vpFL0itn7Gl9jS9xTjekU4pK2RhqQxEPcU44pKf0StkYi
+ X2RL3FOIaim9IrbOIonER9xTi+kUjSVs/ZE/2NL3FOEcclDdildF9jSOF5Je4p5k4hSGIV0hwh4JvsQR
+ 9xTgtxiEUUFbYw0/2NI5FOJ6JS9Ira+xpfY0wyU4vpFL0itr7Gl9jQ4lOL6RS9Ira+xpfY0uJTi+kUvS
+ K2vsaX2NLiU4vpFL0itr7Gl9jS4lOL6RS9Ira+xpfY0uJTi+kUvSK2vsaX2NLiU4vpFL0itr7Gl9jS4l
+ OL6RT+kVs/Y0vsaXEpxvSKXpFbP2NL7GlxKcb0il6RWz9jS+xpcSnG9IpekVs/Y0vsaXEpxvSKXpFbP2
+ NL7GlxKcb0il6RWz9jS+xpcSnF9IpekVtfY0vsaXEpxvSKf0itj7Gl9kRElOP6RTGkrZ+yJ/sif7inCd
+ jkoTsUro/saY4Xkl7inl3YhUfsZXUHBHgm+wDwQ9xTzjMUhWGY5C3Bg+SmMJL3FOMKSomorc+yKJxEvc
+ U4fpFL0Str7GnGGl7inDNJUTSVvHCUThIe4pwfRKmKStn7EpDDS9xTjCopekVtfY0vsaXuKcX0il6RW1
+ 9jS+xpe4pxfSKXpFbX2NL7Gl7inF9IpekVtfY0vsaPuKcX0il6JW19jS+xpcanF9IpeiVtfY0vsaXGpx
+ fSKXpFbX2NL7Gl7inDNRS9Irb+xpvsaXuJDjCoqQqK2RhqQw0vcXON6JTGkrb+xpHES9xDgmgobscroD
+ iKJw0vcU86cYpvspXQ/Yk4wkvcU4AxiiDHK3BhKX2NL3EOIKCkaitv7GmOGl7iHCNRUfRK3ThJvsSXuK
+ cUUlTFRWwMJSGGl7inF9IpekVtfY0vsaXuKcX0il6RW19jS+xpe4pxfSKXpFbX2NL7Gl7inF9EpekVtf
+ Y0vsaXuJcX0il6RW19jS+xpe4pxfSKXpFbX2NL7GlxqcX0il6RW19jS+xpe4pxPSKXolbf2NL7Gl7i1x
+ PRKkKStr7Gn+xpe4hxfRKY1Fbf2NMcNL3EuH6RUhUVrnDTjES9xTk+kVF2OStsYil9jS9xc827FJQzhl
+ dOcIJvsI8EvcU8yMMqYxiF0f2EeCY4Xkl7iXBFBCn6RWz9jS+xpe4pxvSKXpFbX2NL7Gl7inF9IpekVt
+ fY0vsaXuKcX0il6RW19jS+xpe4hxfSKXpFbX2NL7Gl7iHF9IpekVtfY0vsaXuIcX0il6RW19jS+xpe4p
+ xfSKXpFbX2NL7Gl7iHF9Ip/RK2vsaf7Gl7inE9EpjSVufY0xw0PcU4folL0itv7Gm+xpe4lxvSKf0itn
+ 7Gl9kS9xTi+kUvSK2fsib7Ij7iXG9Ip/SK2PsicYiPuJcf0SmNBW0MRP9jS9xLgOxyUN2KV0f2JMcIeC
+ PuKeZOIU4xiukOD5JvsPkl7inAbjlGbSVtDCUhhpe4pxvRKRqK2vsib7Ih7inE9EpeiVtfY0/wBjS9xD
+ ieiUvRK2/saX2ND3EOH6JS9Erb+xpvsaXuIccVFTFRWuMRP9kQ9xTjmoqJqK2jiKJxEvcQ43pFL0Stn7
+ In+yJe4pxfRKXolbX2NL7Gl7inF9EpekVtfY0vsaXuJcb0Sm9Ira+xpfY0fcU4volL0Str7Gl9jS9xLi
+ +iUvRK2vsaX2RH3EuL6JT+kVs/Y0vsaPuJcb0imNJW39kS+xpe4pwDjkobsUro/sab7EPBD3FPNHEKk3
+ EK6L7CPBOMLyS9xThMxiiegVuDCSOGl7inCNJUfSK3DiKH2RD3EOOKin9IrYGIpfY0vcQ4hqKb0itv7G
+ m+xoe4hxfSKf0itn7Gn+xpe4hxfRKf0Str7Gl9jS9xTieiUvSK2/sab7Gj7iXF9IpekVtfY0vsaXGpxf
+ SKXpFbX2NL7Gl7inF9IpekVtfY0vsaXuKcX0il6RW19jS+xpe4lxfSKXpFbX2NL7Gl7inF9IpekVtfY0
+ vsaXuKcX0inFRWz9jTjES9xLjiop/RK2BiKX2RL3FOE6goD8YldIcNQOEl7inl3YhURhldOcEeCX2AeC
+ XuKedbiEIzcchbowR4KQwkvcU4opIUvSK2PsiY4iXuJcf0yl6ZWt9kS+yJcanJ9IpvSK2PsiX2RL3FOP
+ 6RS9IrZ+yJfZEvcQ43pFL0itn7Il9kS9xDjekUvSK2fsiX2RL3FON6RS9IrZ+yJfZEvcU43pFL0itn7I
+ l9kS9xTjekUvSK2fsiX2RL3FON6RS9IrZ+yJfZEvcU43pFL0itn7Il9kS9xTjekUxqK2vsaX2NL3FOGa
+ im9IrbOGm+xpe4pyG1FEFRWqMREGIl7inHNBQ3Y5W99kTHDS9xTzbsUoZxSulOEoHCCXuKeeGKURuMVu
+ /YlIYaXuKcUUFS9EraGGn+xpe4pxPRKb0Stz7Gm+xpe4pxPSKXpFbX2NN9jR9xLjekUvSK2fsaX2NL3E
+ uL6RS9Ira+xpfY0vcU4vpFL0itr7Gl9jS9xDi+kUvSK2vsaX2ND3EOL6RS9Ira+xpfY0vcQ4vpFL0itr
+ 7Gl9kS9xTjekU3pFbX2RL7Gh7iHENRTekVt/Y0vsaXuKcT0SpCkrZ+xqQw0fcU4volRNRW79jUThpe4l
+ wjUUhUVsnDTDDS9xTlCopGglbIxFMYaXuJefdikoZxCul+xJfYh4Je4l5sYZU24pC6L7EPBL7El7iXBF
+ BCf0its4aicRH3EOKaim9Irb+yJvsaHuIcX0il6RW19jS+xpe4pxfSKXpFbX2NL7Gl7inF9IpekVtfY0
+ vsaXuKcX0il6RW19jS+xpe4pxfSKXpFbX2NL7Gl7inF9IpekVtfY0vsaXuKcX0il6JW19jT/AGNL3FOL
+ 6JTekVt/Y032NL3FOL6RTiorZ+xpfZEvcU44qKl6RWuMRP8AZEvcU4/pFL0itj7Il9kS9xTj+kUvSK1/
+ siX2RL3FOR6RTGkrZGIn+yJe4pwXY5QnYxXR/Y1E4SXuKeb+ylOMUrovsPknGD5JGanAbjFEFBW79i8k
+ vsabxqcT0Sl6RW19kTfZEeJTi+kU/pFbP2RL7IlxKcf0iomora+yJjiJcSnFNRTekVsnES+yI8SnIFRU
+ xUVrDEUhiIcSnHNRUTUVt/ZFE4iHEpxPSKf0itn7Il9kR4lOP6RS9IrZ+yJfZEOJTjekUvSK2fsiX2RL
+ iU43pFL0itn7Il9kS4lON6RTekVtfZEvsiXEpxfSKXpFbX2RL7IlxKcb0il6RWz9kS+yJcSnG9IpekVs
+ /ZEvsaXEpxDQShuxiV0Aw0/2JOE0vMOxCofZCunOD5KP2HyR9xLzzcYowoK3BheSl9iS9xTh+iUvRK2z
+ hpvsaXuIcgVFSFRWuMNTGIh7iHFNRUTUVuHEUTiJe4hxPSKXolbX2NIYaXuKcb0Sl6JW2MNP9jQ9xDh+
+ iUvSK2zhpvsiXuKcX0il6RWz9kS+yJe4pxvSKXpFbP2RP9kR9xLi+kUvSK2vsiX2RL3FOL6RS9IrZ+yJ
+ fZEvcS43pFL0itn7Il9kR9xLjekUvSK2fsif7Il7iXF9IpxUVs/ZEvsiXuIcgVFS9IrWGIpDES9xDimg
+ oT8YldB9kTHDQ9xTzDsQof2MrqDgjwTfYR4Je4p5tuIUZuMQt77CPBP9iS9xTitpIU/SK2PsiY4iXuKc
+ c1lN6ZWwcRN9kS9xTjGoqJqK2jiKJxEPcU4vpFOKitj7InGIl7inIFRUvSK2BhqX2NL3FOJ6RS9Irb+x
+ pvsaXuKcX0il6JW19jS+xo+4pxfRKXolbX2NL7Gl7inF9EpekVtfY0vsaXuKcX0il6RW19jS+xo+4pxf
+ RKXolbX2NL7Gl7inGFJUhSVsDDUxhoe4guJ6BTGkrd+xqJw0vcWuH6JS9IraOGm+yJe4uDiGkobsclb3
+ 2NL7Gl7i8POOxihnFK6U4XkonB8kvcXB50YpRG4pW+MLyUxhJe4ucRuMUQUFbYw0/wBjS9xThmkoZqK3
+ jhqBw0vcQXC9IqQqK2fsScYaXuLC43pFL0itr7Gl9jS9xYXF9IpekVtfY0vsaXuLC4vpFL0itr7Gl9jS
+ 9xDi+kUvSK2vsaX2NL3EuL6RS9Ira+xpfY0vcSHF9IpekVtfY0vsaXuLnF9IpekVtfY0vsaXuJcQ1FMa
+ its4ab7GgZocT0il6JW39jTjCQ4lOKKSpCkrZGEn+xpcSnG9IpekVtfY032RLiU4vpFL0itn7Il9kS4l
+ OQKinFRWuMRSGIlxKcf0iomkra+yJHES4lOA6goLscrojhobsJLiS8+MYq3RjwtL7JCKzGhLiUtjVQtW
+ oQgVVQrTRCYSlIEpTSokpiWZKiU0pSkhYpQnSARtSgElKEiELSwSTlMlalwnUU6BKGSSZJNQukmSQUuk
+ mSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUumSS
+ RUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkk6SmKSdJJSydMnSUuouUlFySmtYqxVmxVykp
+ kxW61VYrVaSkwSKQSSUsknTJKUnTJ0lKTJ0ySlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkkkpSdMnSUpJ
+ JJJSk6ZOkpYoFiOUCxJTVemanemakps1qw1V61YakpdMnTJKUmTpklLpJJJKUkkkkpSdMnSUpJJJJSky
+ dMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/1OvSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSRUpJJJJSkkkklKS
+ SSQUpJJJJS4UgohSCCl1EqSYpKYEKKmU0IqUApBIBOU4KYkqBeme6FWfanKbbXooKoMtVhr0qUke5VLL
+ IRLXrOutTgFJjapMtWd6uqNU+UySnUrdKstVCoq2xyiUmKgVF1iC61KipLKSCLJRA6U5S5KUpiUMuhFC
+ SVIFVjZCb1k6lN0FIuVP1wmdelSk77IVd9yr2Xqo+9GkN/11Nt6yDepsvSoqdxlqKLFkV3qw29Ckt4vQ
+ nPVc3KJtQpCeVJuqrtfKOwoUUp2NRQ1QYUTcAhSliFAhM+0BBNwTSEpwFIBVhcFMXBCipsgJEIHrhI3h
+ IAqSFMhG4JvVClCk4CeEEXBP6wT6UzLVAtS9UJt4KKlQnCaZUgElMgpBRTF8IKZyokoLrgFA3hERUmIS
+ DUIXBTFoRpSQNUoUBaFIPBTVLOCr2Kw4qvYgprlOxM5SYgpsMRggsRgmqUmUimQUsmTpklKSTJ0lLpJJ
+ JKXSSSRUsmTpklKSSSSUpJJJJSySSSSlJJJJKUkkkkpSdMnSUuE6YJ0lIXqs9WXqs9JTAI9aAEetJTYa
+ pqDVNJSkkkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSQskkkkpSSSSSFJJJJKXTqKe
+ UlKTJSmSSpJJJJSySeEoSSoJ0kklKTgqKUpJSApEKIKkCkliWSmFSKE6SmAqCl6YT7oUS9JasWBDNYUi
+ 9R3JKY+kE/pBSBUpSUwFQUxUEpT7klK9MJjWE+5MXpKW9MJCsJt6cPSUyFYT+kEg9S3JKYGoJvSCnuTF
+ ySmHpBL0gpbktySmPpBL0gpbktySmPpBL0gpbktySmPpBL0gpbktySmPpBL0gpbktySmPpBL0gpbktyS
+ mPpBL0gpbk25JS3pBSFQS3KQciFMfSCiagi7kpRsqQGkJvRCOSmlG1IhUFMVhSlKUlLemEiwJ9yYvSUx
+ NYUTWFIuSlFTD0wnFQUwU6CmHphL0wiSokpWpj6YS9MJ9ycORUx9MJemFOUpStTD0wl6YU5SlK1MPTCX
+ phTlKUrUw9MJemFOUpStTD0wl6YU5SlK1MPTCXphTlKUrUw9MJemFOUpStTH0wl6YUpTyghh6YTemFOU
+ pSQj9MJ/TClKUoJW9MJ9gS3J9yKlvTCb0wpbktySWPphL0wn3JbkUrbAlsCfcluSSt6YS9MKW5Lckpj6
+ YS9MJ9yW5JS3phLYE+5LckpbYE+wJtyW5JS+wJvTCcOTyghh6YSFYU5SBSQsKwn9MKQKeULQjNYTemFM
+ lNuStTH0wl6YUtyW5FTH0wm9MKW5KUksfTCXphSlKUlMfTCXphSlKUlMfTCXphSlKUlMfTCXphSlKUlM
+ fTCXphSlKUlMfTCXphSlKUlMfTCf0wnlKUlLemE3phTlKUlI/TCcVBTlOCkpiKgn9MKcpShZUx9MJemF
+ Lcm3JaqW9MJemE+5Lclqpb0wmLAn3pi9HVTEsCiWBS3JSkpj6YTisJ5Tykpb0wn2BPKUpKW9MJemE8pS
+ ipb0wl6YTylKSlvTCXphPKUpKW9MJemE8pSkpb0wl6YTylKSlvTCXphPKUpKY+mEvTClKUpKYemEvTCl
+ KUpWpj6YS9MKUpSlamPphL0wpSlKVqY+mEvTClKUpWpj6YS9MKUpSlamPphL0wpSlKVqY+mEvTClKUpW
+ pQYE+wJSluQUsawo+mFPcmlHVTH0wn9MKUpSlqpgawomsIkppSUxFYTisKQKeUlMfTCXphTlNKCmPphP
+ 6YUpSlBTH0wm9MKW5Lckpj6YS9MKW5Lckpj6YS9MKW5Lckpj6YS9MKW5Lckpj6YS9MKW5KUVMfTCXphS
+ 3JbklMfTCXphSlKUVMfTCXphS3JbklMfTCXphS3JpS1Ux9MJBgUpTbkly4YEtgTbktyClFgTemFLcnlF
+ TD0wl6QRJSlC1MPTCXphTlMXJKW2BLYExelvSUrYEiwJb0+5FTH0wm9MKcp5SQw9MJemFKUpSUx9MJem
+ FKUpSQx9MJemFKUpSUx9MJemFKUpSUx9MJemFKUpSUx9MJemFKUpSUx9MJemFKUpSUx9MJemFKUpSQx9
+ MJemFKUtyCGPphL0wpSluSSx9MJemFLcluSUx9MJemFLcluSSx9MJemFLclKSWPphL0wpbktySWPphL0
+ wpbktySmBrCb0wiSmlJTEVhTDAmlPuSUy2BLYFHelvSUvsCWwJt6fckhY1hR9IIkpSlaGAqCkKwnlPKS
+ FtgTbApblEuSUtsCb0wn3JbkkLemEvTCfcnlFLH0wl6YUpSlKylj6YS9MKUpSgpj6YS9MKUpSkpj6YS9
+ MKUpSkpj6YS9MKUpSkpj6YS9MKUpSkpj6YS9MKUp5SUx9IJekFMFPKFqR+mEtgUiVEuRUrYE+wKO9OHJ
+ KUWBN6YUtyeUlMPTCf0wppSlamGwJ9gT7lHckpWwJvTCfcluR1Ur0wlsCeU8oaqY7Am2BSlKUVMdgS2B
+ SlKUlMdgS2BSlKUlMdgS2BSlKUlMdgS2BSlKUlMdgS2BSlKUlMdgS2BSlKUlMdgS2BSlKUlLbAlsCfcl
+ uQUtsCWwJ9yW5JS2wJbAn3JbklLbAlsCfcluSUtsCWwJ9yW5JS2wJbAn3JbklLbAlsCfcluSUx2BL0wp
+ SmlFTH0wnDAnlPKClBgT+mE25PvSUr0wm9MJ96begpXphPsCben3pWpWwKJrCluS3JKY+mE4rCeU+5K1
+ MfTCY1BT3JtySkfpBP6YUpSlJTH0wl6YUpSlJTH0wl6YUpSlJTH0wl6YU5TSipj6YS9MKUpSkpj6YS9M
+ KUpSkpj6YS9MKUpSipj6YS9MKUpSkph6YT+mFKUpSSFhWFIVhOCnlBLHYExYFKUxKWqkZYE3phTJTbkV
+ MfTCcVhPKeUkLemE/phPKeUNVMfTCb0wpSlKSGPpBL0gpynlK1I/SCXphTlKUlMPTCXphSlKUlMfTCXp
+ hTlKUlMPTCXphTlKUlMPTCXphSlKUksfTCXphSlKUlMfTCXphSlKUlMfTCf0wnlPKSmPphP6YUpS3JLW
+ PphL0wn3JbkkLemExrCnuSlLVKI1BIVBFlNKVpYisKWwJSkXJJVsCWwKO9Lekpl6YTGsJ96fcglGawl6
+ YRJTSjamHphL0wpymlK1MfTCXphSlKUrUx9MJemFOU0pWhj6YS9MKUpSlaGPphP6YUpSlK0MPTCXphSl
+ KUrUt6YTemFKUpSQt6YT+mE+5Lckpb0wm9MKW5Lcgph6YS9MKUpSklj6YTemFOUpSUw9MJvTCnKUopR+
+ mEvTCnKUopWFYThgSlPuSSrYE/phPuT7kNVMfTCb0gp7kpSsqYemEvTClKUpWVMfTCb0wpSlKSmPphP6
+ YTyluSQt6YS9MKW5KUrQw9MJvTCJKaUEMfTCWwJ5TbklLFgTbAn3JbkkLBgUhWEg5OHJKV6YS9MJ9yW5
+ JS3phL0wn3JbkkremEvTCfcluRUtsCWwJ9yW5JK2wJbAn3JbkkrbAlsCfcluRStsCWwJ9yW5LVS2wJ9g
+ S3JbkNVK9MJ/TCW5PuS1UrYExYE+5MXIKRmsJvTCmSmlFCwrCl6YTgp5StDH0wm9MKcppQQw9MJ/TClK
+ UpKW9MJ/TCfcluSQx9MJvTCnuTSilj6YS9MKUpSklj6YS9MKUpSkpj6YS9MKUpSkpj6YS9MKUpSkpj6Y
+ S9MKUpSkpj6YS9MKUp5SUw9MJemFKUpSStsCWwJ5S3JKVsCWwJbktySlvTCXphPuS3JapW9MJbAn3Jty
+ SmJYExrCluSlFTD0wkKwpynlJTD0wn9MKcp5QUj9MJ/TCnKaUrQx9MJemE8pSjaFvTCXphPKUpKW9MJe
+ mE8pSkpb0wl6YTylKSlvTCXphPKUpKW9MJemE8pSkpb0wl6YTylKSlvTCf0wnBTyhamBqCiagikqJKVq
+ YCsKQYE8pApKXDAn2BLcluSUxLAomsKZcmLklMfTCcMCW5PuRUrYE+wJbk+5BS2wJbAn3JbklMfTCb0w
+ pylKWqWHphL0wpSlKNlLH0wl6YUpSlJTH0wl6YU5SlJDD0wl6YU5SlC0MPTCXphTlKUrQw9MJemFOUpS
+ Uw9MJemFKU8pIYemEvTCnKUpKYemE/phPuT7klLemExrCluSlJKI1BN6QRSU0pKYCsKYYEpS3JJX2BPs
+ ChvT70ks9gTFgTb0tyWqVtgTemFKUpRUw9MJ/TClKUpWtY+mEvTClKUpKY+mEvTClKUpKY+mEvTClKUp
+ KY+mEvTClKUpKY+mEvTClKUpKY+mEvTClKUpKY+mEvTClKUoKY+mExrCnKYlJTD0wl6YUpTyipiKwn9M
+ KUp5QtTD0wmNYRJTEpWpH6YS2BSJSlFSwYFIMCQKcFBStgTemFKUtyWqmPphOKwn3J9yWqlvTCYsCluU
+ S5LVLEsCbYE5KUoqW9MJbAnlPKSGOwJjWFOU0pWpH6YS9MIiSNqYisKQYEpTyhZStsCYsCluTSkpjsCW
+ wJ5Tyihb0wl6YUpSlDVTH0wl6YUpSlLVTH0wl6YUpSlLVTH0wl6YUpSlLVTH0wl6YUpSlLVTH0wl6YUp
+ SlJTH0wl6YUpSlJSwYE+wJbktySVemE3pBS3J9yGqWHphL0wpymlLVTA1hN6YUyUpRQsKwpemEgU8oIW
+ LAomsKe5RLkkMfTCcMCW5IOSUyDAn2BMHJ9yCljWFE1hT3JpRQw9MJ/TClKUpKY+mEvTClKUpJY+mEvT
+ ClKUpKY+mEvTClKUpJY+mEvTClKUopY+mEvTClKUpJY+mE3phTlNKSmOwJwwJSluSWsgwJ9gUdyW9BS+
+ wJemEt6W9JStgTbAn3pbklMdgTFgUtyUpKYemEvTCnKUpKR+mExrCLKYlJSL0gpCsKUp5SUsKwn9MJ5T
+ 7klMfTCXphS3JbklMfTCXphSlLckpj6YS9MKW5Lckpj6YS9MKW5Lckpj6YS9MKW5Lcipj6YS9MKUpSkp
+ YMCkGBNuS3IILLYFEsCW9NvSQsWBN6YUtyUopDH0wn9MKQKlKFrgjNYUTWEUlRJSteGHphOGBPKW5FK+
+ wJ9oTbk+5BC2wJjWFLcnlJCP0gl6YRJTSigsPTCXphTlKUlhYemEvTCnKUpWtLD0wl6YU5SlK0MPTCXp
+ hTlKUrUw9MJemFOUpStLD0wl6YU5SlK1zD0wl6YU5SlK0sPTCb0wpylKVoYemE4rCmCnBStTEVhL0wpy
+ lKFlTD0womsIhKiSjqphsCWwKUpSipjsCfYE8p5QUtsCWwJ5TykpiawoGoIspiUrS1zUEwqVhMjamLWQ
+ pJJFBKxKjKcpoRUpOEgFIBJSgE4CQCdNUpIpJiUlLFMnSQUtCdPCUIKWSSTJIXSTJIKXSTJJKXSTJJKX
+ STJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ0VKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJOkpZJOmSUpJJOkpdRcpKLklNaxVirNirlJTJitMVVitsSU
+ lCdME6SlkkkklKSSSSUskkkkpSSSSSlJJJJKXSSSSUpJJJJSySSSSlJJJJKUnTJ0lKSSSSUpOmTpKWKB
+ YjlAsSU1Xpmp3pmpKbNasNVetWGpKXTJ0ySlJk6ZJS6SSSSlJJJJKUnTJ0lKSSSSUpMnTJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1evSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJKlKSSSSpSkkkklKSSSSUpJJJBSkkkkFKSSTpKU
+ nCZKUlMk0ppTSkpklCYKQTgpQCTlIBReiFNO50LPstgq3kuhZF1mqkAU3K7Vdrfosal8ladJkI0pnc/R
+ Zl71o3DRZV4RAUja+SrtCz2crQoRMLU360YvgILOEnnRN9sKY2XwqzslCvcQqLrDKd7aHWrvlXK3ysSi
+ xatBlNMEtolAsdCKeFVuKMYWpDZdCrOyYUL3rPssKmGNDo/a0vtUrI9UqQtKd7SHRdfKC6yVV9VMbEva
+ UmL1Jtirbk4cl7SnQrtVgXLMa9E9VL2lOh6yQtWf6yk22U041OoyxWq3rMqdKu1lMOMJbwshRffCCSqt
+ zyEOBTO3LhVHZqqX2FUXWGUPbS7LcxEGWsVjiUcSh7YU6ZzFH7as4hyh7k3gCnVGYnGWssSpiU2lOl9r
+ TfbVnEOQnkhFTrjNR68qVzvqkFW8e4p1Kekqs3Kw0rMxnyr4fohSWbnQqtt0J7bYWdfcnxihe3JhVzlq
+ ta8lVyCVJwqdEZimM1ZcOQ3FwTSFO23O81bqyty5dtpBV/GuKYYqejZZuScquO+QrJKYQpC5JiT0zCmF
+ TaYjhArRgmKXKZOmQUsmTpklLJ0ySSl06ZJFTJJMkipSZOmSUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJ0
+ ydJS4TpgnSUheqz1Zeqz0lMAj1oAR60lNhqmoNU0lKSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpdJJJJCySSSSlJJJJIUknTJKWSlIpklLpJBPCSlJJ0ySlJJpSlJLJJMCnSUsVEqZUCEkrSpByg
+ U0pJtOHJ5QgVIFJVsiUMqSYhFDApAJyE4SUuApQkE6SlimSJTSkpdRKkmISUwKQTkJAJKZBSBUQE6Sl0
+ kySSlJJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpkkklLpSmSSUylPKglKFqZp1AFPKVqXTFOmS4lL
+ FRUiopcSlJwEykErUyAUoTBOlalihlEKgUrUxThMnCXEpkEkydK1KSTJJWpdJMklal0kySVqXSTJJWpd
+ JMklal0kkyVqXTSkmlK0MklFOhalJJJilalSlKZMlamUp1EJwjxJXTJ0yXElSZOmS4lLykmTpcSlJk6U
+ JcSVJJ4SIS4kMSmlOVFLiUzCkohSS4kKTJFNKHEpmE8qAKdK0KJTEpFMlalSlKZOlalJJJJcSVJJJI8S
+ lJJJJcSlJJJJcSlJJJJcSlJJJJcSlJJJJcSlJJJJcSl0kydLiUyCcKKeUOJTJKVGU0pWpclNKaUyXEpe
+ UpTJkeJS8ppTJJcSl04TJ0uJS6dMkhxKUkkklxKUkkklxKUkkklxKUkkklxKUkkklxKUkkklxKUkkklx
+ KUnTJJcSl0kySXEpdJMklxKXSTJJcSl0kySXEpdJMklxKXTJJJcSlJJJIcSlJJJJwkpSSdJOtSkkySFq
+ UnhMnStSkkk0pWpdJRlKULUySTSkhalJJJkrUqUpSTJWpeUpTJJWpeUpTJJWpdKUkkrUqUkkkbUpJJJG
+ 1KlKUkyVqXlJMnStSkxTpihxJWlKUikErSyCkFEKYS4lLp0yUpWpYqBUiUxStTApJ4ShLiUspBMApBLi
+ QyCSaUpS4lKKZIlJK0KSSSStSkkySVqXSTJJWpdJMklal0kySVqXSSSStSkydMlxIUkkklxKUkkklxKU
+ kkklxKUkkklxJUkkklxKUkkklxJUkkklxJXSSTpcSFiolSKiUuJLElNKchNCXEhcFTBUAFIJcSmYKdQB
+ TylxIZJSmlNKXEhclRJTpoS4lLSlKUJIcSl5TqKkjal0kkyNpXSSTJWpdJMklal0kkkLUpJMklal0kyS
+ HEpScJk6VqZBOoylKVqUUMqZUSErUxlOCmISS4lMwphDBUwUbUyTFOkUrUwKiVMqBCNqWThKE4StS6dM
+ E6VqWTJ0yVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJkkrUukmSStS6SZJK1LpJkk
+ rUukmSStS6SZJK1LpkkkrUunTJwlalJJJFN4lLJpSKZLiUqUpTJJcSl5SBTJwlxKZSnUQnQtS6UpkpSt
+ S8pKMp0rUukkmStS6SZJG1LpJkkrUvKSZJG1LpJkkrUukmSStS6SZJG1LpJkkrUpKUySVpZAp5UQnlC0
+ rymKSSVqYlJOklxKWTpJ0rQpJOmS4lKTJFMlxIZSnlQlKUrUylJNKSVqXSTJJWpdJMklal0kySVqXSTJ
+ JWldJMklal0kySVqXSTJJcSl5SlRlKUuJavKUpk6XEpeVIKCcFLiUyTqMp5QtKxUSpFRKPEpgSmlSIUY
+ S4ksgVMFDUgUOJKQJJgUpStSxTJymR4lLpJkkuJC8pkkkuJSk6ZJLiQukmSS4kLpJkkuJS6SZJLiUpKU
+ ySFqXlKVFOlamSSZJK1KSSTSlamSSZOlaVoShSTI8SVkk6ZLiUpOop5RtTJKVGUpQtTKUyaU6VpUmTpk
+ uJCkpTJSlxKZJ1EKQQ4kKTFSTEJWhiolSKiUrUsnTKQCVqWTpQklal0ySSVqVKUpJJWpSUpJJWpSSSSX
+ ElSSSSPElSdMkjal0ySSVqUnTJ0rUunTJIWpUpiUiVGUuJS6cJk4S4kLhSUU8oWpSZKUyVoUkkklalJ0
+ ySVqXTSkmR4lLpJkkuJK6SZJK1LpJkkrUvKUpkkuJS8pSmSS4lLynlRSStTKUyZJK0rpJJJcSlkk6UJc
+ SlkylCaEuJSySSSXEpdJJOlalQnSSlK1Lp1GU4KVpXUU6YpWhZMkmS4kLpJJJWpSSSSVqUkkklalJJJJ
+ WpSSSSVqUkkklal08qKUpWplKZNKdK1KSSSS4lLpJkpS4lLpkpTSlalJk6ZK1Lp0ydK1KlKUkyVqXlOo
+ p5RtK6SUpSlaVJJpSlK0LpJpSlK1LpJpSlC0LpJpSlLiQukmlKUrUukmlKULUvKaU0pSlal5SlMnStS6
+ dMlKPEpdMlKaUrSoqJUiVEpWpiSmlSITQjaVAqYKgApBK0s06iCnlK0KTJFMhaF0kySVqXSTJJWpdJMk
+ lal0kySVqXSTJJWpdJMklal0kydK1KSSSStSydMnStS4UlFOlal0xTpkrUxKSSSVqUE6SdK1KTJ1ElK1
+ LylKjKUpWpeU0pJJcSlk6SeEuJSk6ZJLiUumSlJLiUqEoTpJcSlkk6iUuJSkySSXEpSdJJLiUpJJJDiU
+ pJJJLiUpJJJLiUpJJJLiUpJJJLiUpJJJLiUumTpkuJSyUpFMjxJZBSUQnCNpXSSTJWhSSZOlal0kySFo
+ XJUSnTJWhZKUoShDiUqU8qKdK1MpSTBOlal0ySSVqUkkkjxKUnTJJWldMkklalJ0ySNpXSSSStSkydMl
+ alkk6ZK0LJSlCUJcSlSlKUJQlalJwmhOAhalwnASATwlalQlCdMSlxKWSSlNKFqVCSdMlalJJkkrUukm
+ SStS6SZJHiUukmSStS6SZJK1LpJkkbUukmSStSpTEp1EpWhUpSmKZDiQyBUgoBTBStLMJ1EFPKVrguol
+ PKSVrgwKZSKgUuJKpTgqKdLiUyBTymCdK0LpJkkrWldJMklxLSukmSS4lq6SZJK1LpJkkrUukmSS4krp
+ JkkuJK6SZJK0rpkkkOJC4UlEJ0OJS6ZKUxKXEpRKZKUyPEpdJIJ4R4lLQlClCUJcSWKdJJLiUpJJMSlx
+ KWJTSkmKXEpeUpUU4S4lLwpAJAKQCXElYBPCdNKHEpSZIlMShxKXlNKaUkuJSk4TBSCHEpcJJJFK1MSm
+ Uiop4QpJJJFSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKTpk6KlJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0kFLJ0kklKTJJJKUnTJ0lLqLlJRckp
+ rWKuUexVykpmxW61UYrdaSkoTpBIpKWSSSSUpJJJJSySSSSlJJJJKUkkkkpdJJJJSkkkklLJJJJKUkkk
+ kpSdMnSUpJJJJSk6ZOkpYoFiOUCxJTVemanemakps1qw1V61YakpdMnTJKUmTpklLpJJJKUkkkkpSdMn
+ SUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ n//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkkVKSSSSUpJJJJSkk
+ kkFKSSToKWSSSQUukmTykpSYp0xSUxJSlIhNCKmYKmEMKYKIUkChYpgqFnCI3U5WWViXnVbmWFh5A1Uw
+ UvQ7VbGMdFh1GCtOi6EqS37eFlZAVuy/RZ19spwCkYMFXKHrM9TVGrvhPQ7tb1JxkLMryUX7TKCmOQFn
+ vGquWW7lXiSnWhnQNVr44WfQxalLYTCUpTwqlyuHhVLkobqLl3hZ9jVpXBUntlWQVrTLEtpVsVyn9FOt
+ TSMhQ3K0+pANaVqWBRAEmVqyypK1IRKRJVoUpGhK1NOSjVyijHR6qE0yUloatKpiBRVC0K2QoJSSjLNF
+ TvYtNzVSvCbGSXEvYqvpSVo3DVBY0Sn2hanHlX2YkhTxmBalVQhRmSXKOGoHDW6agoGoJnEpxRiKbcRa
+ /ohEZSE0lTjHDVS/FhdOaRCz8uoAIAqeWtr2lEo0KPktAKr1mCpFO3iuV4v0WbiuV/kJUprXvVF5JKu2
+ slAFWqlBUgFW5FbiyrVdStNYAkSpzTiaKpfjwtx5ACzsghMU4r64Ks44gprIJRaBqip18Y6K3OiqY4Vo
+ 8KIqRvKZiT0mKMqbVaOECtHCYpdMlKaUFKKZOmQUskkkipSdJJFSk6ZOipSZOkkpZJJJJSkkkklLJJJ0
+ lLJJ0ySlJJJJKUnTJ0lLhOmCdJSF6rPVl6rPSUwCPWgBHrSU2Gqag1TSUpJJJJSkkkklKSSSSUskkkkp
+ SSSdJSySdMkpSSSSSlJJJJKXSTJJIXTJJJKUkkkkpdMnShJDFKE8JJKUApJk6SliokqRUCkpYlNKRCaE
+ kswVIFQCkElM1EhOkUlIyFGEQhNCSVgFMKICkElLwmIUkyKmBSCcpBK1MgkSmCRStTElMCkUgErUyClC
+ iFJK1LEJQnSStSoSTpkrUsUycpkrUskkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUlKSZK1Lp0ykg
+ paEykmKFKWTgpkkqUzCSYJ0qUsUykmSpSycJk6VKZApSopJUpcpiknSpTGEk6SVKUkmSSpS6SZJKlLpJ
+ kkqUukmSSpS6SZJKlLpJkkqUukmSSpSimSSQpC4TpgnSpSkxTpilSmJSTlNCVJXCcJgnCVKXSTpJUlaE
+ 0J0kqUsknSSpSoTgJk4SpS8JEJJFKlIyoqZUUqUuFNQCklSFFRTlMlSlwpKITpUpRTJ0kqQtCdJOlSmK
+ SdMlSVJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSdMklSl0pSTJUpUppSSSpS6SZOlSlJ
+ QnSSpTGElJJKlLQmUkyVKUkmThClLpJJ0KUskkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSl
+ JJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJIUpSSSSeApSSSZOpSkkkyVKZBOohOlSlEqJKcqJ
+ QpSpSlNCcJUpkE6iFIIUpSSdMlSlkydJKlLJJ0kqUsknSSpSySdJKlKSSSSpSkydJGlLJJ0kqUsnSSCV
+ KXSISSQpLGEgFJMlSVwFJMkjSF5UZSKZKlKlOmThKlLwlCcJ0qUxhRKmVAoUpaUpTFJGlMpSTBOhSFJJ
+ JI0pSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJIUhSSSSVKUkkklSlJJJJUpSSSSVJUkkklSlJJ0yVJ
+ UkkklSlJ0ySVKUmTpQlSloShShOlSmEJKcKJCVIWSlIhKEqUqU6aFIJUpcBPCQTpUhiQokIiiUqUxhOk
+ nRpSySdJKkrJJ0kqUsknSSpSySdJClLJJ0kqUsknSSpSySdMlSlSlKYpJUpdKEgnSpTEhNCmVEhKlLBS
+ BTJ0qUyBTqITyjSlFNCdMlSloTpJJUpSSZJKlLpJJI0pUJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkk
+ lSlJk6SVKWSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKTJ0kqUpJJJClKlJMkm0pSZOklSloShOl
+ CVKWhKE6dKlKSSTpUpZRUimSpSgpBRCkEqUumKdMUqUsmTpJUpSSSSNKUmTpJUpZJOkjSlk6SSVKUmTp
+ I0pSZOklSlkk6SFJUkknQpKySdMjSFJJJJUpSdMnSpS6ZJJKkKUSpJkqUxSTwmSpS4TpgE6VKUknTJUp
+ SSSSVKUkkklSlJJJJUpSSSSVJUkkklSlJinSKFKYpJQnASpaoJ0gnSpSySdMlSl5SlMklSV0oSTpUpiQ
+ mIU0xSpLCElIhRhKlLynlRTpUpSSSSVKUkkklSlJJJJUhSSSSVKUkknSpSySSSVIUkkklSlJJJ0KUtCc
+ BJOlSlJinSSpTEpk5TJUpcJwmThGkskkySVKUmTpkaSskkklSlJJkkqUuFIKKcJUpdJJJClMSmTlMlSF
+ wphQCkEqUzTFKUiUKUwKiVMqKVIWAUgEwUkqUqExTpilSlkk6SVKWSTpJUpZJOklSVkk6SNKWSTpJUlZ
+ JOkjSlkk6SVKUnTJ0qUpMU6iUqUsSoynKaEKUyCcJgnSpC8pSmSSpS8pJkkKUunTJ0qQpMnSSpTFJOmR
+ pSkkkkaSpJJJKlKSSSSpSkkkkqUpJJJKlKSSSQpSkkkkqUpOEycI0lcBPCQThClKhRIU0xRpTAhMpJkq
+ UpJOmSpSpUSU5TFKlKlOCop0qUzlMUkkqUsknSSpCySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSp
+ TFMpJkqUoJwmhSCVKUkkklSlkpSSSpSpTSkklSlJJJQlSlwnTBSSpSyaFJMlSlkk6ZKkqlJJJKlKSSSS
+ pSkkkkqQpJJJClKSSSSpSkkkkqQpJJJKlLJJJwlSlwE8JJ0qUsUxTlRKVKVKZJJKkqTpk4RpSoShSSSp
+ LCElIhMlSlSlKZJKlLpJJ0qQsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0yVKUnCScJUpUJEJ0kqU
+ xSTpkqUukkklSlSmSSSpSydMklSlwnTJ0qUsVElSKiUqUtKSUJwEKUpOkE6VKVCdJJKlKTFOVEpUpScJ
+ kghSmQSSCSVKUVEqRUUqUsnShOEqUpJOmSpSkk6SVKWSTpJUpZJOklSlkkkkqUpJJJKlKSSSQpSkk6ZG
+ lMSmUkoRASoJ0gnRpSyZOUyVKUnTJ0qQpJJJClKShJOlSloShSSSpDCEoUkyVKWTpJJUpSSSSVKUkkkl
+ SlJJJJUlSSSSNKUkkklSVJJJJUpSSSSVKUlCdJKkLQlCdOlSmMJQpJJUpjCcBOklSlwkkmQpSiokpyol
+ KlLSkCmThKlMgkmCdKlLJJ0kqUsknSSpSySdMlSlJJJ0aUsknSSpSySdJKlLJJJJUpSeEgnSpDEhRIRC
+ FEhKkME4TwlCVJXlKUyZKlwZAqSgFIJUuXKgVNRIQpLGE4CeE4CNIVCUJ0kqUsknTJUtUkkklS0qSSSS
+ pCkkkkqQpJJJKkqSSSSpSkkkkqSpJJJKkqTpk6aQhdJJJClLFMU5TFKlMU6UJQjSmQUgohSCVJXTFJIo
+ 0piolSKiUqUqUkycJUpeEtqkE6VKRwkAplRSpS4UlFKUKUuSokpFRSpS8ppSSQpKk4STpUpUJ0kkKUqU
+ pTJIgKUmTpKQIWSTpIqWSTpIKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKW
+ STpJKWSTpJKWSTpJKUnTJ0VKSSSSUpJJOkpZJOkkpZJOkkpZJOmSUpJJJJSkkkkFKTJ0ySlJk6ZJS6QS
+ SSUyUHKSi5JTWsVcqxYq5SUzYrVaqsVqtJSYJFIJJKUkkkkpZOlCSSlJk6ZJSkkkklKSSSSUukmTpKUk
+ kkkpZJJJJSkkkklKTpk6SlJJJJKUnTJwkpYoFiOUCxJTVemanemakps1qw1V61YakpdMnTJKUmTpklLp
+ JJJKUkkkkpSdMnSUpJJJJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSn/1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkQpSSSScpSSSSK
+ lJJJIKUkkkkpSSSSSlJJJIKUkknQUsmlIpklLqQCiFMJKWhMQiQmISUjSlIoZKeFJg5Rc5C3qJenUpBk
+ CVkXs1WtaZVG1sp4CnN2witeQjGpL0VIFIX2lU7LJVyyoqnYxOpTXLlNrym9NFZVKYVMm2FFbYVJmOSj
+ txSo7UhDiUasSn9CFNrYTgUNuhq0Kws+lyvVuQKUrlTuVslVbUYoLm3BVCNVdtCqOCmtDJgRg0KuHQiC
+ 1OtS1jAqzmI7rEFz0lKY0K1WAqPqQiMvhJTotaFMVhU2ZCsNuQKkwqCKyoIItCKy0JhS3K2AKw0KrXYr
+ LXKEpXeqGQVecqOQlFDk3nVCYdUW/lAZynEqdbFK16josfFWvVwoylMSoEqRQymhTIFFYUAFEaUiFJid
+ Fm5jtFcc/RZmW/RABTh5Z1VWs6o+SZKBUNVKFOtiLXrZIWbhsW1UzRIlTXdTKh6CvloQyAgJJauyFBzo
+ VhwQHslPBU1LbVnX2LQtrKzr64TkNUukq3jqmRBVrHKBU7NCsqpQVaJUZUiekxM4p2KIqbNaOEGtGCYV
+ Lpk6aEFLJJ0kFLJ4SSRUqEoTpIqWTpJIqUkkkkpZMnTJKWSSSSUukkkkpSSSSSlkkkklKTpk6SlwnTBO
+ kpE9VXq09VXpKYBHrQAj1pKbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUpOopSkpkmTSmlJTJJRlJJS6SS
+ SSlJJ0ySlJk6ZJC6cKKdJTJOogp5SUopk8pkkKSlMkkpdMkkkpaEoUkklMYThOmSSvKUpkklLpoSToqW
+ TpkkFMpSUU6CVJJJIWpSSSSSloShOkkpQTymSSUvKUpkklLykmSSUpMnTJKUmTpJWpZJOklalkk6SVqW
+ STpJWpZJOklalkk6SVqWSTpkrUpOkkiFLpJk6fSlkk6ZKlLpJkkqUukmSSpS6SZJKlLpJkkqUukmSSpS
+ 6ZJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpOmSSpC6ZJJCkqShJJJSkkk
+ klLpJkklLpkkklKSSSSpK6UpkkqUvKUpkkqUpKEkkkKSSSSUpJJJJSkkkkqUpOmSRpS6SZJKkKSSSQpK
+ kkkklKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKTpkklLpkkklKhKEkklKTpkklLpJkklLpJkkq
+ UumSSSpSk6ZKUqUukmlKU1S6SaUpSUukmlKUlLpJpSlJS6SaUpSUukmlKUlLpJpSlJS6SaUklLpJkklL
+ pJkklLpJkklLpJkklLpJkklLpJkklLpJkkqUukmSTwpdJJJOpSySdMhSlJ0ySSlJQknSUxhPCdJClLJ0
+ kyVKXSTJJUpSSSZClLpJkkqUukmSRpS6SZJKlLpJkkqUukmSSUukmSSpS6SZJJTJJMklSV0kySVKXSTJ
+ JUpSSSSVKUnTJJUplKUqKSSmUpkydKkLQlCdJKlLQnSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKS
+ SSSpSkkkkqUpJJJClKSSSSUpJJJJSkkkkqUpJJJJSkkkklKSSSSUpJJJKlKSTpkqSukmSSQukmSSUqEo
+ STpUpaE6ZJJS6eVFKUlMpTJpSSpS6SZJGlLpJkkaUukmTpUpSSSSVKUkkmQpS6SZJKlLpJk6FKUkkklS
+ lkk6SVKWTpJJUpSZJOlSlkkkkaUpOmSSpS6SZJGlLpJkkqUukmSSpSkkySVKXSTJIqXSTJJKXSTJJKXS
+ TJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSSSSpSkkySBClJJ0ybSlJ
+ 0kkqUpJJJKlKSSTJUpdJMklSl0ySdKlLJ5TJJUplKaUySVKXSTJ0qUpJJJJSkkkyNKXSTJ0qUpJJMjSl
+ 0kySVKXSTJIqXSSSQpK6SSSFKWSSSSpSkkkkqQpOmSSpS6SZJKlLpk6SVKWhKE6SVKWhOkklSlJJJJUp
+ SSSSVKUkkklSlJJJJUpSSSSVJUkkklSlJJJJUpaEk6SFIUkkklSlJJJJUpSSSSVKUkkklSl5TJJJUpSa
+ E6SVKWhJOmSUpJJJJSkkkklKSSSSpSkkkkqUpJJJJSkkkklKSSSSUpJJJJSk6ZJKkLpkkkqUpJJJKkqS
+ SSSpSk6ZJGlKSSSSpSkkkklKSSSSSpJJJKkLpkkkqUpJJJKlKSSSQpS8pSmSSpSkkkkqUpOmSSpCpSST
+ JUpdJMklSl0kySVJUkkklSlJJJJUpSSSSNKUkkkkpSSSSSl0kySVKXSTJJUpUJQknSpS0JJJJUpdMkkh
+ SlJ0ySVKXSTJJUhdJMklSl0kkkaSpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkqUpJJJKlKSTJJUpl
+ KUqKUpUlnKaUySVKXSTJJUpdMkklSlJoTpJUpaEoTpJUpSSSSVKUkkklSFJJJJUpSSSSVKUkkklSlJJJ
+ JUpSSSSVKUkkklSlJk6SVKWTpJJUpSSSSVKUmTpJUpZKE6SVKWSTpJUpSSSZKlLpJk6VKXTJJI0pSSdJ
+ KlLJJ0kqUslCdJKlLJJ0kKUsknSSpSyUJ0kKUtCUJ0kqUsknTJUpSdMklSlJJJJUpaEoTp0aUxhOkklS
+ l0kySNKUkkklSloSTpJUpSSSSFKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUnTJJUpdJMklSl0
+ kySVKXSTJJUpdMknSpSySdJKlKSTJJUpdNCSdKlLQknTJUpSdMkgpdJMklSl0ySSVKVCSSSVKXSTJJUp
+ dMkklSlJJJJKXTJJJKUkkkkpSSSSSlJJJJKUkkklSlJJJJUpSdMkgpdMkkkpSUJJJwClJ0kyNKUkknSp
+ SySdJKlLJJJIUpdJMklSl0kydKlKSSSQpSySSSVKUkkklSlJJJJUpSSSSNKUkkklSlJJJI0pSSSSVKUn
+ TJJUpdOmSSpS6SaUkqUukmSlKlLpJkpQpS8ppTJJUpdMkklSloShOkhSlJJJJUpSSdJJSySdJJSySdJG
+ lLJJ0kqUsknSSpSySdJGlLJJ0kqUpJJJKlKSSSQpC0JQnSSpK0JoUkkqStCSdJKkqTJ0kqUtCdJJKlKS
+ SSSpSkydMlS1SSSSVIUkkkjSlJJJJUpSSSSFKUkkklSlJJJI0pSSSSFKUnTJIFS6SZJBK6ZJOlSloTwk
+ kipSeUyZKlMpSlRSSUumSSRpSoSTpkqUvKUpk0pKZSmTSkkpdJMkhSl0ySSVKVCSSSVKUnTJJUpeUpTJ
+ SlSl0kySVKXTpk6ClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSKlJJJJKUnTJJKXSTJ0lKSSSSUpMnTJKUkkkkpSSSSClJJJJKWShShKElMUk8
+ JJKUoOU1FySmtYgEKw9AKSmTArLFXYrLElJAkkEklLhPCYKSSloTKRUUlKSSSSUpMnSSUsknTJKUkknS
+ UsknSSUsnTJ0lLJ0kklKSSSSUpJJJJSk6ZOkpRQLEcoFiSmo9M1O9M1JTYrVhqr1qw1JTJMkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSn/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJEKUkkknKUkkk
+ ipSSSSSlJJJJKUkkkgpSSSSClJJJJKWKaFJKEFLBTCjCUpKSApFQDk8oqYuCC4I5CG5qcFNclDJRnNQH
+ BPCkbihESpuKHuTwpm2uUUUJq3BWQQjamhbQs62pbV0LOuhOBS0BVqrVNEqIGqu0QgUJ6cUFWhiiESiF
+ ZJEKElTk3Uhqo2aFamU4LHufqnBSap6v1OWVU6StKlOQ2SVXsKK4wFUteiFILVUeFYc6UIiVIprO0UNx
+ Vh1ah6SKERJQ3SrQqUX1I2pz3uIQ/UIVm2tVizVK1Jq7SrbLSqdbFcYxJSUWlGrtVfYpsCaVOnTYr9bp
+ WZQFo1KMpTlU8gK32VXI4TQpyLwgMGqPeUBh1RKnUxQtioaLGxHLZpcIUZSlIQy1GkKBITQVMNqkAnkK
+ YhIlSF7VmZYWy4CFm5YEJAqedyBqh0jVHyRqg1HVPU7eGFrMcAFjYrleNkBCktl9wCCbwVQuvhAbkapw
+ CnXDtylslU6LZV+twKR0UgspWXk1Qt18QsrL7pRKHCtEFEodqoX8pqeU61O1juVudFSxlc7KMqYOKdii
+ 5SYoypt1o4QK1YCYVKhKE6ZBS0JJ0ySlJJkklLpk6ZFSk6ZOkpSSSSKlkydMkpZJJJJS6SSSSlJJJJKW
+ SSSSUpOmTpKXCdME6SkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZJJJSyZSTQkpi
+ kpQmhJSydJOkpQCeEgnCSlQlCdOkphCaFNMUlMYSTpkkKSTSkkpdJKU6SloSTpJKWSTpJKWSTpJKWSTp
+ JKWhJOkkpZJOkipZJOkgpZJOklSVkk6SFKWSTpJUpZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJU
+ pZJOklSlkk6SVKWSTpJUpZJOklSlkk6SVKWSTpJUpZKE6SNKWhJOknWpZJOklalkoTpJWpaEk6SVqWST
+ pJWpZJOklalkk6SVqWTwknStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsk
+ nSQtSySdJK1LJJ0krUsknSStTGE6dJK1LJJ0krUsknSSUsmhSSStTGEoUkkrUsknSStSySdJK1LJJ0kr
+ UsknSSUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsmhSSStTFJOkl
+ alkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SSmKSdJKlLJJ0kqUsknSSpSySdJKlLJJ0kq
+ UsknSSpSySdJKlLJ4STpUpSSdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0kVLJJ0kb
+ UsknSQtSySdJK1LJJ0krUsknSStSySdJK1LJJ0kLUxhKE6SVqWhKE6SVqYwkpJJWpikpJJWpikpJJWpi
+ kpJJWpikpJI2pinhOklalkk6SVpWSSSStSkkkkrUpJJJK1KSSSStCkoTpJWpSSSSVqUknSStSySdJK1L
+ JJ0krUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUtCUJ0kLUtCUJ0krUtCUJ0krUtCSdJK1LJJ
+ 0krUsknSStSySdJK1LJJ0krUsknSStSySdMlalJJJJWpSSSSVqUkkklalJJJJWpZJOklalJJJ0bUtCUJ
+ 0kbUslCdJC1LQlCdJK1LQlCdJK1LQlCdJC1LJQnSStS0JJ0krUsknSStSyUJ0krUtCSdJK1LJJ0kbUsl
+ CdJK1LJJ0krUslCdJG1LQlCdJK1MYShOnStTGEoUkkrUxhKFJJK1MYShSSStTGEoUkkrUxhKFJJK1MYS
+ hSSStTGEoUkkrUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUsknTJWpSSdJC1LJJ0kFLJJ0klL
+ JJ0klLJJ0klLJJ0krUsknSStSySdJC1LJJ0krUsknSRtSySdJK1LJJ0krUsknSRtSySdJG1LJJ0krUsk
+ nSStS0J0kkLUpJJJK0qhMnSStCySdJK1LJ4SSStSoShJJK1KhJJJK0KSSSStSkkkkrSpJJJK1KSSSStS
+ kkkkrUpJJJK1KSSSStKkkkkrUpJJJK1KSSSQtCkoSSStSkkkkrUpJJJK1LJ0kkrUsnSSStSkkkkrUpJJ
+ JK1LJQnSStS0JQnSStS0JQnSStS0JQnSStS0JQnSStS0JQnSStS0JQnSStS0JJ0krUtCUJ0krUtCUJ0k
+ rUtCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCSdJK1LJQnSSt
+ S0JQnSSUtCSdJK1LJQnSStS0JJ0klLJJ0krUsknSStSySdJJSySdJK1LJJ0krUsknSStSySdJK1MYShS
+ SStTGEoUkkrUsknSStSyZSSStTGEoUkkrUxhKFJJK1MYShSSStTGE8J0krUsknSRtSySdJK1LJJ0krUs
+ knSStSySdJK1LJJ0krUsknSStSySdJK1MUk6SVqWShOklalkk6SVpWTpJJWpSSSSVqUkkklalJJJJWpS
+ ZOklalkk6SVoWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpZ
+ JOklalkk6SVqWSTpJWpZJOklalJJJ0rUsknSRtSySdJC1LJJ0krUsknSStSySdJC1LJJ0krUsknSStSy
+ UJ0krUtCUJ0krUtCUJ0krUsknSRtSyUJ0krUtCUJ0krUtCUJ0kbUsknSQtSySdMlalJJJJWpSSSSVqUk
+ kklalJJJJWpSSSSVqUkkklalJJJJWpSSdJK1LJJ0krUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0
+ klLJJJJUpSSSSVKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSl
+ kk6SClkk6SSlJJJ0VLJJ0kbUsknSQtSySdJK1LJJ0krUsknSQtSySdJK1LQknSStS0JQnSStS0JQnSSt
+ S0JQnSStS0JJ0kbUtCUJ0krUtCUJ0krUtCUJ0kbUtCSdJK1LJ0kyVqXSTJIWpSSSSVqUkkklalJJJIWp
+ ZJOklalJk6SVqWTpJwlalQknSStSySdJK1LJJ0krUsknSRtSySdJK1LJJ0kbUsknSStSySdJC1LJJJIW
+ pSSSSNqUkkklaVJJJJWpSSSSVqUkklKVqUkkklalJk6SVoWhKE6SVqWSTpJWhZJOklalkk6SVqWSTpJW
+ paEoTpJWpZJOklalkk6SSVkkkkqUpJJJKlKSSSSUpJOkkpZJOklSlJJkkVKSSSSUsknSSUsknSSUsknS
+ SpSySdMlSlJJJIUpSSSSVKUkkklSlJJJ0lKSSSQUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk8oqUklKUpKUkkkkpSdMnSUpJJJJSkydJJSySd
+ JJSySdJBSkkkpSUukmlKUlKTJSlKSl1FyeVFxSUgegFGeUAlJSRisMVZhVlhSUlSTBJJTIJ1EFSlJSxT
+ FOVEpKUkmSSUukkkkpSdMnSUpJJJJSkkkklKSTJJKXSTJJKXSSSSUpJJJJSk6ZOkpRQLEcoFiSmo9M1O
+ 9M1JTYrVhqr1qw1JS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJEKUkkknBSkkkkVKSSSSUpJJJJSkkkklKSSSQUpJJJBS4UgFEKYSUxIQyUVyC5JS2
+ 5SBQlIFJSYJEJmlOU4KQvCqWGFbsVG4pwU1rHwqxuhK9yoveU8KdJmQrLclYbbCjttKcp0rL1RtuQ32F
+ VbHlOU2BdqrNN8LJ3FFY8hAqeipyVYOXosCu4hFN5hRkKbWTkysqy6SmutJVQuJKIU6eO+StijhYeItu
+ jhJSS0wFnXPV606LNuTghHulFaJQGhW6mqRS2xL01ZDEtiSmtsQ7ArZYq9rUUOdaqpGqt3BVY1SUmqCu
+ saqlIWhU1JTHYnaxHFam2tAqZVNV6sIFbIVlgURSyJ0VLJdorb+Fn5J0SCnLybIVMXQUTKJWa5xBSS7m
+ NlQtarMELk6rSFdZkEBBT0v20eKY5o8VzxySonJKbSnoxmhEbmjxXMfaSpDKKaVPTnNCoZOWCsj7UUC3
+ IJQAUkyLpKjSZKpl5cVbxhJTlO1ihXHMMIOGxaQqkJWpw72FVNWlbt+Osy+iE8FTGq/ar1eXCxny1RF5
+ CJU9AcuQqGRduVEXkpOeXJqkNpkqdDdUhXKt0UpKbmO1W40UKWQjEJhUgcE7EnJ2JpU2q1YCr1owKaVM
+ pTSlKZNUvKZNKSCl0kkklLpk6SSlJJJIqXTJ0yKlkydMkpZJJJJS6SSSSlJJJJKWSSSSUpOmTpKXCdME
+ 6SkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJS4TwmCeUlKhRKclQLklLpSoFy
+ gXpKTSluQN6XqJKbG5Lcq/qJvUSU2dyiXIHqJvUSUn3JtyB6ib1ElJ9yW5A3pb0lNjcn3Kt6if1ElNjc
+ luVf1EvUSU2NyW5V/US9RJDY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf
+ 1EvURU2dyW5V/US9REJbG5Lcgeom9RFTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1
+ ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNj
+ cluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUQKmxuS3Kv6iXqJimxuS3Kv6iXqJKbG5Lc
+ q/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJ
+ eokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokp
+ sbktyr+ol6iSmxuS3Kv6iXqIqbG5Lcq/qJeogpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbkt
+ yr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+o
+ l6iSmxuS3Kv6iXqJKbG5Lcq/qJeoipsbktyr+ol6iSmxuT7lW9RL1EFNncluVb1EvUSU2dyW5VvUS9RJ
+ TZ3JblW9RL1ElNncluVb1EvUSU2dyW5VvUS9RJTZ3JblW9RL1ElNncm3Kv6iXqJKbG5Lcq/qJ/USUn3J
+ bkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSUn3JSgeol6iI
+ UnlKUD1EvUT1J5SlA9RL1ElJ5SlA9RL1ElJ5SlA9RL1ElJ5SlA9RL1ElJ5SlA9RL1ElJ5SlA9RL1ElJ5
+ S3IHqJvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf
+ 1EvUSU2NyW5V/US9RJTY3JblX9RL1E0qbG5Lcq/qJeogpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJe
+ okpsbktyr+ol6iSmxuS3Kv6iXqIKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokps
+ bktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKT7ktyB6ib1ElNjcluV
+ f1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTZ3JblX9RL1ElNjcluVf1Ev
+ USU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2
+ NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5
+ V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US
+ 9RJTY3JtyB6ib1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcn3Kv6if1EVNjcluVf1EvUSU
+ 2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUQU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW
+ 5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V96XqJKbG5Lcq/qJeokpsbktyr+ol6iKmxuS3Kv6i
+ XqJKbG5Lcq/qJeokpPuS3IHqJvURU2NyW5V/US9RJTY3JblX9RL1EFNjcluVf1EvUSU2NyW5V/US9RJT
+ Y3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3Jb
+ lX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9R
+ L1ElNjcluVf1EvUQU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1El
+ NjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvURU2NyW5V/US9RJTY3JblX9RL1EVNjcl
+ uVf1EvUSU2NyW5V/US9RBTY3JblX9RL1EFNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1
+ EvUSU2NyW5V/US9RJDY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJLY3JblX9RL1ElNjcluVf1EvUS
+ U2NyW5V/US9RJTY3JblX9RL1EktjcluVb1E/qJJbG5Lcq/qJeokpsbktyr+ol6iS1sbktyr+ol6iSmxu
+ S3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv
+ 6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXq
+ JKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG
+ 5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq
+ /qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbk+5VvUS9RJTZ3JblW9RL1ElNncluVb1Ev
+ USU2dyW5VvUS9RJTZ3JblW9RL1ElNncluVb1EvUSU2dyW5VvUS9RJTZ3JblW9RL1ElNncluVf1EvUSU2
+ NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5
+ V/US9RJTY3JbkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSUn3JbkD1EvUSU
+ n3JbkD1EvUSUn3JbkD1E3qJKT7ktyB6iXqJKT7ktyB6iXqJKT7ktyB6iXqJKT7ktyB6iXqJKT7ktyB6i
+ XqJKT7ktyB6iXqJKT7ktyB6iXqJKT7ktyB6ib1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNj
+ cluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluV
+ f1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1E/
+ qIqT7ktyB6iXqJKT7ktyB6iXqJKT7ktyBvS9RJSfcluQPUS9RBSfcluQPUS9RJSfcluQPUS9RJSfcluQ
+ PUTeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJe
+ oipsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeogpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokps
+ bktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3IHqJeokpPuS3IHqJeokpPuS3IH
+ qJeokpPuS3IHqJeokpPuS3IHqJeokpPuS3IHqJeokpPuS3Kv6iW9JTY3JblX9RL1E4KbG5Lcq/qJeonq
+ bG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5L
+ cq/qJb0lNjcluVfelvSU2NyW5V/UT+ogpPuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iX
+ qJKbG5Lcq/qJeokpsbktyr+om9RNKmzuS3Kt6iXqIKbO5Lcq3qJeokps7ktyreol6iSmzuS3Kt6iXqIK
+ bO5Lcq3qJeokps7ktyreol6iSmzuS3Kt6iXqJKbO5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5L
+ cq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqIqbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/q
+ Jeokpsbktyr+ol6iSk+5Lcgeol6iSk+5Lcq/qJeogpsbktyB6ib1ElNjcluVf1EvUSU2Nyfcq3qJ/USU
+ 2dyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvUSU2NyW5V/US9RJTY3JblX9RL1ElNjcluVf1EvURU2NyW
+ 5V/US9RJTY3JblX9RN6iSmxuS3Kv6iXqIJbG5Lcq/qJeokpsbktyr+ol6iSGxuS3Kv6iXqJKbG5Lcq/q
+ Jeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeok
+ psbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokhsbktyr+ol6iSmxuS3Kv6ib1E8JbO5Lcq/qJvUTlNn
+ cluVbelvQU2dyW5Vt6W9JTZ3JblX9RL1EVNjcluVf1EvUSU2NyW5V/US9RJTY3JtyB6iXqJKT7ktyr+o
+ l6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iS
+ mxuS3Kv6iXqJFTY3JblX9RL1EwqbG5Lcq/qJeogpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsb
+ ktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr
+ +ol6iSmxuS3Kv6iXqJKbG5Lcq/qJeokpsbktyr+ol6iSmxuS3Kv6iXqIqbG5Lcq3qJeokps7k+5VvUS9
+ RJTZ3JblW9RP6iSmxuT7lW9RL1ElNncluVb1EvUSU2dyW5VvUT+okpsbktyr+ol6iCmxuTbkD1Et6Sk+
+ 5Lcgb0t6Sk25Lcg70t6Sk8qLih70xekpg8oBKk96CXJKTsKtMKoscrLHJKbQKUoQcn3JKSgp5QQ5SDkl
+ MyUxTSkkpSdMkkpdOmSSUySTJ0lKSSSSUpJJJJSySSSSlJJJJKUnSSSUpJJJJSk6ZOkpRQLEcoFiSmo9
+ M1O9M1JTYrVhqr1qw1JS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSTrUpJJJK1KSSSRtSkkkklKSSSSUpJJOkpZJOmQUuE8qKaUFMiUMqSUJW
+ pHCcBE2p9qSlgkU6YlG1Inqna2VdcgPbKcCpybq5VJ9JW2+mUE46cCpyBQUZtBWm3GRW4ycJKcg0FBfj
+ lb5xkM4ydxKcH7MVNuMVtDFU24oUZkpyG45TmgraGKmdipnGl5y2koHomV0FuKqzsWEeNDVxmQtenhVa
+ 6YVytsJcSlrBKp2VytEslDNMoiamiylXKqkZlCssqhHjQ1xUn9NWtkJtqPGpqmpV7aFqBkqL6pR9xTzt
+ 2Oqho1XRW0Ko7H1Q9xTn1UrQqqRK6IVuupL3FIBUpipWhWn2JcakDWQiAKe1NCZxKYOCpXslaBCE+uUu
+ NLzuRQSs9+KZXT2Y0oBw0uNTgMxSrLMYrZZheSsMwwhxpcH7KUvshXSDCHgpfYghxIeY+yFOMQrpThBM
+ MMJ1qec+yFCfiFdT9jCHZhBK1PK/ZiCrmNTBWo/D8kmY+1K1NjFbC02cKjU3arQcmlS9oBWdfVKvkyhl
+ kpwlSnEtxpVV2KV0hxwVA4gR4lPPNxijNxytn7IFIY0JcSnLZjK5VRCuNohEFcJWpC1kKL0dwhV7Chak
+ Lk7VFxTtKCm0xFBQWIwQUvKZJOhSlJJ4ShNUpJPCSClJJJkLUpOopwiFLpJJJylkydMkpZJJJJS6SSSS
+ lJJJJKWSSSSUpOmTpKXCdME6SkT1VerT1VekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkkpSZOmKSl
+ pTFyRQykpcvUC9MUMpKXL0MvTFQISUyNib1FAhRgpKSeol6iHBTQUlJPUS9RDgpQUlM96W9QhKCkpnvS
+ 3qEJQkpnvS9RQhNBSUz9RL1EOClBSUk9RL1EOClCSknqJeohwlCSknqJeohwlCSknqJeohwlCSknqJeo
+ hwlCSknqJ/UQoTwipKLE/qIUFKCkpL6iXqIUFKClakvqJeohQUoKVqS+ol6iFBSgpWpL6iXqIUFKClak
+ vqJeohQUoKVqS+ol6iFBSgpWpL6iXqIUFKClaknqJeohwUoKVqSeol6iHBSgpWpJ6iXqIcFKClaknqJe
+ ohwUoKVqSeol6iHBSgpWpJ6iXqIcFKClaknqJeohwUoKVqSeol6iHBShJST1EvUQoShKlJfUS9RChKEq
+ Ul9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJfUTeohwlBSpST1EvUQoK
+ UFKlJfUS9RCgpQUqUl9RL1EKClBSpSX1EvUQoKUFKlJfUS9RCgpQUqUl9RL1EKClBSpSX1EvUQoKUFKl
+ JfUS9RCgpQUaUl9RL1EOClBSpST1EvUQ4KUFKlJPUS9RDgpQUqUk9RL1EOClBQpST1EvUQ4KUFClJPUS
+ 9RDgpQUqUk9RL1EOClBSpST1EvUQ4KUFKlJPUS9RDgpQUqUk9RL1EOClBSpST1EvUQoKUFGlJfUS9RCg
+ p4KVKSeol6iHBTQUaUl9RL1EKCngpUpJ6iXqIcFKClSkvqJeohQUoQpSX1EvUQoShKlJfUS9RChKEqUl
+ 9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEqUl9RL1EKEoSpSX1EvUQoTwUqUl9RLehQnhKlJN6W9DhKEqU
+ k3pb0OEoSpSTelvQ4ShKlJN6W9DhKEqUk3pb0OEoSpSTelvQ4ShKlJPUS9RDhNBSUl9RL1ELVLVK1JfU
+ S9RC1S1StSX1EvUQtUtUrUl9RL1ELVLVK1JfUS9RC1S1StSX1EvUQtUtUrUl9RL1ELVLVK1JfUTeohQU
+ oKVqSeol6iHBSgpWpJ6iXqIcFKClaknqJeohwUoKVqSeol6iHBSgpWpJ6iXqIcFKClaknqJeohwUoKVq
+ Seol6iHBSgpWpJ6iXqIcFNBSUl9RL1EOClBRpST1EvUQoKUFKlJfUS9RCgpQUKUl9RL1EKClBSpSX1Ev
+ UQoKUFKlJfUS9RCgpQUqUl9RL1EKClBSpSb1EvUQoKeClSknqJeohwlCVKSeol6iHBSgpUpJ6iXqIcFK
+ ClSknqJeohwUoKFKSeol6iHBSgpUpJ6iXqIcFKClSknqJeohwUoKVKSeom9RDgpQUaUk9RL1EOClBSpS
+ T1EvUQ4KUFKlJPUS9RDgpQUqUk9RL1EOClBSpST1EvUQ4KUFKlJfUS9RChKEqUl9RL1EKClCVKSeol6i
+ HCUJUpJ6iXqIcJQlSknqJeohwlCVKSeol6iHCUJUpJ6iXqIcJQlSknqJeohwlCVKSeol6iHCUJUpJ6iX
+ qIcJQlSkvqJeohQlCVKS+om9RDhKEqUk9RL1EOEoSpST1EvUQ4ShKlJPUS9RDhKEqUk9RL1EOEoKVKSe
+ ol6iHBSgpUpJ6if1EKCngpUpJ6iXqIcFKClSknqJeohwUoKVKSeol6iHCaClSkvqJvUQ4KUJUpJ6iXqI
+ cFKEqUk9RL1EOEoSpST1EvUQ4ShKlJfUT+ohQlBRpSX1EvUQ4KUFKlJPUS9RDgpQlSknqJeohwlCFKSe
+ ol6iHCUFKlJPUS9RDgpQUqUk9RL1EOClBQpST1EvUQ4KUFKlJPUS9RDgpQUqUk9RL1EOClBSpST1EvUQ
+ 4KUFKlJPUS9RDgpQUaUk9RL1EOClBSpST1EvUQ4KUFGlJPUS9RDgpQUqUk9RL1EOClBQIUk9RN6iHBSg
+ phKknqJeohpQUrUk9RL1EOClBStST1EvUQ4KUFK1JPUS9RDgpQUrUk9RL1EOClBStST1EvUQ4KUFK1JP
+ US9RDgpQlaknqJvUQ4KUFK1JPUS9RDgpQUrUk9RL1EOClBStST1EvUQ4KUFK1JPUS9RDgpQUrUk9RL1E
+ OClBStST1EvUQ4KUFK1JPUS9RDgpQUQpJ6iXqIcFKCn0pJ6iXqIcFKClSknqJeohwUoKVKSeol6iFBTw
+ UqUk9RL1EOClBQpST1EvUQ4KUFKlJPUS9RDgpQUqUk9RL1EOClBSpST1EvUQ4KUFKlJPUS9RDgpQUqUk
+ 9RL1EOCmgpUpL6iXqIUFKClSkvqJeohwU0I0pL6iXqIUJQlSkvqJeohQlCVKS+on9RCgpQUqUl9RL1EK
+ EoQpSX1EvUQoKUFKlJfUS9RCgpQUqUl9RL1EKClBSpCX1EvUQoKUFKlJfUS9RCgpQlSkvqJeohQlCVKS
+ eol6iHBSgpUpJ6iXqIcFKClSknqJeohwUoKVJSeol6iHBSgpUpJ6iXqIcFKEqSk9RL1EOEoSpKT1EvUQ
+ 4ShKlJPUS9RDhKClSknqJeohwUoSpCT1EvUQ4ShKkJPUS9RDhKEqUk9RL1EOEoSpST1EvUQ4ShKlJPUS
+ 9RDhKClSknqJeohwUoKVKSeol6iHBSgpUpJ6iXqIcFKClSknqJeohwUoKVKSeol6iFBSgpUpL6iXqIUF
+ KClSkvqJeohQUoKVKS+ol6iFBSgpUpL6iXqIcJQlSknqJeohwlBSpST1EvUQoKUFKlJfUS9RCgpQUqUl
+ 9RL1EOClBSpST1EvUQ4KaClSkvqJeohQUoKVKS+ol6iFBSgpUpL6iXqIcFKClSknqJeohwUoKVKSeol6
+ iHBSgpUpJ6iXqIcFNBSpSX1EvUQoKUFKlJfUS9RCgp4KVKSeol6iHBSgpUpJ6iXqIUFKClSkvqJeohQU
+ oKVKS+on9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJfUS9R
+ CgpQUqUl9RL1EKCngpUpL6iXqIUFPBSpST1EvUQ4KUFKlJPUS9RDgpQlSknqJeohwlCVKSeol6iHBSgp
+ UpJ6iXqIcFKClSknqJeohwlCVKSeol6iHCUFKlJfUS9RChKEqSl9RL1EKEoSpSX1EvUQoShKlJfUS9RC
+ hKEqUl9RL1EKEoSpSX1EvUQoSgpUpL6iXqIUFKClSEvqJvUQ4KUFKlJPUS9RChKEqUl9RL1EKEoSpSX1
+ EvUQoShKlJfUS9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJ
+ fUS9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEq
+ Ul9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEqUl9RL1EKEoSpSX1EvUQoShKlJfUS9RChKEqUl9RL1EKEo
+ SpSX1EvUQoKUFGlJfUS9RCgpQUqUl9RL1EKClBSpSX1EvUQoKUFClJfUS9RCgpQUqUl9RL1EKClBQpSX
+ 1EvUQoKUFKlJfUTeohwUoKVKSeom9RDgpQUqUk9RL1EKClBSpSX1EvUQoKeEqUk9RL1EKClBRpSX1EvU
+ QoKUFKlJfUS9RCgpQUaUl9RL1EKClBSpSX1EvUQoKeClSkvqJeohQU8FClJPUS9RDgpQUqUk9RL1EOCl
+ BSpST1EvUQ4KUFKlJPUS9RDgpQUqUk9RL1EOClBSpST1EvUQ4KUFKlJPUS9RDgpQUqUl9RL1EKClBSpS
+ X1EvUQoKUFKlJfUS9RCgpQUqUl9RL1EKClBSpSX1EvUQoKUFKlJfUS9RCgpQUqUl9RL1EKClBSpSX1E3
+ qIcFKCkpJ6iXqIcFKCjaknqJeohwUoKFqSeol6iHBSgpWpJ6iXqIcFKClaknqJeohwUoKVqSeol6iHBS
+ gpWpJ6iXqIcFKClaknqJ/UQoKUFK1JfUS9RCgpQUrUl9RL1EKClBStSX1EvUQoKUFC1JfUS9RCgpQUrU
+ l9RL1EKClBStSX1EvUQoKUFK1JfUS9RCgpQUrUk9RN6ihBTQUVJPUS9RDhKEaUk9RL1EOEoSpST1EvUQ
+ 4ShClJPUS9RDhKEqUk9RL1EOEoQpST1EvUQ4KUFKlJPUS9RDgpQUqUk9RL1EOCmgpUpL6iXqIUFKClSk
+ vqJeohQU8JUpJ6iXqIUFKCjSkvqJeohQU8FKlJPUS9RCgpQUaUl9RL1EKClBSpSX1EvUQoKeClSkvqJe
+ ohQlBSpSX1EvUQoSgpUpL6iXqIUFKEKUl9RL1EKEoSpSX1EvUQoKUJUpL6ib1EOEoQpST1EvUQ4ShKlJ
+ PUT+ohQlCVKS+ol6iFBSgpUpL6iXqIUFKClSkvqJeohQUoKNKS+ol6iFBSgpUpL6iXqIUFKClSkvqJeo
+ hQUoKNKS+ol6iFBSgpUpL6iXqIcFKClSUnqJeohwUoQpST1EvUQ4KUJUpJ6iW9DhKEqQk9RL1EOEoKVK
+ Seol6iHBSgpUhJ6iXqIcFKClSknqJeohwUoKVKSeom9RQhNBSpKT1EvUQ4KUFKlJPUS9RDhKEqSk9RL1
+ EOEoSpST1EvUQ4KUFKkJPUS9RDgpQUqUk9RL1EOClBSpCT1EvUQ4KUFKlJPUS3ocJ4SSk9RL1EOClCVq
+ Sb0t6HCUJWpJvS3ocJQlaknqJb0OClBStSTelvQ4KUFK1JN6W9DgpQUrUk3pb0OClBStST1EvUQoShK1
+ JfUS9RChKClakvqJeohQUoKVqS+ol6iFBSgpWpL6iXqIUFKClakvqJeohQUoKVqS+ol6iFBSgo2pL6ib
+ 1EOClCFqSeolvQ4ShBSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJST
+ elvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJSTelvQ4ShJST
+ 1E3qKEJoKKknqJeohwUoKSknqJ/UQoKeElJPUS9RDhKElJfUS9RCgp4KSknqJeohwUoSUk9RL1EOEoSU
+ k9RL1EOEoQUl9ROHoUJwElJd6W9DhKElJN6W9DhKElJd6YvUITFJTB70EvTvQSkpsMerTHqixWWJKbQe
+ lvQgkkpMHqQegBTCSmwHKYQWooSUySTpJKUkkkkpdOmTpKUkkkkpSSSSSlkkkklKSSSSUukkkkpSSSSS
+ lJ0ydJSigWI5QLElNR6Zqd6ZqSmxWrDVXrVhqSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//T69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJFSkkkklKSSSSUumSSQUp
+ NCdJBSgEQNUQpgpKXhMQnlQc5JTElDJUnFDJSUpNCcKQCcFIyxN6aNCUJykYYiBoSSlFSi1QLQpEpiUb
+ UsGhEa0Icpw9MklOGhIsBUA9SD1HSkT6gVXdQrpMqBCVKaXpQptYjEJkULBiIKkgUQFGlKbWFPbCW9Qc
+ 9JSzih7lF70MuRQ2GuRJlVmuRQ5JSntlBNaOSolBSNtaO1qiCphySmQamIT7lEuSpTEhQTlyhKCWYT7Z
+ UQVMFBTE1ym9IIwSKSkYrARWtCgSkHoUlsABOgC1I2ohSRxCHIQ3PQy5SBDZDgkQCqweiNejSl3VAqBp
+ Rg5OSmqQbIThScoSkpkApgKAKluQUkEJ9EHenD0lJdoS2hQD0+9JTKAokqJeoFyKlnlVbCjOKrvKSkJK
+ mxDKmxFTarRwg1o4CSl0oTpwgpaE8J0k0qVCZSTJpUxKZSKgU1Sk4UU4RCmSSSSepZMnKZJSySSSSl0k
+ kklKSSSSUskkkkpSdMnSUuE6YJ0lInqq9Wnqq9JTAI9aAEetJTYapqDVNJSkkkklKSSSSUpJJJJSkySS
+ SloTFqmE8JKQligWKzCYhJTUNaialbLU2xJTT9JL0lc2JbElNP0kvRV3YlsSU0fRS9FXtiWxJTR9FL0V
+ d2JbElNL0kvSV3YlsSU0jUm9JXtibYkpo+kl6SvbEtiSmj6SXpK9sS2JKaPpJekr2xLYkpo+kl6SvbEt
+ iSmj6SXpK9sS2JKaPpJekr2xLYkpo+kn9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTS
+ 9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXNiWxJTT9JL0
+ lc2JbElNP0kvSVzYlsSU0/SS9JXNiWxJTT9JL0lc2JbElNP0kvSVzYlsSU0/SS9JXNiWxJTT9JL0lc2J
+ bEVNL0kvSV3YlsRU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTS9JL0ld2JbElN
+ L0kvSV3YlsSU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTS9JL0ld2JbElNL0kv
+ SV3YlsSU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsRU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3Y
+ lsSU0vSS9JXdiWxBTS9JL0ld2JbElNL0kvSV3YlsQU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU
+ 0vSS9JXdiWxJTS9JL0ld2JbEVNL0kvSV3YlsRU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0/RS
+ 9FXdiWxBTS9FL0Vd2JbElNL0UvRV3YlsSU0vRS9FXdiWxJTS9FL0Vd2JbElNL0UvRV3YlsSU0vRS9FXd
+ iWxJTS9FL0ld2JbElNL0k/pK5sS2JKafpJekrmxLYkpp+kl6SubEtiSmn6SXpK5sS2JKafpJekrmxLYk
+ pp+kl6SubEtiSmn6SXpK5sS2JKafpJvSV3YlsQKml6SXpK56aXppqmn6SXpK56aXppKafpJekrnppemk
+ pp+kl6Sueml6aSmn6SXpK56aXppKafpJekrnppemkpp+kl6Sueml6aSmn6SXoq5sT7ElNH0kvSV7YlsS
+ U0fSS9JXtiWxJTR9JL0le2JbElNH0kvSV7YlsSU0fSS9JXtiWxJTR9JL0le2JbElNH0kvSV7YlsSU0fS
+ S9JXtiWxOCmj6SXpK9sS2Jymj6SXpK9sS2IKaPpJekr2xLYipo+kl6SvbEtiSmj6SXpK9sS2JKaPpJek
+ r2xLYkpo+kl6SvbEtiCml6SXpK7sTbElNP0kvSVzYlsSU0/SS9JXNiWxJTT9JL0lc2JbElNP0kvSVzYl
+ sQU0/SS9JXNiWxJTT9JL0lc2JbElNP0kvSVzYlsSU0vSS9JXdiWxFTS9JL0ld2JbElNL0kvSV3YlsSU0
+ vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTT9FL0Vd2JbElNL0kvSV3YlsSU0vSS9
+ JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdi
+ WxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJT
+ S9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXNiWxJTT9JL0lc2JbElNP0kvSVzYlsSU0/SS9JXNiWxJTS9JL
+ 0ld2JbElNL0kvSV3Yl6aSml6SXpK76aXppKafpJ/SVzYlsSU0/SS9JXNiWxFTT9JL0lc2JbEFNP0kvSV
+ zYlsSU0/SS9JXNiWxJTT9JL0lc2JbElNP0kvSVzYlsQU0/SS9JXNiWxJTT9JL0lc2JbElNP0kvSVzYls
+ SU0/SS9JXNiWxJTT9JL0lc2JbEVNP0kvSVzYlsSU0/SS9JXNiWxJTT9JL0lc2JbEVNP0kvSVzYlsQKml
+ 6SXpK7sTbFEQpp+kl6SubEtiFKafpJekrmxLYlSmn6SXpK5sS2JUpp+kl6SubEtiVKafpJekrmxLYlSm
+ n6SXpK5sS2JUpp+kl6SubE+xKlNL0UvSV3YlsSpTS9JL0ld2JbEqU0vSS9JXdiWxKlNL0kvSV3YlsSpT
+ S9JL0ld2JbEqU0vSS9JXdiWxKlNL0kvSV3YlsSpTS9JL0Vd2JbE6Kml6Kb0le2JbFMFNL0U3pK9sS2JK
+ aPpJekr2xLYlamj6SXpK9sS2IKaPpJekr2xLYkpo+kl6SvbEtiSmj6SXpK9sS2IKaPpJekr2xLYkpo+k
+ l6SvbEtiSmj6SXpK9sS2JKaPpJekr2xLYkpo+kl6SvbEtiSmj6SXpK9sS2IqaPpJekr2xLYkpo+kl6Sv
+ bEtiSmj6Sf0Vd2JbEFNL0kvSV3YlsSU0vRS9JXdiWxJTS9JL0ld2JbElNL0kvSV3YlsSQ0vSS9JXdiWx
+ JTS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJTS9FL0Vd2JbElNL0UvRV3YlsSS0vSS9FXdiWxJTS9
+ FL0Vd2JbEktL0UvSV3YlsSS0vSS9JXdiWxJTS9JL0Vd2JbElNL0UvRV3YlsSQ0vRS9FXdiWxJDR9JL0l
+ e2JbElNH0kvSV7YlsSU0fSS9JXtiWxJTR9JL0le2JbElNL0UvRV3YlsSU0vRS9JXdiWxJTR9JL0ld9NL
+ 00lNL0kvSV300tiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkp
+ pekl6Su7EtiSml6SXpK7sS2IqaXpJekruxLYkppekl6Su+ml6aSml6SXpK76aWxBTS9JL0ld2JbElNL0
+ kvSV3Yl6aSml6SXpK76aXppKaXpJekrvppemkppekl6Su+ml6aSml6SXpK76aWxJTS9JL0ld2JbElNL0
+ kvSV3Yl6aSml6SXpK76aXpoqaXpJekrvppbElNL0kvSV3YlsSU0vST+irmxPsSU0vRS9FXdiWxJTS9JL
+ 0ld2JbElNL0kvSV3YlsSU0vSS9FXdiWxBTS9FL0Vd2JbElNL0UvSV3YlsSU0vSS9JXdiWxJTS9JP6Sub
+ EtiSmn6SXpK5sS2JKafpJekrmxLYkpp+kl6SubEtiSmn6SXpK5sS2JKafpJekrmxLYipp+kl6SubEtiS
+ mn6SXpK5sS2JJafpJekruxLYgppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6S
+ XpK7sS2JKaXpJekruxLYkhpekl6Su7E2xJTT9JN6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su
+ 7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7Eti
+ Sml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6
+ SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK
+ 7sS2JKaXpJekruxLYipp+kl6SubEtiSml6SXpK7sS2IKaXpJekruxLYkpp+kl6SubEtiSmn6SXpK5sS2
+ JKaXpJekruxLYgppekl6Su7EtiSml6Sb0le2JtiSml6SXpK7sS2JKaXpJekrvppemkppekl6Su+ml6aK
+ ml6SXpK76aXppKaXpJekruxL00lNL0kvSV3YlsRU0vSS9JXdiXppKafpJekruxLYgppekl6Su7EtiSml
+ 6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXp
+ K7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6Sf0lc2J
+ bElNL0kvSV3YlsQKml6SXpK7sS2Jqml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JK
+ aXpJekruxLYkppekl6Su7EtiSml6Sf0lc2JbElNP0kvSVzYlsSU0/STekruxLYkppekl6Su7EtiSml6S
+ XpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2IKaXpJekruxLYnhTS9FL0Vd2JbE61NH0kvS
+ V7YlsQU0fSS9JXtiWxJTS9JL0Vd2JbElNL0UvRV3YlsQU0vSTekr2xLYkpo+kl6SvbEtiSmj6SXpK9sT
+ bElNL0kvSV3YlsSU0vSS9JXfTS9NJTS9JL0ld9NL00VNL0kvSV300vTSU0vSS9JXdiXppKaXpJekruxL
+ Yippekl6Su7EtiSml6SXpK7sS2JKafpJekrmxLYElNP0kvSVzYlsQU0/SS9JXNiWxJTT9JL0lc2J9iSm
+ l6SXpK7sS2IKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SX
+ pK7sS2JKaXpJekruxLYippekl6Su7EtiKml6SXpK7sS2JKaXpJekruxNsSS0/SS9JXNiWxBLT9JL0lc2
+ JbEkNP0kvSVzYlsSQ0/SS9JXNiWxJDT9JL0lc2JbElNP0kvSVzYlsSU0/SS9JXNiWxJTT9JL0lc2J9iS
+ ml6SXpK7sS2JLml6SXpK7sS2JKaXpJekruxLYkppekl6Su7EtiSml6SXpK7sS2JIaXpJekruxLYkhpek
+ l6Su7EtiSml6Sf0lc2J9iaUtL0kvSVzYlsQU0/SS9JXdibYkpp+kl6SubEtiSmn6SXpK7sS2JKaXpJek
+ ruxLYkppekl6Su7EtiSml6SXpK7sTbElNL0kvSV3Ym2JKafpJekrmxLYkpp+kl6SubEtiSmn6SXpK5sS
+ 2JKafpJekrmxLYkpp+kl6SubEtiSmn6SXpK5sS2JKafpJekrmxPsSU0vSS9JXdifYipo+kl6SvbEtiSm
+ j6SXpK9sS2JKaPpJekr2xLYkpo+kl6SvbEtiSmj6SXpK9sS2JKaPpJekr2xLYkpo+kl6SvbEtiSmj6SX
+ pK9sS2JKaPpJekr2xLYkpo+kl6SvbEtiSmj6SXpK9sS2JKaPpJekr2xLYkpo+kl6SvbEtiSmj6SXpK9s
+ S2JKaPpJvSV7YlsRU0fSS9JXdiWxJTS9JL0ld2J9iSml6KXpK7sS2JKaXpJ/SVzYn2JKaXpJekruxLYk
+ ppekl6Su7EtiSml6SXpK7sS2IKaXpJekrmxLYkpqeml6atbE+xJTU9NN6at7E2xJTW9NRdWrmxRcxJTn
+ PrQDWtB7EEsSUhZWrLGJMarLGpKRhiWxWA1LakprhimGIwapbUlIg1TAUoShJSydJJJSkkk6SlJ0kklK
+ SSSSUpJJJJSySSSSlJJJJKUnTJ0lKSSSSUpOmTpKUUCxHKBYkpqPTNTvTNSU2K1Yaq9asNSUukkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSn/1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSTbUp
+ JJJK1KSSSRUpJJJFSkkkkVKSSSSUpOmSQUpNKdRKClwVIOUEkFMy5QLkiokJWpYlMnhOAlalAKQTJiUb
+ UylMXIZcoF6NqSlybcg7k4KNqSylKgCnlG1KJUC5O5CKKUoeph6rhTCVKT70t6DKbclSkxco7kMFOlSm
+ e9P6iGVEpITeqomxCSQUyLpTBNCcBFSRqIChhSlJTMuUC5RJUCUFJd6cPQJUgUlJt6YvQpSlJTMuUZUZ
+ SCSkgKIHIIUgUlJw5IuQdyYuSSzLlAvUSVAlClJPUTh6AnBRpSeZSKGCpgpwQopAwkolEqSixP6irkpB
+ yjKk5coyoAqQTSVL7k+5RhKEy1MtyW5QUSUrUm3pb0AuS3I2pNuTShgqQRBUpxQHo5QXhPCkBRGKBCIw
+ Jym1WEcINYVgIqUkkmlBS6eVCUpTSplKUqMpSmFS5TFOkmqYwnCeEoRClJJ0yepZMnTJKWSSSSUukkkk
+ pSSSSSlkkkklKTpk6SlwnTBOkpE9VXq09VXpKYBHrQAj1pKbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUq
+ U8qKSSmUppTJklMpSlRTpKZJ1EKSSl0kySSl0yRTJJXTSmSSUySTJJKXTJJJKUkkmSUukkkkpSSZJJS6
+ SZOkpSSZJJS6SSSSlJJJklLpkkyCF0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kkklKSSS
+ SUpJJJJSkkkklKSTJJKXSTJJKXSTJJKXSTJJKXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kkyVqXST
+ JJWpdJMklal0kySFqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqXSTJI2pdJMkjal0kySVqXST
+ JJWpdJMkhal0kySVqXSTJIWpdJMklal0kySVqXSTJJWhdJMnStKkkkyNqXSTJJWpdJMkjal0kySVqXST
+ JJWpdOmSStS6SSZC1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1KSSSRtSkkkkrUpJJJC1KSSS
+ RtSkkkkLUpJJJK1KSSSStSk6ZJJS6SikipkkopJKZJKKSSmSSikkpkkopJKZJKKSSmSSikkpkkmSSUuk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkkl
+ alJJJJWpSZJJK1KSSSStSkkkyFqXSTJJWpdJMklal0kySVqXSSSQtSkkkkbUpJJKErQpJKEkbUsnTJJW
+ ldJMnStSkkkkrUpJJJK1LpJJJWpSSSSVqUkkmQtS6SZJK1LpJkkbUukmSStS6SZJC1LpJkkbUukmSStS
+ 6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUumSTJWpdJMklal0kySVqXTqKdK1
+ LpJkkrUukmSStS6SZOlalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkkhalJJJJWpSSSSVqUkkklalJJ
+ JJWpSSSSVqUkkklalJJJJWpSSSSVqUkkkjalJJJJWpSSSSNqWSTpkaUpJJJKlKSSSSpSkkkkqUpJJJKl
+ KSSSSpSkkkkqUpJJJKlLpJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSZKlLpJJI2pSSS
+ SSlJJJIKUkkklalJJJIWpSSSSVqUkkkhalJJJJWpSSSSVqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSS
+ SSNqUmSTIWpdJMklal0kySVoXSTJJWpdOopJWpkkopJWpkmSSStSkkySVqXTpkkrUumSSStSkkkkrSpJ
+ JJK1KTpkkrSukmSStK6SZJK1LpJkkrUukmSStC6SZJK1LpJkkrQukmSStS6SZJK1LpKKSVqZJJkkrQuk
+ mSStK6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrUukmSStS6SZJK1LpJJJWpSSSZG1LpJk6FqUkkklalJJ
+ kkrUukmSStS6SSSVqUkkmStS6SZJK1LpJkkrUukmSStS6SSZK1LpJk6VqUkkmStS6SZOlalJJJI2pSSZ
+ JK1LpJkkrUukmToWpSSSSVqUkmSStS6SZJK1LpJkkrUukmTpWpSSSSVqUkkklalJJkkrUukmSStS6SSS
+ VqUkkklalJJJkbUukmSStK6SSSFqUkkklalJJJJWpSSSSVqUkkklalJJJJWpSSSSVoUkkmStSkkySVqX
+ STJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqX
+ STJJWpdJMklal0kySVqXSTJJWpdJJJK1KSTJJWpdJMklal0kySVqXSTJJWpdJMklamSSinStS6SZJK1L
+ pJkkrUpJJJK1LpkkkLUpJJJK1LpJkkrUukmSStS6SZJK1LpJkkrUukkmStS6SZOlalJJk6VqUkmSRtS6
+ SZOlalJJJkrUpJJJK1KSSSStSkkkkrUpJJJK1KSTJJWpdJMklal0kkkrUpJJJK1LpJkkrUpJJJK1KTpk
+ krUukmSStS6SZJC1LpJkkrUumSSRtS6ZJJJSkkkkVKSSTJKXSTJJKXSSSSUpJJJJSkkySSl0kySSl0ky
+ SSl0kySCl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl06ZOkpSSSSNqUkkmQtS6SZOlalJJJkLUukm
+ SStS6SZOlalJJJJWpSSSSVqUkkklalJJJJWpSSZJK1LpJkkrUukmTo2pSSZJK1LpJkkrUpJJMlal0kyS
+ VqXSTJ0rUumSSQtS6ZJJK1LpJJJWpSSSZK1LpJkkrUukmSStS6SZJK1KSSSStSkkkkrUpOmSStS6ZJJG
+ 1KSSSStSkkkyVpUkklCVpUklCUJWhSSUJQlaFJJJQlaFJJQlCVoUklCUJWpSSUJQlaV06inStS6SZJK1
+ y6SZJK1LpJkkrUukmSStS6SZJK1LpJkkrWrpJkkrUukmTIpZJKKSKmSSikgpkkopJKZJKKSSmSSilKSm
+ SSilKCmSSjKSSl0kySSl0kySSl0kySKl0kkkkKSSSSSpJJJJSkkySSl0kkklLpJJklLpJkklLpJkklLp
+ JkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkkVKSSS
+ SUukkkkpSSSSSlJJJJKUkkkkpSSSZJS6SZJBS6SZJJSk6SSSlkydMkpdRcpKLklNexAKPYgFJTJissVZ
+ issSUlSSSSUunUQpBJSkykmSUxhOnSSUskkkkpSdMnSUpJJMkpdJMkkpdMnSSUpJJJJSkkkklKSSSSUp
+ OmTpKUUCxHKBYkpqPTNTvTNSU2K1Yaq9asNSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Xr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkkFKSSSSUpJJJFSkkkkVKSSSSUpJJJFSkkk6FKWT
+ KSZClLQnhJOlSloShOlKVKYwknJUCUKUsShucncUJxRpSxcoEpyowipeVIFRhOElJAVJQBUpRTSxUSFI
+ lMjalAIgCiFMFG1MSEIorkMpWpYIgQwpgpWpkQokJ5SlC0LbUtqmE6SkcJKRUSUlLylKgSmlJTIlRSlI
+ JIXCdME5SUoppTEpgUlMwpAKLVNJKyUpiUMuSUklNKhKkEkrpQpAKUJKtHCaEQhQKSrYypAqKcI2hKE5
+ Ci1TCXEhGWqEI5CgQmlTAKYUSEpTVJQkUIPUg5NpSioFE5USEKUiKSkQoo0pkCiBCCmCjSmRQnohKE4p
+ wUjKIxCJRWJ1pbdaMECtHCVqUVEpymStTEppUoTQhalpTgpoTphUyCdRCkE2lLpJJIgKUmSTJ6lJkkkl
+ LJJ0ySl0kkklKSSSSUskkkkpSdMnSUuE6YJ0lInqq9WXqs9JTAI9aAEetJTYapqDVNJSkkkklKSSSSUp
+ JJJJSySSSSlJJJJKUmhSTJKWTpJJKXTqKeUlLpJpSlJSimSSSUpJJJJK6SSSSLUkmJTSkq2SSYJwklSS
+ eEkVLJJJpSUpOoynCSl0oTpJKWSSTJKXTJ0kFLJJJIIUkknSUsknTJKWSTEpSkpkkmCcJKUknhKElLJJ
+ JkkLpJk6SlJJ0klLJJ0klWsknSSVaySdJJVrJJ0klLJJ0klLJJ0klLJJ0kkrQlCknhBTCElOFEpKUkmS
+ SUpJOkkpZOkmSUukoynlJSkk6SSlkk6ZJSkkkklKSSSSUpJJJJSkkkkaUpJJJKlKSSSSpSkkkkqUpMkU
+ 0pKXTqMpSklkkmSSQukmSSUukmToKUknTJKUkmSlJS6SZOkpSSdJJSySSSSqUmlMSmlJNMpSUJTykqmS
+ dQlPKKGSSZOkpSSdKElLJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTJKUkmJTSkpk
+ koynlJS6SSSSlJJkpSUukknSUsknTFJSkk0ppSUyTJJJKUkknTqUskkklSlJJJJUpSSSSVKUkkklSlJJ
+ JJUpSSSSVKUpJkkqUukkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJpSlNKV0k0pIKpdJR
+ lKUlUySUQVJFCkkk0pKXSTSkCghdJOE8JKYpKUJklLJk6SSVkkkklKSSTpKWSSSSpSkkk6VKWSSSSpSk
+ kkkqUpOkmSpS6SjKUpIZJKMpwkpeEoThJJS0JJ1Eo0ldJRlKUqUySTSnSpVKTpkpSpVLpk0pSlSlJJkk
+ KUukmSSUukmSSUukmSSUukmSSUukmSRpS6SZJKkrpJkkqUukmSSpC6SZJKlLpJkklLpJkklLpJkklLpJ
+ kklLpJkklLpJk6SlJJkkqUukmTpKUknSSpSydJJJSkkkklKTwknQUtCSdJK1LJJJIqUkkkkpSSSSClJJ
+ JJKUkkkkpSSSSSlJJJIKUkkkkpSSdJJSySdMkhSSaUpRTa6SaUklLpJpTSkpkkmlKUlLpJJIppSSaU0p
+ KpdJKUk9CkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUnSSSUpJJJBSkkpSlJNKSSToKpZJOkkqlkk6YoIUlKYlNKSmUpKEqQKSLXSSSSSpJNKSSaXS
+ SSSQpJJJKlKSSSSpCkkkkqVakkkkqSpJJJGk0pNCdKEEUxSUoTQgqlkk6ZJCkk6UJKWSTwlCSaWSTpkl
+ UpJJJJCkkk6SlJJJJKUkkkkpSSSSSaUkkkkmlJJJJItSSSSVKtSSSSVJUkkklSlJJJIotSSdJKlWsknS
+ RpSySdMlSlJJJJUpSSdJKlLJJ0yVKUkkklSl0kkkKUpJJJKlKSSSSpSkkkkqUpJJJKlKSSSSpSkkkkaS
+ pJMmlKlMklGU4SpC6SSdKlLJJ0yVKUkkkhSlJJkkk0ukmSlJVLpJpToIpSSdJJSySSSSlJJJ0lLJJ4TI
+ qUkmKaUqUySUZTo0pdJJJKlKSTpJUlZJJJBSkkySSF0kySSl0kySSl0kySSl0kySSl0kySVKXSTJJUpd
+ JNKUpUpdJNKdKlUpJMklSaXSSSSpVKSSSSpCkk0pSlSl0k0p0qUpJJJKlLpJkkErpJkklLpkkkkWpOmS
+ SVa6SZJJK6SaUklLpJkpSQumSSSUsknSRpSySeEyVKWSTpJUmlk6SSVKUkmSQpaukmTpJUkmSSUukmSS
+ TS6SSSSFJJJJKUkkkki1JJJJKtSSSSSVJJJJKUkkkkmlJJ0oSQsknKiUkWpJRlKUlWzSUQVIJUlSSSSN
+ JpSSZJKlUukkE8JUhZJShNCVIWTpJJUpSSSSNJUkkkhSlJJJJUpSSSSVKUkkklSlJJJIUpSSSSVKUknS
+ SpSySeEkqUskkkjSlJJJkqUukmTpUpSSdKEqUsknTI0pSSaUpSpSkkk6apZJOkkpZJOkkpZJOkkpZJOk
+ kpZJOkkpZKE6SSFk6SZJS6SZOkpSSdPCSmKSdMklSSZJJS6SjKUpKZSlKjKaUlM0lGU6Sl0kkkQpZJJK
+ U5Skkk6SloSUkySlkkimlBS6SaU6Sl0ySdJSySdJJSySSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUnSSSUpJJMlSl0ySSVKUkmlKUqUukmlOlSl0ydJKlKSSTJUpdJMklSl0kkkqUpJJJLhUpJJJK
+ lKSSSSpSkkkkKUpJJJGlKSSSSUpJJJJVLJJJJUmlJJJ0lUsnSSQVSkkkklUpJJJKkKSSTSlSl0k0pwkp
+ SSeEoSUxSTlJJSySSSSlJJJJUpSSSdKlLJJ0ySlJJJ0aUskknSUsnhIKQCVJYwkpKJSpKklElKUqQyST
+ Ap0qW2qEkkkqTSkk0pShSuFdJNKdKkUpJJNKVKUkkklSlJJ0oSpNrJJ0kkrJJ0klLJJ4SSRaySdJJFrJ
+ J0klLJJ0kk0xSTpJwUsknShFSySeEkFLJJJJKUknhKElLJJ4TJKUkmTpKUknShJSkkk0pKXSSlJJKkk6
+ SSKWTpJklUumTSlKSqZJk0p0lKSTpJIWTpk0pKXSSTopWSTpklKSSSQUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkk6SlJJkklLpJkklLpJkklLpJkklL
+ pkkklKSSSQUpJJJJSk6ZJJSkydJJSlFymouSU1noBR7EApKZsVliqsVpiSkgSThJJSgpJgkkpdJKUySl
+ JJJklLpJkklKSSSSUpJJJJSkkkklKTpJJKUkmSSUukkkkpSSZOkpSdMnSUooFiOVXsSU1Xpmp3qLUlNm
+ tWGqvWrDUlLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJNUpJJJJSk6ZOipZJJJFSkkkkVKSSSSUpOmToqWTpJIpUmTpikpSZOmQSsVAqZUCkp
+ GVAhEIUSEFMITQppQgphCSlCYoKWlPKikkplKSinCKCzCkFEIgCSGJCgQikKBCSkZTSnKikplKkChhTC
+ SkgKeUOUiUlMiUMlIlQJSQvKSZSASUoKQSAThFS4TEKQShJSMhMAiwmhJSzVOVHhMSkpZxQyplNCSmIC
+ K0Jg1TCSmYCdRBSJSUsUMlSJUCkhSkFEKQTCpmFIKITyhamUpiVEuUC5OUyKGU8pRKKmKkCn2p9sIpZA
+ pEqEwmLklLlRhKZUwElMQFKFMNTkIKRFCcUZwQHoKYSisQUWtBTbrRwgVowQSukkkkpUJoTpJKYwmUky
+ KlJwop0VMkkkySlJk6ZFSkkkklKSSSSUskkkkpSSSSSlJJJJKUnTJ0lLhOmCdJSF6rPVl6rPSUwCPWgB
+ HrSU2Gqag1TSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJJJkkqSSSSQpJJJJSkkkkkKTpk6SlJJJJKXTJ0
+ ySFimTpQkpcKQUU4RSyTJJFJTEqJUiolJKpTgqKcFJLMFPKhKeUkrkpkxKZJTKU6iE6SlJJJIIUnTJ5S
+ QpMQpJighGQkpEJQkpYKYTAJ0lLpJSmJQQoqKdJJSydPCUJKWTymKaUEMpSlRlKUlMpSlRlKUVMpSlRl
+ KUlMklGUpSSySUZSlJTJJRlKUVMpTSmlNKSQzBUgUIFTBSXM1Ep5TFJTEpJFJJS4TpBOkpYqBU0xSUwT
+ hKEklLhOopSkplKZRTpKXSTJIoXSTJJKXSTJJKXSTJIqXSTJJKXSTJJKXSTJJKWTKUJQmlLGE4ClCeE1
+ SwCUKUJQipjCZTIUYSQoJwmTpIXhMU6YpKYlMpFNCSVBSCYBOklSSSSSVJEJ06SURCiQjEKO1JSKE8Im
+ 1LakphCcKUJoSQoKQUU6S1kmSlMghRTJ0ySF0kkk5cumTpkUqSSSSQpJJJJSkkkkFKSSSSUpJJJJSkkk
+ 8JKYlNCnCaElMITgKUJwElLAJKUJiElMSmUiE0JKXThMFIJKVCYqSYpKRlKFKEoQQsAnTwlCcErJJJJ6
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ySSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0ySSS
+ limTpQmFcFk6eEoQXMSmUiE0JLSoKQTAKQSQVKJUlEoLVpTgpkkkMwVJQBTykpkSokpiVGUlMklGU6Sl
+ 0kySKV0kySSV0kySSl0kySKl0kySSl0kySKl0ySSSFklKEoTCtYqQShOEFLhShME6KQsQoFEUCnBcwKZ
+ SIUUUsgU8qITpJXSSTwkpikpwmhJTFJShMgtWSTpQghZJPCUJKWSTwlCSlkk8JQklZJOkilZJOnRSxST
+ pJIWSTwlCSFkk8JJKWSTwkgpZJOkgpZJOkklZJOkkpZJOkkpUJ4SAUoRUwhMQiEKJCKmKdMkkpkkknSQ
+ sknhKEChiknKZNUuFJQlPKaVMpTSmlMgpeUpTJJ4UvKUppSRSvKdRSSUukmlKUkrp1FKUlMkyZJBS8pS
+ mSlJC8p1FJJDKUk0ppSQuSmJTEppSQvKSZOAklcJ04CeEVMEymQokJLlk4TJwkuDIJQkFJJLAhRRITEI
+ hTBOkmTlpXSTJIoXSTJJKXSTJJKXSTJJKXSTJJKXlKUySSl5STJJKXSTJJIXSTJJKXSTJJKXSTJJKXSS
+ SQUpJJJJSkkySKl06ZOgVKTJ0xTErJJJJLwuE6ZOkuXTpgnSWlSYqSYpLCjKgUUhQISWliFIJQnASQuk
+ nSSXBZJJJJkUkkkihSSSdJapJJMisK6SSSSFJJJJLwpJJJFepOoylKaUskoTAqQQUxhKFOEoSWFjCUKU
+ Jklq0JQnTJMgWTJ0yS9ZJJJJjKkkydJaukmTpKUkkkkpSSSSTIFJJJJKKkkkkWIqSSSSQFJJJJLwpJJM
+ kkrpJkklhXlPKjKUooZSkoynlFcF0ySSKVJJJIrl06ZOkpSaE6dJTGE0KcJiEELJkikghSSSSCFJJJIK
+ UkkkkpSSSSKVJJJJJUkkkilRUSpJoRQWKkE0J0VrIJ1FKUkrymlNKaUEspSTJ01KkykmIQSxSlOQooKX
+ BUgVBIFBCQFPKgCnlJS5TSkVGUkMgVIFDBUgUVrJMUkiiFMSmTlNCKlBSTAJwildOmTpyVJJkklKTJ0l
+ HJSySeEoTFLJJ4SSQpMnSRQsknShFSydJJJSySdKEUrJJ4ShFLFJOkklQTpBOkliknhMkpcJJJJKUmTp
+ kkLJJJkkLp1FOktXlKUydJSpSlMkguXlKUySCivKUpkkGMrykmTJJDJNKZJBlC8pSmSSUV5SlMknMa8p
+ woqQRUyCSQToqWTKRUUlwWTJ0yK8LpJJ0FpWTKUJQgxFaEoTwnhNXBjCaESExCC9gknhJJSkkySKl0ky
+ SSwrpJk6SxSSZJFIXSTJ0l4UkkkkuUkkmSSyCdRSlJYVyoFOUyTGxKQClCcBFKwCmAnAUoSXBjCiVMqJ
+ RXhgknKSS5cKYUApApMZXTFIlRJSWrpJkkQkLpJkkUrpJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSl0ky
+ SSV0kySSlJJJJKUmUoShFTFOE8JklLhOmSlJSimKdKElMYSUoSISKmKdJMoyldJMkgpdJMkkhdJMkkhd
+ JMkihdJMkkpdJMkkhdMUkySlKQUU4SUzCSjKUpKXKYpSmSUsknTgJJYwmhEhLakpHCUIm1NCSWAUgnhO
+ kpZJOmKISsUydRTlLhSCiE4QUySKUpJKYlMVIpiEFMVIJQnhJSkk8JIKWTJ0ySlJJJIKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSKlJJJJKUkkkkpSdJJFCk0KSZOUsmUoTQkpiknhJJSycJQnARQuE6QSSUsUxKcqBRU
+ vKUpkklMk6ZOkpSSSSSVJJkkFLpJkkEqSTJJKXSTJ0EqTpkkEKSSSSSumTpJJUkmSSUukmlKUkKSTSnQ
+ UukmTpKWTKSYhJCykE0JwkhkEikkSkpiUydMkpSdJJJSkkkySl0kkklKSSSSUpJJJFKySdJJSgpSoJSi
+ pkSoEpiVGUkqJSCUKQCS0rhSASAUwElrGFEohUSEF8WCSchJJlUknhPCS0sUykQokJMZUnCZOElq6SaU
+ klLpJkkkhdJMkkuXSTJILCukmSSWLpJkpSZQukmlKUly6SZJJaukknSQsmUkySlkkkklLpJJJIWKYpym
+ KKlk4TJwklkE6ZOkliVFSKikuVKcFMkkplKdRThJK6Yp08JKYFMpwmhBDFOEoTwkhdIpJiktWJTSkUyS
+ mQTpgnTkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSClJk6ZJSkydMkpdJJJJS6i5SUXJK
+ a1irlWLFXKSmbFaYqrFaYkpMEkgkkpSZOkkpZJJJJSkkkklLJJJJKUnTJ0lLpJJJKUkkkkpSSSSSlkkk
+ klKSSSSUpJJJJS6dMnSUoqvYrBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk6ZOkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ p//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKTpkklKSSSRUpJ
+ JJJSkkkkrUpJOmRtSk6SSKVJiUkxSUqU0pkxSUuSokpFRKSlEqJSKZGlKSTJ0qUtCYhThKEuFSMhRIRS
+ FEhLhSjSBTkKMJUtKVpRQUFqK1CkMyhuUpUSlSkZCaFMpAJUpiGqQapAKcJUpEQolFIQ3JUpGUykQkAl
+ SlAKYCYBSASpSkk6ZJSpTyopSkpnKYlRlMSkpRKjKYlMkpmFMBQaEQJIVCUpKJKCl9yaVAlIFFTNNCcK
+ cIKRwpBOQmQpTIJiUkxSpTBxUCVMhDIRpTIFEaghFaUaUmATEJApyjSULlBEcFEBKlKaEUBRAUkqUzBS
+ JQy5NuQpSnID0UlCcm0pGisQ0RiFKbdaMECtHCCV0ydMkpdMnTJKUmTpklLKSinCKmSZJOipZMnTJKUk
+ kkkpSSSSSlkkkklKSSSSUpJJJJSk6ZOkpcJ0wTpKQvVZ6svVZ6SmAR60AI9aSmw1TUGqaSlJJJJKUkkk
+ kpSSSSSlkkkklKSSSSUpMnTJJUkkkkhSSSSSlJJJJIUnTJ0lKSSSSUukmTpKWSTpklKSlMUkVLykmTpJ
+ UoqSZJKyZShKElLJJJ4SSsnATgJ4SSsAnhOkkpaEoSlMSjSFJJiVHcjwrUkpIe5OHJcKkiSiHJ5Q4ULp
+ kxKiSjwqZSmlRlNKXCpnKkEIFSDkuBCUJFQDk+5DhUohRhPKaUuFSoTppSlLhUukmlKUuFS6SaUpS4VL
+ pJpSlLhUukmlKUuFSoTppSlLhUqE0J5SS4UhUKQCZKUuFczTKO5LclwpXSUZSlHhQyTyoSlKXCpmkoSn
+ lLhUukmlKUOFS8JoTynSpTGEoUk0pUpaEoSlKUaUvCUJpSlKlLwlCaUpSpC8JQmlKUqUvCUJpSlKlLwl
+ CaUpSpSoShKUpSpS8J4UZS3IcKWcJ4UNyfchwpZJKO5NuS4UMioptybcjwoZJKG5LclwoSJKG5LclwqZ
+ JoSlKUuFK8J1GUi5LhSuSoymJUZR4UpAVIFB3KQclwpTJIYcn3IcKmcJQob0t6XCpkQmITbk25LhQpJN
+ KaUuFayTwoynBS4ULwlCUpShwqVCUJSmlHhSulCaUpR4UrwkmlKUqUukmlKUqUvCUJpSlDhUvCUJpSlL
+ hUukmlKUuFS8J1GUtyXCpmko7ktyXChkkobktyXCpmmKhuS3I8KmSaE0p5Q4VLgKSjKUpcKmaZRlKUuF
+ S6QUZS3JcKmaZR3pbkeFS5CaEpTSjSl4TwoynlKlLwlCaUpSpS8JQmlKUqUvCUJpSlKlLwlCaUpSpS8J
+ QmlKUqUvCUJpSlKlLwlCaUpSpS8JQmlKUqUvCUJpSlKlLwlCaUpSpS8JQmlKUqUvCUJpSlKlKhKEpSlK
+ lKhOmlKUKXBkkoylKHCuZQmhNKeUuFBVCdRlLclwrWSaE25KUuFaqE0J5SlLhQqEkpSlLhUsQmhPKUpc
+ KlAJ4TSlKXCleEoTSlKXCleEoTSlKXCleEoTSlKPCpeEoTSlKXCpeEoTSlKVKXShNKUpUhdOAoylKVIZ
+ gJ4UNyfcm8K1eElHcm3JcKmaeUPclvTuFKSUxQ96W5HhXMioptyUpcK5kkmlKUqUyCkFCU+5KlJEyhuS
+ 3JUpkUyjuS3IcKGSSjuS3JcKGSSjuSlDhQySUZT7kuFS6SjKW5HhSySUdyW5Kksk6huS3I0lkko7ktyV
+ KZJKO5LclS1kko7ktyXClkko7ktyHCpkko7ktyXCpmkobktyHCpmmUdyW5LhUySUdyW5HhSzTyhbk29H
+ hQlJTEoe9LclwqZJKMpSlwqZhSCGCpShSmaShuS3JcKGRUU25KUOFC6SaUpQ4FMoShNKeUOBSoTQnlNK
+ cIqUlCaUpR4UrwkmlKUOFS6SaUpS4UrwkmlKUuFS6SaUpS4VLpQmlKUuFC6eFGU8pcKF0oSlKUOFDEhK
+ E5KaUuFSgFMBRlOClwqZhOobk29HhUzKgUxem3I8K4LpwoynBS4VwZhPKhKW5DhXM5TFD3JbkeFDIpQo
+ 7k8o0tKoTwmlKUqQvCUJpSlKlLwlCaUpSpSoShKUpSpSoShKUpSpS8JQmlKUqUvCUJpSlKlLwlCaUpSp
+ C8JQmlKUqUvCUJpSlKlLwlCaUpSpS8JQmlKUqUvCUJpSlKlLwlCaUpSpS8JJpTbkqUyTKO5KUOFLJKE0
+ pwUuFeF4SSlKUKXMgnUZSlKkFkkoymLkuFYVymhNuSlLhWFeE4CjKUpcKGSUJpSlLhXheEoTSnlKl6oS
+ hKUpSpBVCUJSmlKlpXhKE0pSjS0rwlCaUpSpaukmlKUqZAulCaUpSpeohNCeUpQIUuApAKMp9yFKZpiV
+ AuTF6PCsLMlRJUC9R3I8K0JJSlDlKUuFkizlJRlKUuFeyShRlOClwsZXhPCQKdNpatCUJyU0o0pSSaUp
+ S4UhdJNKUpcK8LpJpSlKkldJNKUpcLCV0k0pSjSAukmlKUqZAulCaU4KFKKoShPKUoUsLGE0KRKjKKFQ
+ nTSmlGlzJOobktyKWaZRlPKK5dOoynlJTJPKhKaUKUklJD3JbkqUzhNCaU8oUtVCUJSlKCFQlCUpSkpU
+ JQlKUpKVCUJSlKSVJJSlKSVJQlKUo0pUJQlKUoqKoShKUpSWrJkiU0oqUkmlPKFLlwFIBRBUgUKSyhKE
+ 0pShSViExClKSFKYQmhTTJUhYBPCSdKlLQmIUpTEpUhaE4TSlKVLWSSjKeUaUvCUJpTyjSlQnhNKUoqZ
+ QmTbkpSXKSTSmlFTJOoSn3JpCmaShuS3JvCpkko7ktyXChkko7ktyPChkko7ktyXCpkko7ktyPCpkko7
+ ktyVJZplHcluSpK5TJpTSjSWYTqEpSlSWZTKMpiUqUylPKHuS3JcKkiSgHKUpUheE0JSlKFIVCeE0pwU
+ qWqhKE8pShSVoTQnJTSlwrlJQlKUpcKCpJKUpS4WMqhKEpSlLhSFoShKUpQ4WUKhKEpSlHhUVQlCUpSl
+ wrCqE4TSlKPChmE6HuT7kqUzUSlKaUqXBSUJpTyjTIF4TwmlKUKWldJRlMXJcLEWakhbk4ckYpCVMVHc
+ kXJvCyKITQkSmlLhUvCaEpSlHhQqE8JpSlLhWFeEoTSlKXCsVCUJSlKXCkKhKEpSlLhZAvCUJpSlLhXL
+ wlCaUpS4VKhKEpTylwrCtCUJ5TSlSxeE6juTbkeFSQJ5QtyW5HhXBISokqG5NKXCyBkkoylKXClmE6hK
+ cOS4VhZJQmlPKFLFoTwlKUpUlUJQlKUopVCUJSlKSlQlCUpSkpUJQlKUoKVCUJSlKSlQlCUpSkpUJ4TS
+ lKSl4ShKUpSSqEoSlKUlLwlCUpSlSl4SUdybclSmSZR3JSjSl0pUZSlGlM08ocpbkqUkSQ9yW5ClMymh
+ NuSlN4UrwlCaUpS4VLwlCaUpS4ULwlCaUpS4ULwlCaUpS4VLwlCaUpS4ULwkmlKUuFC8JQmlPKXCpeEo
+ SlKUqUqEyRKaUuFSkk0pSjwpZBSAUJThyXCpIElDclvQ4Us0xUN6YuR4UskpUNyjuS4VJJSQ9yeUuFTJ
+ MlKaUaUunChKW5LhUklPKFuT7kuFSRJQ3J9yHCpknUNyfclwqZJk25NuS4VLlMmlKUuFS6eFGU8ocKl0
+ k0pShwqXSTSlKXCpdJNKUpcKl0k0pSjwqXSTSlKXCpdJNKUpcKl0k0pSlwqXTqMpSjSGSShKUo0pmkoy
+ nlKlKKZMSmlKlMgpAKAKkClSmcJiEpTEoIWITQkSlKKlQnhIFPKSloShOSmlJS6aE0pSkpeEk0pSkpeE
+ oTSmlBK8JQmlKUErwlCaUpSpS8JQlKUoUpUJ00ppRpLJJR3JtyPClkkoynlLhSumSlKUuFCk6aUpS4UM
+ k6hKW5LhUzSUdyW5LhQunUdybclwoZpKG5LchwqZpoTSnlLhUqEoSlKUuFSoShKUpS4VKhKEpSlKlKhK
+ E0pSlSl4ShKU0o0leE8JpSlKlKIUSE8pJUpjCUKSZKkqAUgFGUtyVLSkCeULcluR4VqQlMSobkpS4WSL
+ JMmlNKXCyJE6HuThyHCtLOE0JtyeUKYytCaE5KaUqWqSTSlKNIXTqMp5S4VwXSTSlKVLl0yUpSlSwrwm
+ SlKUOFYpKE0pSlwskV4ShNKUo8K9lCUJpTyhwrSvCeFGU8pUheE0J5TShSlQlCUppRpC8JQmlNKVKXhN
+ CUpSlSlQnATSnlKkrwnhRlPKVJUQowpSkEKSxhKFOEiEko0gnITJJZBSCgCpAoKXSKUppQQskkmSQumK
+ dMgtWKaFJJFSwTpJJyVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJBSkydMkpSZOmSUukkk
+ kpdRcpKLklNaxVyrFirlJTNitMVVitMSUmCSQSSUpJJJJSySSSSlJJJJKWSSSSUpOmTpKXSSSSUpJJJJ
+ SkkkklLJJJJKUkkkkpSSSSSl06ZOkpRVexWCq9iSmq9RapPUWpKbNasNVetWGpKXTJ0ySlJ0ydJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJT/AP/Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJBSkkkklKSSSSUpJJJFS6SZOipUJoUkySmBCaESE0IpRwmhFhMUVIiFGEQoZcipaE4CgXqPqB
+ FScBPCB6oS9YIqSlRKC68IZyAjSmxCQaq4yApi8IEILYDU6r/aAonJCbSG0SoEqscgJvWlKlNiU4Kriy
+ VMOSpTYBUpQQ5OXJUpk5yCXKL3oRelSk4KmAgMcrDSlSl4SSJUHPhCkM5SQTYm9VKlJkoQxYpByVKXhN
+ CUpSlSloThqcKQSpSgFKEpUSUKUoqBTlyjKVKWISCdJKlMwVKUAvhN6qVKbBKZAFqmHylSkqUJgVJJTE
+ tUC1EJUSU5SOFIBOnARUyCkohPKSViE0JFygXpKSSokoZelulBS5KSYaqQCCllByIQhOQUwRGISIxNKm
+ 3WjhArRggldJJJJS6SSSSlkycpklLJwmThJS6SSSKlJk6ZJSkkkklKSSSSUskkkkpSSSSSlJJJJKUnTJ
+ 0lLhOmCdJSF6rPVl6rPSUwCPWgBHrSU2Gqag1TSUpJJJJSkkkklKSSSSUskkkkpSSSSSlJk6ZJKkkkkk
+ KSSSSUpJJJJCk6ZOkpSSSSSlJ0ydJSkkkklMSmUimhJSgnSATwilZJOmSSpKEkkkqTgJk4SSyASSUXFJ
+ KiVAvQ3vhVn3wiFNz1Am3hZrsoBQ+2BSgLS6Zeol6zvtYSOUE6lrfNiQsWacoJvtSVKdUWJ/UWWMoKX2
+ oIUp0jYmNizftQS+1JUh0d6bes/7SEvtKSnQ3p/UWb9pCX2oJIdP1U/qrK+1JfakFOr6qXqrL+1Jfakl
+ Op6qXqrL+1JfaklOp6qXqrL+1JfaklOp6qXqrL+1JfakqU6fqJeosz7Ul9qRpLp+ol6izPtSX2pKlOn6
+ iXqLM+1JfakqQ6nqpeqsv7Un+1IUkOn6qY2rMOUoHLQpc6vqpC1ZP2pTGUjSnVFifes0ZKf7SEqU6O9P
+ vCzftQTfawkp094Tb1m/awl9qCVKdL1E3qLOOSFE5KVKdQWpxasr7UnGUhSnV9VMbVmfakxykqU6Xqpv
+ VWb9pS+0o0p0/VS9VZn2lL7SlSHT9VL1VmfaUvtKVKdP1UvVWZ9pS+0pUp0/VS9VZn2lL7SlSnT9VL1V
+ mfaUvtKVKdP1UvVWZ9pS+0pUp0vVTeqs05Kb7SlSXU9VP6qyxkp/tKFJdP1U3qrO+0pvtKVIdL1U3qLN
+ +0p/tKNIdD1EvUWd9pS+0pUh0vUTixZv2lOMlKlOmLEt6zxkpfaUqS6HqJvUWcclR+1BKkulvS3LPGSF
+ L7SEaS3d6XqKgckKP2kJKdIWJeos37SE/wBpQpTo+qm9VZpyU32lKlOp6qXqLMGSpfaUqQ6PqJvUWd9p
+ TfaUqQ6Xqpxasz7Sn+0pUh1PVS9VZf2lP9pQpTpeqm9RZv2lL7SnUl0vUS9RZv2lL7SlSXS9RL1Fm/aU
+ vtKVKdL1EvUWb9pS+0pUp0vUS9RZv2lL7SlSnS9RL1Fm/aUvtKVKdL1EvUWb9pS+0pUh0vUS9RZv2lL7
+ SlSnS9RP6izftKX2lKlOj6iY2rP+0qJyUqU6PqpxYsz7SnGSjSnUD1IPWYMlP9pCFKdL1EvUCzDlhROW
+ EqU6nqJeosr7WE4yglSnTNiibFQ+0qJyUqU6HqpC1Zv2lIZKVKdT1UvUWYMlP9pTVOl6iXqLN+0pfaUl
+ Ol6iXqLN+0pfaUlOl6iXqLN+0pfaUlOl6iXqLN+0pfaUlOl6iXqLN+0pfaUlOl6iXqLN+0pfaUlOl6iX
+ qLN+0pfaUlOl6iXqLN+0pfaUlOl6iXqLN+0pfaUlOl6iXqLN+0pfaUlOl6iXqLN+0pfaUlOl6iXqLN+0
+ pfaUlOl6iXqLN+0pfaUlOl6qXqrM+0pxkoqdQWKQeswZKmMkJUuDob028KgcoKBywlS5096W9ZoygpDJ
+ CVILfL1E2KickIZyUqWl0fUT+osz7Sn+0pUtdL1EvVWb9pTHJQpDpeql6qzDlJvtSVKdT1U/qLK+1J/t
+ KVKdP1EvVWb9pTfaUqS6fqpeqsz7Sl9pSS6fqpeosz7Sl9pSS6fqJeosz7Sl9pRpTp+ol6izPtKX2lKl
+ On6iXqLM+0pfaUqU6XqJeqs37Sl9pSpTp+om9VZv2lI5KVLS6Xqpeqsz7SkMlNpa6nqJeos0ZKf7Skp0
+ DYo+qs85Kb7SnJdH1U/qLN+0JxkI0uDpCxPvWb9pT/aQjS50t6f1Asz7UEvtYQpTp+omNizftQTHKCVK
+ dE2peqsz7Sl9pSpTp+on9RZoyU/2lCkOj6iXqLO+0pfaUlro+ol6izvtKX2lBTo+ol6izvtKX2lJTo+o
+ l6izvtKX2lJLo+ol6izvtKX2lGkuj6iXqLO+0pfaUqS6PqJvUWf9pTfaUaQ6PqJeos77Sl9pRpDo+ol6
+ izvtKX2lKlOj6iXqLO+0pfaUkuj6iXqLO+0pfaUFOl6iXqLN+0pfaUlOl6ib1FnfaUvtKSnS9RL1Fm/a
+ UvtKVKdE2JvUWf8AaUvtCNKdAPUg9ZwyAnGSEaU6O5PvWd9qCX2oIUp0d6W9Z32oJ/tIS4UN82KJtVA5
+ KgclKlOj6qf1VmfaU/2lCkOn6iXqrM+0pfaUFOn6qf1VlfakvtSCnV9VN6qzPtSf7SjSnS9RL1Fm/aUv
+ tKNJdL1EvUWb9pS+0pKdL1EvUWb9pS+0oJdL1EvUWb9pS+0pKdL1EvUWb9pS+0pKdL1EvUWb9pS+0pId
+ L1E/qLM+0pfaUkOoLE/qrL+0p/tKVIdL1E3qLN+0pfaUqU6XqJeqsz7SmOSjSnSNqY2rMOSm+0pUp1PV
+ TixZYyURuSjS50w9TDlmjJCl9pCFLg6G9RL1ROUFA5QS4VzfL1H1FQOSFH7SjSi6XqJ/VWZ9pS+0pqwu
+ n6qXqLM+0pfaUEOn6iXqLM+0pfaUlOn6iXqLM+0pfaUlOn6iXqLM+0pfaUlOn6iXqrM+0pfaUlOn6qXq
+ rM+0pfaUlOn6qXqrM+0pfaUlOn6qXqBZn2lL7Skh0/UCXqBZn2lL7Skp0/VS9VZn2lL7Skp0/VS9VZn2
+ lL7Skp0/US9RZn2lL7Skp0/US9RZn2lL7Skp0/VS9VZn2lL7Skp0/UUfVWd9pTfaUVOl6iQsWb9pTjJR
+ pIdMWKQsCzPtQS+1hCl4dT1Al6gWX9rCb7WEqXur6gS9RZQywpDKCFLS6RsUTYs/7SmOSlSwuh6icWLN
+ +0qQyEqWF0fUS9RZ/wBoTHJSpDo+ol6izftKb7SlS+Lp+ql6qzPtKX2lKl7p+ql6qzPtKX2lKkOn6qXq
+ LM+0pvtKVILp+ql6qzPtKX2lGlhdP1UvVWZ9pS+0pUtdP1UvVWZ9pS+0pUyB0/VS9VZf2lP9pSpe6gtT
+ +ossZKkMlGlOn6qY2rN+0pjkpUp0Tam9RZv2lL7SlSwuj6ifes4ZKkMkIrHQDk+5UBkhP9pCVMsW9uTF
+ 6onJCickJUvb/qJxYs05KX2lCmMuoLU/qrL+0p/tSVLXSNqY2LN+0pvtKVKdL1UvUWb9pS+0pUp0vVS9
+ RZv2lL7SlTIHS9RL1Fm/aUvtKVJLpeol6izftKX2lKmEul6iXqLN+0pfaUqQHS9RL1Fm/aUvtKVMgdL1
+ E4tWZ9pS+0oEKLqeql6qy/tSX2pRlYXTNqb1Fm/akvtKSHRNiY2rOOSonJRXOj6qcWLM+0qTclFLph6m
+ HrNGQp/aQiudDen3hZ32oJvtQSU6O8KJeqH2oJvtISU396b1FR+0BROQkh0fUS9VZv2lL7SmodL1UvVW
+ b9pS+0oIdL1UvVWb9pS+0pKdL1UvVWb9pS+0pKdL1U/qLM+0pfaUkul6qXqrN+0pfaUkul6qXqrN+0pf
+ aUVOl6qf1VmfaU32lFRdT1U3qrM+0pfaUaWul6qXqLN+0p/tKSnR9RL1Fn/aEvtCC4Oj6iXqrNOSm+0p
+ JdT1U/qrJ+1JxlJJdX1U/qLKGUpfakKU6nqBL1Asv7UEvtYSpDp+oExtCzDlhR+1hKlOr6oTeossZYUh
+ lJUh0TYm9RZxyUxyUqWuj6qf1Vl/aU/2lFTp+qn9VZf2lL7Skp1PVTeqsw5Sj9qSpTq+ql6qy/tScZKN
+ JdP1EvUWZ9pT/aUqU6XqJ/UWZ9pT/aUFOl6iXqLN+0pfaUlOl6iXqLN+0pfaUkOl6iXqLN+0pfaUVOl6
+ iXqLN+0pfaUqU6XqJeos37Sl9pRpTpeom9RZ32lL7SlSXR9RP6izftKcZKVJdLen3LOGSE/2kI0l0N6W
+ 9Z/2oJvtQSpLo71EvVH7SExyAlSm4XpvUVE5Cj9pSpTpCxS9RZgyVL7SlSHR9RL1VmnJTfaUKQ6fqpC1
+ Zf2pL7UlS11vVS9VZX2pP9qS4VB0zYm9RZv2lL7SjS90vUS9RZv2lL7SlSC6XqJeos37Sl9pQpjLpeol
+ 6izftKX2lJIdL1EvUWb9pS+0pModL1EvUWb9pTfaUlF0/US9RZn2lL7SjSwun6ib1Fm/aUvtKVIdH1FI
+ PWaMlSGQjSnS3pb1n/aQonKCXCvDo+oEhYFlnLCYZYS4V4db1EvUWYMsJ/tQS4VpdE2KBsVE5KgclKmI
+ uh6qkLVl/aU4yUKXB1RYn9RZgyU/2lCl7o+om9RZxyUxyUFOj6iXqLN+0pfaUkOn6qXqrM+0pfaUlpdL
+ 1EvUWb9pS+0pMbp+ql6qzPtKX2lJIdP1U3qLN+0pfaUmQOl6iXqLN+0pfaUqXOl6iXqrN+0pfaUqS6Yt
+ UvVWWMlP9qSpjLpm1QNqzjlKJyUqWOl6qb1VmfaU4yUaS6fqJw9ZoyVIZIRXB0t6W5ZwygpfaglS8N/c
+ mL1R+0hROSEqS3jYl6qzjkqJyUqWF0xapC1ZX2lOMpCljq+ql6iy/tKf7SgQl0vVS9VZv2lL7Sgl0vVS
+ 9VZv2lL7Skp0vUS9RZv2lL7Skp0vVS9VZv2lL7Sgp0vVS9VZv2lL7Skp0vVS9RZv2lL7Skp0vVS9VZv2
+ lN9pSU6nqpeqsv7Um+1JJdX1U/qrK+1JxlJKdT1Ujasz7UmOUkp0jam9VZZykhkoqdUWJ/UWYMlS+0oq
+ dH1Et6zTlBN9rCSnT3pi9Z32sJfagkp0C9N6iz/tIS+0pKdIWJeqs37Sm+0pKdT1E3qrM+0pfaUqU6nq
+ JvVWb9pTfaUlOp6ib1VmfaUvtKVIdT1E3qrN+0pvtKVIdP1UvVWZ9pS+0pUp0/VS9RZn2lP9pSpDpeql
+ 6qzPtKY5SVKdT1UvVWV9qS+1JUp1PVS9VZf2pP8AaUqS6fqJeos37Sn+0pKdH1EvUWd9pTfaUqS6Xqpe
+ qsz7Sl9pRpTp+ql6izftKX2lKkulvS3rO+0hL7SEkujvS9RZ32oJvtQSQ6fqJvUWb9qCcZKNKdEvUfUV
+ H7SmOQlSG/6iXqLO+0JfaEqU6XqJ/UWb9oT/AGlClOl6iXqLN+0pvtKVKdP1EvUWb9pTjJQpTo+olvVD
+ 7Ql9oSU3/US9RZ5yFE5KSnS9RL1FmfaUvtKVKdP1EvUWb9pS+0pUp0vUS9RZv2lL7SlSnS9RL1Fm/aUv
+ tKVKdL1EvUWb9pS+0pUp0vUS9RZv2lN9pSpTp+ql6izPtKcZKVKdQPT71mjJUvtISpLf3pt6oHKCj9qC
+ VKdMPS3rOGSFL7SEqU3S9R3qkchQOSlSHQFimLFmDJT/AGlClOl6qY2rOOSonJSpTom1IWrLOUkMpJDr
+ C1S9VZQylL7ShSnSNqibVnnJUDkpKdP1UvVWZ9pS+0pKdL1UvUWZ9pS+0pKdP1UvVWZ9pS+0pJdP1UvV
+ WZ9pS+0oKdP1UvVWZ9pS+0pJdP1UvVWZ9pS+0pUh0/VS9VZn2lL7SkEul6iQsWb9pUhkqQBc6Qen3rOG
+ Sl9pCNJdHel6gWacoJvtYQpDp+oEvUWZ9rCX2oJUh0vUTeos77Sl9pSpTo+ol6izftKf7SlSHR9RL1Fn
+ /aU32hBDoeon9RZ32lN9pSU6fqpeqsz7Sl9pSU6fqpeqsz7Sl9pSU6fqpeqsz7Sl9pSU6fqpeqsz7Sl9
+ pSpTp+ql6qzPtKX2lKlOn6qXqrM+0pfaUqU6fqpeqsz7Sl9pSpTpi1S9RZYyU/2pKkun6gUTYs45Sicp
+ Gkul6qb1Fm/aUhkpUtLp+onD1mDJUhkhGlrpB6luWaMkKYyQlTJFvlygXqmckIZyQlTI3jYl6qzjkpvt
+ KFLS6fqp/VWX9pS+0pUxl1PVS9VZn2lL7SlS10vUS9RZv2lL7SlSHS9RL1Fm/aUvtKVLg6fqpvUWb9pS
+ +0oUudP1UvVWZ9pS+0pUxydP1UvVWZ9pS+0pUsdL1EvUWb9pS+0pUyxdL1EvUWb9pS+0pUvdP1UvVWZ9
+ pT/aUKWl0/VT+qsv7Sn+0pIdT1UvUWZ9pS+0pUp0vUTG1Z32lROSkh0vVS9VZhyU32lJTqeql6qy/tKc
+ ZKSnU9RL1FmfaUvtKCXS9VL1VlnKTfakkusLVNtix25SsV5EoJdUOlSKqV2yjh0oJXKgVIlRQSuE8qKk
+ gpeU0pJkELpkkkkLpJJILVJJpSlJS6SSSeEqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSC
+ lJk6ZJSkydMkpdJJJJS6i5SUXJKa1irlWLFXKSmbFaYqrFaYkpMEkgkkpSSSSSlkkkklKSSSSUskkkkp
+ SdMnSUukkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklLp0ydJSiq9isFV7ElNV6i1SeotSU2a1Yaq9asNSU
+ umTpklKTpk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkkVKSSSSUpJJJBSkkkkFKSSSQUpJJJJSkkkkrUpKUkySl5TqKcJyl0ikmKcFLEqJKkQoOCcFI3uV
+ d9kIrwqlqeApi+2EF16hYq7iU8BTYOQmOSqhlRMp3CpO/KQHZaC8FVnyiIqbozFIZqzIKkAU8QCHROao
+ nNWcQVDVO9tDqjLlHZkSsdkq5VKXtqdZlsqwxyoVK2wphgFNoOTOeh7kKyyE3gSvZYgm1V7boVU5Gqf7
+ aHXrsVpj1i1Xq6y7RNMFN11irWXIL7lUsvSEFNp16iL1QNspw9H2wh0m3ozbllteitsS4Ap0hapCxUW2
+ IrXocCm6HqYcqrXIrSmmCkxchuekhvKAiFLOsTCxVrHwoNt1TuAKdFrpTuKBW+URx0TeBSGyyFWdenvc
+ qLn6o8Cm825Wa7JWXW5XqlGYpb7HKZegMKT3whSmbrFH1FVfaotslGlN9rpRAVWrdKPKNKZEwhushQfZ
+ CqWXpUlsutQjcqbr0P1ZSpTf9VTa9Z4sRBbCBCnSa5FBWa3IVhl8ptKbRQnJw+Uzk1SJEYoEKbE1TarR
+ wgMRwmpXSSSCCl0kkklLFMnKZJSydMnSUukmToqUmTpJKWSSSSUpJJJJSySSSSlJJJJKUkkkkpSdMnSU
+ uE6YJ0lIXqs9WXqs9JTAI9aAEetJTYapqDVNJSkkkklKSSSSUpJJJJSySSSSlJJJJKUmTpkkqSSSSQpJ
+ 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
+ 1vlc/h2ytqgyEEttMkFIBBKgEoTgJ00qYpJ0kELQnhOEkkMUxUioFBatKUpikEgpmE6iFJPCVJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJBSkydMkpSZOmSUukkkkpdRcpKLklNaxVyrFirlJTNitM
+ VVitMSUmCSQSSUpJJJJSySSSSlJJJJKWSSSSUpOmTpKXSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSl06
+ ZOkpRVexWCq9iSmq9RapPUWpKbNasNVetWGpKXTJ0ySlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//S69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJOnKWTpk6Slkkkk1SkkkkFKSSSTVKSSSSUpJJJJ
+ SkydJJSykEwCkE4IUkkmJTwpUKJCeVElPCkTwqloVp7lUscnhTVe1V3MR3uQS5SAKYbE/pKQcpyn0pqv
+ qVZ9SvvKrPITgFNYUqYpUt4T+oFIEInUoRqVh1oQTYE5SmVq1UxVmvCtVvQU3KwjtVetysNKYVLkqrc7
+ RWiFVubokFOXkWQqRtMq3ktWe4apym7TatCuzRZVAWnU3RBC9j1Ve4lWntVcs1QUwbqjtalWxWWsStSC
+ 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
+ pmxWmKqxWmJKTBJIJJKUkkkkpZJJJJSkkkklLJJJJKUnTJ0lLpJJJKUkkkkpSSSSSlkkkklKSSSSUpJJ
+ JJS6dMnSUoqvYrBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0+vSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkQpSSSScpSdMkkpSSSSaVKSSSTCpSSSSapSSSS
+ SlJJJIKUkmKYlFDKU8ocp5TgpmSoEpSmKkClpUSVKExCkCmvYVTtKvPaqdrVIFNJ5QSUexqCQpgFLAqe
+ 5QATlSAIYPeqlliPYqNpTqUs61RNyA4qKSkxuUPVUCE0JIbDLFaqsVBoVmspKdSp6uVmVmVFaFJQIU2w
+ JQ7a9EatSeNFFeqXCya1mPZBW3lBZFvKeChnQFo1RCy6nQr1dmiKmw+FXMSmfaq7rUFN1hCOHBZjLkdt
+ qSGy8qpYVMvlBeUFMJRa3KuSpsOqCnSpK0aSsygrSpQKm0OFXv4RwhWiUwKcXJbKzywytu6qVTdQnKa9
+ UhWd+iiKoTlsJKQ2OVclGeEEhJSRjlYa9V2BHY1NXJN5Q3ElFDFMVJUlp7CVYpYUYUozKoRQlpEKweEN
+ jYRgEEtaxkoJplXyyUvTSU02UK0xgCmWwhPftSUlJACoZJCVuTCz7smUylIrRJU6G6qvv3FW8dBTqYwV
+ 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
+ StS8pSmSSUvKcFRThJSUFAtOiKEG3hJTkZhXP5ZXQZYXP5YU0Vwcp51RKXaoVvKlTypbS7WIeFu4ywMP
+ sugxU0lDoMCIAosCIoylQSlOolNQvKUqKdJDKUiUgkQghiXJtyYqKCEgcpShhSCFqZSmlJMlal5SlMkj
+ al5SlRSStC8p5UU6KlSlKZJFK8pSmSRQylOCopwgkLlQcpqDkmQNK9Y+WVs3hYuWOUbU4uQ5Uy7VWslU
+ jylaG5Q7VbWIViY41W3iBC1O5jLQYFRxgtBgQJQyUSVIoRKClEpSoEpApWhJKUpgnQtSpTSkklalSlKS
+ SVqVKUpJIWpUpSkklalSlKSSVqVKUpJJWpeUpTJJWpRKipQlCIKQsCpApoTFOXJgU5KCHJy5BaUF5WLl
+ rYuKx8pG1ri5AVB60cgKg8JWviwaVcoKqAK1QErZXZxStnHKxcULaxwlawt1pSJUmhIhC2MopUgU0J4S
+ tavKUpJJIVKUpkklwXlKU0JQkleUpTQlCSyS8pSmhKEli8pSmhPCVsgVKUpQlCFrlSlKSRTgpYlNKRTJ
+ ymQKcFQCkEkMpUSU6iUFLEpApikE5TMFSBUApgJpUolQJUyhuSCkFrlkZjlqWrIy05LhZOpQ6W6ot/Kj
+ QNUEu5gN4XRUDRYOAOFv0cIJTFQJUyUIlNSqVElOmSUxKcJQkAmoZAqcqAToIZSmTSlKS1dJNKdJSkkk
+ k5KkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkgpSZOmSUpMnTJKXSSSSUuouUlFySmtYq5V
+ ixVykpmxWmKqxWmJKTBJIJJKUkkkkpZJJJJSkkkklLJJJJKUnTJ0lLpJJJKUkkkkpSSSSSlkkkklKSSS
+ SUpJJJJS6dMnSUoqvYrBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//9Tr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJEKUkkknKUkkkkpSSSSaVKSSSTCpSSSSa
+ pSSSdBSydJMkpYqBUyokJIYpwlCcBPClJKUJipApZIpJiU8KYPCrWMVooLwpIqc61qqv0V29Z1roU4Qv
+ uTzKreoptepApVglUrWK8dUF7JTlOeWJtiuGtQNaSmsWpoRnMQ4QtCmhWGNQ2BWawlak1YVyowq7AjN0
+ StTeY+E77dFUDoULLFGQlFk2Ssm0yVbvfKpkSURohesK2wFQprlX2U6I2po2Aqq4FattKqOq1QtTXYCr
+ DGlErpVltCVqasIbyrr6oVS1sIWhrFylW7VCcFOsaoWp1McrUp4WTjLUqOiCmzKG9yYuVeyxNUu8goRA
+ KE6xSY6UVM/TUH1K0xsqT69ErU5FjFXLVo3MhU3DVK1KY1Wq65Qawr9LEFwUypE9OFYYxQtEIWlCYCQc
+ FXtthDZdJTkOkwyjAKrS+VaB0QSyTygushD9ZBSdxVS4FGD5Tlm5FTj3tKz7GldFZjSs+/HhNKnKaNVo
+ Y5VVzNpR6DCBU7VBVmVRx3K2CmFSzlJigUSsJhU2WBGAQ6wjgJqWMJwnITIKXSTJkFLymSlMkpSSSdJS
+ kk6SSlJJJJKWSTpklKSSSSUsknSSUsknSSUsknSSUsnSSSUuE6ZOkpC9Vnqy9VnpKYBHrQAj1pKbDVNQ
+ appKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSFJ0ydJSkkkklKTpJJKZApyVCU
+ 0pJZEqCUpwEkqAUgkAnRSxKZIlRlJK6YpAp0ksYUmhKFNoSSvCrXjRW1Wv4RQC4WYFg5I1XQZgWBlclI
+ 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
+ UfUCXqBKiplCUKHqBL1AjRUzhOAh+oE/qBCikM4UXBN6gTGwJUV4a14WLljlbNzwsbLeNVKIqcLJConl
+ XckqgTqlwIbmPyt3DXP47tVuYb0OBT0WKNFoMCy8awQtFloUcgpIQhOCmbAhmwJoBQwITgJi8JB4TqQl
+ ATwoCwJeoEKUyhKFA2hN6oS4VJIShD9UJeqEuFSSEoQ/VCXqhLhUkhKEP1Ql6oS4VJIShD9UJeqEuFSS
+ EoQ/VCXqhLhUkhKEP1Ql6oS4VJITwheqE3qhHhSEpCiQoeqEvUCVLmYCRCYPCTnhKkFrXBZOStS94WPk
+ vCPCscu9UnK1e5U3FO4F8VAK1QFVaVaoKXAyuxihbeMFh4rwtnHsCBisLpNCchDbaE5tCjorCotTQom0
+ JvVCNLGUJQoeqEvVCNISQmhQ9QJeqEqXBJCUIfqhL1QlS5JCUIfqhL1QlTHJJCUIfqhL1QlSxJCUIfqh
+ L1QlTIEkJQoeqE3qhDhXpITEKHqhN6oRpDMhNCj6gT+oEVMgE8KPqBP6gQQyhMQm9QJvUCWqlFqQalvC
+ W8JaqZBqkAo7wl6gQ1UuQhuCRtCgbAiFIbWrIy2rYseFlZZCclwMgaqFA1RcjlQo5QXO9gdlv0jRYOD2
+ W/TwgVM3IRRihEIJWhKFIBKEFMYSAUoSAQQoBKFJJBDAplIhNCVLVk6ZOkpdJJJFKkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUkkkgpSZOmSUpMnTJKXSSSSUuouUlFySmtYq5VixVykpmxWmKqxWmJKT
+ BJIJJKUkkkkpZJJJJSkkkklLJJJJKUnTJ0lLpJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJS6dMnSUoqvY
+ rBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//V69JJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSRClJJJJ4UpJJJAqUkkkmlSkkkkwqUkkkmqUkkkgpSSSSSlimKcp
+ ikhZOEySeFMkikElIFMSExU1EqQIYFBeURxVax6eEtW8rKvK0bnSs+0SpghqEqbXqLmqI0UoU2Q9NulB
+ BUmmU5SSJTmuVJjZVhrJQU0XVIJrWo6pAsqhBDRAhHrKg8Qoh8JKb9ZlWWtlUqXrQp1TSVLemg2VlaQZ
+ KFbXom2lw7WIAZqtG9gCpxBTkNnHYtJjNFRxytJnCYSpr3NVF41Whcs6w6ohSaoK4xoKz63wrtViSmb6
+ 5VK6laG4FCeAUFOO+hJlUFX3sCGGhJDKlsK8wwFVZojgoKZucq1hRHFBeUlIijVNQlYqICCm/SxFe3RB
+ qsAU32iE1TRyAs9/Ku5FgKz3v1RCk9S0qAsmt60KLQEVwdRo0QMgaJNvEIN9wIQS5uQdVXYdUW94JQGH
+ VOU6mO5Wy/RUaFZIMIKRW2qv62qlaCqpBBRU36rVdqfKx2OhW67YSKnTJELPyYRPX0VS+yUxTn3HVNUd
+ U1mpUqWaoKdXHKuhU8dquBMKlkWtDRK00qblaOECtGCYlRTJyooKUoqSZBSyZOkkpScJk4RUunTJIKUk
+ kkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklLhOmCdJSF6rPVl6rPSUwCPWgBHrSU2Gqag1TSUpJJJ
+ JSkkkklKSSSSUskkkkpSSSSSlkkkklKSSSSUpJJJJSkkkkkKTpk6SlJ0ySSl0ySdJTFKFKE8JJYgKQCU
+ J0krpilKYopYFQJUyhlJK4KkCoJ0ks5UgUJOCklMXKre7RFJVa46JKpyssrAyu63coSsbIZKIS5LzBRa
+ bIKT6iotYQp4sZdnFytq1qs+ByuYrcWo4uIRKHpf2h5qB6j5rnTkOUDe5NpT0R6h5pDqHmuc9Zyf1nIq
+ ekHUPNP+0PNc367kvtBSpD0f7Q80hn+a5z1ypC8pKejGd5p/t/mueF5SN5QU9B+0PNN+0fNc4byo+u5J
+ T0v7R80v2h5rmvXcn9dyCnpP2h5pftDzXN+u5L13JKek/aHml+0PNc367kvXcip6T9oeaX7Q81zfruS9
+ dySXpP2h5pftDzXN+u5L13JKek/aHml+0PNc367kvXckl6T9oeaX7Q81zfruS9dySnoz1DzUT1DzXPeu
+ 5N6zk4BT0P7Q8046h5rnPWcn9ZyfSHpR1HzTnqPmuZ9dyRyHJvCp3rs+e6ysnJ3Km64lCc4lOAUivfKr
+ d1ZLCVH0SnoVSYWpj37VnNrIRmyEFO9VmQrIzvNc815CILXJpU74zvNSGd5rAFjlIWuTaU7/ANu80/27
+ zXP+q5P6xSpTv/bvNL7d5rA9YpesUKU7/wBu80vt3msD1il6xSpTv/bvNL7d5rA9YpesUqU7/wBu80vt
+ 3msD1il6xQpTv/bvNL7d5rA9YpesUkO/9u80vt3msD1il6xSU7/27zS+3eawPWKXrFJT0H27zTfbvNYH
+ rFP6xSS7pzvNR+3eaw/VKb1Skl3hm+acZvmsEWlOLSkh3vtvmmOd5rD9UqJtKKHcOd5qP2/zWEbSo+sU
+ lPQjP81MZ/mucFxUxcUqU9F9u81E53msIXFMbSlSnZfmqlflSqDrSgveSnhKsi2VRe6SjPBKGayilVbo
+ K0KLoVBtZCMwEJJdunKhXWZsLnmuIRRaQmmlPQjP80xz/NYHrOUTc5MpTvnP80vt/muf9ZyQuKNIehGd
+ 5pfbvNYAuKf1igh3TneaX2/zWCbSm9UpaLXoBn+al9v81zvquT+s5AhT0P2/zTfbvNYHrOS9YoKd/wC3
+ eaX27zWB6xS9YpJd/wC3eaX27zWB6xS9YpKd/wC3eaX27zWB6xS9YpKd/wC3eaX25YHrFL1ikp3/ALcl
+ 9uWB6xS9YpKd/wC3eaX27zWB6xS9YpKd/wC3eaY5/msE3FQNxRU9B9v80vt3mud9ZymLikl3/tqf7asI
+ WlI2lFTu/b47pHqHmueNzlE3uQpTuWZ891nZGTuVP1HFRMlOUgvdKpOGq0HVEoTqCkpBUYK1Ma/aqHpE
+ IrAQkp6GjNhXW53muZY8hGbcUCLS9F9u80327zWD6xTG4oUp3jneab7d5rBNxTesUaQ7/wBu80vt3msD
+ 1il6xSU7/wBu80vt3msD1il6xSU7/wBu80vt3msD1il6xSU7/wBu80vt3msD1il6xSU7/wBu80vt3msD
+ 1il6xSU7/wBu80vt3msD1il6xSU9B9u80vt3msD1il6xSU7/ANu80vtvmsH1il6pSpTvfbfNL7b5rB9U
+ peqUlO99t80vtvmsH1Sl6pSU7v23zS+2+awvVKXqlJTu/bfNL7b5rC9UpeqUlO79t80hmrC9UpeqUlO+
+ M7zUX5vmsP1imNpQpTo35crKvulM95KA8EqaK4Nex0qAKKayUhUVJouS1PhaNF8LNbWQjNkIaIdurMhW
+ Bn+a58WEJesVGRaHoft/mmOf5rn/AFil6rkOFaXf+3eaf7d5rAFrk5tKVIdw5/mm+3+awTa5N6pSoKeh
+ Gd5qYzfNc820ogtKFKd37d5pvt3msM2lQNpQpLvfbvNL7d5rA9Yp/VKNJd77d5pfbvNYPqlL1ShSXe+3
+ eaX27zWD6pS9UpUp3vt3ml9u81g+qUvVKVKd77d5pfbvNYPqlL1SlSne+3eaX27zWD6pS9UpUh3vt3mn
+ +3eawPWKXrFKkPQfbvNN9u81gesUvWKVId453mm+3eawvVKXqlGkO79u80/2/wA1gG0pjc5KlzvnP80J
+ +d5rDNzlE2uRAS6luXKo23yq5cSoEEqQJWe+ULcpFhTemUVJa7IWhRkQswMIRWyE0qd+rMhWW53muea8
+ hTFpTCFPQfbvNN9t81g+sUvWKbSHe+2+aX21YPrFL1ilQWu99t80vtvmsH1Sl6xQU7323zS+2+awfWKf
+ 1Skp3ft3ml9t81hesU3rFJTvfbfNL7b5rB9YpesUaS7323zS+2+awfWKXrFKku99t80vtqwvWKXrFCkO
+ 79tT/blg+sUvWKCHe+3Jfblg+sUvWKCne+3eaX27zWD6xS9YpJd77d5pfblg+sUvWKSne+3Jfblg+sUv
+ WKSne+3Jfblg+sUvWKSne+2pfbfNYPrFL1ikl3/t3moPz/NYRuKG65yNKdPIzJWNk3bknvJQHtJTkNK0
+ yoMMFWnUEqIoIRQ2sa2FtY2VCwWMIVqt5CSnpWZ0d1I5/mueFxS9ZyaQp3/t3mpDO81z4tcpi0pKd77a
+ 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
+ eaj9tWJ6pUfVKSXadmqjkZUqkbCgWOJSStbbJT0O1VctJKtY9ZlBc72C7hb9DtFz+GIW3SdElNyVBMCn
+ BQSuAnhIFOUlMCmlOVAlBDOU0qMppQQzlMmlOElqk6SdJSySdMklSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUnTJ0lKSSSQUpMnTJKUmTpklLpJJJKXUXKSi5JTWsVcqxYq5SUzYrTFVYrTElJgkkEklKSSSSUs
+ kkkkpSSSSSlkkkklKTpk6Sl0kkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpdOmTpKUVXsVgqvYkpqvUWqT
+ 1FqSmzWrDVXrVhqSl0ydMkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkkQpSSSScpSSSSClJJJJqlJJJIKUkkkmqUkkkkpdMkkgpSUJ06SGEJoUyolOClk
+ 6ZOnhSiUNxUyhPTwpBY5U7XqzaqVikBUheZQHNlHLZT+nKkBU0HsQixaLqkF1SeJKagYjMqRm1KzXUjx
+ KR11Kw2tGZUiBiPEprlir2sWgWoFrErQ4tzYVQmCtS+pUnUmUbUvQ5auO5ZtVRC0aGkJqnQa7RDtdokO
+ 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
+ QfZApjECQyJDz4wynOGV0QxQmOKE/jXvNnEKgcMro3YoUDihLjU899i8k4wfJdAMUKQxglxqcEYXkn+x
+ rf8AswS+zBDjU88cQqJxCui+yhL7IEuNDzn2MqQwiuiGGFMYgQ40PODCKf7GV0f2UJjihDjU82cMpvsh
+ XRnFCj9lCHGh577IUvshXQ/ZQl9lCXGp577IUvshXQ/ZQl9lCXEp577IUvshXQ/ZQl9lCXEp577IUvsh
+ XQ/ZQl9lCXEp5/7IUvshXQfZQl9lCXEp5/7IUvshXQfZQl9lCXEp5/7IUvshXQ/ZQl9lCXEp537IU32Y
+ roTihQOKEeJc4Bxim+yErfGIFNuIEeNLz4wipjCK6JuIFP7IEuNaXm/sRUThFdMcUITsUJca15s4aX2N
+ dAcYKP2YIcbJFwDhpvsXkug+zBOMUJcbI8+MI+CIMMrfGIFMYoS41pef+yFMcQrovsoTHFCPGxl5z7IU
+ 32QrojiBN9kCHEtee+yFL7IV0P2UJfZQlxoee+yFL7IV0P2UJfZQlxrg899kKX2QrofsoS+yhLjXPPfZ
+ Cl9kK6H7KEvsoS41hee+yFL7IV0P2UJfZQhxrHnvshS+yFdD9lCX2UI8bIHnvshT/ZCug+yhL7KEuNe4
+ AxCl9jK6EYoT/ZQha1537IUxxCujOKFE4oSQ86cQpvshXRfZQm+yBFTzv2Qp/shXQ/ZAn+yBJDzwxCn+
+ yFdD9kCX2QJKef8AshT/AGQroPsoS+yhJTz/ANkKX2MrofsoTjFCSXnfsRUXYR8F032UKJxAkl5j7F5K
+ xTiQts4oSbjgIJa+PTC0axCiyuEYCEkrykCmTIJSAp5UApJKUVEhSShBDGEoUkkkMYTwnSQWqSSSSUpJ
+ JJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkgpSZOmSUpMnTJKXSSSSUuouUlFySmtYq5
+ VixVykpmxWmKqxWmJKTBJIJJKUkkkkpZJJJJSkkkklLJJJJKUnTJ0lLpJJJKUkkkkpSSSSSlkkkklKSS
+ SSUpJJJJS6dMnSUoqvYrBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9fr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk5SkkkklKSSSTVKSSSQUpJJJBSk
+ kkkFKSTpJKWSlJRKSlyU0qJKScFLhSUQpBOCFQoOCKoFOCmnY1VHsWg8IDmJ4KmmK0VtSMGIjWJwKmq6
+ pBdUtEsQnMTwVNJtSssrUgxFa1K0qDE+1ShMUOJDHaoOZKJKSPEpo2USq7sZapZKb0gnCSnNZjQrTKYV
+ oVKYZCBkpr7EJ9cq6WobmSgJqcq2iUH7Nqtc1Sm9BP4lNKqiFerZCk2qEQCEwyUwLUF9UqySokJCSmi6
+ iVA460NqcMCPEhzfsyY4y1PTCXpBLiU5Jxk4xlqGoJvSCXEposohHbUj7ITwhxKQ+mhvqlWkxEpcSnNs
+ x5Vd2Mtg1ym9EI8SHGGKpjFWuKAnFIS4lOUMVSGItQVBP6YS4kuX9kTjDWqKwpCsJhKnJ+xIb8FborCi
+ 6sJtpeeOFCJXjbVruqCH6YTgVMKW7Vca+EACFMJKSufKC8SpQn2oqazqpUPQV0MT7ErU0hQpiqFa2piE
+ FNcMhTAUiEoTVMYUHIpCG5NUjRWISKxNKm3WjBAYjBNSukkmQUunTJ0lLJk6SSlkkkkVKTpk6ClJJJJK
+ UkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS4TpgnSUheqz1Zeqz0lMAj1oAR60lNhqmoNU0lKSSSSUpJ
+ JJJSkkkklLJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSSQpOmTpKUkkkkpdJMnSUumKdIpKYFRKkVEpJUF
+ IKIUgildOmSSSunBUZSlJLMFPKgCnlJLIqBTkqJSSjc1QLEaE0IhRRbE+xEhIBPDGWHppxWiAKUJWhGG
+ J9oU4TFC1LQEoTSnCKlbAmNaIE8Jtqa5rUSxWSEJwTkIdqkGpFSakpkGKWwJ2qcJqkexNsCmUyKmOwJb
+ ApJJJY7AltCkkkpjtCW0KSSSWO0JbQpJJKY7QltUkkksdqW0KSSKmO0J9oTppQQqAngKJKaUaUzgJbAo
+ gqYQKGBrTekjhMQgpB6YS2IpCZFTAMUgxOApIKYhqdIqBKSmcpihylKVKZwlCYFOlSl9qW1JJClLbUtq
+ dJKkLbUtqdJClLbUtqdJKlLbUtqdJKlLbUtqdJKlLbUtqdJKlK2p9qZPKaQleEoSlNKFKUQmISJUSUaQ
+ vCUKMqQKNKX2p9iQUgjSltibappilSGBamhSKgSjSVJiE0pSjSViyVH00QKQCVJRitS2IkJihSWEJBMU
+ 0pUpIApgIQKIChSmW1RLVJMUKWoy1MApFRlCkMwFMAKAKlKFIZaJiokppRAQuQo7U6dSBLHaltUkkVMd
+ qW1SSSUx2pbVJJJTHaltUkklMdqW1SSSUx2pbVJJJLHanhOmSUtCRCUppSUqE4amUgklQCeEkxKSlQok
+ JEppRUohNtUk6SWO1KFJRKSF4TgKKkEkr7UtqcJJpUttS2pJSmoVCUJJJKVCUJJJKVCUJJJKVCUJJJKV
+ CUJJJKVCUJJJKVtS2pJ0lLbUtqdJJS21LanSSUttS2p06SmO1PtTpklK2pbUk8pKW2pbU8pSkpW1NtTy
+ lKSmBYoFiKVEpwXBHtUgE5UU9cyTwoSnBQpBZbU+1IKSC1jtShOVAlJaySQyU4KVISQn2hRBUkKUsQmS
+ JUSUKUyhLaogqQKVKVtS2p0kqSttS2p0kKXLbUtqdJKlLbQltCeUpSpC20JbQnlKUqUttS2p0kqUttS2
+ p0xKVIWhPCaU4KVKX2pbU4ToqYbUoUioEo0lfRLRQJTSjSUuiYgKAKkCilYtTFimkglHsUgE6aUkMgnh
+ QlOClSlyE21PKdNpax2pbVJJCkMdqW1SSSpDHaltUkkqUx2pbVJJKksdqW1SSSpTHaltUkkqSx2pbVJJ
+ OUx2pbU6dFDHaltUkklMdqW1SSQSx2pbVJJJTHaltUkklMdqW1SSSUx2pbVJJFTHaltUkySloTQnKZFS
+ xam2KSeElI9icMRITQlaFgFMKKaUlJAnQwVIFNUyhMWpwnSQw2poUioEoKXhKE0pwilW1LaE6SKWO1La
+ pJklLbUtqkkklhtT7VJJJTHaltUkklLbU+1OkghbakGp0kkLhOoSmlKkMiowlKSKlwFKFFKUFMkxUSU0
+ opXITbU6dJIY7U21TTFK1wYbUtqkUgja5YMT7FMBSTSUI9iW1TKimrVtqW1OkkpbaltTpJKW2pbU6SSl
+ tqW1OkkpbaltTpJKY7UtqkkkpjtT7U6SSFbUtqUpJKVtS2pJJKVtCW0JJJKVtCW0JJJKVtCW0JJJKVtC
+ W1JJJStqW1JPKSFtqW1JOkEsS1RLVNKE9CItUS1FIUSEVwYBqkGpQpAJMitiWxSToLSxDEQNUQpgoMZX
+ gKJhIlDLkKWlcptsqMqYKVIVsCW1SSSpcFtqUJSlKFMitoS2hKUpSpCtoSgJSlKVLSqAlASlKUqWlW0J
+ bQlKUpUtVtCW1KUpSpeFQltSlKUqXsS1NtUkyeEqAUgop5SUzUSoymlKlhUVAtUpSRWMNicVogCcBJli
+ wDFINUoTIL1wE6hKUpMZZpKEp5SWrwmhOlKSltqW1PKSSloS2p0pSXhbaEtqSdJJW2pbQnSlJiK20JbQ
+ nlKUkBbaEtqdJJkC21KE6YlAqK0JQknCiIWlW1MWIgCYhKkI4ThIqMo0uSJioylKNJWISDUlIJ1LlwxP
+ tCcJEpUpjATwFElNKFKZwExAUQU8pUhRam2qSSbSGO1LapJIUhjtCW0KSSVKY7QltUkkqUx2pbU6SVJW
+ 2pbVJJGksdqW1STI0lbanhJJNIWlUJbUpThNpatsS2KQUkqUw2JQpFRKNLlkyYlQJRpKWU4QdykCjSUw
+ CUBRBUgUaUsWqBaiFRKNKYhqcNCSdKkFUJiEiUkqWrbU+xOFIIUhjsTbERRKFKYbUoTlMhSlbU+1IKSF
+ JW2ptqmolClLQlATEppSpLKE8BRBUgU8BStqW1OknUpbaEtoTpJUhbaltTpI0hbaltCdJKlLbQltCdJK
+ lLbUtoTpSlSlbU21PKSVLmJam2KSdKko9iWwIkJiEqSj2p4TlMlSlwFKFEFPKVKXhKAlKaUqQvCQATSl
+ KVIZgJ9FCUpQpayTFRLk0pAKXITbU4Tp64MdqfanhOkosdqW1SSSYyx2pbVJJJIY7UtqkkkyhjtS2qSS
+ Six2ptqmkkxsdqkAkmlJTKEiFGUpSUsWptimkla4I9oS2qZUCiyBUJAJpTgorSyDUQNUAVMFNLEWQCUB
+ NKiSmrguUxUC5KUV65CbalKdAqW2pbU6SFLVtqW1OklSwrbUtqdJKli21LanSSpcFtqW1OkjS8LbUtqd
+ JKl621KE6SSWOxLYphShJYUOxPthEKgUqWKATqBKaUaSzKgQmlKUqXBbanDE4UwEqZAsGKQCdJKkqhMm
+ JUZSpYWYClCGCpgpUtUWpi1STFMIQx2pbU6SbSltqW1OklSltqW1OklSltqW1OklSltqW1OklSltqW1O
+ klSltqeEkkqSqE8KMpwUqUraltUgkjSmO1PCRUSUqUySKHKUo0pkQm2JwpAI0pHsT7ESE0JUpjtTwEim
+ SpS8JQmTylSlbU21OklSltqW1OklSltqW1OklSFtqW1OklSltqW1OklSltqW1OklSFbUtqSSNKW2pQnU
+ SUqUvCUKMqQSpStqWxTAUoSSi2JtiNCiQkphCeEioylSWYTocpwUqSzhRISlJKkoy1QLEYhRISpSMMRW
+ hRhSCNIKUJioSlKNIXIS2pgVIIUpWxNsRAmKCke1LapFMjSltqWxOnCFKW2JbFNMlSmG1PtTpJUpbalt
+ TppQpStqW1KUpSpStqW1KUpSpStqW1KUpSpStqW1KUpSpStqW1KUpSpStqW1KUpSpS+1MWp5TSjSGBao
+ 7EQpBGl4YitP6aIApQglAWBNsRiFApKYhqkGpBOlSFoShIlRlCkJAnhDBUpSpS5CaEpSTaQttT7Uk6VI
+ W2pbU6SFKW2pbU6SVKW2pbU6SVKW2pbU6SVIW2pbU6SVJW2pbU6SNKW2pbU6SVIW2pwEk0ogJZJioyml
+ SALwuQo7U8pIqW2pQnUSUKUulCjKcFClMgFMNUQVMJUhfaEoCUqJKFIXKiVElRlKlM4ShRBUgUKQqEtq
+ dJKlLQlCdJKlLQlCdJKlLQltTpJUpbaltTpJUpbalCdJKlLQnhJJKlLbU2xSCkAjSUYrUwxThJJKgAEt
+ ExKiSlSCuVAhIlNKVLGJam2KadKmSLDYnDApwklTKsGhPCSaUqWllCUKMp5SpjKtoTbVJJKlrDan2p0k
+ qUttS2p0kqSFtqW1OklS5baltTpIUsK21LanSSpYttS2p0kqZAx2p9qdJKl6gE8JJSiAtUQokJyU0pyF
+ oS2pJ0lLbVLakE6SltqfanTJIWhKEiU0pKXhOAoSnBSSkhMQogp5QSxLVEtRExCK5HCSchMkpScBIKYQ
+ SsApQnCdBTGExUiolJC0ppTFMkhnKSiCnQWrpJJJKUkkkklSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UnTJ0lKSSSQUpMnTJKUmTpklLpJJJKXUXKSi5JTWsVcqxYq5SUzYrTFVYrTElJgkkEklKSSSSUskkkkp
+ SSSSSlkkkklKTpk6Sl0kkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpdOmTpKUVXsVgqvYkpqvUWqT1FqSm
+ zWrDVXrVhqSl0ydMkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSk6ZJFSkkkkFKSSSSUpJJJJSkkkkFKSSSSUpJJJJSlEhSShJTCEoRIShJTEBOnhRKcp
+ RKiSmJUCUUrOQyFIlRStSgFIKKUo2pmVEhIFSCNqYbU6lCYo2pYlRKkmhNJQwUgUtqUIWpkFIKCeUuJS
+ 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
+ VHaihEApAKcJwElMYTwpgJQgpHCUIkJQlakcJQiQlCVqRwlCJCUJWpGkiQlCVqRpQiQlCVqRwlCJCUJW
+ lhCdOVElJTKUpUZTgpJUVAhFCUJWtKAhKEYtTEI2tRpwpQkkyRWSTp0mRiQmhEhKELWlFCkFOEyKwrJQ
+ pJ4QtawhKFOEoStTCEoU4ShK1wYQlCnCUJWuYQlCnCUJWsLCEoRIShK1iOEoU4ShK2QMIShSTpL2EJoR
+ IShK1pREJoRYTQja1GkpwlCVqWCcJwE6FqYpKaUJWpEUxCLCaEbUiTqcJ4RtTAKQUoTwm2kMUiFJNKS5
+ GQokIpCgQipiFIFQKUoJSgp5QgVIFBTMlQKeUkkMCmhTITQghinTwmQWqTyolJJTNJME6KVJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJBSkydMkpSZOmSUukkkkpdRcpKLklNaxVyrFirlJTNitMVV
+ itMSUmCSQSSUpJJJJSySSSSlJJJJKWSSSSUpOmTpKXSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSl06ZO
+ kpRVexWCq9iSmq9RapPUWpKbNasNVetWGpKXTJ0ySlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/R69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSpSkkk6VK
+ WTpk0pJZhOh7k4KSmRUCpSolFSNyGUYhQLUlIoShE2pbUrUhIUSjOahEJWpQKIChBTBStTMlRJSJUCUe
+ JTIFSCGCpgoWpnCiQpSmKCGBUSpkJoRUxSUtqW1JTFOpQlCSlgU+5RKaUlJJTKIUwkpaE4anCkElLAJE
+ KSRRUgcEIqy5qEWJUhEERqW1OAlSkgUwEMFSDkqUyhRIT7k0o0pYqJKcpiEqUxJTEqUJbUqUjSU9qUJU
+ pinCeEgELUuAnhIBSAStDGEoU4ShG1MEpTkJiEbUuCn3KCUo2lnKYpk6VqWSCSSFqZBOoynlC1LFBcjF
+ CcgpEisQ0RiaptMRQhMRgglYpJFMkpdOmSSUumTpklKSSToqUkknSUskkkkpSSSSSlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklLhOmCdJSF6rPVl6rPSUwCPWgBHrSU2Gqag1TSUpJJJJSkkkklKSSSSUskkkkpSSSSS
+ lJk6ZJKkkkkkKSSSSUpJJJJCk6ZOkpSSSSSlJ0ydJSkydMkpYpk6SSlwFIJgFJFKkydNKSVJJkkkrqQU
+ JTgpKZqLinlDe5JTFz4QzbCDbbCo2ZMIhLqeuEjkBYT82O6E7O81KIrC75ygoHLC552d5obs0p3Ah6QZ
+ gUhmBcqc4+KYdQPihwqeuGYFL7WFyQ6ifFTHUD4ocCnqTmBROYFzH28+KY5x8UuFT0pywl9rC5n7cfFO
+ M0+KXCp6YZQUhlBcyM0pHOPilwqen+1hP9sC5U558U37QPihwqer+1hL7WFyo6gfFP8Abz4pcKnqftYS
+ +1hct9vPil9vPilwqep+1hL7WFy328+KX28+KXCl6n7WEvtYXLfbz4pfbz4o8KnqftYS+1hct9vPil9v
+ Pilwpep+1hL7WFy328+KX28+KXCp6n7WEvtYXLftA+KX7QPilwpep+1hL7UFy328+KkM8+KXCh6j7UE/
+ 2oLmBnnxS+3nxS4VPTHKCgcsLmjnnxUDnnxSEUPS/awnGUFzH24+Km3O807hU9OMkKQyAubbneal9v8A
+ NDhU9H9pCX2oLnDn+agc/wA0OFT0wywpDLC5X7efFL9oHxQMVPVHLCicsLl/2gfFMeoHxQEVPTnLCb7W
+ FzH28+KX24+Kdwoen+1hL7WFzP24+KX24+KXCp6b7WEvtYXM/bj4pfbj4pcKnpvtYS+1hcz9uPil9uPi
+ lwqem+1hL7WFzP24+KX24+KXCp6b7WEvtYXM/bj4pfbj4pcKnpvtYT/awuY+3HxS+3HxQ4VPT/awl9rC
+ 5j7cfFL7cfFLhU9N9rCX2sLmftx8Uvtx8UuFT032sJ/tYXMfbj4pDPPihwpeo+1BL7UFzIzz4p/tx8Uu
+ FD0v2oJvtQXN/bj4pjnHxTuFT0n2sJfawuYOefFN9vPijwoep+1hL7WFywzz4qQzj4pcCnqPtQS+1Bcz
+ 9uPikc4+KXAl6b7UE32oLmDnnxTftA+KXAl6j7SEvtIXNNz/ADRBneaPAl6L7SEvtIXOHP8ANROf5ocC
+ XpPtQS+1Bcyc8+Kb7efFLgU9QMsJ/tYXLfbz4pv2gfFDgU9V9rCicsLl/wBoHxS+3nxQ4Vr0xygm+1Bc
+ 19uPil9uPilwoenGWFMZYXK/bz4p/t58UOFD1X2sJfawuV/aB8U/7QPilwoeoOWFH7WFzH28+Kb7efFH
+ hU9R9rCX2sLl/tx8Uvt58UuFT1H2sJfawuX+3nxS+3nxS4UvUfawl9rC5f7efFL7efFLhU9R9rCX2sLl
+ /t58Uvt58UuFT1H2sJfawuX+3HxS+3HxS4VPUfawl9rC5f7efFL7efFLhS9R9rCX2wLl/t58VE558UuF
+ T1X2wJfawuU/aB8VIZ58UuFT1P2oJ/tYXMjOPikc4+KXCl6b7WE/2wLlTnnxTftA+KHCp6z7WEvtQXKD
+ qB8UQdQ80uFT032kJfaQubGf5pzn+aPCp6P7SE/2oLmT1DzUT1DzS4VPTnLCicsLmT1A+Kic8+KHCl6f
+ 7WEvtYXL/bj4pxnHxS4VPUfawl9rC5j7cfFP9vPih7aHpvtYS+1hcz9uPil9uPil7anpvtYS+1hcz9uP
+ il9uPilwKem+1hL7WFzP24+KX24+KXAp6b7WEvtYXM/bj4pfbj4pcCnpvtYS+1hcz9uPil9uPilwKem+
+ 1hL7WFzP24+KX24+KXAp6b7WEvtQXM/bj4pfbj4pe2p6X7UEvtQXNfbj4pfbj4pcCnpftQS+1Bc19uPi
+ l9tPil7anpftQS+1Bc19tPil9tKXtqel+1BN9qC5v7aUvtp8UvbU9J9qCX2oLm/tp8Uvtp8UvbU9J9qC
+ X2oLm/tp8U324+KXtqel+1BL7UFzX20pfbSl7anozlBL7UFzn20+KX27zTxFcHpRkhTGSFzAz/NSHUPN
+ ExS9P9pCickLm/2h5pjn+aHCgvRHLCb7YFzTs4+KGc4+KPCtL1IzApjLC5MZ58VIZ58UDFa9YMsJfawu
+ WHUD4pHqB8UOFD05ywm+2BcseoHxTftA+KXCp6sZYT/aguVGefFEGefFLhU9McoJvtYXNHOPionOPilw
+ pem+1hL7WFzH24+Kf7cfFKkvTfawl9rC5n7cfFL7cfFKkvTfawl9rC5n7cfFL7cfFKlPTfawn+1jxXMf
+ bj4pfbz4pcKHp/tY8U32sLmft58Uvt58UuFT032sJfawuZ+3HxS+3HxR4VPTfawl9rC5n7cfFN9vPilw
+ qen+1hP9rC5f7efFOM8+KFKen+1hL7WFzIzj4p/tx8UqU9L9rCX2sLmTnHxUTnnxS4UvU/awn+1hcp+0
+ D4px1A+KXCueq+1BI5QXLDqB8VIdQ80eFL0xyQonJC5z7f5pfb/NHhU9F9pCkMkLmvt/mm+3+aXCh6j7
+ UEvtQXL/AG8+KX28+KHCp6Y5QTfagua+3HxS+3HxS4Vpel+1BL7UFzX24+KX24+KXCh6X7UEvtYXNfbj
+ 4pfbj4pcKHpftYS+1Bc19uPil9uPilwqel+1BL7UFzX24+KX24+KXCp6X7UEvtQXNfbj4pfbj4o8KXpf
+ tQS+1Bc19uPil9uPilwpel+1BL7UFzX24+KX24+KXCh6X7UEvtQXNfbj4pfbj4ocKnpftQS+1Bc19uPi
+ l9uPihwqel+1BL7UFzX24+KX24+KXCp6X7UEvtQXNfbj4pfbj4ocKnpftQS+1Bc19uPil9uPilwpel+1
+ BL7UFzX24+KX24+KXCp6X7UEvtQXNfbT4pfbj4o8KnpftYT/AGsLmDnHxUPt58UeFT1gywpDKC5MdQPi
+ iN6j5ocCnqTkhROSFzf7R80x6h5pcCHojlBL7UFzf2/zTfbj4o8KnpftYTjLC5c558VE9QPilwqer+1h
+ L7WFyg6ifFSGefFN4UPTnLCicsLmjnHxTHOPigYqemGWFIZYXLjOPipDOPihwqen+1hROWFzX28+Kic4
+ +KcIpen+1hL7WFy/24+Kf7cfFO4UvUfawl9rC5f7cfFL7efFDhU9T9rCX2sLl/t58Uvt58UuFL1H2sJf
+ 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
+ 9uPilwoen+1BL7WFzH24+KX24+KXCp6f7UE32sLmftx8Uvtx8UuFD0/2oJxlBcv9uPin+3nxS4VPT/aw
+ kcsLmPt58Uxzz4pcKnpjlhN9rC5n7cfFL7cfFHhU9N9rCf7WFzH24+Kf7cfFLhS9P9rCf7WFy/24+KX2
+ 8+KHCl6j7WE32sLlznnxTfbz4pcKnqPtYS+1hct9vPinGefFHhS9SMoKQyQuXGf5ogz/ADQ4VPTDJCf7
+ SFzX2/zUT1DzS4UvTHJCgckLm/2h5pvt58UhFD0RyQoHKC585p8UM5p8U7hU9J9rCcZYXL/bj4pxnHxR
+ 4UPUjLCl9qC5gZx8VIZx8U3hS9L9qCY5YXNnOPioHOPilwoel+1hL7WFzP24+KQzj4pcKnpxlBP9qC5k
+ Zp8VL7cfFLhU9L9qCb7UFzf24+Kb7cfFDhU9L9qCX2oLmftx8Uvtx8UuFT032oJfaguZ+3HxS+3HxS4V
+ PTfagl9qC5n7cfFL7cfFLhU9N9qCX2oLmftx8Uvtx8UuFT032oJfaguZ+3HxS+3HxR4VPTfagl9qC5n7
+ cfFL7cfFLhU9N9qCX2oLmftx8UhnHxS4VPS/aQl9pC5wZ3mn+3eaXCuD0P2kJfawucOf5oZz/NLhS9P9
+ qCQyguZGf5qYzT4pcCnpRlBP9qC5r7cfFL7cfFLgU9N9qCX2oLmPt58Uvt58UuBD1Aygn+1Bcv8Abz4p
+ fbz4pcCnpjlhROWFzRzz4qJzz4o8CHpvtYS+1hcz9uPil9uPilwIem+1hP8AawuY+3HxS+3HxS4FPT/a
+ wl9rC5j7cfFL7cfFLgU9P9rCX2sLmPtx8Uvtx8UOBT0/2sJfawuY+3HxS+3HxS4FPT/awl9rC5j7cfFL
+ 7cfFDgU9P9rCX2sLmPtx8Uvtx8UuBT0/2sJfawuY+3HxS+3HxQ4FPT/awl9rC5j7cfFL7efFLhSHp/tY
+ S+1Bcx9vPinGefFO4Vz032oJxkhc0M4+KkM7zS4VPSjJCf7QFzQz/NSHUPNDhU9GcgKJyAue/aHmonP8
+ 0uFT0Bygo/awuddnHxQznHxR4UPTjMCkMsLk/t58VIdQPikYoer+1hI5QXLjqB8Uvt58UOFD0xywm+1h
+ cyc8+Kb7efFHhU9SMsJ/tYXLfbz4p/t58UOFT1H2sJfawuX+3nxS+3nxS4VPUfawl9rC5f7efFL7efFL
+ hU9R9rCX2sLl/t58Uvt58UuFT0/2sJfawuY+3nxS+3nxR4VPT/awl9rC5j7efFL7efFLhU9R9rCX2sLl
+ /t58Uvt58UuFL0xywoHKC5z7cfFL7YUuFD0P2oJxlhc4cwqBziO6PCl6oZgUxlhckM8+KkOoHxTTFBer
+ +1BROSFzI6gfFP8Ab/NLhWPSfaQl9oC5wZ/mpfbvNGmSL0P2kJfaQudOd5qJz/NLhZXpftQT/aguY/aH
+ mn+3nxS4VpelOUExywuaOcfFROcfFDhYy9N9rCcZYXL/AG4+Kf7efFHhQ9R9rCX2sLl/t58U/wBvPihw
+ qen+1hL7WFy/28+KX28+KXCuD1H2sJfawuX+3nxS+3nxS4Vz1H2sJfawuX+3nxS+3nxS4Vheo+1hL7WF
+ zH28+KX28+KXCsen+1hL7WFzH28+KX28+KXCyxen+1hL7WFy/wBvPin+3nxS4V71H2sJfaguYGefFP8A
+ bj4o8KwvS/agm+1Bc39uPim+3HxS4Vr0n2oJfawuZ+3HxTfbj4o8Knp/tYT/AGsLl/t58Uvt58UOFT1H
+ 2sJ/tYXL/bz4p/t58UuFT032oJfaguZ+3HxT/bj4pcKHpftQT/aguZ+3HxTfbz4oUl6f7UEjlhcx9vPi
+ mOefFCkvT/agnGQCuYbn+atU5spUueibZKnMrNov3K8x0oKXIUIRYTbUEsAFIBSDVLagpiE6UJIIXTJp
+ SlBC6iU8pILWJCUKUJQkpYJ0kk5KkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkgpSZOmSUp
+ MnTJKXSSSSUuouUlFySmtYq5VixVykpmxWmKqxWmJKTBJIJJKUkkkkpZJJJJSkkkklLJJJJKUnTJ0lLp
+ JJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJS6dMnSUoqvYrBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk
+ 6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkp/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFK
+ SSSSUpJJJJSk6ZOipZJJJFSkkkklKTpJJKYlRKmVGEksVIJQnASUuE8JBJBKxCYhSUSgpjCYpyVAlBTF
+ xQypEqBQUsnBTQkAgpRTFShPtSUwAUgn2pQnBSpS3KJTSnISAqQCg1ECSlQolTKGSkpeU0qMpBJSimhS
+ hPCKmIUgUoShJS8p5UUxRQz3J9yESmBRUmlIhQBUwkpiQolTKgQkpaUpTQnARUuCnSAUoSUxSTkKJSUq
+ U6ikElMkoTBShIoYwlClCUKMqWTymhMghlKSinCKl0xUkxCcpgUlIhKEUrBOnATwkpgUykQokIKVKeVG
+ E4CSlEqDlOFByCkaKxDRGJqm0xFCExFCSVimUiooKXSTJIqXSTJJKXTpk4RUukkkkpZJJJJSkkkklKTJ
+ 0ySlJJJJKUkkkkpSSSSSlJJJJKXCdME6SkL1WerL1WekpgEetACPWkpsNU1BqmkpSSSSSlJJJJKUkkkk
+ pZJJJJSkkkklKTJ0ySVJJJJIUkkkkpSSSSSFJ0ydJSkkkklKTpJJIUkmSlJSkkydJLIJ1EJ0VKKinKik
+ ldJOAlCSWJThIhIJKZIFphHVa86JJc7JshY+RfC0Mtywsl6MVMLMgoXrEqu4yUSpkq3BaUzSSpFhKt4+
+ NuWgzCnsnFDgOqcoGty6M9P8kM9P8kFOAGOUgxy2/sHknGB5JKcYMcn9Ny3BgeSc4Hkgpwdjk4YVtHB8
+ k32LyRQ5Aa5MWOWyMLyS+xeSCnDLHKOxy3vsHkl9g8klOEGOT7HLc+weSX2DySS4mxybY5bn2DyS+weS
+ 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
+ 9NyXpuW59h8kvsPklopw/Tcn9Ny3PsPkl9h8kNFOF6bkxY5b32HyTHA8ktEuDscnDHLbOB5Jxg+SK5xt
+ pUXEhbLsOFTvx4SU5jrSEP7QUS6uFTIQQ2heSiteSqtbZWhRTKSmABKY1OWtViSrIwJ7IKedNTkvTcuh
+ PT/JROB5JIcEMcn2OW59g8k4wPJJDhem5L03Le+weSX2DySU4OxyWxy3fsHkm+w+SSnD2OS2OW59h8kv
+ sPkkpw9jk+xy2/sPkn+weSKnD2OTbHLd+weSb7D5JKcPY5LY5bn2DyS+weSSnD2OS2OW59g8kvsHkkpw
+ 9jktjlufYPJL7B5IqcUMcphhWwMHyUhhIKcU1lCdW5b5wlE4Pkkp5/03JxW5b37P8kjgeSSC4Ja4KJJC
+ 2rMKFRuxoSWtH1CE/rFJ9cIW1JfFKbSo+oSohqKyqUmZZpJRmtcVYpxpV+rDlBYXK9NyY1uW8MHySOB5
+ JLHn/Tcl6blunA8kvsPkkhw9jkvTctz7B5JfYPJFTh+m5L03Lc+w+SX2HyQXBw/Tcl6blufYPJL7D5JL
+ 3D2OS2OW59g8kvsHkkxlw/Tclsctz7B5JfYPJJa4exyXpuW59g8kvsHkkyRcP03Jem5bv2HyTfYPJJe4
+ mxyWxy2/sPkl9h8kRSwuLscm2OW39h8kvsPkitcMscmLHLd+w+SicHySU4exyWxy3PsHkm+w+SCHE2OU
+ gxy2vsPknGD5JKcXY5Psctv7D5JfYfJBTh7HJbHLbOD5JfYfJBLhFjkJ4IXQOwvJUcjFhNS5HqEFXMa8
+ yql1e0qVHKaUvTYdkrbpMhc/gdl0NA0QS2AEoTqMpqWYTlRBSJTULFRJTkqKClkk6SCCpOEySC1kkmSS
+ UpJJJPSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJIKUmTpklKTJ0ySl0kkklLqLlJRckpr
+ WKuVYsVcpKZsVpiqsVpiSkwSSCSSlJJJJKWSSSSUpJJJJSySSSSlJ0ydJS6SSSSlJJJJKUkkkkpZJJJJ
+ SkkkklKSSSSUunTJ0lKKr2KwVXsSU1XqLVJ6i1JTZrVhqr1qw1JS6ZOmSUpOmTpKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf
+ /9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJFSkkkklKSSS
+ SUpJJJJSkkkklKSSTJKXSTJSklklKjKUpKXlRKdMkpiVEhEhNCCkRao7Ufam2pUpDtS2o21LalSkYan2
+ okJQhSke1MWosJoRUgLU21WNqbYihE1qIApbU8JKYEIZajwm2pKa+1OGo21PtSUiDVLapwnhJSPam2os
+ JoSUi2pi1G2pbUVIC1NtVjalsStSENUwETalCVqRkJi1FhLalakG1OGo21LajamAanhShPCVqRkKBajQ
+ ltStTX2pbUfaltStSINUg1E2pQlamEJtqJCUJqERam2o0JbUFIdqcNRdqW1FSMNT7USEoRUi2pbUWEoS
+ tKPalCJCUJWhEWqJajQlCVqQbE+1G2pbUlIS1CcFaIQHhBSAhTYolSYkltMRQgsRggpRTJymSUpJJJJS
+ kk6SKlk6SZJS6SZJJS6SZJJS6SSSSlJJJJKUmTpJKWSSSSUpJJJJSkk6SSlBOUgkUlInqq9Wnqq9JTAI
+ 9aAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlkkkklKSSTJJXTJJJKUkkkkpSSSdJCySdJJSydJJJCkkkkl
+ Lpk6YpKWJTSkkkpSkEwUgilQTpkklKShJOEl1KASTpikqmJTApFMkupkSql7tFYcVUvOiCqcnLKw8lbW
+ UsbICIVTQ7q7jNlVI1V7F5VmJW07mHVK2KqRCzcLstqrhCUkUwNIQzQFcKgQmCRVTU9AJxQFZhNCdxFV
+ IBSE/ohGUgEOJDVNAUTQFd2pi1LjVTS9EJxSFZISAS40IBSE/oBWAE8Icamt6AS9AKzCUJcSmt6AS9AK
+ zCUI8Smt6AS9AKzCUJcSmr6AS9AK1CUJcSmr6AS9AK1CUJcaWt6ATegFahKEONVtX0Al6AVqEoS41W1v
+ QCXoBWYTwlxpavohL0grMKJCPEU0ibUFM1BTCkUCSqmhfUIWJmVwugv4WJmJ4kqnnckQVQPK0crlZx5R
+ tVNvHW3iCVhY51W5hnhK0U7dDAQrYqCrY50V5iBKqYeiFL0QiBSTeIqQ+iEvRCMkhxFSH0gl6QRkkuJS
+ H0gl6IRk6XEhB6QS9IIySXEpD6QS9EIydLiUg9EJekEZJLiQh9IJekEZJLiKkPpBL0gjJJcRSi9IJekE
+ VOhxIQ+iFE0hWEilxItreiE/pBGKjKXEq2HpBL0giAqYR4koDSE3ohWYTEJcRQ1xSFIVBFThLiKkXohQ
+ dSFaUXJCRXBz7ags3IrAWxcVlZJUgkuAcXIas941WhklZzzqjxMgizrGq0sZkrNqOq1sVLiTwOnj0ytC
+ ugIGMFosGiaZrSKRikJjUFYKGSmgljKP0gn9IKYUwlZYzJF6QTeiEdPCHEVttb0QnFAViE8JcS4IRSE/
+ pBGSQsrkBqCb0QjpkuIqpB6IS9EI6SPEqkHohL0QjpJcSkHohL0gjpkuIqpD6QS9IIySXEV9IfSCXpBG
+ SSsqpD6QS9IIySXEUUh9IJekEZMlZWlF6QS9IIqcJWUWh9EJxUEaEkuIpBRisJGsKcpiUrK8Bp31iFi5
+ bAt246LGy0+1wi87lNWc4arVygsx/KVruBNjjVbuG2YWHRyt7CPCVoMad3GrEK6Kgq2Lwr7eE2RY0BqC
+ b0QjlMhxFCH0gl6IR4SR4ihB6QS9II6SXEVIPSCXpBHSS4ipB6QS9II6SXEUoPSCXpBHSS4ipB6QS9II
+ 6SXEVIPSCXpBHSS4ipB6QS9EI6SXEVIPRCXohHSS4ipB6IS9EI6SXEVIPRCXpBHhKEOIqQekEvSCPCSX
+ EVIfSCXpBGSS4ipD6QS9IIycJcRUjFIUH1BWQovQEjanJyagsXKrXQZKxMvupoleA4V7YQANVZyOVXHK
+ kpdTdx2rZxWLIxuVuYoQK0h0aawrbawgVKy0qKSKV6QUTUEUFOmWUEIPSCXpBFSRsopF6QS9EIwTwhxF
+ FIfSCXpBGTJWqkXpBL0gip0uJNIfRCXohGSQ4k0h9EJeiEdJLiVSD0Ql6IR0kuJVIPRCXohGSS4kIfRC
+ XohGTpcSEHohL0QjpkuNCH0Ql6QR0xS4lIfSCb0gjJwjxJQeiEvRCsQkQlxLqa/pBSFQUynCNldSM1BB
+ spCuIVgSEk05N9QWRkthbuQFiZakBQ5NphAlFvKrA6o2gt+jVa+MyVj4xW5idkCVtunRUFcbSEPHGiuN
+ CYZKtAaQo+kFZIUYTRJCD0Ql6QR4ShHiSAg9IJekEeEoQ4l3Cg9IJekEeEoQ408KD0gl6QR4ShLjRwoP
+ SCXpBHhKEuNBCD0Ql6IR4ShLjWoPRCXpBHhKEeNSD0gl6QR0keJdSD0gl6QR0kuJVIPSCXpBHSS4lUg9
+ IJekEeEkOJSD0Ql6IR4ShLiWoPRCXpBHSS4koPSCXpBWITQjxLgEQqCZ1QVgKDyhZXcLlZVYC5/MbEro
+ 8srnszupLX8DiXDVNVynu5UajqlaDB2cMcLocRgK53DPC6PDKBKwxdJlQhO6oKdZ0UimWbWFrekE/pBF
+ SRsrUfpBP6YU0pStcAxFYT+kFIFOha7hRmoJjUEZMhxK4UPpBL0gipJcaaRekE3pBGSS41hQ+iEvRCMk
+ jxotD6QS9IIySXGlD6QS9IIySXEuQ+iEvSCMklxKpD6QT+kEVJLiVSMVBOKgiJwUrKwsPSCRqCJKUoWV
+ IDUEM1BWSokJwkU01/SCkKgiKQRsrgEZqCBbUFcJQLeEgV4i4mTWFi5LYW/lLDylICrhct3KNRygv5RK
+ Dqih28RoK2aKwsbDK3Mc6IFDZbUFMVBTYiBRGRQh9EJvSCOUyHEVIPSCXpBHSR4ipB6QS9II6SXEVIfS
+ CXpBGSS4ihD6QTekEdJLiKkPpBL0gjJJcRUh9IJekEZJLiKkPpBP6QRkkOIqQ+kEvSCMklxFSH0Ql6IR
+ kkuIoQ+iEvRCMklxFSD0Ql6IR0kuIqQeiEvRCOklxFSD0Ql6IR0kuIqQ+kE/pBGTFLiKkBrCBYwK25Vb
+ SngrXNyQFi5IWxkuWLklPtdFzbeUNnKladVBh1QtlAdbEC6DDYFz2IdQuhwymkq4XXqrEKZrCas6KZKY
+ SjhQOrCh6QRylCNrDFB6QTioI8J4S4mOkPpBN6QR4ShLiKkHpBL0gjwlCXEm0HpBL0gjpIcSUHpBL0gj
+ pJcSaQekEvSCOkjxI4UHpBL0gjpJcSuFB6QS9II6SXEiqQeiEvSCOlCHEi2sagm9IKwQokJ3EvBRisKY
+ rCdTBQJSt6QQ30hWQouQBK0uXfUFl5DIW3esfKT7WhyLhCrEo+QVTLtUrbEI226lp47QVk0nVa+KUrZD
+ F1KKwrzKgquOtBiBkwSDH0gomoI6iU21iL0gl6IRQpBLiTSH0Qm9EKwklxJpr+iEvRCsJJcSLa/ohL0Q
+ rCSXEq0HohL0QjpIcS1B6IS9EI6SXEoBB6IS9EI6SXGyAIPRCb0grCYo8SiEHpBL0gjJkeIrCi9IJekE
+ YJ0uIqQekEvSCMklxFdSIVBEFQThECaSVzXsqELIzKwFu2cLHzeE6Mk08xmNhY1o1W5m91i2jVSCSKVS
+ NVt4TJhY9A1W7hdkuJTu4lQhaTKRCp4i0mJkpIRGoKPpBWCopokVqH0gl6QRkkbKLRekEvSCKklZRaL0
+ gl6QRUkLKrRekEvSCKklZTaH0gn9IIqSNlNovSCXpBFSSspQ+kEvRCOnhDiKWt6AS9AKzCYhHiKqa3oh
+ L0QrEJQlxFaQ1/RCXpBWISIS4ii2v6QS9II8JkeIqtGKgnNIRQpJvEV1tN9IVO6oLUeFSvTxJIcTIZCy
+ 7gtfKKxryncS6muUalsqvOqt0I8SKdLGrWvRUFn4wWvQEOJFJ2VBSNYU2pyo7KwovSCb0QjBSAS4ittB
+ 6IS9EKxCUJcRVbVNIS9EKyQmhHiKrQCkKQqCNCcIcRXhAaQm9AKylCHEV9Nb0AnFIViEyXEUUh9IJekE
+ ZJKyhD6QS9IIySXEVhQ+kEvSCMmSsotF6QS9IIqSPEVIvSCXpBFSSspRekE4qCIpBCyuARmoKtfUIV8q
+ rfwkCvpwstkLEyBC3svusHKUlqppE6o9JVRx1R6Haopp2sYArWorCycQrbx+EFpbDKgp+kFNqmmkoQ+k
+ EvSCMmStbbAVhP6YTynBQUx9IJvSCKFJC00g9EJeiEdJK00g9EJeiEdPCXGqmv6IS9EKxCSXGimv6IS9
+ EKwklxreFr+iEvRCsQklxKpr+iEvRCsJQlxLmv6IS9EKxCUJcSmt6IT+iFYhKEuIopreiEvSCsQmIR4i
+ mmv6QTmsIiRRtPC0rqxCxcti3r+FiZiPEkRcHIGqpxqr2TyqY5S411NvGatzEr4WPjLdxOyXGgh1seoK
+ 42oIGPwrgTJSW8KF1QQzUFYcoFIFXC1zUEvRCNCkAjxJpAKApCkKwAlCHEtKD0Qn9EIySHGttD6IS9EI
+ ySXGhB6IT+iEZJLiVwoPRCXohHSS4lUg9EJeiEdJLiXIPRCXohHSR4khD6ITeiEdJLiXNc1BMagjlRKX
+ Eski9MJxUFNOEeJYxFQUXUhWAmchxFIcy+oLJyWQtzIWPlJ3EvDjXhVSrV5VSdUuJnjG2xUFp47VmUrW
+ xkuJl4HSorCvV1hVaFerS4mvMUzFYTmsKQUk22FCagomkI6SXElr+iE/ohHSS41IPRCXohHSQ400g9EJ
+ eiEdJLjTSD0Ql6IR0kuNaUHohL0QjpJcaLQeiEvRCOklxrgEHohL0QjpI8aSEHpBOKgipJcTGSw9IJGo
+ IgKdDiUJNc0hN6IVmEoR4ivDXFIRBUFNSCRkUoX1BZ2VWAtZ6zMs6Ixkh53MESsO92q2c48rBvdqn8SQ
+ ph1WthiVi1HVbWEeEuJcIvR4VYK166hCzME8LYr4TJFPCwNQUDSFZKimiRRSD0Ql6IR0keIqIQeiEvRC
+ OklxFjKD0Ql6IR0kuJCD0Ql6IR0kuJSD0Ql6IR0kuJcAg9EJekEdMlxFdwofSCXohHSS4kGKD0Qn9EI6
+ SXEVha/ohL0gjpJcSgGv6IS9EI6UJcS/hQioKYqCIFIIcRQQjFQSNQRQmJQssZLVfUFSurC0XlUbyncT
+ JHVyMhgWVcFr5JWRedUeJsDG1TyrFIVYnVWKSiJLJQp1cZoWtRWFlYxWxjlHiYS2mVBSNIRGKaYZFLVN
+ IUfRCslMncRQ1xSFIUhGAUgEuIqa/ohMaQrMJiEOJDXFIUxUEUKQQ4lWh9EKJpCswmIS4lW1vRCcVBHh
+ JLiVaH0gn9IIqSXEpD6QS9IIySXElD6QS9IIySXEpD6QS9IIySXEpD6QS9IIySXElD6QTioIqcJcSmAq
+ CFbUIVwIFvCAkmnCy64WDlNhdHmBc9ljlSArgHLdyi0nVBs5U6Tqn2up2cUStnHrBWNiHhb2MhaKbTKg
+ p+iERgRITDJFIPRCXpBWITQhxFCD0gm9EI8JwEeIoQeiEvQCsgJ4Q4ihreiEvSCsEJkuIoQ+kE/pBFTo
+ cRUh9EJekEZJLiKrQ+kEvRCMklxKQ+kEvSCMklxKQ+kEvSCMklxJQ+kEvSCMklxKQ+kEvSCMklxJQ+iE
+ jSEdKEuJIDWNIS9IKwQmIR4l1NK2sLKymgLZuWPlnlOtVOHkhUHDVXskqiTqjaKbFDdVsYrFlY/K2sQI
+ WqnVx6grzaggY6utTSVUiNQUDUFYKgUAUUh9IJxUERTAR4kUiFIS9EI4CeE3iKqaxpCb0QrEJI8RVTX9
+ EJeiFYSS4iimv6IS9EKwklxFTX9EJeiEdKEuJSD0Ql6IR4ShLiSg9EJeiEdJLiUg9EJeiEdJLiU1/RCX
+ pBHTQjxKpB6QT+kEWE6XEVUjFQSNIRgkUOIqpzr6gsnJrhbl6x8pPBW041zVVIVy9UnFFlhFdqtUhVAV
+ apKVs/A6uM0LWorCysYrZx0LYZimy2oJzUERikUziLBbW9IJekEZOlxFKH0gl6IRkkuIppB6QS9EI6SX
+ EupB6QS9EI6SXEpD6IS9EIySXEghD6IS9EIySHEtpD6IS9EIySXEnZD6IS9EIySXEm0HohL0QrCUI8S0
+ lreiEvSCOVEpcSLReiEvRCMFII8S4Nf0Al6AVmEoQ4k01vRCcUhHhJLiWlCKQn9EI4TocRQ1jSFH0grR
+ CG5HiU1LKxCy8xoWtaVkZhStILgZI1QqBqi5PKhQNULZAHewBwuioGi5/AHC6GnhBdSYqBKmUMoIpkCk
+ mCdKkFYplJNCFLCVkk8KJQpFqlOFFSCVJZAJQnCdKlMUycpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk6ZJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUukmToKUmTpklKTJ0ySl0kkklLqLlJRckprWKuVYsVcpKZsVpiqsVpiSkwSSCSSlJJJJKWSS
+ SSUpJJJJSySSSSlJ0ydJS6SSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUunTJ0lKKr2KwVXsSU1XqLVJ6i
+ 1JTZrVhqr1qw1JS6ZOmSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySdJJSySdJJSySdMkp
+ SSSSSlJJ0ySlJJJJKUkkkkpSUJJ0lLQlCdJJS0JQnTJKVCUJJ0lLQlCdJJS0JJ0klLJQnSSUtCUJ0klL
+ J0kklKTJ0ySlJJJ0lKTJ0klLJJJJKUkknSUpJJJJSkydJJSySSSSlJJJJKUnTJJKXSSSSUpJJJJSkySS
+ SlJJJJKUnTJJKWcq70dyA9JSAqTFEqTElNliMEFiMElLlMnKZJSySSSSl0kkklKTJ0ySlJJJJKUkkkkp
+ dJJJJSkkkklKSSSSUskkkkpSSSSSl0kkklLpFJIpKRPVV6tPVV6SmAR2IAR2JKbDVNQappKUkkkkpSSS
+ SSlJJJJKWSSSSUpMnTJJUkkkkpSSSSSlJ0ydJCkkkklKSSSSUpJJJJCkkkklLQlCeE8JKWCdJMkldMkm
+ SSunBUU8pLmUpFNKSSWJTKRCeEko3BVLgrzgqd4SS4+SFi5K28pYmSiFNAnVXcV2qonlXMYaqxFY9HhO
+ 4W5SdFg4XZblPCEghsEqBUk0KNSkyeE8JKYpwEoUgEkLgJEKQCRCapCQmhEIUYSpCwTpQnhKlLJJ4ShK
+ kLJJ4ShKlLJJ4ShFSySeEoSUsknhKEKUsknhKEqUsknhKEKUsnShJEBcFKJUkxCcFzEJykAnIRS1L+Fi
+ ZhW3eNFh5g5TkOBlFZrjqtLKCznN1RUnoOq3MM8LFobqtvDakp3MbhaDFQxhotBgQQzUk0J01SkkycBB
+ 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
+ APC6CjhJcUxUCiFDISQoJ0ydJaV06jKkEGIqhRIU0iElBEQkFIhRKS5kCnlDlPKCWZKZNKdBCkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUm
+ TpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOgpSZOmSUpMnTJKXSSSSUuouUlFySmtYq5VixVykpmxW
+ mKqxWmJKTBJIJJKUkkkkpZJJJJSkkkklLJJJJKUnTJ0lLpJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJS6
+ dMnSUoqvYrBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//1evSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkk6SSlkk6SSlkk6ZJSkkkklKSSSSUpMnSSUsknSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySdMkpSSdJJSkkkklKSSSS
+ UpJJJJSkkkklLJJ0klLJ0kklMHID0dyA9JSAqTFEqTElNliMEFiMElLlMnKZJSySSSSl0kkklKTJ0ySl
+ JJJJKUkkkkpdJJJJSkkkklKSSSSUskkkkpSSSSSl0kkklLpFJIpKRPVV6tPVV6SmAR2IAR2JKbDVNQap
+ pKUkkkkpSSSSSlJJJJKWSSSSUpMnTJJUkkkkpSSSSSlJ0ydJCkkkklKSSSSUpJJJJCkkkklLp0ydJTEp
+ iU5USUkrpJlIJJWTpQlCSVJ0ydJcunTKQRUxcqd/CuOVO/hJLjZSxMlbeUsTJSCmiRqrmMNVSJ1Vmh8F
+ TxWl6PDK2qXaLnMS2Fr1X6IlDqbk25UvtCb7Qo6U39yfcFQ+0pfaEqU39ycOWf8AaU4yUKQ6QckXLP8A
+ tKRyUKU3S5R3KiclN9pRQ3tyfcqH2lL7Sihv7ktyofaU32lKlN/cluVD7Sl9pSpTf3JblQ+0pfaUqU39
+ yW5UPtKX2lKlN/clvVD7Sl9pSpTf3p96z/tKX2lKlOhuS3LP+0pfaUqU6G9NvVD7Sm+0pUuDob025UPt
+ KX2lGlzoBycuVAZCc5CFKZ3nRYuWVfuv0WRlWynhDlZIVAjVW8h6pF2qKm1QNVtYgWHS9a+LYip6DHOi
+ vsKyKLtFcbemlTelLcqfrpjem0pubk4cqP2hOMhKkN/cluVH7Ql9oQpTe3JblR+0JfaElN7cluVH7Ql9
+ oQQ3tyW5UftCX2hFTe3JblR+0JfaEqU3dyW5UvtCX2hKlN3cluVL7Ql9oSpTd3JblS9dP66BQW7KW5U/
+ XS9dBDbJUdyqG9N66Km8HKYcs8ZCmMhJLf3Ji5UvtCb7QhS0twuTblT+0JeujSG4XIbiq/rqDr04BeGV
+ pWXkq1bcs7IsTmQOZkhZ7xqruQ9UXO1RZglqGq1sVY9TtVqYz0lz0GMVpVnRYmPatBl6YQxFvkqJKqm9
+ QN6ADEW6HKW5UBkJ/tCVMJbxcolypnIUTkJUgN7cm3Kl9oTfaEaZQ3tyW5UftCf10qXN7cn3Kj66f7Qh
+ S1u7ktypeul66Sm5uS3Kn66XrpKbm5LcqfrpeukoN3clKpeul66S8NyUpVP10vXSpLclKVT9dL10qWlu
+ SluVP10vXSpaW5uUS9Uzeom9GmMlu71IPWd9oUhkI0kF0Q9SLlntyFP102mUJLzosTNK0LbtFkZdkp4Z
+ A4uWsx41WhkulZ7jqivDYxxqugwuy5+g6rcw3wktk9LjHRXg5ZFFsBWhemEMBLcL0wcqJyEhkJUpv7k8
+ qiMhP9oTUN2UtypfaEvtCSm7uS3Kl9oS+0JKbu5LcqX2hL7Qklu7ktypfaEvtCSm7uS3Kl9oS+0JKbu5
+ LcqX2hL7Qkpu7k0qn9oS9dJTclKVT9dL10lNyUpVP10vXSU3ZSlUvXS9dJLdlKVS9dL10lN2UpVL10vX
+ SU3ZSBVL104vQU3wVCwqsMhQfekhBllYGWeVq5N0rFynypoleHMu5Q2DVStOqgw6qRe6eMtvFKwMd8LX
+ x7UFpdypysByzK7kYXphCLdAOT7lQF6f7QmUglu7029UvtCb10qW23w5PuVAXqQvQpTe3Jtyp+ul66VK
+ bm5NuVT10vXSpTb3JblT9dL10ktzcluVP10vXSpTc3JblT9dL10qU3NyW5U/XS9dKkNzcluVP10vXSpD
+ c3JblT9dL10qQ3NyW5U/XS9dKlNzcnD1R9dL7Qklv70xcqX2hMb0FwbZcnDlRN6QvTlzf3KD3Kr66g+9
+ IBK17ljZRV2+5ZeRanhDQuVcDVTtegh6K0t/HWzilYND1q49qSwvQ0OVxrlj03K029MIU3y5R3Kmb03r
+ ptJbu5LcqXrpeulS4N3cluVL10vXSpe3dyW9UvXS9dKlN7cluVH10vXSpTe3JblR9dL10qWlvbktyo+u
+ l66VMTe3JblR9dL10qSG9uS3Kl66XrpUvbu5LcqXrpeulSW7uS3Kl66XrpUpu7ktypeul66VILd3JblS
+ 9dL10ljd3JblS9dL10qSG7uS3Kl66XrpUyBukoTygeuhvuRAZYtfKKwcvutXJtWLlPT6ZHLuGqhWNVK1
+ 2qgw6orC62IugxCubxnrbxbYSYi79bkXcs6u9E9dMIYi3NyfcqPrp/XQpY3NyW5UvXTeulTJEt7enD1Q
+ 9dP9oSpkb+9PuVAZCf10KU3tyW5UvXS9dKlN3cluVL10vXSpYW7uS3Kl66XrpUsbu5LcqXrpeulS4N3c
+ luVL10vXSpc3dyW5UvXS9dKkt3cm3Kn66b10qU3dybeqRvTeujTGW9vS3Kj66f10qQ3dybcqfrpeulSQ
+ W3uThypeunF6NMgbhcqtzlE3qvbciAyBq5JWLkrSyLZWTe9OUWk8aotI1QXHVFqOqNrC7GItvHKwMZ8L
+ XothAla7FZRgVnMvRBkKEob25RlU/tCb7QgpuylKpeul66Km7KUql66XrpKbspSqXrpeukpuylKpeul6
+ 6Sm7ISkKl9oS+0JIbshLcqX2hL10lNzcluVP10vXSU3NyW5U/XS9dJTc3JblT9dL10lNzcluVP10vXSU
+ 3NyW5U/XS9dJTc3JblT9dL10lNzcluVL7Qn9dJTdDk+5URkJzkJbqbT3qne5RdkKrbepAFNXJKxclaWR
+ bKyb3SnpDRsCgwaqVhUWHVBmDqYi6DDK5zGdC28W2ECp6Gp2iPKzar9EX10whTd3JblR+0JfaEKWluly
+ iXKob1H10qYi3NyfcqPrpxejS1vbktypeul66VIbu5LcqXrpeuhS8N3cluVL10vXSpe3dyW5UvXS9dKl
+ N3cluVL10vXSpTd3JblS9dL10qWSbu5LcqXrpeulSxvbktypeul66VLg3S5NuVI5Cb7QlSbb+9Ce9VvX
+ Q33ogLCxvcsfJKuX3LLyLEUAtG7lV+6Ja9A3apNqDdo5WvilYlL1qY9sJMpd+hyvscsWm5XWXoU1pujv
+ US5UvtCY5CFMdt3cn3KiL0/rpUvDd3JblS9dL10qS3dyW5UvXS9dKlhbu5LcqXrpeulSG7uS3Kl66Xrp
+ Upu7ktypeul66VKDd3JblS9dL10qZA3dyW5UvXS9dKklubktyp+ul66Swt3cluVL10/rpKbm5NuVT103
+ rpUube5S3Kj66f10lzYtdosjMKt2XLLyrZRS4+WsqwarRynys151StSSkaraxOyxaTqtbFelaHo8UrSY
+ 5YuNbC0GXJILe3Jtypm9N66Cwt3cm3Kn66b10kN3cluVP10vXQQ3NyfcqXrpeugpubktyp+um9dK0t3c
+ luVL10vXStLd3J9yo+ul66Vpb25LcqXrp/XQtIbm5LcqfrpvXSXN3cnDlR9dP66VrS3tyUql66X2hFY3
+ ZSlUvtCX2hJTeBSJVIZCRvRSneVRvKm+9U7rkV4aOUse4LSyLJWXa9G16EDVXccKju1VmmxFTu4y16Cs
+ DHtWpTegh12lSJVJt6l66axybUpSqZvTeukxtzclKp+ul66Sm7KeVS9dP66Sm6CnlUvXS9dBki3CVEuV
+ Q3qJvSXtzcn3Kj9oS+0JIb25LcqX2hL7Qlam7uS3Kl9oS+0JMZbu5LcqX2hL7QitbspSqX2hL10lNyUp
+ VP10vtCKQ3JUgVR+0JxkIMgb5Kq3nRQOQq19+iQXufmHlYOSdVrZdsrEyHpyWqeVYo5VMu1R6X6o2h3s
+ QraodoudxrFrUXIWsLtMeih6zWXogvQWuhuS3KiMhL10kN3cm3Kn66XrpKbu5PuVL10vXQXhubk25VPX
+ Teuilu7ktypeul9oRpDd3JblS+0JfaEuFDd3JblS+0JfaEqQ3dyW5UfXS+0JcKm9uS3Kl9oS+0JcKG7u
+ S3Kj9oS9dKkt7cluVH10vtCXCpvBykHLP9dSGQlwrm9uUHuVT11F16Qim1sh2iwswrSvu0WNl2SpQEuT
+ kcqqBqj3u1VcHVKlN/GW7iHhc/juWxi2QlSnpMdyutesai5W23pkoqdAuTF6onITHITOFTcL029Ujem9
+ dO4UN7enDlRF6kL0uFaW9uSlUvXT+um8Kxubktyp+um9dLhSG7uTblT9dL10qXt3cluVL10vXSpDd3Jb
+ lS9dL10eFDd3Jtyp+ul66VJDc3JblT9dL10qXNzcn3Kl66b7QlSwt7cn3Kj66QvS4Vjf3KD3Kr66g+9I
+ RSwyHLHySrt9yysixPAXho3qsOUS56AHJ1NmDdoWvjFYlL1qY9iVMxd2kq4xyyarlabemkNXI6AekXqj
+ 66Y5CbwsDf3pblRGQpC9DhS3dyW5UvXS9dClN3cluVL10vXSpcG7uS3Kl66XrpUubu5LcqXrpeulTGW7
+ uS3Kl66XrpUtDd3JblS9dL10qZA3dyW5UvXS9dKlxbu5LcqXrpeujTBJubktypeul66XCtDd3pt6peul
+ 66PCzBu704cqHrqQvS4Vzce5ZuUUV16o5NqICC5GZ3WLcNVq5T5WTa7VSAIDCtuq1sRZLDqtLGelTKHp
+ MQrXrdoufxbYWpXemSCXRlNuVT11H11HSG7uS3Kl9oS9dJaW7uS3Kl66XrpMJbu5LcqXrpeukhu7ktyp
+ eul66VJbu5LcqXrpeulS4N3cluVL10vXSZQ3dyW5UvXS9dJEm5uS3Kn66XrosBbm5LcqXrpeukkN7cnD
+ lR9dP9oQpmDfDk+5UBkJfaEKWSb+5MXKl9oTHISpgKd7lSuKT71VtuTmXGWrkLJuCv32rMtek3AUUao9
+ IVXfqj1PRWSdjHWtQVh0WrSpuRYC67Ciys9l6J66aQptkpSqZvS9dKkNwFSBVEXqQvQpTd3KMqp66b10
+ qQ3NykHKh9oUhkJUpvbktyo/aEvtCFIbu5NuVL7Qm+0I0pu7ktypeul66VJb25NuVL10vXSpTd3JblS9
+ dL10qS3tyW5UfXS9dKlN3cluVL10vXSpLd3Jw5UfXTi9KkuiHINrtFWGQhW36IAJamYVz+WVrZVsrEyX
+ ynhcGi/lEp5QHu1U6nao2l28UrbxnLncaxbGPakh263Iocs5lyIL01a3tyfcqXrpeuhSG5uT7lS9dL10
+ kN7cluVL10vXQWtwuUdypm9N66SG8HJ9yoi9P9oSU3pS3Kl9oTfaEFN7clKpfaEvtCSm7uS3Kl9oS+0J
+ Jbu5LcqX2hL7Qkpu7ktypfaEvtCKW7uS3Kl9oS+0IJbu5OHKj9oS+0IpDeLkNz1UOQoOyE4BcyvcsXLP
+ KvXXSsnJslPU5eQqUaq1e5VJ1SU3cflbWIVhUOWvjWQkh6LGcr7HLFouhXW3phCnQ3KO9UjkJvtCbSG6
+ Xpt6pfaE32hGkW3t6W5UfXT+ulSm9uS3Kl66XrpUpuylKpeul66Sm7uS3Kl66XrpKbu5LcqXrpeulSm7
+ uS3Kl66XrpUpu7k25U/XS9dJTclPKpeul66Sm4XKJcqhvUTeiApu7k4cqPrpxejSm+HJnOVMXpnXoUq1
+ XuWNlFXr7lk5Niehz7yqhRrnqqXJM0EzFdoWc1yuUvSbPR28YrYocsDHtWpTcmlrZHYa9OXqgL05yE2m
+ q3NyW5UftCcXo0uDdlKVS+0JfaEqXt3clKpfaEvtCVJbspSqX2hL7QhSm7KUql9oT+ulSm5KUqn66Xrp
+ UhuSlKp+um+0JUtbspSqX2hP66VIbocn3Kj9oS+0JUpulyiXKmchN66VKbspw5UvXTi9KmQN3ckXKl9o
+ THISpLcLk25UzkJvXRWFvhycOVEXqQvQpDcJTEqr66Y3pKSW8LJzFdsuWXl2ykoOLk8oFPKLkGSh0jVJ
+ ni72B2XRUcLncAcLoaOEElsKJCmolBaxhMpFRKSCqU4KgnBQYylBSKiCnlJCxUCplRKC4ME4ShIBJLIJ
+ 0wTpIUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJ0ydJSkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0FKTJ0ySlJk6ZJS6SSSSl1FykouSU1r
+ FXKsWKuUlM2K0xVWK0xJSYJJBJJSkkkklLJJJJKUkkkkpZJJJJSk6ZOkpdJJJJSkkkklKSSSSUskkkkp
+ SSSSSlJJJJKXTpk6SlFV7FYKr2JKar1Fqk9Rakps1qw1V61YakpdMnTJKUnTJ0lKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/
+ 1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKTpkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpkk6SlkkkklKS
+ SSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkk6ZJTByA9WHKu9JSAqTFEqTElNliMEFiMElLlMnKZJSySS
+ SSl0kkklKTJ0ySlJJJJKUkkkkpdJJJJSkkkklKSSSSUskkkkpSSSSSl0kkklLpFJIpKRPVV6tPVV6SmA
+ R2IAR2JKbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUpMnTJJUkkkkpSSSSSlJ0ydJCkkkklKSSSSUpJJJJ
+ CkkkklLpFJMUlLFRTlRSSyCmAohTCSVQmKkmKSVkkySSWSkoBSCKVOVO8aK4VWuCSg4mUFiZIXQZLFj5
+ FaQS4rxqp1OhFsqUW1EKeK0t/HthaLL9FlVNIVlpKchv/aE32hUiSmkpqG/9oS+0KiCU8lKlN37QkMlU
+ pKaShSm/9pTHJVDcVEuKFIb5yU32lZ+4pw4pUp0BkJ/tCoAlPJSpDd+0JvtKpElNJRpTe+0pfaVRkpSU
+ aU3vtKX2lUZKUlKlN77Sl9pVGSlJSpTe+0pfaVRkpSUaU3vtKX2lUZKUlKlN77Sn+0qhJSkpUpvfaUxy
+ VSkppKVJDd+0pxkKhJUgShS50BkKf2hZ7SVMEo0pPbdKzr7JVh8qpa0lGlOfc6VWJ1V2yolA9Eo0pVRW
+ ljvhUmVFXamEJUp06rYVkXLPYCjCUqQ2vXTG9ViSmMoUps+ul66qapaptKbnrpeuqklKShSm39oS9dVJ
+ KUlClNv7Ql9oVSSlJSpTb+0JfaFUkpSUqQ2/tCXrqpJSko0pt/aEvXVSSlJRpTb9dL11UkpSUaU3PXT+
+ uqUlPJTCEN310vXVOSlJTVNo3pvXVUkptUaU2xepDIVKSnko0pu/aE32hU5KaSlS0t37QkL1SkpwSjSG
+ 966Y3KoCU8lGlwSPtVK6yUZ0qvY0lGmQNG4yqjlesqJQTSUWYIa1fodCrtpVmushJcXRpthW23LPrBCO
+ JQpik2zehm9VySoElKmItr10/rqnJSkoUxFtm9N66q6ptUqQG366XrqrqlqlTMG166f11U1S1SpLc9dL
+ 11U1S1Qpa3PtCX2hU5KUlKlNv10vXVSSlJSpDc9dL11TkpSUqS3PXS9dVJKUlKlwbfrpeuqklLVGktv1
+ 0/rqnqlJSpDc9dL11TkpSUqWFtG9RN6ryVEyjTGWx6yQvVbVLVJIbjb0QXqgCVMEpUyhsWXSFn5D5R3S
+ q1jCUmQOZfqqhbqtOymUA0IsgQ1CFqYzoVRlMK7UyElknSqtgI3rKmwEKZlKmApjemF6rGVHVAhTcF6f
+ 11TkpSVGQpueul9oVOSlJQpTc+0JfaFTkpSUVNz7Ql9oVOSlqhSW59oS+0KnJSkoqbn2hL7QqclKSkpu
+ faEvtCpyUpKSm59oS9dU5KUlClN310vXVKSlJRU3fXS+0KlJSkoUpu/aEvtCpSUpKVJbv2hL7QqUlKSl
+ Sm79oS+0KlJSkpUpu/aEhkKlJSkpUpvjIUXZCp7imJKVIZ3Wys28yrbgSgPrJUkV4cywIYGquvpQ/RUi
+ 5lSYWjS+FSrqIVuthCC0t5lqJ6yqgFPqghteul66qSUpKC1teul66q6p9UENsXJxeqmqcSgpt+un9ZVJ
+ KeSlSm166b11VkppKFKbfrpeuqklKSjSW366XrqpJSkpUlt+ul66qSUpKNKbfrpeuqklKSlSG366Xrqp
+ JSko0ht+ul66qSUpKVIbfrJjeqslMSUiFNk3peuqhJSkphS3Bel66qAlS1QSC2PWSFyrapaorw2vWUXX
+ IGqiZTlLW2rPufKtPBVSxhKcppWFCBVl9RUBSUVpZVFaNL4VJlRVuthCVLC6NVqsC9UGAooJSpDaN6b1
+ 1VJKaShSW166f11UkpSUKXAtr10vXVWSlJQpe2vXS9dVZKUlKlNv10vXVSSlJSpTb9dL11UkpSUqWlt+
+ um9dVZKUlHhYy2/XS9dVJKUlCkht+ul66qSU0lKlzc9dL11TkpSUKS3PXT+uqUlKSkpueul66pyUpKFI
+ Ld9dL11SkpSUqWN3103rqnJSkpUuDc9dP66pSUpKdS8N4XpnWqqCVLVGmWLC98rKyDK0rGkqjbXKdTI5
+ VgUGhXH0qLaEqWFJQYWrQ+FQqqIV6phCVMRb7LVI3KsJTElKmItn1kvWVWSlJQpY2vWTesq+qWqbTJFP
+ 6yXrqsZTapMjbF6kL1TBKcEpUlueul66qSUpKPCpt+ul66qSUpKVMZbfrpeuqklKSlSxt+ul66qSUpKF
+ Lg2/XS9dVJKUlKlzb9dL11UkpSUqS2/XTG9VZKYkpUptG9N66qklNJQYy2xepC5UxKkJRQ2vWS9ZVtU2
+ qS4Nr1khcqslIEpLw2jchWWoUlRcCiyBDc+Vn3GVee0lVbKpSUWgUStENJU2VFFYWzQ6FoV2QqNTIVpo
+ KBWtwXJ/XVTVNJUZU3PtCb7QqclKShSm59oS+0KnJSkpUpufaEvtCpyUpKVKbv2hL7QqUlKSlSG79oTf
+ aFTkpSUqU3PXS9dU5KUlKlNz10vXVOSn1SpTb9dL11U1SkpUpt+ul66qSUtUqU2/XS9dVNUtUqU2/XS9
+ dVNUtUqU2/XS9dVJKUlKkNv10vXVSSlqlSm366XrqpqlJSpTc9dMb1UkpSU+IU2TegvtlCMqJBUoCkVr
+ 5VC3VXnsJQH1JLw5zwotCuOoTCgoMgXo0WpQ+FRrqhXK2kIKdFl0KZvVMSkSUqVbZN6XrqmSUgShS0lu
+ +ul6yqAlPqhTG2vWS9ZVtU2qVIbXrpeuqslKShSG166XrqrJSkpUuDa9dL11VkpSUl7a9dL11VkpSUlN
+ r10vXVWSlJSU2vXS9dVZKUlKlhbXrpeuqslKSlSxt+um9dVZKYkpJbRvTeuqhJTSUlW3fXUXXKsCU+qS
+ 0rW2SqNzpVt7SVWsrJSWhzrEFXn0lC9EpNvGxrKv0vhVWVFWa2EJMpdCq2FYbeqDAQiiUmtNueumN6qy
+ U2qVMYbfrp/XVPVKSjS8Nz10vXVOSlJSpLc9dL11TkpSUqWFueul66pyU8lKkNv10vXVSSlJSpTb9dL1
+ 1TkpSUqUG566XrqnJSkpUyBueul66pyU8lKktv10/rqnJTyU2lrb9dP66qSUpKVKbfrpjeqslRJKVLg2
+ /XUheqUlSBKVJbD7lRvslGMqta0lKkubeZVFw1WlbUSqxoKVJQ1crSxzCqspV2quEqQ6VNkK0LlQrEIw
+ JSpa2Teo+uqxJUZKVILb9dL11Ukp5KVLW166XrqrJSkoUhteul66qyUpKFKbXrpeuqslKSlSW16yXrqp
+ qlJSpLb9dL11VkpSUKU2vXS9dVZKaSlS5t+ul66qSUtUKS2/XS9dVNUtUaQW566b7QqklNJSpY3PtCX2
+ hU5KUlGlN0ZCf11SBKeSjSWy69V7LVEyhPBRpeGvc+VRsKu2MJVZ9RSpe1JRq3QmNRU2VkI0huU2wtCq
+ 5ZlbSFaZKVKdNt6l66oglPJSpjk2zem9dU5KUlCllNz104vVMEqQlKlNv10vXVTVKShSm566X2hUpKUl
+ Cl4bZvUTeqpJTSUqXtv10vXVOSlJSpDc9dL11TkpSUqU3PXS9dU5KUlKmMtz10vXVOSlJRpa3PXS9dU5
+ KUlJTc9dL11TkpSUaSG566cZCpSUgSlTIG99oQbb5QJKg6SlS9De+Vl3arTsYSqllJKNKcwjVFqRjQU7
+ KSgps0OhaVViz6qyFcY0pUsLcbap+sqwBS1Spa2vXS9dVdU0lKlrb9dL11U1SkpUkNz10/rqnJSkoUvD
+ c9dN66qyU0lJLaN6b11Vkpapy1teun9dVNUtUbQ2/XS9dVNUtUkNv103rqrqlqipt+ul66qapSUkNv10
+ vXVTVLVFTa9dL11V1S1SS2/XT+uqeqUlFdbc9dI3KoCU+qSbZW2yszIdKuvBKqW1kpWly7UADVX30oQo
+ StSqdFpUOhVK6SrlTCErU36rYVgXqkwEKclJTaN6b11UJKaSght+ul6yq6p9UVW2hcnF6q6paoLS2/XS
+ 9dVJKUlNWNv10vXVSSlJSXBt+ul66qSUpKK9t+ul66qSUpKSC2/XS9dVJKUlJa2/XS9dVJKUlJIbfrpe
+ uqklKSkubXrpeuqklLVJaW366cXqnJTglJjbovTOuVUEpGUVwVbYs+50q28EqrYwlK14c6woStvqKH6J
+ RtsQVWVfpeqjKirVbCErZrb9dqOLlSYCiCUrauRteumN6rElRMoMDbF6kL1Skp5KCW766b11UkpSUlNv
+ 10vXVSSlJSXht+ul66qSUpKSW366XrqpJSkoMZbfrpeuqklKSkgNv10vXVSSlJSZA2/XS9dVJKUlJJbn
+ rpeuqclKSkwybfrpesqslLVFaG16yb1lW1TElFmDa9dOL1TkqQJSS2zcql9spySg2AlG0FoZDpWbYtO2
+ slVH0lG1BqsV6gwhNpKs1VEJWyB0aLIV5lyzqmkKyJQKW0b1H11WJKhJUZCG566XrqnJSkpUtLc9dL11
+ Tkp9UqYS2/XS9dU5KfVKlNv10vXVOSlJSpTc9dL11TkpSUqXBueum9dVJKUlKmUFueun9dUpKkCUqWyb
+ frpeuqklKSkwlteul66qSUtUqXBt+ul66p6pSUqZQ3PtCX2hUpKUlKlsm79oSOQqUlKSlTXLZdegWWqB
+ lDcClTLAorbFRscrj2Eqs+opNsFrEotbkxqKmysogLJFt02K/Vas6thVtgKNMRb7blP11TEp5KVKbRvT
+ euqhJTSUqQ3BepC9UQSpAlClNz10xvVWSmMpUht+ul66pyUpKFIbn2hN9oVMkppKVKbv2hL11SBKcEpU
+ pueul66qSU8lJLa9dL11UkpSUqU2/XS9dVJKUlKktv10vXVWSmkpUpt+ul66qSUpKVJbfrpxeqclPJSp
+ Td9dDfeq8lRJKVJR32Ssu8ytF7SVVsplGlzluClWrLqCk2iEqSmodC06bIVCqohXa2kJUhuttU/WVUAp
+ GUqQ2vXS9dVJKaShS1t+ul66pyUpKFIbvrpeuqUlKSlSG4b03rqpJTSUKQ3PXT/aFSkp5KVIbn2hL7Qq
+ clKSlSm59oS+0KnJSkpUpufaEvtCpyUpKVJbn2hL7QqclKSlSW59oS+0KnqlJSpLc+0JfaFTkpSUqU3P
+ tCb7QqklNJRAXNs3pjeqklOJUgCUr7ZVC90q0QSq9lZKNKcy3VV4Wg+lB9AoIY1aLRodCqspVutkIKb9
+ VsKwL1SYCFPVKlNk3qPrqqSVGShSG566f11SBKmJQpDb9ZL11V1SMpUpteul66qElNJSpTc9dL11TkpS
+ UqU3PXS9dU5KUlKlNz10vXVOSlJSpTc9dL11TkpSUqU3PXS9dU5KUlKlNz10vXVOSlJSpTb9dN66qyU+
+ qKmz6ycXKrqn1RU3BekblUBKckpKXttlZ975Vt4JVSxhKSHPtKrlXn1FCNJSZ4Ndqs1FMKSisqKTY6Nu
+ l8K/Vas+thCtMBSa2RvC5Mb1W1USShTVbHrp/XVMkpSUqXBu+ul66pSUpKVL2766XrqlJSkpUlu+ul66
+ pSUpKVJbvrpeuqUlKSlSG766XrqlJSko0hu+ul66pSUpKVLW766XrqlJSkpUpu/aEvtCpSUpKbSm59oT
+ euqclKSkpu+un9dUpKeSkyBufaExvVOSkSUqS2/XS9dUpKUlJYW8L1MXqgCVIEpIb3rpjeqklNJQU2X3
+ qlfZKkZQHglBQaVmpU6GaqZrlWKKtUmeLpYTYhb1HCycRkLXq0CC4pwmKSSCxYqBUyolBBYFNKcpkmMs
+ gVKUMJwUEM5STBOEl4VCUKUJEJKYpJ0ySFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydBS
+ kydMkpSZOmSUukkkkpdRcpKLklNaxVyrFirlJTNitMVVitMSUmCSQSSUpJJJJSySSSSlJJJJKWSSSSUp
+ OmTpKXSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSl06ZOkpRVexWCq9iSmq9RapPUWpKbNasNVetWGpKX
+ TJ0ySlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJT/AP/X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTJJKXSTJJKXSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJS6SSSSlJJJJKUkmSSUpJJOkpZJOmSUxcq70dyA9JSAqT
+ FEqTElNliMEFiMElLlMnKZJSySSSSl0kkklKTJ0ySlJJJJKUkkkkpdJJJJSkkkklKSSSSUskkkkpSSSS
+ Sl0kkklLpFJIpKRPVV6tPVV6SmAR2IAR2JKbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUpMnTJJUkkkkpS
+ SSSSlJ0ydJCkkkklKSSSSUpJJJJSkkkklLpinSKSmBTKRTJKZBTCgFMJJUVElOSoEpJVKUppSSSyCmFA
+ KQSSyKBaFYQnhFTl3slZt1MrbtZKrOplIKcJ2NKYYq3BjSpDEUoQ4rcaET0Fr/ZUxxk60OQaU3oFaxxk
+ hjJKcsUFS9BaoxlMYyFocf7OVE0La+zJjjJWpxDQVE0FbRxlA4qKHG9ApxQVr/ZU4xUVOUKE/oLXGMn+
+ zIKcY0FR9BbJxk32ZFDj+gn9ArX+zJfZkrU4/oJ/QWv9mS+zI2pyPQS9Ba/2ZL7MlanH9Ap/QWv9mS+z
+ JWpyPQS9Ba/2ZL7MjanI9BL0Fr/ZkvsyVpcf0Cl6BWx9lS+ypWlx/QTiha/2ZL7MmqcoUKYpWoMZOMdK
+ 1OUaEJ2NK2/s6icZG1PPuxVD7IuhOKm+yI2pwm4iOzGha4xFMYyVqcxtCn6K0xjpeghxKcz0U3oLV+zp
+ fZ0uJTk+gl6C1vs6b7OhanK9BL0VqfZ0vs6Fqcv0EvQWr9nS+zpKcr0EvQWr9nS+zoKcr0EvQWr9nS+z
+ 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
+ RGOpihBDm+ikaVp+gl6CVqco0pegtX7Om+zoWpy/RS9Fav2dN9nStTl+il6K1Ps6X2dFTl+il6C1fs6X
+ 2dK1OV6KXorV+zpfZ0rS5XopeitX7Ol9nStTlegl6C1fs6X2dK1OV6Cf0FqfZ0/2dK0OX6Cb0Vq/Z1E0
+ IWpzRUn9JaHoJ/QRU5hpQnY62fQTHHQQ4TsVQOKt44yb7MizQcL7KpDGW0cZIYyLYtym46KKVpDHUhQl
+ bWyOb6KiaVq+gomhK2s5RpTeitX7Ol9nStcHK9BL0FrfZ0vs6Vr3J9BL0VrfZ032dK0uV6CXoLV+zp/s
+ 6Vqcn0EvRWr9nS+zo2pyvRS9Fav2dL7OlaHK9BL0Fq/Z0vs6Vocr0EvQWr9nS+zpWhyvQS9Bav2dP9mT
+ SVOT6CXoLW+zJ/syFrg5PoJegtb7Ml9mStkDk+gm9Ba32ZN9mSS5PoJegtb7Ml9mSWFyhQVIUrU+zp/s
+ 6CHL9FL0Vq/Z0vs6SHJNCG6hbX2dQOMkkOMMdWKqYV446mymEGaKqGQtBghArZCsBBcWcpSoymlBazlM
+ U0p0EFiQmIRITEIMRRwkpkJoQQFlMKKcIL2SSaU8pKWTJ0ychSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKTJ0ySlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSdMnQUpMnTJKUmTpklLpJJJKXUXKSi5JTWsVcqxYq5SUzYrTFVYrTElJgkkEklKSSSSUskk
+ kkpSSSSSlkkkklKTpk6Sl0kkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpdOmTpKUVXsVgqvYkpqvUWqT1F
+ qSmzWrDVXrVhqSl0ydMkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUnTJ0lK
+ SSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SZJJS6SZJJSkkkklKSSSSUpJJJJT
+ ByA9HcgPSUgKkxRKkxJTZYjBBYjBJS5TJymSUskkkkpdJJJJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkk
+ kklLJJJJKUkkkkpdJJJJS6RSSKSkT1VerT1VekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlkkkkl
+ KTJJJKUkkkklSSSSSlJ0ydJCkkkklKSSSSUpJJJJSkkkklLpJJJKWKZOUySmQUlEJ0krFQJUioJJUnCY
+ KUJJUFMKKcJKZhM4JApFFSFzUP01YITQklG2tEFakE5KXEhGWKJYiEqMo8SGGxOK1IFSBR4lLCsKYrCQ
+ KkChamPppjWESU0pWhEa1A1o5KiU61IfSTitFSS4kMBWn9NTTyhakRrTemEWU0o8SEfphL00SUpS4lI/
+ TS9NESS4lI/TTemipJcSkXppemEVJLiUi9MJemEVJLiSi9NL0wipI2pF6YS9NFTSlxJR+ml6anKeU3iQ
+ j9NLYiJiUeJLDYlsTynBStS3ppempgp5StVo/TT7FOUxKNqtjsS2J5SlC1WtsT7E4KeUrUx2JixTlMSh
+ amGxLYpSlKVqY7E+xPKUpcSltiWxPKUocSltiWxPKUo8SmOxLYpSlKXEpjsS2KUpSlxKY7EtilKUo2pj
+ sTbFNJDiUx2JwxPKeUOJS2xPsCeUpQ4lLbEtieUpR4kMdiWxSlPKXEsKPYm2IiYo8S1hsS2qRKaUuJcF
+ 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
+ sS2KcpSlxIYbE+wKUpSjaVtgT7AlKlKS4MdibYFOU0oLww2BNsCmSmlFJY7EtilKeUrWFjsS2KUpSkhj
+ sS2KUppSUrYolinKUpKCA1pgxHKaEWYMA2FJJIoJWJTJFMgpkCphQCmEFpZhKEgkgxFiQmIUiooKCySd
+ MguCpSlMkipdJJJFCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOgpSZOmSUpMnTJKXSSSS
+ UuouUlFySmtYq5VixVykpmxWmKqxWmJKTBJIJJKUkkkkpZJJJJSkkkklLJJJJKUnTJ0lLpJJJKUkkkkp
+ SSSSSlkkkklKSSSSUpJJJJS6dMnSUoqvYrBVexJTVeotUnqLUlNmtWGqvWrDUlLpk6ZJSk6ZOkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkp//0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJ0klLJ0kklKSSSSUpJJOkpZJOkkpZJOkkpZJOmSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ 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
+ YFMpEJoRQoKYUQFIBJC6iVKExCSGBSTwnASQtCdShNCSFkoTpJL4sYSUoShJlYpQpQlCS2S0JQnhKEmN
+ aEoTwlCCloShShNCSlkk8JoSQpJKE8JIYplIhNCSlk4KaE8JLgvKZKEoQZYrFJPCaEl6k6UJ4SYZLJJ4
+ TQkxqTpoTwipZJPCUIqWSUoShBeGKSlCUJLmKSlCUJLCxSUoShJAYpKUJQkyBiknhPCSSsknhKEmGSya
+ U5CZJaFwVIKIUgkyhSiVNRISSUZKjKkQowktLIFSBQwFMJKDOUiVFJJeFEpkilCSVJJwEoTVLJKUJoSp
+ aVkk8JQlSwrJJ4ShKkLJJ4ShKlLJJ4ShKlwWSTwlCVLgspAJQnASpBVCYhThMQlTEWBTKRCZKl8VJJJJ
+ U2ApMkklTHNZJPCUJNcqCdIBPCS6KpTEpyFEhJlCkkoTgJJUmUoTQipZOlCeElLJQpQmhJDFJPCUIIUn
+ TQnSUpMnTQkhSdIBOkpSZSUSElKlKU0JJKXSlMklSl5SlNCUJJXlKU0JIqXlKUySS5eUpTQlCSl0pTQk
+ klRKZKE8J4UsnhOAnhJTGElKEoSUwShShKEkMQFIBPCeEEKASTpikhYqMpyolJDKUpUUklMpTJJQkhSS
+ UJQipSSSSSlJJJJJUklCUJKUklCUIpUklCUJKUmTwlCCVkgUoSATVMgUkgE6Clk0J0oSUtCdPCUJIUnS
+ hPCCloShPCUIKWUSpFMUkMCknhIBJSgnTwlCSlkk8JQkpZJShKElMUlKEoSUxTp4ShJKySeEoRpSySeE
+ 8JKYplIhRIQpSpTJQnhClMUynCaEqQsknhJGlLJiU5TJUyRWSCSQTqZmQUgohSQpgmunTJ0musmTpoRX
+ hZJKEoSXKTpoShJK6SaEoSSpJKEoSQpJKEoSQpJKEoQWrpk8JoSUtKaU5CaE8KXBUgVEBOAnLwvKUpJk
+ F4WlJKEoRSpSTQnhBYVJk8JQkhiknhKEVLJ0oShJQUmlIpkGYLymTJJLlJJ0oQQoKQTAKSC0rgpSmSQY
+ yolNKSZJAZJJk8oLlimTpQklSSSSK1SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnQUpMnT
+ JKUmTpklLpJJJKXUXKSi5JTWsVcqxYq5SUzYrTFVYrTElJgkkEklKSSSSUskkkkpSSSSSlkkkklKTpk6
+ Sl0kkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpdOmTpKUVXsVgqvYkpqvUWqT1FqSmzWrDVXrVhqSl0ydM
+ kpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSU//9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKTJ0klKSSSSUpJJJJSkk6SSlkk6SSlkkkklKSSSSUpJJJJTFyA9WHKvYkprlSYouTsS
+ U2mIwQGI4SUumTpJKWSTpJKWSSSSUpMnTJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSySSSSlJJJJKXSSSS
+ UukUkikpE9VXq09VXpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkklLJJ0ySlJJJJKUn
+ TJJKUkkkkpdJMnSUpJJJJSkkk6Slkk6SSmMJJ06SVk6ZOkpYpJJJJXCSSZJS5TJJ0lMYTwnSRSpJJJBS
+ xUSFNMUUMIThIppRpSQKSFvhMbEqUlKihG1QNqdSGwnVb1kvXSpTZlPKqeum9dGlNvcm3Kp66cWpUhtS
+ lKri1P6qVIbEp5VX1kvWQpTalKVV9ZL1k1TalKVV9ZP6yCmykq3rJeskpspSq3rJesipsylKq+sl6ySm
+ 1KUqr6yXrIpbJKYlV/WTeskhsSpgqp6ycXJUpuSmKreul66VKTlRJQTcom1EBSeU+5VvVTixOpTZlKUA
+ WKXqIUlLKeUH1E3qJUpPKaUD1U3rJUpsynlVPWS9dKlNyUpVT10vXQpTblKVU9dL10KU25SlVPXS9dKl
+ NuUpVT10vXSpTblKVU9dL1kqS25SlVPXS9dGlNuUpVT10vXSpTb3JblU9dL10CFNuUpVT10/rJtJbUpp
+ Vb1kvWRpDZlKVW9ZN6yVIbUp9yp+sn9dGlhbm5Lcqfrp/XSpa2pTSq3rJeslSWzKfcqnrpvXRpeG3uSl
+ VRcnFqTKGzKeUAWJeqkmkxKjKCbVH1UlpbIKeVV9ZL1kqYy2tyW5VPWS9dCmMtuUpVUXJ/WSpQbBKaVX
+ Nyj6qVM8W1KeVVFqf1UqXNqU8qr6yb1kqWFtylKqeul6yVIbcpSqvrJvWSpDalKVV9ZL1kqSG1KUqr6y
+ XrJUvDalKVV9ZL1kqU2pSlVfWT+slSC2ZTEqsblE3JUsLZ3JwZVT1lJtqVMZbYCeEAWhObghSQnTEqub
+ lE3I0yhsEqBKD6qb1UqZAnlOCq4sUhYjS6mwClKD6iRsSpZIJZSlVzal6yFMRbMpSq3rJeujSGzKUqr6
+ 6XrI0ltSlKq+sl6yVKbUpSqvrJeslSm1KUqr6yXrJUptSlKq+sl6yVKbUpSqvrJeslSm1KUqr6yXrJUp
+ tSlKq+sl66VKbUpSqvrpeulSm1KUqr66XrJUptSlKq+sl6yVJbUpSqvrJeslSm1KUqr6yXrJUptSlKq+
+ sl6yVKbUpSqvrpeslSmySmlV/WS9VKl4bQKkCqotUvVQpdTZ3Ji5VjcoG5CkU2iUxKresl6yNLS2JSlV
+ jcm9ZClpbgKeVUF6l6yVIbBKiSgG5R9ZKkNmVKVUFql6qVKbMpSq3rJeslSWzKUqt6yXrJUpsylKresl
+ 6yVJbMpSq3rJesklsylKresl6ySmzKUqt6yXrJKbMpSq3rJesihsylKresmNySG1KUqr66cXIELS2koV
+ cXBI3hDhUE6Uqsbwl66NMwbMpSq4uT+qjS+k0pSgeql6iNJpPKYuQfUUTYjSCE+5SDlUNqQuSpjIboKe
+ VUF6f102lhbBKaVXNyb1kkNmUpVb1kvWQU2ZSlVvWS9ZBc2ZSlVvWS9ZJLZlKVW9ZL1klNmUpVb1kvWR
+ QWzKUqt6yXrIrWzKUqt6yXrJKDZlPKq+snFyS5sp1X9ZP6yFKTpIHqpvWSpSdJA9ZN6yVIKeUpVf1kvW
+ QpY2JSlV/WS9ZGlwbEpSq/rJvWRpeGzKaVX9ZP6qNMoTykg+ol6iK6kySD6oS9VClpTJSgG1R9ZKmMto
+ FOCqnrJ/WSpiLblKVV9dL10KWNmU0qt6yXrIUyRbMpSq3qpeqhTK2ZTyq3qpesipsylKreul6yKWzKUq
+ t6yXrJMZbMpSq3rJesgsbMpSq3rJeskuDZlPKq+sl6yS5sylKresl6yCWzKUqt6yXrJUktmUpVb1kvWS
+ pjLZShV/WCf1glS1PCSB64TesjS4NmU+5VPWTi1Kl4DalMUAWqXqJUvAZplDemL0aSklPKAbE3qpUtIb
+ MpSq3rJeslS1sylKresn9ZGkNiUpVb1kvWSpTZlKVW9ZL1kqU2ZSlVvWS9ZKlNmUpVb1kvWSpTZlKVW9
+ ZL1kqU2ZSlVvWT+slSmxKUqv6yb1kqU2ZTgqr6ycXJUptJFV/WSNyFJTEpSqxuTesjSG1KUqt6yf1kqU
+ 2ZTSq/rJvWSpTZlPKq+sn9ZKlNpJVvWS9cIUlspiq/rBOLUqUEqdC9RL1AlS6kyeVX9UJvVSpRbMpblW
+ 9VR9ZJYW1KaVW9ZL1kKWktlSBVUXJeslSLbUpiVW9ZL1kqU2JSVf1U4tQpSdJA9VL1UqS2Eyr+sl6yNJ
+ bEpSq/rJeslSmxKUqv6yXrJUpsSlKr+sl6yVKbEpKv6yb1kaQ2UlW9ZL1kqU2UlW9ZL1kqQ2JTyqvrJe
+ sjSm2CnlVBcpeshSqbBKiSgG1MbUqWEJiUyB6qcWI0gJwnQhYn3oU2YJJS3IJsUDajTLTa3JAqqLVIWo
+ UwTDaBTyqvrJ/XQpjDZlNKreul6yVLw2ZSlVvWS9ZKlNmUpVb1kvWSWlsylKresl6ySGzKUqt6yXrIKb
+ MpSq3rJeskkNmUpVb1kvWSZA2ZSlVvWTeskptbk0qt6yXqp9LS2JTSg+qmNqVITynDlVNqb1kaU3g5KV
+ TF6f10KXNqUlV9cKQuCFKbCYlB9YKJtSpKYuSDlWNiQsT6Q2wU8quLFL1E2kpUkL1E3qJUpLKaUL1E3q
+ I0pNKeUD1EvUQpCeU6r+qn9VKlJ0kD1UvWQpCdKVX9ZL1kqQ2ElX9ZL1kqQ2ZTyqvrJeslSm3KaVV9dL
+ 10qS2ZTSq/rJeslSmwkq/rJvWSpTZlPKq+sl6yNKbUpSqvrJeslSmymVf1kvWSpTZTyqvrJeslSbbUpi
+ VW9ZL1kqS2Egq/rJeslS5tAp5VT1k/rpUltSmVcXKQtCFKpMnQfVCXqhKlUlJTSgm1RNqNILYlPKq+ql
+ 6yVLC2pTSqvrpeslSG1KUqt6yf1kqS2ZSlVvVS9VKktmUpVb1UvVSpYWzKUqt6qXqpUhsylKreql6yVK
+ bMpSq3qpeqlS4NmUpVb1UvVSpcGxKeVW9ZL1kqS2ZTyqvrJeshSG1KUqr6yXrJUgtmUxKr+sm9ZGmMp5
+ SlV/VS9VGkNiU8qt6qf1UqS2dyW5VvVT+ohS8J5TSg+ql6qVMwCeVIFVxYpCxKklsBIlB9UKJtTaWFIS
+ m3IBtTeonUtbIKeVWFqf1UqQ2ZSlV/VTG5KlU2ZSlVfWS9ZKlralPKq+sn9ZClNmU0qv6yb1kqS2ZSlV
+ vWTesjSW1KRKq+sl6yVJbMpKv6yXrJUpsynlVfWS9ZCktqU0qt6yXrJUpsSkq/rJvWRpDZlPKq+sl6yV
+ IbcppVX1kvWSpDalSBVT1kvXQpDbJUC5VjkKJvRAQ2dycOVP1lMWo0yRbUpSgCxP6iFMtJ5SlANiY2pU
+ skn3JblWNqb1kqY23KUqp6yf1kqQ25TSq3rJeslSGzKaVX9VN6yVJbMpSqvrJeslSm1KaVW9ZP6yVKbE
+ pSq/rJeslSmzKUqt6yXrJUvBbKSresl6yFL7bMp5VX1k/rJUxSbMppVf1kvWSpjbEpSq3qpeqjSmzuSl
+ VfWS9ZKktuU8qp6yf10qXhtSlKq+ul66FLmzKUqt6yb1kaWlsynlVfWTi1KkBsynlVxan9RCmQJpSlB9
+ RL1EqXFPKaUA2qJuSpgk2CU0oHrJvWRpaGzKeVU9ZL1kqZA29yUqr6yf1kqXFsFNCD6qXqhClhTQkg+q
+ m9VKkBsJpVf1U3rI0vDYlKVW9VL1kqXNqU8qr6yXrIUptSlKq+sl6yFIbUpSq3rJesjS1sylKresl6yV
+ IbMpSq3rJeslSmzKUqt6yXrJUlsylKr+sm9ZKlzalPKq+sn9VKkFs7kxcq/qpjalTGU8pSq/qqQsSpdE
+ JpUSVDeoF6VNkBLuSBVc2JC1Klsw2wVIKqLVL1kKapDZTyqvrpeulSQ2CVElANyY2pUvTynBVf1UvVRp
+ LZlNKr+ql6qVKbEpSq/qpvVSpTa3JSqvrJeslSGzKUqt6yXrJUpsylKreql6yVIbMpSq3rJeqhSmzKfc
+ qvqpeslSm3uSlVfWT+slSmxKaUD1k3qo0psSmlV/VTeqlSW2CnVUXKQuSpTYlRJQfWTG1KkppTyq3qpx
+ ajSWyCnQBaE/qhCkpSU0oRtUDaiApsSnBVX1VIXJUltSlKresl6yFKbMpSq3rJvWSpTZlNKrm5N6yNIb
+ Mp9yqesl6yVIbe5LcqnrJeslSG0Sokqv6yb1kqQ2JTgqr6yXrJKbYKeVVFyf1klNmU0qv6qb1UqU2ZTS
+ q3rJesjSm1KUqr6qf1UqU2ZTyqvrJ/WQpLZlKVW9ZP6yVJbEpSq3rJeqlSmxKUqv6qXqpUpsSnlV/VT+
+ qEKUnlKUD1UjalSk8ppVf1UvVSpTZlPKq+ql6yVKbW5SBVP1k4vQpDclMSq3rJjclSmwXJtyqm5MLkqQ
+ 3JTyqgvT+ulSm1KUqr66XrJUptSlKq+sl66VKbcpSqnrpeulSm3KUqp66XrpUptylKqeul66VJbcpSqn
+ rhL10qU25SlVPXS9dKlNolMSq3rpeqjSmxKcFVvVS9VKlNqUpVX10jeEKU2SVElVjem9ZGkNiUpVb1U4
+ tRplinJSBQfUS3o0y0nlPuQN6b1EKYZhs7ktyq+ql6qFNdtbk8qp6qkLkqXBsylKr+sl6yVLw2JSlVvW
+ T+sglsSlKreql6yCmzKUqt6yf1UkNiUpVb1UvVSQ2ZSlV/WS9ZBDYlKVX9ZL1kkNhMgeql6qNqbCUqv6
+ yb1kbS2ZTSq/rJvWSteGzKUqt6yf1krXNmU8qt6yf1klhbMpSq3rJeskhsJkD1k3rIobMppVb1k/qpJC
+ YlMhiyVIGUmaK6ScJ4SXLJwnhKEELpJJSktK6UKMqQKDEVQmIU1FySgjJSBTFIILgzClCZqkkpimTlMk
+ hSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UnTJ0lKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnQUpMnSSUskkkkpSSSSSl1FykouSU1rFWKsW
+ KuUlM2K3WqjFbrSUmCSQSSUpMnSSUskkkkpSSSSSlkkkklKTpk6Sl0kkklKSSSSUpJJJJSySSSSlJJJJ
+ KUkkkkpdOmTpKUVXsVgqvYkpqvUWqT1FqSmzWrDVXrVhqSl0ydMkpSdMnSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//0+vS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSk
+ ydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklLJJJJKUkkkkpdJJJJS6RSSKSkT1VerT1VekpgEdiAEdiSmw
+ 1TUGqaSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpOmTpKUkk
+ kkpZJJJJKkkkklKSSSSSpJJJJSk6ZOkpSSSSKlJ0ycIKUmIU4ShFSFyE90I7wqd7oTgpg+6EF2Qqt10K
+ m7ITgEOkchMb1mi6UQPlOpTcN6Y3qsJTwU7hQn9dN66BBSgpcKmyLkQWqoAVIFKlNwWpG1VdyRKFITm5
+ R9ZAMpoKaQpsesn9ZVoKWqaQps+sl6yrapaoUps+sl6yr6paoUpsesl6yr6ptUaU2fWS9ZVtUtUaU2fW
+ S9ZVtUtUaS2PWT+sq2qcApUhsesl6yBqmgpUpseum9dVyCmgpUps+unFyqiVIJ1KbQtT+sqZdCE62EaU
+ 6Xrp/tCxzkwo/akaS7X2hROQsj7UnGRKVKdQ3pvWWe22UVplKkNr1kvWQAClBQ4Up/WS9ZV4KWqFKbHr
+ Jesq+qWqFKbHrJesq+qWqFKbHrJesq+qWqVKbHrJesq+qUFGlNj1kvWVfVKCjSmx6yXrKvBS1SpTY9ZL
+ 1lW1S1QIS2fWT+uqmqfVNpTa9dL11V1S1SpTa9dN66rappKNIbXrJvXVbVLVKlhbXrJesquqWqNLW366
+ XrKrqlqlSQ2fWTeuq+qi4kJUvDbF6kMlZb7YQTlQhTMHb+0pHJWH9rTjKlKlzsnJTfaFki+UVtspUxl0
+ hcn9VUmulFCVMZTm1N6yCQowUqYy2RcpesqolOlSg2PWSFqrpApUzxbQtS9VVgU8pUuTG5RNyCVHVKlr
+ Y9ZP6yrQUtUqWtn1kvWVZLVKlNn1kvWVbVLVKlBs+sl6yrapapUvDZ9ZL1lW1S1SpLZ9ZL1lW1S1Spa2
+ fWTeqq+qeCjSwp/VUxaqwCkAlTGWyLkxvVdMZQpITm9L1lW1TiUaZg2fVTG9ViYVey2EqZA3/tCkMlYr
+ smFEZaVL3fGSmOQsVuWpDJlKlkg6pvTeus0XSph8pUwlveul66qglPBSpDZ9ZL1lX1Sgo0hsesl6yrwU
+ oKKmx6yXrKvBSgpKbHrJesq8FKCglsesl6yrwUoKVKbHrJesq8FKClSmx6yXrKvBSgpUpsesl6yrwUoK
+ VKbHrJesq+qWqSmx6yXrKvBS1SpTY9ZL1lX1S1SpLY9ZL1lX1S1SpTY9ZL1lX1S1SpTY9ZL1lX1S1SpT
+ Y9ZL1kCCmIKVIbHrpfaVRe+FWfkQlTJF2PtKX2lYf2tOMpKmR2jkpvtCyBkSiNtlKlpdQXp/WVBj5Rgl
+ S0tk3KPrIMFMQUKWlsC5SFyqgFPqlS1s+sm9ZV9UpSpTaFqf1VVBTylSmwblE3IBlMZQpTY9ZL1lW1S1
+ SpLZ9ZL1lW1S1SpLZ9ZL1lW1S1SpTZ9ZL1lW1S1SpTZ9ZL1lW1S1SpTZ9ZL1lW1S1QpTZ9ZL1lW1S1Rp
+ DY9ZP6yrapao0sLa9dMb1W1UTKXCoNn104vVSCpCU7hZg3Rcn9dU5IQ32QlwsjeOQm+0rJfkQgnLRpLu
+ /aUxyFijLUhkylSC6pvSF6zRdKI18oUxl0Bel6yqNJU4KFLCnNyXrKuQU2qFLWz6yXrKtqlqhSmz6yXr
+ KtqlqhS5s+sl6yrapapUls+sl6yrapapUls+sl6yrapao0tLZ9ZL1lW1S1Spa2fWS9ZVtU+qNJbPrKQu
+ VTVPJRpLbFyf11UkpShSm366b11VkpSUKS2fWS9ZVZKUlKlpbPrJesq0papUtbPrJesq0lNJSpIbXrJv
+ WVbVIyjTIGz66f7QqLnwgPvhGmWLq/aUvtKxTlJhlI0vdv7Sl9oWMMmURt0pUsLqeul6yoNfKKDKVMRb
+ XqpesgAFKClTEU/rJesq8FNqm0tbPrJxcquqkJQpki2Ran9VVgUpQpkbJuUTcgEqJlGktj10vXVbVLVK
+ lNn1kvWVbVLVKmMtn1kvWVbVLVKljZ9ZL1lW1S1QpcGz6yXrKtqlqlS5s+sl6yrapapUubPrJesq2qWq
+ VKLZ9ZP6yq6papUxlteum+0KqZTao0htfaE/rqnqnEo0uDcFykL1SkqDrISpeHRGQn+0rHfkQhHMhKmQ
+ B3vtKRyVgDNUxlyjSadk5Cib1lDJlEFspUsLo+ul66oh8qQJR4Vrc9dP66pyU25Klrc9dL11T3FLcgpu
+ eul66p7ktxRU3PXS9dUtxS3FBTc9dL11T3FLcUVN310vXVLcUtxQpTd9dL11S3FLcUqU3fXS9dUtxS3F
+ KlNz104vVLcUtxSS3/XTG9U9xTFxSpTbN6b11T3FLckpu+un9dUpT7klNz10vXVPcluSpTc9dP66pAp5
+ KVKbhvUDkKqXFBc8pUp0BkqbclZBthIZEJUkO39pUTlLFOXCG7MQpfTt/ak4yJWEMuUdl8pUguv66Y3K
+ i2yVLcUqYy2jem9dVSSmkpUsLb9dP66pSU8lClrd9dP6ypAlPJSpLdFyl6yo7k+9Kkt03qBvVQvUS4pU
+ ubnrpvXVLcUtxSpLe9dL11R3FLcUqQ3vXS9dUtxS3FKlN310vXVLcUtxRpDd9dN66p7im3FKkN310vXV
+ LcUtxSpTd9dL11S3FLcUaU3PXS9ZVJKeSjSm2LlIXqlJT7ilwpbvrJG5U9yYvS4VhbRvSGQs59sIRvhK
+ kB2m5Cn66xG5KKMlKm1jDpuvQzes12Qo+vKFMxDqi9SFyzWWSjByVNWbbN6ib1WJKgSUKWBueul66pSU
+ txSpcG966XrqluKW4oUlueul66p7iluKVLC3PXS9dU9xTbihSG766f11S3FLcUqS3fXTeuqe4pbihSQ3
+ PXS9dU9xTbilS8N710vXVHcU+4pUkt31k4uVHcn3p4WFvesmNyp7iluKchtG5R9ZVpKbVJTb9dN66qyU
+ xJSS2/XUhkKhJThxSpToi9P6yzw8qQelSW6bU3rwqRshBffCKnU+0wl9pWI7KhR+1oUl3vtKf7QsNuUi
+ NyJSpTseun9ZZYvRBakp0PWTesqXqJb0qU3PXTeuqReol5SpDe9dL11Q3lPvKFIb3rpvXVLcU+4pUtbn
+ rpeuqclNuKSG766b11T3FKSlSW566XrqnJSkpJbnrpeuqclKSlSm566XrqpJTSUqU3PXS9dU5KUlJTc9
+ dL11TkpSjSG566XrqnJSkpKbnrpeuqclKSlSm566XrqpJSkpUuDb9dL11UJKiSUqXBufaEvtCzy8qBth
+ KlwdQZKkMpYxvhROVCVLnc+1JfalgnLTjLSpDu/aU3rrHbkyjNtlKlpdE3qJvVPemLilSwtz10vXVKSp
+ AlKlrdF6kL1RBKfcUqS3vWS9dUtyW4oUlueun9dUtxS3FKlpbvrpeuqW5LclS1u+um9dU9ybclSW766X
+ rqluT7kkhueul66pbktyS8N31kvXVPcm3JJbvrpvXVPcU24pIbvrpeuqW4pbiktLd9dL11S3FLcUmMt3
+ 10vWVLcluKSm8LlIXKgHqYekkN71UxuVTeoPshJki3Dem+0LMffCF9pSZg7IyFL7SsYZKRyUkl2PtKX2
+ mVi/aVNl8oUxl1/WlP6qz2WSihyKG16qXrKoXqO9BDd9ZRNyqb1EuKSG566XrqluKcOKSG76yf11TBKU
+ pKbfrpesqklKSkpt+sm9ZVZTElJLa9dL11TLim3FJLe9dL11R3FPuKSW766b11T3FLcUlNz10vXVPclu
+ KKm766XrqluKW4pIbnrpeuqe4pbilSG566f11S3FLcUqQ3DeonIVQuKYkpUhtfaE/rqnqnko0huC5SGQ
+ s8vhCdkQkyQdgZKkMlYJy4TjMSbADvfaFE3rHGVKmL5QY5B0zeo+uqAtlTDkmEtz10vXVSSmkpUtbovU
+ hcqG4qW8pIbvrKJuVTemLiklt+ul6yp7iluKS5u+sl66p7iluKCG566XrqnuKW4pIbnrpeuqe4pbikvD
+ c9dL11T3FLcUl7c9dP66pbiluKTFJu+ul66pbiluKSxu+ul6ypbilvSU3PWTesqe8pbkUtz10vXVLcUt
+ xSXhu+ul66pSU4JSXN310vWVOSkXFJaW566XrqgXwoG2EkB1BkJxkrHORCgcqEqZA7v2lL7SsL7YpDKl
+ Klxdk5Cib1mNvlED5SYJN7103rqnuKbcUlobvrpeuqW5PuKTIG566kL1R3FPuKS4t710vXVHcU+4oMZb
+ vrpvXVPcU24pKDd9dN6yp7iluKS8Nv1kvWVPcUtxSS3PXS9dU9xS3FKlNz10vXVPcUtxSpTc9dL11T3F
+ LcUqWtz10/rqluKW4pUpu+ul66pbiluKVKbvrpeuqW4pbilSm766XrqluKW4pUubovUxcqAcVMOSpBbv
+ rKJvVQvQX2wlTGW/9oUxkrFdkQmGWlTJAO79oUTesYZaX2pKm3EOqb04uWUMiUZlkpUxzDo+smN6qhyY
+ kpU1SGychN9oVMkppKVKDfF6f11RDinDkqXN71kvWVLeluSpTc9ZL1lT3JbilSW36yXrKpuTbkqQ3PWS
+ 9ZU9yW5KlNz1k3rKpuKW5KlNv1kvWVTcluSpDb9ZP6yp7ktyVKbnrJesqe4pbilSm56yXrqnuKUlKlNz
+ 10/rKmCVIFKktr1kxuVYlRJRpTa9dP8AaFRLio7ylSXR9dL11nh5T70qS3vXS+0LOdbCC7IhGkuwMlS+
+ 0rD+1KQyUuFTsnIUTkLKGQnF0pUl0vXT+us4WSphxQpTf9dL11R3FPuKVKbvrpeuqW4pbikhueul66p7
+ im3FBTc9dL11T3FLcUkNz10/rKluTyUlNz1k3rqpJSkpIbXrJ/WVOSlJSU3RepesqIcVLcUkNz1k3rKp
+ uKUpKbfrJvWVWUpRU2/WS9ZVJTbkktv1k/rqluKW4pKbvrpeuqW4pbiilu+un9ZUtxTgpKbnrJjeqslD
+ c+EqU3ftCcZKynXQo+uhSXZGQkchZAyExyUqU632hIZCyPtKm2+UKU63rqJvVFtkpy9KlNv104vVEuKc
+ OKVIdAXpG5Uw4p5KFIbBuTesqxKiSUqU2/XT+uqRJTbilSG966XrqjuKW4pUpveul66o7iluKVKb3rpe
+ uqO4pbkqU3vXS9dUdyW4pUpveul66o7iluKNJb3rpeuqO4pbilSm766XrqluKW4pUpvC9SF6oBxTh5Rp
+ Tf8AWSN6pb0txSpTaN6ib1WJKgSUqU2/XUhcqYlTEpUhtesn9dUnOhAfdCVM0HVGQnGQsU5KcZSNNitH
+ a9dRN6yPtSX2lCmtkdb103rLNF0ogslKms3/AFkvWVMOT7kqXBueul66pbiluKFLw3fXS9dUtxS3FCkt
+ 310vXVLcUtxQpLd9dL11S3JbilSG766XrqluKW4oUhu+ul66pbiluKFLW766XrqluKW4pUpu+ul66p7i
+ luSpTc9dN66p7iluKNKbfrpeuqe5KSlS8Nz10/rqlKW5Klzd9dP66pbin3FKlhbnrpeuqe4ptxRQ3fXT
+ G9U9xTbikhueunF6o7ioOshJQdVuQjsvlYH2mEerLSZ4vQsfKMCsmi+VoVvlJJbCSYFJBClElSKiUlpW
+ lOCmhIBJjLMFIlMEighiUgEikkvDMKSgCnlJSimTpkEKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6ClJJJJKWSSSSUpJJJJS6i5SUXJKatirlWLFXKSmbFbrVRit1pKTBJIJJKUkkkkpZJJJJSkkk
+ klLJJJJKUnTJ0lLpJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJS6dMnSUoqvYrBVexJTVeotUnqLUlNmtW
+ GqvWrDUlLpk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9
+ iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSySSSS
+ lJJJJKXSSSSUukUkikpE9VXq09VXpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKTJ
+ 0ySlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTpk6SlJJJJKWSSSSUpJJJJKkkkklKSSSSUpOmTpKUkkkkpS
+ kFFPKSmYUkLcpByNJWs4WZlGFpPOizMtSRU4mS+FQNmqtZZ1WfOqeAht1GVeqbKpY7ZWrRWnBS7KkQVK
+ wytFFadamkaU3oq8a03ppWppekka1d9NMakLQ0tiQYrnpJCpJTUFaf0lcFSl6SaUNH0kvSV70kvSTVNL
+ 0kvSV70kvSQU0fSS9JXvSS9JJTR9JL0le9JL0klNH0k3pK96SXpIqaPpJekr3pJekilo+kn9JXfSS9JJ
+ TT9JL0ld9NN6aSmkak3pK96ab00lNIVJGpXRUnNScpy7GQqFxhbN1WiyclkJwU5tlkIBuKneNVUKdSG0
+ 21HrslUWK1UEqU6FRlX6mSqWO1atDEFLtqTmpW2VqZrTbU55qS9JXjWm9NC1NL0kvSV300vSSU0vSS9J
+ XfSS9JBTS9JL0ld9JL0klNL0kvSV30kvSSU0vSS9JXfSS9JFTS9JL0le9NN6aSmialE1LQNSj6SCWh6S
+ f0le9JP6SSWh6SXpK/6KXpJIaHpJvSWh6Sb0klND0kvSV/0kvSSWFoekn9JXvSS9JJa0fSTipXvSTipJ
+ cGj6KDbXC1/RVW+rRJkDz+Rosu20grXzWQsLI0KLKFC8ozLZWeDqrFRRpc6Nb5Vyoys+paVDUKYy3Kmy
+ rba1ChivMrQYy1jUompX/TUTWkxFpekl6au+mm9NJQaRrTemrvpJekkzRafppemrvpJekkuaXppekrvp
+ JemktaXpJekrvppemkhpekl6Su+ml6aSml6SXpK76aXppKDS9JL0ld9NL00mQNL0kvSV30kvTSU0vSS9
+ JXfTS9JJBaXpJxUrnpp/TSWFqCpP6at+ml6aSwtT01E1K5sS9NFQaXpJekrnpp/SSZg5ljICzcgwt26r
+ RYuYyEmQOPdaQq/rlTyRqqZ5Rpe3mXFWWWErOrV2oJUtk36zKuVtlVaGrSpYlTAWTK0QVKxXWjipNK1o
+ +kl6Sv8ApJvSQQ0fSS9JXvSS9JJTR9JL0le9JL0klNH0kvSV70kvSSS0fSS9JXvSS9JJTR9JL0le9JL0
+ klNH0kvSV70kvSSU0fSTekr/AKSb0klNH0kvSV70kvSSU0fSS9JXvSS9JJTR9JL0le9JL0kktH0kvSV7
+ 0kvSSU0fSS9JXvSS9JJTR9JOKld9JOKklNMUqL6oC0RUoW1aIWpwMkQse98LfzGQudyxCeGWLWNxlEZa
+ qbuUStPpe6DHyrdRlUagtChqFLS3KWyrrK0Ghi0a60FqEVJjUrwqSNSFrS0PSS9JXvSTekkhompN6Sve
+ kl6SCGj6af01d9JP6SSGl6SXpK96SXpJJaPpJekr3pJekklo+kl6Svekl6SCmj6SXpK96SXpJKaPpJek
+ r3pJekkpo+kl6Svekl6SSmj6SXpK96SXpIKaPpJekr3pJekkhoekl6Svekm9NPCwtL0k3pK96aXpIpDQ
+ 9FSFSu+kpCpK2aLnurhUbxC27KtFl5VcIhkDh3vhUXXFXMpsLMfynUlssuKsMsJVBiuVBKlFvVGVdqbK
+ qUNWnQxAhiKRlaMKkaqtHFSYVhaJqTekr5qTekgtaPpJekr3pJekgpo+kl6Svekl6SCWj6SXpK96SXpJ
+ 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
+ Wj6CXoJKc70il6S0fQS9BJTnekl6S0fQS9BFTnekl6S0fQS9BJTneml6ZWj6Cb0EktEVlSFSuihTFCVp
+ aHpJjUtH0UxpRtTQFSkaleFKc1JWhyLmQs28wtzJqWJlNhJmg0H2kKItKhYNVABGmz0bItKIx5KrtCsV
+ tSpq5G1WSVcrbKBRWtKmpJqsG1p/TV1lKn6CC8Of6aXpq/6CXoJq9oeml6av+gl6CSWh6aXpq/6CXoIK
+ aHppemr/AKCXoIKaHppvTWh6CXoJIc/00vTWj6CXoILXO9NP6av+gn9BJDn+kn9JaHoJ/QQQ53pJektH
+ 0EvQSU5vpJektH0EvQSZA53pJektH0EvQSS5/pJemtH0EvQSWFzvSTektH0EvQSQ5vpJektA0JxQkpzj
+ Uql7YW66hZ2XVASUHBtsLSmqvMpspsFV6uUmaL0WHbK26DIXPYA4XRYzdElzbapJgE6CFJk6ZJaVQlCS
+ dBiKkkkklBYqKmmhJeGKdKEoQUukkkghSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnQUpJ
+ JJJSySSSSlJJJJKXUXKSi5JTVsVcqxYq5SUzYrdaqMVutJSYJJBJJSkkkklLJJJJKUkkkkpZJJJJSk6Z
+ OkpdJJJJSkkkklKSSSSUskkkkpSSSSSlJJJJKXTpk6SlFV7FYKr2JKar1Fqk9Rakps1qw1V61YakpdMn
+ TJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklP//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTs
+ SU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKUkkkkpdJJJJSkkkklKSSSSUskkkkpSSSSSl0kkk
+ lLpFJIpKRPVV6tPVV6SmAR2IAR2JKbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkydMkpSSSSSlJ
+ JJJKUkkkkpSdMnSUpJJJJSk6ZOkpSSSSSVkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJKXTFOolJSxKk0
+ qBU2BLiSu4aLNyxotQjRZ2YNERNTzeWNSqAGq0MvkqgOU8SQ38Zq2aGLIxStrHKfxKbjGImxMwokoWpG
+ WptiIUyNqWDEtimE8oWpH6aXpokpSlamAYn2KcpSha1hsS2IkpJWphsS2Kcp5QtSPYlsRJSlK1I9iWxE
+ lNKVqR7EtiJKaUbSw2JbFOUpStLDYlsU00pWphsS2KcpSlaEexLYiJI2pgGJyxTCclC0tK9mixsti3Lz
+ osXLKkBQ4eQ3VUiNVeyDqqTjqpLQuwK3SFUYVbpKVqdTGC18dqycYrYxymEqbrGomxRYUSVESlGWJtim
+ SlKVqYbEtinKUo2phsS2KcpShaGGxLYpylKVqYbEtinKUpWphsS2qcpSlamG1LYpylKVqYbEtinKeUrS
+ w2JbFOU8pWphsS2KcpSlakexLYiSmlKypHsS2IkppStaWOxLYpynlKytYbE4YpSnBQteFbFUyGaK9KqZ
+ B0SiV4Dzeezlc7kt1XS555XOZXKkBZQGiBqrNQQO6s1J1riG7SFp47VnUrUx0LYy6mOxX2MVPHV9hTSW
+ IstiiWIsqJKbbGWGxLYpylKNoDDYlsU5TyhbMGGxLYiSlKVlcUexNsRJTSla22GxLYpylKNrbYbEtinK
+ UpWq2GxLYpylKVpBYbEtinKUpWvDDYlsU5SlK0sNibYiSlKVrSw2JbFOUpStaWGxLapymlK2MsNqbYpy
+ nStIYBilsUgpIEswadzNFiZrF0F3Cws1PBZQ83lN1VAjVaWVys88py5JUFfpaqNSv0lFbJ0qGrUoYs3H
+ K1qECwFuVsRwxQrRgoyUMdibYpkpShaGGxLYpylKVqYbEtinKUpWphsS2KcpSlamGxLYpylKVqYbEtin
+ KUpWphsS2KcpSlamGxNsRJTSlamGxLYpylKVqYbEtinKUpWlhsS2KcpSlamGxLYpylKVqYbEtinKUpWp
+ hsSDFOUgUrUuGIdrNEcFDtOiAOqnCzWcrmsxupXUZx5XNZnJUoLLFyXDVErCi/lErTrZG3UFpY7VQqWl
+ jpWtLp47Vp1MWfjLTqKYStShiYsRAUiUy1pRbEtinKUpWtYbEtinKeUrWsAxP6amCnlCypHsTbEWU0pW
+ Uo9iWxElKUbUj2JbESUkrSj2JbERKUrUj2JbERJK1Wj2JbERKUrVaPYn2KaUpWhhsTFiJKUpWhEWJtiJ
+ KUo2tJR7EtiInCVqBR7FLYphSQtmBa72aLJzGcraesnMPKdEsoeZy2rKsbqtjM7rIs5UoKVVhXqWqlWV
+ epKVqLo0NWrQxZmOVrY5QJYi3qmKwGIdRVgKIlYWBYm2IpKaULWo9iWxTlKUrQw2JbFOU8pWm0exLYiS
+ lKVptHsS2KcpSlaWGxLYpylKVqYbEtinKSVrWGxLYpylKVqR7E+xTlKUrK5hsTbESUkrUj2JbERKUrUj
+ 2JbESUpStaWGxPsU5SlK1rDYm2IsppStIYhii9iMCovOiFm2QFycti5vNbyunzCuazTypQWSJcO0aqLA
+ p3cqDE+2S25SFpUBZ1K0sdK1hdTHatOlizscrUpKaSxFsMYibEzCpyoiWMoyxMWIhKaUrWI9ikGKQKkC
+ lbJFj6aXpqcp5TbLIhLExYikqJKIKkexLYpylKdaLYbEtinKUpWsJYbEtinKUpWsYbEtinKUpWuBYbEt
+ inKUoWV4LDYlsU5SlK1wYbEtinKUpWphsS2qUqO5FYVbUg1LcnBSQuGJwxIFTBTSvCJ7FnZTNFpvKzso
+ 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
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkp//9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYj
+ hJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSySSSSlJJJJKXSSSSUukUkikpE
+ 9VXq09VXpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSS
+ lJ0ydJSkkkklKTpk6SlJJJJJWSSSSUpJJJJSkkkklKSSSSUpOmTpIUkkkipSRSSKBSxU2KBU2qIpZuOi
+ zMw6LRdwszM4QCnncw6lZwdqtDMGpWaRqpQEOjivW1jvXP45ha1D1IAp2WPRg9ZzLEYWp4Cm2XJtyr+o
+ o+onUptb0vUVQ2qJtQ4UNz1UvVVH1UhalwlTfFif1FRFqf1UKQ3vUS9RUfWS9ZNoqb3qJeoqPrJ/VSoq
+ b3qJeoqPqpeqlRU3fUS9RUvVTeqjRU3vUTeoqXqpeqjwlTd9RL1FS9VL1UeEpbvqJvUVP1U3qpGJU3fU
+ S9RUfVT+qm0VN3en3qkLU/qpUVN0PSNipC1I2o8JUyvs0WNlvV26yVl5BlOAU5mQ7VUi7VXLmkqoWFPo
+ qXY5W6XKq1hVmppCVFDq4z1r0PWHQYWlS+EKKnZY9E3rPZaieqm8JU2i9L1FTNqXqpcJU3PUS3qn6qXq
+ ocJU3N6W9U/VS9VKlNzel6ip+ql6qVIbnqJeoqfqpeqlSm56iW9U/VS9VKlNzelvVP1UvVS4Spueol6i
+ peqm9VLhKm96iXqKj6qXqpcJU3/US9RUfVS9VDhKW76ib1FS9VN6qPCVN71EvUVH1UvVS4StLe9RP6io
+ eqn9VLhKG96icWqh6qcWocJXh0fVVXIs0QvVVe62QlwlkDm5r1z+SdVtZZlY17CSjRZg0wdVZqKEKzKP
+ Wwo0UluUlaeO5ZdQhXqTCFFik7dD1fZYsal6uMtSpiLo+oomxU/VTG1DhLEW76ib1FS9VL1UuEoDd9VN
+ 6qom1N6qVFlDoeqn9VZ/qpxalwlcW/6iXqKj6qf1UqWN31EvUVL1kvVQpTd9RL1FS9VL1UaQ3fUS9RUv
+ VS9VKkhu+ol6ipeql6qVMgbvqJeoqXqpeqlSm76iXqKl6qXqpUhu+ol6ipeqm9VKisLd9RL1FS9ZL1Ua
+ Kwt3en3ql6qXrJcJSG8HqXqKgLU/qpcJZoprrNFiZr1etskLJyjKIBZQ42U7VUCdVeyGkqmazKNFezrc
+ r1LlSYwq3U0hGitk6uO9a1D1h0mFpUvhCiwF2q3owes1lqKLU0xK1uGxL1FTNqb1U2ihueol6ip+ql6q
+ VFTc9RL1FT9VL1UqKm56iXqKn6qXqpUUtz1EvUVP1UvVSoqbnqJeoqfqpeqlRU3PUS9RU/VS9VKipueo
+ l6ip+qm9VKipueol6ip+ql6qVFTd9RL1FS9VL1UqKm7vS3ql6qXqpUUt3elvVL1UvVSoqbu9LeqXqpeq
+ lRU3d6QsVL1U4tSoqdAWIdtmirC1Qst0SooaWa/lc5lnUrcynSsPJaSnAFli5rjqiVlMazKIxhRpkbVR
+ WjQ5Z1bVep0SpBdjHetKp6xaXQr1diFFYXTFiY2KmLUxtQ4StLc9RL1FS9VL1UqWlueol6qom1N6qPCV
+ rf8AVT+qs/1VIWocKm/6qf1FQFqf1UuFTe9RL1FR9ZL1UuEqb3qJeoqPqpeqlwlLe9RL1FR9VL1UuEqb
+ 3qJeoqPqpeqlwlTe9RL1FR9VL1UuEqb3qJeoqPqpeqlwlDe9RN6ipeql6qXCUNz1EvUVH1U/qpUtLeD0
+ 4eqItT+qhSg3t6f1FQ9ZS9ZHhZ4tmyzRZOZYrNlqzMl0ogMocfLesqx2q0skErOewynUVyq3K7U5U2MK
+ tVtISoqLqY71q471iU6LSofCFFiLt1PVkPWXXYji1NILGW6bFH1FTNqj6qVFYW96iXqKj6qXqoUpveol
+ 6io+qn9VKilu+ol6ipeql6qVFLd9RL1FS9VN6qNFLe9RL1FR9VL1UuEob3qJeoqPqpeqjwlDe9RN6ipe
+ qm9VLhU3vUS9RUfVS9VLhKW/6iXqKj6qXqocJU3fUS9RUvVTeqlRU3vUS9RUfVS9VKkFveon9RUPVT+q
+ lS1veql6io+qm9VCikOiLFF9uipC1M+1HhK8Isuxc7muWxkvlYmUJTgCyxcm06qDCi2VmUzKyjRZGzSV
+ o0OWfW0q7TolRWF16HrTqesWl0K/XYlRYi6rLET1FnNtU/WTTFiLcNiY2KmbVE2oUVjd9RSFqz/VS9VA
+ hli6Pqpeqs/1UvVQpkb/AKqb1FR9VL1UQChu+on9RUfVS9VHhKG96iXqKj6qXqpcJWFveol6io+ql6qX
+ CVje9RL1FR9VL1UuErg3vUS9RUfVS9VKivDe9RL1FS9VN6qVFcG96iXqKj6qf1UqKW2Xpt6q+on9RGlh
+ bO5SDlV3pxYlSG2HqQeqfqp/VSpcGw96zcp+iM+xUch8ogFkDkZjljXHVa+SJWVbWSUaLIGs06q3SUAV
+ lWKmFKiudHHctbHcsekQtKh0JUtLs0vVtr1lVWKy21AhjLf3peoqfqqPqpnCWEt31EvUVL1UvVSorW56
+ iXqKl6qXqpUUt31EvUVL1UvVSoqbnqJeoqXqpeqlRU3fUS9RUvVS9VGipu+ol6ipeql6qFFLd9RL1FS9
+ VP6qVFTc3pb1T9VL1UqKm3vS3qp6qXqo0VNvenD1S9VP6qVFTd9RLeqfqpeqhRS296cWKl6qf1UqKG8L
+ E5eqQtS9VKipsueqlr0zrVXssSoqa+Q5ZOQ5aFzpWbcJTgCywc24qp3V21kqv6ZlOotkJsflbuEeFi0M
+ grYxdEqKyT0GO/RXmvWTQ+FbbagYteTdL1EvVU2pjahwsRbJeo71VNqY2pUVjb3p/UVL1U/qpUuDd9RM
+ bFT9VMbUOEsgbfqJeoqfqpeqjS4N31EvUVL1U/qpUlueol6ipeql6qVILd9RL1FS9VP6qFLC3PUS9RU/
+ VS9VKlpbnqJeoqfqpeqjSG56iXqKn6qXqpUpueol6ip+ql6qVLg3d6W9Uxan9VHhXhtF6jvVY2pvUR4V
+ zd9RCts0Vf1UOyxDhWFrZT1j3u1WhkOlZtolOorQ1iUip7E+xKi2oICjVcpjWiVshCiyl1cQ8Lbx3aLC
+ xtFq0vhKmtN1GvSL1UFqY2pvCxtkvUTYqptUTalwrg2/US9RU/VS9VLhKm56iXqKn6qXqpcJWFueol6i
+ p+ql6qXCUN31EvUVL1UvVS4Spu+ol6ipeql6qVFQbvqJvUVP1UvVSosgbnqJ/UVL1UvVQ4Slu+qn9VUP
+ VS9VNorW/wColvVEWqQtSoobm9OHqmLVIWpUUNvelvVT1UxtRoqbZsTGxUzcom5Kipu+qkbVQ9VMbUqK
+ WxdbosfLslWbbVm5LpRopcrJdKz3cq/e2VUNeqVFcFVq/SVVrrVypsJUVzpUOWpQ9ZFOiv1OhKip167F
+ YbYstliO21Agqb3qJjYqfqpjahwlBbZsTeoqZtTeqjRWFu+on9RUPVT+slRWlveom3ql6qf1UqK1t70t
+ 6qeql6qVFTc3pb1T9VL1UaKW5vS3qn6qXqoUVwbm9L1FT9VL1UqKW5vS3qn6qXqpUUNzelvVP1UvVRoo
+ bm9LeqfqpeqlRWlt70t6p+ql6qVFDeD1IPVEWqQtQorg3d6G6xVjahvuS4SyBJbYs++xTstVK18o0WaL
+ UyHSsu5aNuqpWMlKivc54T1DVHdUnZVqlRQ38Qwt/FfAWDjthatDoSorS7ldqJ6qzWWqfqpUWCTf9RLe
+ qQtUvVS4SxtvelvVT1VE2pUVN31EvUVH1U/qpcJU3fUS9RUvVS9VLhKm76iXqKj6qf1UqKG76iXqKl6q
+ XqpUUt31EvUVL1UvVQorg3fUS9RUvVS9VKiubvqJeoqXqpeqlRU3d6W9U/VT+qhRQW1vS3qr6qY2pUVp
+ be9P6ipeql6qNFYW8LE/qKh6qf1UqKG96ikLFn+qpi1CiyBuPsWfkv0U3Wqne+UQCzRcvLcsm06rTydV
+ m2NRotiLXUgpBikGIgFMklS1cUrMratCgwpAGvJ3sZ+ivNsWPQ+FcFqBisbjrFD1FVNqj6qHCpuixP6i
+ pC1L1UuFDd3pw9UfVUhahwob29IvVQWpeqlwobJcm3Kt6qXqJUps7ktyreomNqVJbO9L1FUNqb1UuFLc
+ 9RL1FT9VL1UuFTc9RL1FT9VL1UuFTc9RL1FT9VL1UeFTc9RL1FT9VL1UuFa3PUS3qn6qXqpcKG5vS9RU
+ /VS9VLhQ3Q9SD1RFqkLUuFTd3odj1X9ZDfalwrghynrAy3LVyHysfJEp9NiDlWnVRZyi2VmUzKylTZDa
+ oK08crOqZCv0iEmKbrUOWjU9ZFLoV2uxAhrF0g9OXqmLUjam8LGWyXpt6qG1N6qXChueol6ip+ql6qXC
+ vDd9RL1FS9VL1UuFe3fUS9RUvVS9VLhWlu+ol6ipeql6qXCtbvqJvUVP1UvVS4Utz1EvUVP1UvVS4VNz
+ 1EvUVP1UvVS4VpbnqJeoqfqpeqlwrW56iXqKl6qb1UOFLfFif1FQFqf1UuFIb3qJt6p+ql6qXCvDc3pw
+ 9U/VTi1HhXNsvQnvQTahusSEUFjc5Zt5Vu16oWmU8BAaN5WdctC0SqVrEaZYtI8q3jHVBNWqs0MhCkl3
+ cJy3aH6LncUwtemyAgYsMnVD1EvVQWpeqm8C0Nven3qn6qXqpcLIG3vTF6qG1MbUuFRbW9LeqnqpvVS4
+ WMtzen3qn6qf1UuFAbe9P6ip+ql6qHCvDc9RLeqfqpeqlwqLc3p/UVL1UvVQ4StbvqJb1S9VL1UuEqbv
+ qJeoqXqpeqlwlTc9RL1FT9VL1UuEpbm9L1FT9VL1UuEqbnqJeoqfqpeqlwlTc3peoqfqpeqlwlTdFil6
+ ioC1S9VDhKk1r9Fk5buVbssWbkulGlpcrJKz3nVX7xKpOYjRZsaIIjCkK1NrEqLejs3McrbxHLEoELVx
+ nQlRY5u7S7RWNyzarNEf1UOEtSTZLkg9VDam9ZLhLG3N6XqKl6yY3IcJQ3fUS9RUfWT+qlwlTe9RL1FS
+ 9VL1UqS3N6W9U/VS9VKlNz1Et6peql6qVIbu9LeqXqpeqlSm7vS3ql6qXqpUpu70t6peql6qVKbvqJeo
+ qXqpeqlRS3d6beqfqpeqjRU2y9R3qt6iXqI0ls704eqnqJeolS5ueon9RUvVS9VLhKW8bFWufoh+qgW2
+ SiIpc/NdMrn8oLdyTKx8hkp1Fc5Lhqj0hSNWqLXVCNFLexjC2saxYtIhaNLoSoqdyq1WW2LIqtVltqjI
+ LHJ0RYl6ioi1L1UyisbvqJeoqXqpeqlRQ3fUTeoqfqpvVSoqbvqJ/UVH1U/qpUVN31E+9UvVT+qlRU3N
+ 6W9U/VS9VCipt70t6p+ql6qVFTd3peoqXqpeqlRU3fUTeoqfqpvVSoqbnqJvUVP1U3qo0VN31E/qKj6q
+ f1UqKm96ifeqPqp/VSoqbu9Leqfqp/VSoqbm9OHql6qXqpUVNx1irW2IZtVeyxEApCK96zLnK1a6VSs1
+ TwCvDTtVC0LSeyVVfUlRS02N1WriaKm2rVX8dkJUUO/huiFq12LEx3QrzLUCCp0fUTeoqXqpC1N4Shul
+ 6iXqr6qXqJcJQ2d6cPVT1EvVRpDc3pb1U9VI2oUUNr1EvUVM2pvVRoobu9L1FT9VL1UqKm56iXqKn6qX
+ qpUVNzelvVP1UvVS4Spub0t6p+ql6qXCUNz1EvUVP1UvVR4Spub0t6p+ql6qXCVNs2KPqKqbVA2oUUhv
+ CxTFizhaiC1Clzf3qJeqnrJjalSm6HpOeqYtSdajSEeU7RYGYeVr5D5WPk6o0WeDk28obUexigK0aLY6
+ M2FWqiq7WKxW1Ki1sjpY7lq0PWNSYWjU+EqLUdZj1PeqDbVP1UOFeG36iW9U/VS9VLhXtzelvVP1UvVS
+ 4Vzc9RL1FT9VL1UOEqbnqJeoqfqpeqhwlDd9RL1FS9VL1UqKG76iXqKl6qXqoUVrd9RL1FS9VL1UqKm5
+ vTb1U9VL1FIIqbe9N6iq+om9RO4FNvelvVT1U3qpcK8Nzen3qn6qXqpcK5ub0t6qeql6iHCsLb3pt6q+
+ om9RLhQ2t6cPVP1E4tS4UNtz9FnZb9EZ1qoZL5QpIcjKOqrVHVGyDJQqhqkyh3ME8LoKDoufwgt6jhNK
+ 9sEqBKdRKatXCkFEKYQWlkAkQnCRQYywIUVMqJQQFJ5UUkFzKU0pkkkrpJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkydMkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUnTJ0FKSSSSUskkkkpSSSSSl1FykouSU1bFXKsWKuUlM2K3WqjFbrSUmCSQ
+ SSUpJJJJSySSSSlJJJJKWSSSSUpOmTpKXSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSl06ZOkpRVexWCq
+ 9iSmq9RapPUWpKbNasNVetWGpKXTJ0ySlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1+vSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKS
+ SSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSlJJJJKXSSS
+ SUpJJJJSkkkklLJJJJKUkkkkpdJJJJS6RSSKSkT1VerT1VekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpS
+ SSSSlkkkklKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSSpOmTpKUkkkkpZJJJJSkkkklKSSSSU
+ pJJJJSk6ZOkhSSSSSlJJJIqWhSaE0KbQlS5RCoZTZWgVSyUBFTzuXWsx1eq2sqFl2EAqeMELVCFerdCz
+ haAiDJAUwgp1W2wiC5Y/2tOMtSDGh2fWTesskZaX2tSe2p1Tam9VZX2tOMsJe2p0/US9RZv2oJHKCXto
+ dH1UvWWWctR+1pvtqdb1k/rLI+1p/taHtKdb1kvWWT9rS+1oe0p1vWS9ZZP2tL7Wj7SnW9ZL1lk/a0vt
+ acMSnW9ZN6yyvtab7WnjEp1vWS9ZZP2tL7Wj7KXW9ZL1lk/a0vtaacSnW9VL1llfa0vtSiOJTq+sl6yy
+ ftSX2pEY1OuLk/qrHGWpDLThiU6T3yqtglBGUCn9cFO9tSJ9UoRoVreClIS9tTVFCm2qEYuCiXgI+2hm
+ wQrLHwqJuATfaQEfbU6zblP1ljjLTjLS9pTr+ql6qyftaX2tD2lOt6qXqrJ+1pfa032kOt6yXrLK+1pv
+ taXtKdb1UvVWT9rS+1pe0p1vVS9VZP2tL7Wl7SHW9VL1Vk/a0vtaXtKdb1UvVWT9rS+1pe2p1fVS9VZX
+ 2tP9rR9pTqeql6qy/tQT/agl7SrdT1UvVWX9qCX2pL2kun6qb1Vm/agm+1Je0p0/VS9VZf2pL7UEPaQ6
+ nqp/VWX9qS+1Je2h1PVSFqzPtSb7Wl7S8Or6qG+yVnfa032oFL2gyhLaNypPplH9YFLcCl7TKGp6Cm2m
+ FY0SkIe0uLBrIR2aIReAmFoCXtMUnQY+EcWrKGRCl9pR9phLpm5N6yyzlJvtSXtMJdX1UvVWWMlS+0pe
+ 0gOl6qb1Fm/aU4yUvaZQ6YsT+os0ZQS+1BL2kl0fVS9ZZhylH7Um+2sJdX1kvWWT9rT/AGpL21W6vqpe
+ ssn7Un+1Je2i3V9VL1VlfakvtSXtpDq+ql6yyvtSX2pL22QF1fVS9VZX2pL7Uj7SbdX1UvVWV9qS+1Je
+ 0tt1fWTeqsv7Um+1o+0tLq+ql6qyvtaX2pL2lhdX1kvWWX9qTHKR9pIdUXKQuWP9qUxlpe2zRdR1kqnc
+ JQhkgpG4FL22UNaymUH7OrhcCnEJe0yNRtCK2qEeQolwCXtLJLsEKyx8KmbQEhfCPtMBdRtqILlkDJUv
+ tSXtIdX1UvVWV9qS+1oeyh1PVT+qsr7Wl9rS9lTq+ql6qyvtaX2tL2VOr6qXqrK+1pfakvZS6vqpeqsr
+ 7Wl9rS9lTq+ql6qyvtaX2tL2VOr6qXqrK+1pfa0vZU6nqpeqsv7Wl9qS9lTqeql6qy/taX2tL2VOp6qX
+ qrL+1JfakvZU6nqpeqsv7Ul9qS9lLqeql6qy/tSX2pL2VOp6qXqrL+1JfakvZU6nqp/VWV9qS+1Jeyp1
+ hcmdbKyvtaX2pL2UNq0yqNtUqf2gFL1AU04mWLVNCkKIViQlITfbZEba4RmCFAvATeqAl7a0t1joVhti
+ yxkAKX2pH21pdT1kxuWWctR+1pe2sLq+sn9VZQyk/wBqR9tYXU9VN6qzPtSX2oJe2h1BYn9RZgygn+1B
+ H2kOn6qb1VmHKTHKR9pTqesl6qyvtSX2pL2k26vqpeqsr7Ul9qS9pVur6qXqrK+1JfakfaVbq+sl6yyv
+ tSX2pL2lW6vrJessr7Ul9qS9pVur6qXqrK+1JfakvaRbq+ql6qyvtSf7UgcSiXT9VP6qy/tSX2pRnGsJ
+ dT1UvWWZ9pUTlJvtpBdT1lIXLH+1KQy0722eLrGyVWtMqqMoJzeCj7bKEFtcqscdXC8FNIR9tc1W46K2
+ mEYEJy4BH21FTGwrNZhVPVATi8BD22IumyyET1llDJSOUl7bGXUNyj6yyzlJvtSXtLLdX1UvVWV9qS+1
+ Je0i3V9VL1llfakvtSXtJt1fWS9ZZX2pL7Ul7SbdX1UvWWX9qTfak72k26vqpeqsr7Ul9qR9lVur6qXr
+ LK+1JfakfaRbq+ql6qyvtSf7Uh7SrdT1U/qrLGUnGUh7SrdT1UvUWZ9qT/akPaVbpeqm9VZv2pL7Uh7S
+ bdL1U3qrN+1JfakPaWkul6qf1Vl/akvtSXtLbdT1UvVWZ9qCX2pL2kgun6qY2rM+1JfakfbZAW3Y6VSt
+ ZKf7QCm9QFH22WLVdQoihW5CaQj7bIibVCOxsKO4JeoAl7ayTaYYVhtkLN9cBP8AaUvbYSXVFqf1lk/a
+ kvtaHtsRLq+sm9VZf2pL7Uh7a23U9VP6qyvtScZab7TJEur6qf1FljLCf7WEvaZLdL1UvVWZ9qCY5SeM
+ SLdT1UvVWV9qS+1J3soJdX1UvVWV9qT/AGpL2mMl1PVS9VZf2pL7Uh7S23U9VL1Vl/akvtSXtLwXU9VL
+ 1Vl/akvtSHtLgXU9VL1Vl/ak32pL2l4Lq+qkLVlfak4ykPaVbrC1P6qyRlKX2tL2lpdX1k3rLKOWonLS
+ 9pDr+ul66x/tab7Wl7a4OwbpQLHSs8Zal9pBS9tkC9rJVR9Mqz6oKUgpe2yhpihEbTCsaJtwCXtpUxkK
+ wwwqxsATetCXtrS6TLYRResj7QnGUj7bHJ2PXTesskZSf7Uj7LAS6vrJessr7Ul9qS9lFur6yXrLK+1J
+ vtSXsqt1fWS9ZZX2pL7Ul7KrdX1kvWWV9qS+1Jeyq3V9ZL1llfakvtSXsqt1fWS9ZZX2pP8AakvZTbqe
+ sl6yy/tSb7Ul7Krdb1k/rLI+1qQykvZVbq+ql6qy/tSRykPZVbp+ql6yyjlJvtaPsqt1/WS9ZZP2tP8A
+ a0vZTbq+sl6yyvtSX2pL2UW6wuT+ssj7Wn+1peyq3UNqC+1UTlIZyUvZVbae6VXe2VD15UhYCl7LNjQv
+ plCNCuyComEvabgGiBlUK7Toq+4BSFwCXtMcnUrshG9dY/2qExzEvaasnYN6ib1jnMTfa0vaYi65vTes
+ sn7Wn+1Ie0tdb1kvWWV9qTjKS9pcHV9VL1VljKT/AGpD2mQOn6qXqrM+1JvtSXtLw6fqpeqsv7Ul9qS9
+ pLqeql6qy/tSX2pL2lpdT1UvVWX9qS+1Je0xl1PVS9VZf2pL7Ul7S0up6qXqrL+1JfakvbQ6nqpeqsv7
+ Ul9qS9pTqeql6qy/tSX2pH2lwdX1kvWWT9rTfa0vbZA6/rJeqskZakMpL20ur6qi6yVm/akjlBL21hbF
+ plVXNlMcgFRFoKXtoDIVqfppmvCJvCXttrGiNaTWwpueEM2AJe2ylt1GFcZbCyReApfaoR9tqzdj11A3
+ rJOWonLS9tiDr+sm9VZIy0/2pL2l4dX1UvVWX9qS+1Je0p1PVS9VZf2pL7Uj7Swup6qXqrL+1JfakvaW
+ 26nqpeqsv7Ul9qS9pVup6qXqrL+1JfakvaTbqeql6qy/tSX2pL2l4Lqeqm9VZn2pL7Ul7SbdL1UvVWZ9
+ qT/aU32VOoLU/rLL+1JjlJeyh1vWS9dZBy032tL2UOx66Y3rI+1pjlJeyp1Tem9ZZX2pOMlL2VOp6qXq
+ LOGSl9pR9lTec+VVtEoRyQo+uCl7K5G+qUL0VZ3gpxCPsrggbVCOxkJwQn3gJeyuSsEKyx0Kj6wCX2kB
+ D2Uuo2xEFqyBlhP9rCHsqdf1UxtWV9rS+1peygumbVA2rNOUonKS9lYXT9ZL1llHKTfakfZWF1vXT+ss
+ j7Wn+1oeysdf1kvWWR9rS+1Jeyp1vWS9ZZP2pL7Uj7KXW9ZL11k/akvtSXsrg63rpeusn7Ul9qS9lc63
+ rpeusn7Ul9qS9lDreul66yftSX2pL2UOt6yXrLJ+1JfakvZWl1vWS9ZZP2pL7Ul7K11xepeusb7Wn+1p
+ eyuDsG9Ddcsv7Wm+1Jeyyh0HWSgOdKq/aUvXlL2WaKRwlDNcpxaCnDwj7LIhNKcVI0hLcEvZQvWyFaYY
+ VT1AEvXAQ9lYXRFif1lmfaUxykfZYJOqLk/rrI+1Jfa0fZYnX9dMblk/a0vtSXspdX1kvWWV9qS+1Jey
+ h1fWS9ZZX2pL7Ul7KnV9ZL1ll/akvtSHsodX1kvWWT9qS+1Jeyudb1kvWWT9qS+1Jeyudb1k3rLK+1Jf
+ akPZXOr6ycXLJ+1J/tSHsqdYXKXrLIGUn+1JeytLq+sm9ZZX2pL7Ul7K0ur6yb1ll/akvtSXsrS6nrJ/
+ WWT9qS+1o+ygOuLlMXLGGWpDLQ9lki65tQbHyqH2sJjkgpeyzxZWiVVdXKIbQU24FH2WzEIhUn9NGBCR
+ IR9lUgjayFZr0VcvASFwCHttWTqV2QjC1Y4yoUhlpcCy3WNqj6qzPtaX2pDgQ6fqpessv7UmOUlwIdT1
+ lIXLI+1JxlIcCLdgXp/XWOMpP9qS4FW63rpeusj7Um+1IcCrdj103rLI+1p/taXAq3V9ZL1Vlfak/wBq
+ S4E26nqpeqsv7Ul9qS4FW6nqpeqsv7Ul9qR4FW6nqpeqsv7Ul9qS4FW6nqpeqsv7Ul9qS4EOp6qXqrL+
+ 1JfakeBbbqeql6qy/tSX2pLgRbqesmN6yzlKBykuBVut9oTG+Vk/aUhlJcDIG/Y+VUsbKgMiVIWApcDa
+ gEBplJtCsggqQhLgbICNlUI7BChuAUTaAlwMMw3GOhGbbCzDkQm+1JcDWk6/rpeusf7Wl9rS4GIuv6yX
+ qrJGWpDKS4Frqeql6qy/tSX2pLgXxdP1UvWWX9qS+1JcDI6nrJessv7Ul9qS4FpdT1kvWWX9qS+1JcC1
+ 1PWS9ZZX2pL7UlwKdX1kvWWV9qS+1Je2p1fWS9ZZX2pL7Ul7aC6vrJessr7Ul9qS4Frqeql6qzPtSX2p
+ DgS6nqpessv7Um+1IcCnV9ZL1lk/akvtSXAyB1vXT+usj7Ul9qR4Fzseuom5ZP2tL7UjwLS6L7JVd5lV
+ vtMpetKXAoMntlBdVKJ6gKfcCjwMsWt6CIyqEeQmLgEuBcU1XtVtlsLMNwCj9qhLgYJO0L0/rLGGWpDL
+ R4Fodf1kvWWT9qS+1oe2vDqm5MbllHLTfa0vbSXV9ZL1Vk/a04ykOBjLrC1P6qyRlKX2pLgQHU9ZL1Vl
+ /ak32pLgXB1PWS9ZZX2pL7Ul7ai6vrJessr7Un+1Je2sJdT1kvWWX9qTfakvbVbq+sl6yyvtSX2pL202
+ 6vrJessr7Ul9qS9tLq+sl6yyvtSX2pL2lOr6yb1ll/ak32pL2lOr6yXrLK+1JfakvaRbrC5SFyx/tSkM
+ pL21W6jrZVS10qucpQN8pe2gljY2UI1SieoCpAhL22bHui9FIVI8hRLgl7bfjspjYVup0Kl6gCcXwl7a
+ ybrsuhSOQsj7VCictL22nJ1zkJvtCxzlJvtSXtMRdn10vWWQMtOMtL2ltut6yf1lk/a0/wBqS9tLresl
+ 6yyftSX2pN9tNut6yb1llfak32pH20Ot6yXrLJ+1JfakvbU63rJessn7Ul9qS9pTresl6yyftSX2pL2l
+ Ot6yXrLJ+1JfakvaS63rJessn7Ul9qS9pTresn9ZZH2pL7Wj7SXY9ZL1lkjLT/a0vaS6vqpvVWUctMct
+ H2lzq+sl6yyftaX2tH2kuv6qi6yVmDLS+1Je0ubFplU7K5UzeCm3go+0lrmlSbSjiE8hL2ksWshHYYQi
+ 8BRNwCPtJLebZCKLVl/aUvtSHssMnWFyXrLK+1J/tSHssdur6yXrLK+1JfakvZVbqesl6yy/tSb7Ul7K
+ rdX1k/rLJ+1J/tSXsqt1vWT+ssn7Un+1Ieyi3W9ZL1Vk/a0vtaXsqt1fVTessv7Wm+1Jeyq3V9ZL1llf
+ akvtSXsqt1fWTeqsv7Ul9qS9lVun6qXqrM+0pvtKXsqt1PVS9VZf2pL7Ul7KrdX1k/rLJ+1Jfa0vZVbr
+ +sl6yyftaX2tL2VW63rJessn7Wl9rS9lVusbkJ1krO+1JfaUvZXAtp5lCIlC9cFOLQl7S8LliE6pG3hI
+ uCXtpa4qR6mQokhOLAEvaU3q3QjC1Zn2gBMctL2kOobkhcsj7WpDKQ9pFuwLUvVWUMpOcpL2kOn6yXrL
+ KOWo/a0PaRbr+sm9ZZX2tN9qR9pFur6yXqrK+1JfakvaQ6vrJessr7Ul9qS9pFur6yXrLK+1JfakvaVb
+ q+sl6yyvtSX2pH2lW6vrJessr7Ul9qS9pFur6yXrLK+1JfakfaVbq+sl6yyvtSX2pL2lW6htTG1Zn2pL
+ 7UmnGuBdL1VIXLK+1JHKUftrnV9dRN6yjlKBykvbVbsjIUvXWIMtSGWj7aLdOyyVTtEoX2mUvVBR9tmg
+ UbqpSFKKHBSDgj7bZ6IhUiNZCfeExsCd7bVyFMzRWWPhZ/rAJfaYS9tq26otT+ssn7Wl9rR9peC6vrJe
+ ssn7Wl9rR9pe63rJessn7Wl9rQ9pLresl6yyftaX2tL2lOt6yXrLJ+1pfa0vaQ63rJessn7Wl9rQ9pFu
+ t6yXrLK+1pfa0vZRbq+sl6yyftaf7Wh7KLdb1k/qrJGWn+1I+3SnV9ZN6yy/tab7WlwpdT1kvWWV9rS+
+ 1ocK8Or6yf1lk/a0/wBrQ4Vzresl6yyftSf7UhwrC6vqpeqsr7Ul9qQ4VrqG1IWrL+1JvtSaQp1Dcqt1
+ kqocpDfkSmkJC1gkqVNeqFvlWsfUphDNF1cNi2qm6LLxAterhRFeyIUSEVQITVrFSBTQmSWlIClKgnQY
+ iuSop0k1QWSSThBcqEoUkkksUk6ZFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOgpSSSS
+ SlkkkklKSSSSUuouUlFySmrYq5VixVykpmxW61UYrdaSkwSSCSSlJJJJKWSSSSUpJJJJSySSSSlJ0ydJ
+ S6SSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUunTJ0lKKr2KwVXsSU1XqLVJ6i1JTZrVhqr1qw1JS6ZOmS
+ UpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKf/0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElN
+ liOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklLJJJJKUkkkkpdJJJJS6
+ RSSKSkT1VerT1VekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpMnTJKUkkkkpSSSS
+ SlJJJ0lLJ0kklKSSSSSpOmTpKUkmSSUpJJJJSkkkkkKSSSSUpJJJJSk6SZJS6SSSSlJ0ycIqXUgop0Vw
+ WcVQyXq5YVm5TlJFTkZdnKx7rVfy3crJt1KlBUjdcVA3FOKiUQYpKlEkIPWKcWlWBhFTGEfBSCYU1xaU
+ 5tKtDCPgkcI+CfxhDTNpS9Yq0cIqP2I+CPuBSD1ykbij/Yz4J/sZS9wIaptKb1Srn2I+CX2E+CHuBTT9
+ Up/VKt/YT4J/sJ8EPcCmn6pS9Uq59hPgl9hPglxhTT9UpeqVc+wnwS+xHwS4wpp+qUvVKufYj4JfYj4J
+ wyBTT9UpeqVc+xHwS+xHwTxkCml6pS9Qq59hPgl9hPgne4FNP1Sl6pVz7CfBOME+CbLIEtMWlP6hVwYJ
+ 8E/2E+ChOQKafqFN6hV37EfBN9iPgiJhLSNpS9Uq59iPgmOCfBO9wKawvKI28qRwyEN1BajxhCYZCn9o
+ VEghR3FO4gpvnIUDeqgJKkASjxhSV1xQzaVIVEqYxiUuMIQeqUhaVZGGVIYR8EPcCmr6pT+qVb+xHwS+
+ xHwQ9wIanqlL1Srf2I+CX2I+CHuBTU9UpeqVb+xHwS+xHwQ9wKanqlL1Srf2I+CX2I+CXuBDT9Up/VKt
+ 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
+ p2iwcNy26DooyubQTFOElGhaEycppSWlSeE0pwUGMheE0KQSTUAMISTlMhS5eUpTJJJXTJJIqUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUskkkkpSSSSSlJJJJKUkkkkpSdMnSUp
+ MnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ydBSkkkklLJJJJKUkkkkpdRcpKLklNWxVyrFirlJTNit
+ 1qoxW60lJgkkEklKSSSSUskkkkpSSSSSlkk6ZJSk6ZOkpdJMkkpdJJJJSkkkklLJJJJKUkkkkpSSSSSl
+ 06ZOkpRVexWCq9iSmq9RapPUWpKbNasNVetWGpKXTJ0ySlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/R69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSS
+ SlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySl
+ 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
+ UkkkkpSSSdJSySdJBSydJJJSkkkkVKSSSSUpJJJJSkkkkkrJJ0klLJJ0kFLJJ0klLJJ0klLJJ0klKSSS
+ SUpJJJJSySSSSlJJJJKXUXKSi5JTVsVcqxYq5SUzYrdaqMVutJSYJJBJJSkkkklKSSSSUskkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKXSSSSUskkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUl
+ MkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSn/9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM
+ 5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSySSSSlJJJJKXS
+ SSSUukUkikpE9VXq09VXpKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkySl0kySSl0kyS
+ Sl0kySSl0kySSl0kySSl0kySSl0kySSl0ySSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIhSpU
+ wUNSanrgu/hZeYtR3Cy8zhEJefyuVTYdVayzqqbDqih18QrcxzosHEK3Mc6IKdFjkQOQGFEBTSFMy5Nu
+ USVGUqQk3Jb0KU8o0hJuTblCUpSpDPclvUEkqUz3pb1BJKlM96W9QSSpTPelvUEkqUz3pb1FJKlMt6W9
+ RTJUpnvS3qCSFKZ704eoJJUlJvTF6gkmqZFybcmShEJZhykSoBSKSWte7RYeY5bV/Cw8xSxS4eSdVnuO
+ qvZPKznHVS2pNWVfxys1hV/HKVodvGK1qCsbGWxQmSU32FE3ITFOFEUK3JbkxTJLWe5LeoJJpQz3ptyi
+ kghlvS3qKSSWW9LcopJyWW5NuTJIqX3JblFJFLPcluUUk0oZ7k+5QSTVM9yW5RTIpZbk25MmRSvuS3KK
+ SKWW5Lcop0VL7k4copwguZyq2Q7RWFVyOEgpws08rn8k6rdziueyXaqUFDXnVHrKqbtVYrKNqb9JWpjO
+ WRSVqYxQJQ7mM5aLH6LLxitFijKkpchlykVAhAKZByluUAE6S1felvUUoQQzDk+5QATwkkMtyaU0JJMg
+ VKfcmSSVJluTbkySTVkvuS3JkkloX3JblFJBmiy3JblGEoSZQvKaUoShJevKfeowmRWyZ70t6gnCTWky
+ 3JpShIhFAUHKYchqSRZYornaLEzXLYu4WJmnlODPFwMo6rPJ1V3KOqzydU8FsAtisq5UVQrKuVFOtZIu
+ tjuWvjuWLjla+MUCWuXVqcjhyq1I4URQyL029RKSbS1lvS3qCSVKZ70t6gklSme9LeoJJUpnvS3qCSVJ
+ Z70t6gklSme9LeoJJUpnvS3qCSVIZ70t6gklSme9LeoJJUpnvS3qCSVKZ70t6gklSme9LeoJJUpnvSD1
+ BIJUpsByFa/RSCHbwhSnIzXLmsx3K6HOPK5rMdqVNEMsXPedVKsoD3aolZUjK6NRWljlZdRWljoLS7WM
+ 5aVT1k4606ioyFjaDkxcohMUylpX3pb1FJGlpZ70tygnSWs96W5QToUhluS3qKZCks96W9QTpUplvS3q
+ CSFKZ70t6gklSme9LeoJJUpnvS3qCSNKZ70t6gnSpTLemL0yiUqQuXpb1EpoTCEJQ9SD0IBTCVKDPclu
+ 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
+ KX3Jbk0JQkpfcluTQlCSF9yW5NCSSl9yW5MkipluS3JoTwklRKbcnhNCKVBymHKEJJJSbktyhKaUKSzL
+ lVvdoikqtcdE+IXONmnlc5ljVdFmLByWqUJDlOGqsUBRc3VFqCKXUxStrGcsOgwtbHcjanaqcrLXKhQV
+ dYoZLCk3JFyQCYhMWq3Jbk0JQkpfcluTQlCSF9yW5NCUJKX3Jbk0JQkpfcluTQlCSF9yW5NCUJKX3Jbk
+ 0JQkpfcluTQlCSl9yW5NCUJKX3Jbk0JQklfcluTQlCSl9yW5NCUJJX3KQcoQpAJKUXKta5WXBVLkQkNC
+ 9yzLir2Q5ZlrlMF4alqoWhXrCqdiSkbBqtbDKy2crUxECh6PDctVj9Fj4hWmwphFqTl6EXJEqMJtLViU
+ gVLanDEkLhymHKIanhBDLcluUUyCGRcm3pk0JKZbktyjCUIKZbktyjCUJKZbktyjCUJKZbktyjCUJJZb
+ ktyjCdJK+5LcmSRUvuT71BJNK0s96YuUUk1avuThyaE8JwSGYcmedE7Qk4JzIHLzDoubzTqV0uWNFzma
+ 3UqUFkDi2cpMKlYNVFgT0thpVioqs1HrKSnWxitrGcsLGK2sYphU6TSpFyGxSKjWFW5NuTQlCTGWW5Lc
+ owlCasLLcluUYShJDLcluUYShJTLcluUYShOXL7ktyaEoRXhfcluTQlCSWW5LcownTSGMstyW9RSQpay
+ 3pb1BJKks96W9QTo0lluS3JoTwklW5MXJ4USEVzEuSD0xCZFKnv0WZmP0Wg/hZmXwjSnByzqqlfKs5XK
+ r1cpKdnCC6DHGiwcELoKBogpsKJU4UCgpYpoTwnhJTEBShPCUIIUlKZJBDJOogp0LUukkkkhZJJJJSkk
+ kkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJSySdJJSySdJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSSSSSl1FykouSU1bFXKsWKuUl
+ M2K3WqjFbrSUmCSQSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklLJJJJKUkkk
+ kpdOEycJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//T69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSS
+ SlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySl
+ JJJJKUkkkkpdJJJJSkkkklKSSSSUskkkkpSSSSSl0kkklLpFJIpKRPVV6tPVV6SmAR2IAR2JKbDVNQap
+ pKUkkkkpSSSSSlJJJJKWSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSdJSySd
+ JJSySdJJSySdJJSySdJJSySdJJSydJJJSkydJFS0KbQmCI1OtcxcNFl5o0Wu5ZeaNEQVPMZY1Kot5Whm
+ DUrPaNU5Tq4hW5jnRYWItzH4SQ32FElCYiAIKXKipQmhJCySeE4CSlgE6lCUIKYpJEJkULpJk6SlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSdMkmlSkkkyYUskkyeEQlkFIqITlOS1b+Fh5gW3fwsbLCkCnAyRqs5w1
+ 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
+ yolOC4KThRSRXMiUN5UihPKIS1risy9aNqzr05Ll3rNvC071m3hJTRI1VzFGqqkaq5jcpKeiwBwugxxo
+ sDA7Lfo4TStbMKBCmoFNCipJMnRWrpJkkFLpkkkkKSSSSUpJJJFKkkkpSSpJKU0pJXTqMp5SQukmSlJa
+ V0k0pSmrV0k0pSghdJNKUpJXTqMpSnLgyCRTApyUl4a1w0WLljlbd3Cx8sKQL3AyQqLm6rSyAqLhqnLk
+ YCm0JAKbQipt441W5iLEoW3iJpQXZp4ViVWpOiPKjIWFRKZMUgmlYV4ShOkmLGMJ4SSRCQpJJJOXKSSS
+ SQpJJJJSkkkklKSTJIIXSTJJKXSTJ0VLp1FOkleUxKiSoEopSSlKHKcFFLNNCkE8JJREKrcrrgqWQnAp
+ cbLKw8ly2M08rAynJ4XNdztUWoqmX6o9JRS6tC1ccLLxhK2cZqSnQoCvsCq0tVpqjksKUJikCmJTFqkk
+ yUpKXSTSlKSF0k0pSkpdJNKUpKXSTSlKSF0k0pSkpdJNKSSl0kySSl0kySSl0kySSV0kySSl0kyUpJXU
+ goSpApKXcqV6tuKqXohQcjJWZatXICy7gpQvDTeVUsKs2qlYUkrsOq1MQrHYdVrYfZBD0eItNgWbhjha
+ 1Y0TShUJAIhCaE20KATpiVEuQQzlNKHuSBSQzSSCSCFJJJkFLpJJJKUkkmSUukmSSSukmSRUukmSSSuk
+ mSSUumhOkgVpWhPCeE8Jq1iknKgUQuCVpScVAFJx0T6Xho5fC53N7rfyzoufzDypAF4ci3lQaFKzlM1P
+ XJQEasITVYqCCnQxgtrGCyMYLZxggUN5gUyEzApFRlaWKSZJAsZXSTJJqwqSSSSQpOmSRSukmSRSF0yS
+ SK8KSSSRSukmSSWFdMmSSWqSTJJJZJJkgklmE6iE4QSumKSYpJYlRUiopykb+FmZfC1HjRZeZwil57KO
+ qBVyjZR1Vek6pKd/A7LoaBouewDwuix+E0qTkKBCIVApoUxhKE6SKl4TFOmKahiUycpkELhSUQpIKUkk
+ kkhSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSZJS6ZJ
+ JJSkkkklKTpkklLpJkkkrpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJJJKWSTpklKSSSSUuouUlF
+ ySmrYq5VmxVykpkxW61VYrVaSkwSKQTpKWSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpd
+ JJJJSySSSSlJJJJKXThMnCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKf/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJ
+ JKWSSSSUpMnTJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSySSSSlJJJJKXSSSSUukUkikpE9VXq09VXpKYB
+ HYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkydJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpNKdMUVLblNr0Ip2pyUxcs3MOiuuOizss6I
+ 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
+ glwqb0pSqP2oJfaglwqb0pSqP2oJfaglwqb0pSqP2oJfaglwqb8pSqP2sJfawlwqbhUCqpygmOSERFLZ
+ UgVT+0hIZQR4Uui0qcrNGWFL7YE3gKW64hUckqLswKnfkgp8Ypc7NPK5/KGq2sq0FY95lS8KXOI1Vmga
+ oZGqNVolwpdbFW3jFc/RZC1KMgBHhU79RVkFY9WUFZblhRSitLoymJVH7WEjlhM4VrelKVQ+1hL7WEeF
+ TflKVQ+1hL7WEuFTflKVQ+1hL7WEuFDflKVQ+1hL7WEuFTflKVQ+1BL7WEuFDflKVQ+1hL7WEuFTelKV
+ R+1BN9rCXCpvylKofawl9rCXCpvylKofawn+1BLhU3pSlUftYS+1hLhS3pS3Kj9rCX2oJcKm9KUqj9qC
+ b7UEuFLflSDln/agnGUEOFTec5VrihHLCr25QThFIQ5BWZcrN14Ko22ypBFc1bQqNgV17pVV6PCpCxuq
+ 18McLMbytDGeAhwqemwzwtatwXPY2QAtBmWAmSih1C4JpWecwJDMCj4ChvEqBKqfagonJCIihtypAqj9
+ pCQywjwodIFPIWeMwJ/tgTeFDeJTSqP2sJfagjwqb0pSqP2oJfaglwqb0pSqP2oJfaglwqb0pSqP2oJf
+ aglwpb0hKVR+1BN9rCXCpvylKofawl9rCXClvylKofawl9rCXCpvynBWf9rCX2sIcKC6IIUgQs0ZYUxm
+ BN4FjfMKJCqfbAonLCQiuDdCi/hVBlhJ2UE7hZAhy+Fz+Z3Wvk5AKw8qwFSiK4ObZyoNKex2qGHJ/Cls
+ tKs1FUWvR67IS4VO3jFbWOVzePeAtajJATTFDuNKkSs5uWFL7WFEYILdlKVR+1hN9rCXCxlvylKo/agl
+ 9qCXCtb0pSqP2oJfaglwob0pSqP2oJfaglwqb0pSqP2oJvtYS4Vwb0pSqP2sJfawlwrg3pSlUftYS+1h
+ HhS3pSlUftYS+1hDhWFvSlKpfagl9qCXCtbspSqX2oJfaglSW7KUql9qCX2sJUlvSpSqH2sJfawhwpb8
+ ppVL7WEvtQS4UtslIKmcoJDKCVKbTxosrNGituyhCzMy8EIpcHMOpVSo+5WMp8kqtUPcgp6Hp54XSY50
+ XM4A4XR4x0QKm5KgSnlRKapUpSopSkpnKRUZToIWShOnhNQsAnTpIKWTJ0kkKSSSRUpJJJFSkkkkFKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJ0kkrJJ
+ 0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJ0ydJSkydMkpSSSSSl1FykouSU1rFXKsWKuUlM2K1WqrFa
+ rSUmCdME6SlkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUskkkkpSSSSSl04TJwk
+ pYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMkydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//V69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKW
+ SSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKUkk
+ kkpdJJJJSkkkklKSSSSUskkkkpSSSSSl0kkklLpFJIpKRPVV6tPVV6SmAR2IAR2JKbDVNQappKUkkkkp
+ SSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpKEk4SUttThikFJOtKF40WXl8LXfwszKbKeCl5nM5WY55BW1l0krKsoMoo
+ VVeQrrMshUG0FEFTklOiM8junHUD4rNNbk3puSU6n7RPionqJ8Vmem5Ma3JIdP8AaJ8U37QPisw1uTem
+ 5JTqjqB8U/28+KygxykGOSQ6n28+Kf7efFZgY5P6bklOl9vPim+3nxWd6bkvTckp0ft58Uvt58Vnem5L
+ 03JKdH7efFL7efFZ3puS9NySnR+3nxS+3nxWd6bkvTckp0ft58Uvt58Vnem5L03JKdH7efFL7efFZ3pu
+ Tem5FLpjOPin+2nxWYK3KYY5JDofbSonOPiqJY5QdW5G0t49QI7qB6kfFZzq3IRqcil1x1M+Kl+0ie6x
+ hU5TbU5Ggp1HZxPdVrMklAFTkjS5PCUdlpKrklWTQU3oFPtTXBKOxxCkKCiNoKVqSMuIVhuSQqwpKf0i
+ ham6M0hS+3HxWea3Jem5NK10Ptx8Uvt58Vnem5L03JiHR+3nxT/bz4rO9NyXpuQtDo/bz4pvt58Vn+m5
+ N6bkLU6P28+KX28+KzvTcl6bkrU6P28+KX24+KzvTcl6bkbS6H24+KX24+Kz/Tcl6bkUuh9uPil9uPis
+ /wBNyXpuRU6H24+KX28+KzvTcl6bklOl9vPin+3nxWb6bk/puQQ6P28+KX28+KzvTcl6bkkuh9vPim+3
+ nxWf6bk3puSS6H28+KX24+KzvTcl6bkVOl9uPil9vPis703Jem5JLpfbz4pfbz4rO9Nyb03IKdL7efFD
+ fmk91Q9NyXpuSUztvLlSskq16JSNBRtTQhSBIVo45UTjlK1MG2kKxXkkIHoFSFLkrU32ZpCsNzyO6yhU
+ 5S9NyCnV/aJ8Ux6ifFZfpuUTW5BDq/tE+Kb9oHxWX6bk4rckh0/t58VIZp8VmipymK3I2h0ftp8Ujmnx
+ VEVuSNbkrU3DnHxUTnnxVF1blA1uSXh0Pt58U/28+KzfTcn9NyVqLo/bj4pfbj4rO9NyXpuSa8nR+3nx
+ S+3nxWd6bkvTclaA6P28+KX28+KzvTcn9NyFsodH7efFL7cfFZ3puS9NyVrw6P24+KX24+KzvTcl6bkr
+ Xh0ftx8U328+Kz/Tcl6TkrWydD7efFL9onxWcanKJqckwF0/2ifFL9onxWUanJek5JQdX9onxT/bye6y
+ xU5EbU5ELw3n5ZKp3WlycVOTGklOtli0bJKFsK0DjlN9mKNswabWkIrSQrIxyl9nKNrSxZaQrDMshANB
+ Tei5K2It9ueR3RB1A+KzPScl6bkwrC6n28+KX28+KzfTclscmIdL7efFL7efFZuxyWxySnS+3nxS+3nx
+ Wbsclsckp0vt58Uvt58Vm7HJbHJKdL7efFL7efFZuxyWxySnS+3nxS+3nxWbsclsckp0vt58Uvt58Vm7
+ HJbHJKdL7efFL7efFZuxybY5JTp/bz4pfbz4rM2OS2OSU6f28+KX28+KzNjktjklOn9vPil9vPiszY5L
+ Y5JTp/bz4pfbz4rM2OS2OSU6f28+KX28+KzNjktjklOn9vPil9vPiszY5LY5JTqDqB8Uzs8nuszY5LY5
+ BSe7JLlQtJcrPpEpfZyU8MsXP2FTaCFd+zFMcYpzIhbYQjsvIUDjlL0CgtLcZlkI7c4jus4VOT+k5BaX
+ SPUD4qJ6ifFZprchmtybS0usOonxT/tE+KyBW5SFbklrq/tA+KX28+KzPTcnDHIIdMZx8U/20+KzQxyl
+ sckpv/bj4pvt58VQLHKJrcgl0Pt58U/28+KzfTcl6bklOl9vPil9vPis303Jem5JLpfbz4pfbz4rN9Ny
+ XpuSU6X28+KX28+KzfTcl6bkVOl9vPil9vPis303Jem5JTpfbz4pvt58Vnem5L03JKdL7efFL7efFZvp
+ uS9NySHS/aB8Uv2ifFZhrcomtyBWl1D1E+KY9SPiss1uUfScgh1f2ifFTHUCe6yBU5EbU5PC8Ooc0nuq
+ t15chityTqinheGjc4lVi0laLsclQGMU5c1GNKO2QrAxipfZyilG2whHZkkIZoKiaHIIbjc0juiDPPis
+ 70XJxU5NKi6f28+Kf7efFZgrcn2OTVhdL7efFL7efFZvpuS9NyatdL7efFN9vPis703Jem5BDo/bz4p/
+ t58Vm+m5L03JKdL7efFL7efFZvpuS9NyKXS+3nxS+3nxWb6bkvTciuDpfbz4pfbz4rN9NyXpuRS6P24+
+ Kf7efFZvpuS9NyKnS+3nxS+3nxWb6bkvTcjSHR+3nxS+3nxWbsclschSHS+3nxS+3nxWbscl6bk1Tp/b
+ z4p/t58Vmem5P6bkFOl9vPin+3nxWZ6bk/puQU6X28+Kb7efFZ2xybY5JTpfbz4pjnnxWYWOTbHIpbdu
+ WXKja8uU/ScU/oEp4XBz3tJUACFonGKgcYp1pazHkK1XcQoDGKmMcoqbTMkhHbmkKiKXKXpOSU6Azz4q
+ X7QPis30nJvScmkILpftA+KX7QPis30nJek5NpDoHPPim+3nxWeanJvTcgVpdIZx8VIZx8VmCtymGOQQ
+ 6P24+KY558Vn7HKJrciFwdH7efFL7efFZ3puS9NyK4uj9vPin+3nxWb6bkvTckwydH7efFL7efFZ3puS
+ 9NyTE6P28+KX28+KzvTcl6bkGQOj9vPil9vPis703Jem5JkDo/bz4pfbz4rO9NyXpuQXh0ft58U4zz4r
+ N9NyXpuSSXT+3nxS/aB8Vm+m5Ma3JMEnRPUT4qB6ifFZ5qcoGpyS10v2ifFSb1E+KyfScptqcivDsDPJ
+ 7oVmUXKk2tymayiyRRXWFypPBKvOpJUPs5RZw02tKM0EKwMcqfoFFJRNeQjNyCFE0FRNJSYpNpuaQijP
+ Pis/0XJCpyTEXS+3nxS+3HxWeKnKXpOSta3vtp8UvtpVH0nJek5K1N77aUvtpVH0nJek5K1N77aUvtpV
+ H0nJek5K1N77cfFL7cfFUfScl6TkrU3vtp8Uvtp8VR9JyXpOStTe+3HxS+3HxVH0nJek5K0t77afFL7a
+ fFUfScl6TkrU3ftp8U/20+Kpei5L0nJWpu/bT4pfbj4qj6TkvSclaW99uPim+3HxVH0nJek5K1N77cfF
+ N9uPiqPpOTek5K1OgM4+KkM0+KzhU5TFTkrU6IzT4p/tp8VQFTk/pOSU23ZpQX5hQTU5DNDkrUzdkkoL
+ rCU/oOUxjlEFcGo8Equ5pWoccoTsYp9r2iwkK9TcQh/ZiitoIStDdZlEIhzT4qkKnJjU5NKG2c4+Kb7e
+ fFUTU5R9FyCnR+3nxUhnnxWb6LkvScgh0xnnxT/bj4rMFblIVuQQ6P20+KX20+Koem5L03I2tb320pvt
+ p8VS9Nyb0nJWpvfbT4pfbT4qj6TkvSchaG99tPil9tPiqPpOS9JyVpb320+KX20+Ko+k5L0nI2pvfbT4
+ pfbT4qj6TkvSclam99tPil9tPiqPpOS9JyVpb320+KX20+Ko+k5L0nJJb320pfbT4qj6TkvScjam+M0+
+ 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
+ seSgGVdOOVH7MU60tQSpCVbGMUvsxStKFjyFbryCEMYxT+gUCUNtuaQnPUD4qkaXIbqXKM0tLfPUT4px
+ 1E+KzDS5OKXJpWF1hnnxUxmnxWW2pyKKnJtrW/8AbCmOafFU/TcmNTkQUhufbT4pfbj4qganJek5OS3/
+ ALcfFL7cfFUPScl6TklN/wC3HxS+3HxVD0nJek5K0N/7cfFL7cfFUPScl6TkrU3/ALcUvtxVD0nJek5J
+ Tf8AtxS+3FUPScl6TklN/wC3HxS+3HxVD0nJek5BTeOcfFN9vPiqBqco+k5FTpDOPinGafFZwqciCpyS
+ W99tKic0+Kqek5RNTkUtz7cfFN9vPiqJqcm9JyWiW/8Abie6g7KJVUUuUhQ5OBStZaXKo+Srv2cqJxin
+ WlzixTaIV77KUvsxRtLXY8hWGXkJfZim+zlK1NhuWQijNKpeg5P6LkwlYW79tPil9tPiqfouS9FyZaG5
+ 9tPil9tPiqfouS9FyNqbn20+KX20+Kp+i5L0XJWhufbT4pfbT4qn6LkvRclam59tPil9tPiqfouS9FyV
+ qbn20+KX20+Kp+i5L0XJWhufbT4pfbT4qn6LkvRclam59tKX20qn6LkvRclam59tKX20qn6LkvRclam5
+ 9tKX20qn6LkvRclam59tKX20qn6LkvRclaW59tKX20qn6LkvRclam39tKX20qp6Lk3ouStLd+2lL7afF
+ U/Rcl6LkrU3DmnxQ3ZZKr+i5MaXJAqZOyCUI2EqXoFSFBTwV4QkkoTgVdGOUxxijanP1CNXYQjHGKYY5
+ QtDYrySEX7aR3VT0HKJqchaG4c8+KkM4+KzjU5O2pybanUGafFP9sKz21uRPSclaG0cwqBzT4quanIZp
+ chaG39vPinGefFUDQ5IUuQtDojOPin+2nxWeKnKXpOStTd+2nxS+3HxVL0nJek5G1N37cfFL7cfFUvSc
+ l6TkrU3ftpS+2lUvScl6TkrS3ftpS+2nxVL0nJek5K1N37afFL7afFUvScl6TkrU3ftp8Uvtp8VR9JyX
+ ouRtLe+2nxS+2lUvScl6TkCVpbv20+Kf7efFUfScompyZaG8eoHxUT1E+KoGlyh6LkQkOo3qB8UQZxPd
+ ZTaXIzanJwpeG1ZlEqjdaSjGlyg6gqQFcGi6SmAKufZinGMU61zTgqQcQrRxim+zFK0Ma7iFcryiFVGO
+ UQUOQsKbozT4pHNPiqfouUTU5MK0t37cfFL7cfFUfScl6TkFhb324+KX24+Ko+k5L0nIWtb324+KX24+
+ Ko+k5L0nIWhvfbj4pfbj4qj6TkvScjam99tPil9tPiqPpOS9JyVrm99tPil9tPiqPpOS9JycuDe+2nxT
+ fbT4ql6TkvScilu/bj4pfbj4qj6TkvScmFYW/wDbj4p/tx8Vn+k5P6Tk1a3/ALafFL7afFUfScl6Tkkt
+ 77cfFL7cfFUPScm9JySXQ+3HxS+3HxWf6TkvSckp0Ptx8U/24+Kz/Scl6Tkkuh9uPikM4+Koek5L0nIJ
+ b5zj4qtdlFyD6TlE0uQSheS4otFclSbQVdx6IQU38JkLeoEBZmLXC1aggpOmKkmKCGBTKRCZBSk4UVIJ
+ qlwpJgnQQpNKRKjKClykmSSQunTJ05SkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpMnSSUsknTJKUkkkkpSdMnSUpJOkklZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZ
+ JOmSUpMnTJKUknSSUpRcpqDklNaxVyrFirlJTNitVqqxW60lJQnSCSSlkkkklKSSSSUskkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKXSSSSUskkkkpSSSSSl04TJwkpYoFiOUCxJTVeotUnqLUlNmtWGqvWrDUlMk
+ ydMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSn//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk
+ 7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklLJJJJKUkkkkpdJJ
+ JJS6RSSKSkT1VerT1VekpgEdiAEdiSmw1TUGqaSlJJJJKUkkkkpSSSSSlkkkklKSSTJKXSTJJKXSTJJK
+ XSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklKSlOolFS+5
+ OHIZSCISkJlVbmSrATFsopca7G3Km7CnsugdVKh6ARU4QwPJT+weS3BQFMUhJDgfs/yS/Z3kug9IJxUE
+ lPP/ALO8kx6b5LoxSEvRCVoeaPTvJN+zvJdKaQomgJIeb/Z3kpDp/kug9AJ/RCKnnx0/yT/YPJb/AKIT
+ +iElPP8A2DyS+weS6D0Ql6ISU8/+z/JL9n+S6D0Ql6ISU8/+z/JL9n+S6D0Ql6ISU8/+z/JL9n+S6D0Q
+ l6ISS8/+z/JL9n+S6D0Ql6ISU8/+z/JL9n+S6D0Ql6IRU8/9g8k/2DyW/wCiFE0hBTg/YUxwJ7Lf9EJx
+ SE21PPHp09k37M8l0goCl6ARtTzI6X5KQ6Z5LpfQCXohO4kvN/s7yUTgeS6Q0hCdQE4SS84cHyUPsS6B
+ 1AQzQjxKcQYaI3C8lsChEbQEuJTjjC8k/wBh8luCgJ/RCHEpwfsHkl9g8lv+iE4pCHEtcD9n+SX7P8l0
+ HohL0QhaHn/2f5Jfs/yXQeiEvRCbaHn/ANn+SX7P8l0HohL0Qhann/2f5Jv2f5LofRCb0Qjann/2f5Jf
+ s/yXQeiEvRCVpef/AGf5Jfs/yXQeiEvRCNpef/Z/kl+z/JdB6IS9EI2p5/8AZ/kl+z/JdB6IS9EI2p5/
+ 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
+ JKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpZOkkkpdQc
+ pqDklNaxVyrFirlJTNit1qoxW60lJgkkEklLJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UukkkkpZJJJJSkkkklLpwmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklP8A/9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSS
+ lJJJJKWSSSSUpMnTJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSySSSSlJJJJKXSSSSUukUkikpE9VXq09VX
+ pKYBHYgBHYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJOmSUpMnSSUsknSSUsknSSUsknShJSySeE8JKYpKU
+ JQkpikpQmhJSySdJJSkkkklKSSSSUpJJJJSkkkySl0kySSl0kySSl0kySSl0k0pIqWISATp0bSoKUJgn
+ RtK0JQnSQQslKdRKVqVKQKaEoRtDMFSlDCdJTIlRlJMkheUpTJI2peUpTJIKXlKUySKl0kyUJKXSTQkk
+ pdJMkkldJMkkpeUpTJJKXTJJQkpScFNCSahmCnlQSSSz3JSoJIpZEqJSSRSwIUdqJCUI2pgGqYanAToE
+ qVCRTpigpZKUkyK1lKUpkkkLylKZMmoZSlKZJJS8ppTJJKXlKUySKV5SlMkkleUpTJIpXlPKinSQvKeU
+ ySSl5SlMkgpeU0pkkVKTpkklLynlRSQSylKVFJBS8pikkhaViE21STpWpiGpw1SSStS0J0kyVoUmlJMj
+ al5TyopJWhnKUqCdFTOU0qKdJSiU0pJklLynlMkileUpTJJKK8pSmSSYivKUpkkkBeUpTJILwvKeVFJJ
+ cylKVFJJcylOCoJ5SQWcpi5RlMUGIrlyQcoJBFQS7lEuUUikuCxKZKE4CNsgXhMWqQSSteGG1SATpJWg
+ sgmJSlRKDGVEppTQnhFC8p00JJWpdJMlCVqXSTQlCVqXSTQlCVqXSTQlCVqXSTQlCVqXSTQlCVqXTJQl
+ CVqUklCUJWpSSUJQlalJJQlCVqUklCUJWpSSUJQlalJJQlCVqUklCUJWpSaFKEoSteFoTwnSStetCSdN
+ CS0rgp5UU6S1clNKZJJaWQKeVBSQUuSolJJJCySdJFSkpTJJJXlKUySSV5SlMkkleUpTJJJXlKUySSlS
+ lKSSSlSnlMkkpUp5UU6S0rynlQSQWlnuS3KCSSGZcoFySYo6LliUyeEoRtIWhLapAJ4Stcj2pQiQmhK0
+ rAKQKaEkrUylPKgnQVbKUkySS1dJMkhaF5SlMklaF5STJJWldJMklal0kySVrl0pTJJWpdMkmRUqUkk0
+ IoUklCUJIUnCaE6SF5UpUUkFMpSlMkgpeU0pkkrUqUpTJJWlSUJJ0rSwLU21EhNCNpYAKQTwkjaVSmlK
+ E0JKX3KQcoQnASQkDlKUIKQKaUMyVEpkkkFYpk6SK1ZJJJJeFSlKZJFcvKUpJIMRVKUpJJLFSlKSSS4K
+ lKUkkl4VKeUySVrl5TSkklaVpTgqMJQlbEUocpByEFIFBDMuUSU0qJSC4LEqCkQlCda8MQE+1SAUoSte
+ Ee1LaiQlCVptgAphNCdC1hZAp9ygkgtLPcmlRSSWspSlRSSUzlKVBJJTOUpUEklM5SlQSSUzlKVBJJTO
+ UpUEklM5SlQSSUz3Ji5RTIJZSnlQSRtSSUpUE6Cl5SlRSRUvKUqKSVqX3JtyZNCVqZbk4eoQlCVqSblE
+ pk8JWlUKQCYKQStK8KJUlEpWpiSkCkQmhG0JAUQOQQpAppUkLkNzkiVAoBSpTgqMJwE60M5TFMklalJ5
+ TJkrQy3JblFJK1MpSlRSStTOUpUEkrSylKVFJK1MpSlRSStLKUpUU6VqZSmlMmSUolNKRCaErWlmHKYc
+ hBSBSUzJUCUimSCV5SlMkikKKYp00JWuYpJ4ShG02oKQKjCeErRbMOUtyEnTdEM9yUqKSWiCvKeVFJC1
+ rKUpUUkLQylKVFJK1MpTSmSRtLKUpUUkbUvKUpkkrSvKUpkyVqXlOCopJWpICkXKCSCly5R3JilCNqZA
+ qQKgApBK1MwU6hKdBKiokpyVFEFS0pSmhKEbSylJNCcJWpUJwEgnQtSoTwkkhalkkkxRtCpSlMmStTLc
+ m3KKZK0Mi5LcopQlamQKkFAKQQtTMJ5UJSlK1M9yW5QTJKSbk25QSSUz3JblBJJCTcluQ0kkM9yW5QSS
+ Qk3JtygkklnuS3KKZFLMuUSUyYpJX3KO5IpoStcy3J5UIThK0spSTJ0bSpOmSQtC6UpkySGW5LcoJJIS
+ bktygkkhnuTblFJJLKUtyiklYSy3JSopJWplKW5RTJWhnuS3KCdK0MtyW5RTJWhnuS3KCSFqZ7k+5DTp
+ WpnKeVAJ0rUylNKZMlal9yW5RTI2pnuS3KCSWiWRcoFyUJoRtKpUgVGFIBK0swkQkE6FpREJAKZCaEbQ
+ uCnLlFMUEKLk0pEJoRtDIFTBUAFJIlLOUiVFJNUolR3JFNCNoZBymHIUKQSJUmBTEqAKUpqlEppSKZG1
+ LynlRhKEbQylKVGEoStTKU0poShJS8pSmhKElMpTSmhKElLylKaEoSUvKUpoShFS8p9yjCSGiQz3JpUU
+ ktFy5KaE6SVqWhKFJMlaFBOmSStTKU25MVFJDPcn3IadLRSTcm3KCSGiGUptyZMjamW5LcoJJWpnuS3K
+ CdK1MtyW5RSStTLcluUEkrUz3JblBJK0s9yW5RSStTLcluUE6VqZSlKinQtDKUpUUkLUylLcopkbSz3J
+ tyimR0XMi5RLk0JoTtEr7kpTQnhJSpThIBOAlalAKQCZOhal5SlRTIIZ7ktygkktZSluUUkrQy3JblFJ
+ K1M5T7kNJC1JNyW5QSRUy3JblBJJLKUpUUyKWcpSoJJKZylKgkgpnuS3KCSVrWe5LcoJJWpnuS3KCSFq
+ Z7ktygklame5LcoJI2pnuUSUyZFcvKcFRhOErXMlAhTTEJWlHCkAlCcBG1MgUiUlEoWhW5SD0OE4SsIT
+ B6YvQ0k1aWZcmlRSQtaylKVFJEFLKUpUUk60spSlRSQtTKUpUUkrUylKVFJK1MpSlRSStDKUpUUkrUyl
+ KVFJK1MpThygklakgcpbkIJ0Esy5QLkiVEohK+5OHKEJ0bUk3JSoJIJZKJTpJWpinSSRtKpTymTJKZ7k
+ tygkhohnuS3KCSVoZ7ktygklame5LcoJJWhnuS3KCSVqZ7ktygklame5LcoJJWhnuS3KCSSme5LcoJJK
+ Z7ktygkkpnuT7kNJJTPcn3IaSSUm5LchpJKSbk25QSSSk3JbkNJLRSTcluQ06SgylMUySVrlimKdKEbU
+ xTgpQlCVoZAqQKgnCFqSSmJUZSQtC8pSopI2pmHJ96GmQQk3pb0NJJSTcluUEkrQz3JblBJK1M9yUqCS
+ NqZ7ktygkkpnKUqCSSWcpSoJJKZyluUEklMpS3KKZK1MtyfeoJJq1JvS3oaSKQzL1EuUUoRtcvKSaE4C
+ NrgsQowpwlCNpYgKQShOlaF5TbklFBTPcluUE6WiGcpSoJILWe5LcoJJWhnuS3KCSFqZ7ktygkjame5L
+ coJJWpnKUqCSS5nuSlQSRUylKVFJK1pZSnlRSQtTKUpUUkrUvKaUySNqXlPKikkllKeVFJJTKUpUUySW
+ e5RJTJJKWITbVNJK1MISUiolBSpSlJJBS8p0ySSlJwmToIZKJTymKCkZSCkQkAkpk1TUApSkpcpkpTJK
+ XSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXTJJJKUkkkkpSSSSSlJJJJKXSTJJKXSTJJKXSTJJKXST
+ JSkpdJKUklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpk0pSkpdJJJJSkkimSUyUHKQUXJ
+ Ka1irlWLFXKSmbFbrVStW60lJgkmSJSUpJMCpJKWSTpklLJJJJKUknTJKUkkkkpSSZJJS6SSSSlJJJJK
+ XSSSSUskkkkpSSSSSl04UVIJKWKBYjlAsSU1XqLVJ6i1JTZrVhqr1qw1JTJMnTJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkp//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSS
+ SSSlkkkklKTJ0ySlJJJJKUkkkkpdJJJJSkkkklKSSSSUskkkkpSSSSSl0kkklLhIpBIpKQvVZ6svVZ6S
+ mIR2IAR2JKbDVJRapJKUkkkkpSSSSSlk6ZOkpSSSSSlkk6SSlkk6SSlkk6SSlJJJJKXSTJ0lKSSSSUpM
+ nTJKUmTpJKWTJ0klLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOkkpZOkkkpSdMkkleUpTJJKXlKUySSl5S
+ lMkkpdJMkkheUpTJJKXlKUySKF5STJJKXlKUySSl5SlMkipdJMkkldJMkkpdJMkkpdJMkkpdJMkipdJM
+ mQKmSSjKUpqGUpSoylKKmUpSoylKS5lKUqMpSillKUqKSKmUpSopSkplKUqMpSgplKSikktK8pSmSSQv
+ KUpkk1C8pSmSSUvKUpkklLylKZJJK8pSmSRSvKSZJJLKUpUUpTkMpSlRlKUVMpSlRlKUFMpSlRlKUFMk
+ pUZSQUylKVGUpQUylKVGUpQSylKVFJJTKUpUZSQUylKVFJJTKUpUUkVMpTSmSSQulKZJFS8p5UUkVMpS
+ lRSSUylJRSRUySTJ0kqSSSSUVJJJJMZUkkkkhSSSZBcF0pTJJLl0kkkkqSlJMUkFUpSmTJLCySUU6Sl5
+ SlMkkldKUySS8LylKZJJcvKUpkySCylKVFJFaySTJIKZJSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklL
+ ylKZJJS8pSmSSUvKSZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS8p5UUkVwZSlKjKUop
+ ZSmlMkkheUpTJSktXlKU0pJIXlKUySCGUppTJJKXlKUyUpKXlKUydJKkkkyKV0kydJKkkkkkqlJMkkpd
+ JMkkpdJMkihdJJMkheU0pJkwrV5STJIKXSSSRSpJJJFSpSlJJFKpSlJJJKkkkklKSSTIKZSlKZKUFLyl
+ KZJBC8pSmSSUvKUpkklLylKaUpSSvKUppSlJK8pSmTSiplKUppSRCl0kySetXSTJJIXSlMkmqXlKUySC
+ F5SlMkgpeUpTJIKXSTJJJXlKUySS5eUkkkVKSSTJJXSSSRUpJJJJCkpSTJKXlKUySS1eUpSTJIXSTJJL
+ gpOmSRSukmSSWFdJMkktXSTJILgukmSSXLpJkkErpJkkkqTpkklhXSlMkkheUpTJJJXSTJJLgulKZJJe
+ vKUpkkkrylKZJJYV5SlMkktXTqKdBC6SZJBS6SZJJS6SZJJS6SZJJK6SZJJS6SZJJS6ZJJJSkkydJSkk
+ kklKlKUySSl0kySSl0kydJSkkkklKSSSSUpJJJFS6UpkkVLylKZJJS6ZJJBS6UpJklLykmSQUpJJJJS8
+ pSmSSUpKUkySlSlKZJJS8pSmSSUvKSZJJS8pSmSSSvKUpkklLylKZJFTJNKZJJS6SZOkgqTyopJIZJky
+ dFSk6ZMkleUkySKV0kySSl0kkyCl06inSUukmSQQukmSQQukmToKUkkkkpSSSSSlJJkkVLpJk6SlJJJJ
+ JXTJJJKXTJJJKUkkkkpdKUySSl5SlRToqXlJMkkldMkkkpdJMkkplKUpkklLymlJJJSpSlMkkhSdMkkp
+ SZOmSUpJJJBSkpSTJKXlPKinSUySTJIqXSTJJIXSTJJKXSTJJKXSTJJIXSTJJJXSTJJKUkkmSSpJJJJK
+ kk6ZJK6SZJJS6SZJFC6ZJJJSkkkklKSSSSQpJJJBKkkkkLSpOmSSUpJJJJCkkkklKSTJJIXSTJJIUnTJ
+ JKZSlKikkplKUqKSSmSZNKSSl0k0pSildJNKSSl06ikillKeVBJJTKUpUU8pKXTJk6CF0kySSl0pSTJW
+ plKSZJJS6SZJBSkpTJJKXlKUyZJTKUpUU6SmUp5UJTykplKUqMpSkhlKUqEpSipnKUqEp5SUySUZSlJT
+ KUlGUpSUylKVGUpRUyTSmlNKSWSSjKUoJZSlKjKUpKZSlKglKSGcpSoSlKSmUpSopJKZJKMpSkhlKUqM
+ pSgpkmTSkipdJMkkpdJMkgpdJMkkpdJMkkpdJMkkldJMkkpdJMkkpeU8qKSCGUpSopJKZJpTJIpXSTJI
+ pXSTJJyV0kySSl0pTJJKZSlKikgpeUpTJkEMpSlRSQQylKVFOkheUpUU6SF5SlMkkleUpTJIqXlKUySK
+ V0kySSlJJkkFLpJk6Sl5SlMkgpeUySZJTKUyZJJC6SZJJS6SZJJK6dRTpyV0pTJJJXlKVFOkpdKUySSl
+ 5SUU6Sl0kySCF0kySCF0kyZJDKUpTJJKXSTJIpXSTJJKXSTJJKXSTJJKXSTJIKXSTJJKXSTJJKXSTJJK
+ XlKUyZJTKUlFOipdJMkkleUpTJJKXlKUySSV5SlMkipeUkySSl0kySCF0kySCl0kySSl0kySSF0kySSl
+ 0kySSl0kySSF0kySSl0kySSl0kySSl0kySSl0kySSV0kySSl0kySSV0kySSF0pTJkkspSlMkileUkySV
+ qXSTJJWpdKUySCl5SlRTpIXlKUySSl5STJJIXSTJJKXSlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJIqXl
+ KUySSl5SlMkkpeUpTJJKXSTJkEMklFOkpdJMkja5dJMkileUpTJJKXSlMkkpeUkySSl0ySSSFJJkkFLp
+ JkkFq6SZJJS6SZJJS6SZJJLKUySZFS6SZJJTJKUySSF5SlMkkpeUpTJJKXSTJJJXSlMkkpeUpTJIqXlJ
+ MkkpdJMkkpeUpTJIpUkkkkpSSSSSlJJJJIUkkkgpSSSSSlJJJJKUnlMkkpeUpTJJKXlKUySCl5SlMkkp
+ eUpTJJKXlKUySSl5SlMkkpeUpTJJKXlJMkkpdJMkkpeUkySSl0kySSl5SlMkkpeUpTJJKXlKUySSl5Sl
+ MkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5STJJKZBOmCdJSxTJ
+ ymSUuEnJwEnJKalqrFWrVVckpJWrlap1q5WkpImKlCiQkpSkFFOkpdMkkkpSSSSSlkk6ZJSkkkklLJJ0
+ klLJ0kklKSSSSUukkkkpZJJJJSkkkklKUlFSSUsUCxHKBYkpqvTNTvTNSU2K1Yaq9asNSUyTJ0ySlkkk
+ klLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSn//0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElNliOE
+ BiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklLJJJJKUkkkkpdJJJJS4SKQS
+ KSkL1WerL1WekpiEdiAEdiSmw1SUWqSSlJJJJKUkkkkpZOmTpKUkkkkpSSSSSlJJJJKUkkmSUumSSSUp
+ KUkySl5SlMkkplKSinSUukmTpKUkknSUtCUJ0klLQlCdJJS0JQnSSUxhKFJMkpaEoTpJKWhKE6SSloSh
+ OkkpZNCmmhBLGEoUoShJTGEoUoShJTGEoUoShJSySeEoSQsmhShKEVMYShShKEkMYShShKElMUk8JJKW
+ STpJWpZJOkjalkk6SVpWSTpJWpZJOklaVkk6SVqYpKSSSGKSeEoRpCySeEoSpSyUJ4ShJK0JJ4ShJK0J
+ QnhKEUrQlCeEoSUtCSeEoSQsknhOkhikpJIUhikpJJUhikpJJUpikpJJUlikpJJUpikpJJUuYpKSSVKY
+ pKSaEVLJJ4ShFC0JQnhKElLQlCeEoQUslCeEoQpS0JJ4ShKlLJJ4ShCkrJJ4ShKlLJJ06FKYpKSSVKYp
+ KSSNIYpKSSVKYpKSSVKYpKSSNKYpKSSVKYwnhOkjSlJ4SSSSqEoSSSQtCUJ0kqW0tCUJ0kqVS0JQnSSp
+ K0JQnSSpK0J4SToUlaExCdJKkMIShShJKlrGEoUkkqUxhKFJJKksYShSSSpLGEoUkkqXWxhKFJJKkMYS
+ hSSRpDGE8J4ShNKloTwnSTbStCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCUJ0krUtCSdJK1L
+ JJ0krUsknSStSySdJK1LJJ0krUsknSStSySdJK1LJJ0krUxShSTQiClZJPCUI2lZJPCUJWtKySeEoStC
+ ySeEkrQslCdJK0LJJ4ShK1LJQnShK1LJ0k6VpCySdJK1yySdJK0rJJ0krUsknSRtSySdJK1LJJ0krQsk
+ nSStDGEoUkk0oYwlCkkgpjCUKSSNqYwlCkkjamMJQpJIWljCUKSSVqtjCUKSSVqYwlCklCVpYwlCeEoS
+ tCySeEoQtSySeEoStKySeEoStS0JQnShK1LJJ4ShK1LJQnhKErUslCeE8IgqYwlCkkn8SGMJQpJIWpjC
+ UKSSFoYwlCkkhaGMJ4TpIWpjCUKSSSmMJQpJIWljCdOklaVkk6SNrlkk6SVqWSTpI2pZJOklalkk6SVo
+ WSTpI2tWSTpJWpZMpJJWliknSStKySdJK1pWTpJJWilkk6SFpWSTpJWlZJOklaVkk6SFqWhKFJJK1pYw
+ lCkklaqYwlCkklaWMJ06SVpDGEoUkkrXWxhKFJJK1WxhKFJJK1rGE8J0krQsknSRUsknSRpCySdJKkrJ
+ J0kqUtCUJ0kqUtCUJ0kqUtCUJ0kqUtCSdJKlLJJ0kqUsknSSpSySdJKlLJJ0kqUsknSSpSySdJKlLJJ0
+ kqUsknSSpSySdJJSySdJJSySdJKlLJJ0klLJJ0kqUsknSSpSySdJClLJlJMlSmKSlCUJUlikpQlCVKYp
+ KUJQlSGKSlCUI0likpQlCVKYpKUJQlSmKSlCUJUpaEoTwnhKkMYShShKEqQxhKFKEoSpLGEoUoSRUxhK
+ E6SSloShOkkpaEoUkkFMYShShJJLGE6dJJCySdJClLJJ0kqQsknSSpSySdJKlLJJ0klLJJ0kkrJJ0kqU
+ sknSSpSySdJKlLJJ0kaUsknSSpSySdJKlLJJ0kqUsknSSpKySdJKlKSSSSpSkydJKlLJJ0kqQsknSSpS
+ ySdMlSlkk6SVKWShOkhSloTwknRpSySdJGlLJJ0kqUsknSSpSySdJKkLJJ0kqVSySdJKlUsknSSpKyUJ
+ 0kqUtCUJ0kqUtCUJ0kqStCUJ0kKUtCUJ0kaUtCUJ0klLQlCdJJC0JQnSQUtCUKSSSWMJQpwmQpTGEoUk
+ kqUxhKFJKEqUxhKFKEoSpTGE0KcJoSpDGEoUoShKlMYShShKEqQxhKFKEoSpTGEoUoShKlMIShShKEaU
+ xhKFKEoSpLFJShKEqUxSUoShJS0JQpQlCSWMJQpQlCSmMJQpQkkhjCUKSSSlkk6SSloShOklSloSTpIK
+ WSTpJKYwlClCUI0pjCUKUJoSpS0JQnhKEqUtCUJ4ShKlLJJ4ShKkLJJ4ShKlLQknhKEaUsknhKEqUskn
+ hKElLJJ4ShCkrQlCeEoSSxSUoShJDFKFKEoSUxhKFKEoSpTGEoUoShKlMYShPCUJUhaEoUkkqUxhKFKE
+ oSUtCUKUJQlSmMJQpQmhKlLQlCeEoQpS0JlOE0JUpinhPCUJUlaEoTwlCVKWhMpQlCVKWhKE8JQlSGKe
+ E8JQhSloShPCUI0laEoUoShGksYTKcJoTqSxSUoShJTFJShPCVKYwmU4ShBTCEoUoShBDGEoUoShClrG
+ EoUoShKkMYShShKEqUxhKFKEoSpLGEoUoShGlMYSUoShGlzFKFKE8JUphCUKcJQghhCUKcJQkphCUKcJ
+ QlSmEJQpwlCVKYQlCnCUJUphCUKcJQlSmEJQpwlCVKYQlCnCUJJYJQpQlCKmMJQpQlCSrYwlCnCUIKth
+ CSnCaElMUlOE0JIYwlClCUJUpjCUKUJQlSmMJQpQlCVKYwlClCUJKYwlClCUJKYwlCnCUJKYQlClCUJK
+ YwlClCUJUpjCUKUJQlSmMJQpQlCVKYwlClCUJUpjCUKUJQlSmMJQpQlCVKYwkpQlCVKYpQpQlCVJYwlC
+ lCUJUpjCUKUJQkpilClCUIqYwlClCUIUpjCUKUJQlSmMJQpQlCVKYwlClCUJUhjCUKUJQlSmMJQpQlCV
+ KYwlClCUJUhjCUKUJQlSmMJQpQlCVKYwlClCUJUpjCUKUJQlSmMJQpQlCVJYwlClCUJUpjCUKUJQlSWM
+ JQpQlCVKYwlClCUJUpjCUKcJQkphCUKcJoSUxSUoShBTFKFKEoSUxhKFKEoSpTGElKEoSpTGEoUoShKk
+ MYShShKEqUxhKFKEoSpTGEoUoShKlMYShShKEaUxhKFKEoSpTGEoUoShKlMYSUoShKlMYShShKEqUxhK
+ FKEoSpTGEoUoShKlMYShShKEqUxhJShKEqUxShThNCSWMJQpwlCSrYQkpwmhFVsUlKEoSVbFKFKE8IKY
+ QlCnCUJUphCUKcJQlSGEJQpwlCVKYQlCnCUJUphCUKcJQlSmEJQpwlCSmEJQpwlCSmEJKcJoTSpilClC
+ UIWpjCSlCUJWpjCUKUJQjamKSlCUJWpjCUKUJQlamMJQpQlCNqYwlClCUJWpaEoUoSStTGEoUkkVMYSh
+ SSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJFTGEoUkkFMYShOkkpaEoTpIKWhKE6SSloShOkkpaEoTpJKW
+ hKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkp
+ aEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKYpJymSUuE8qKdJS6SScJKXCTk4TOS
+ U1bVVcrNqquSUkrV2tUq1drSUmUSpBMUlMEkimSUvKSZOkpdJMnSUskkkkpSSSSSlJJJJKUkkkkpSSSS
+ Sl0kkklLJJJJKUkkkkpSkoqSSligWI5QLElNV6Zqd6ZqSmxWrDVXrVhqSmSZOmSUskkkkpdJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSU//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSS
+ SSSlkkkklKTJ0ySlJJJJKUkkkkpdJJJJSkkkklKSSSSUskkkkpSSSSSl0kkklLhIpBIpKQvVZ6svVZ6S
+ mIR2IAR2JKbDVJRapJKUkkkkpSSSSSlk6ZOkpSSSSSlkkkklKSTJ0lKSTpklKSSSSUsknTJKWSTpJKUn
+ TJ0lKTpk6SlJJkklLykopJKZSlKikkplKUqKSSmUpSopJKXlKUySSl5SlMkkpeU8qKSSmUp1FOgldJMk
+ kpdJMkkhdJMkkpdJMkkpdJMkkpdJMkkhdMkmSUpJMkkpdJMkkpdJMkkpdJMkkldJMkkpdJMkkldJMkkp
+ dJMkiELpkkk9C6SZJK1LpJkkrSukmSStK6SZJK0rpJkkrUpOmSStC6SZOlaFJJJJWhSSSSKlJJJJIUkk
+ kklSSSSFqUkkkla5SSSSVpUkmSRtC6SZJJC6SZJK1LpJkkrUukmSQtS6SZJJS6SZJJS6SZJJS6SZOgpS
+ SSSSlJJJJKUnTJIqXTJJJKUkkkjalJJJJWpSSSSVqVKdRSStTJKVFJJTKUpUUkkMpSlRSSUylKVFJK0s
+ k0pkkrUylKVFJC1MpSlRSStS6SSSKFJJJJKUkkkhalJJJIpUkkkhaVJJJJWpdMkkja1SdMkmlK8pSopK
+ NLKUpUUklMpSlRSSUylKVFJJTKUpUUklMpSlRSSUylKVFJJTKUlFOkpdJMkkpdJMkkpdJMkkpdJMkkpd
+ JMkkpdJMkkpdJMkkpdJMkiEqSSSRUukmSSQukmSSWrpJkklLpJkkkLpJkklLpJkklKlKUyZJIXlKUySS
+ 5eUpTJJJXlKUySSmUppTJJIXlKUySSl5SlMkiheU8qKSSmUp5UUpTUMpSlRlKUlMpSlRlJJTKUpUUklM
+ klFJBTJJRSSUySUUpSSySUZTpKXSTJJKXSTJJJXSTJJKXSTJJKXSTJIKXSTJJKXSTJJKXSTJIhS6SZMi
+ hlKUqKSSmUpSopJIZJKKSSGSUqKSCmUpSopJKZSlKikkleUpTJIJXSTJJJXTSkmSSvKUpkklLynUU6Kl
+ 0kySSFSnUUkUMkkySSFSlKZJJS8pSmSSSvKUpkkkLylKZJJS8pSmSSUvKUpkkErylKZJJS8pSmSSUyBT
+ yopJKZSkopIKZSlKikkplKSikklkkop0lLpJkklLpSopJKZJSmTJBC8pJkykCmSaUySKl5SlMkkpeUpT
+ JJKXlKUySCl5SlMkkpeUpTJJKXlKUySSl5SlMkipeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5Sl
+ MkkpeUpTJJKXlKUySSF5SlMkkpeUpTJJJXlKUySSl5SlMkkpeUpTJJKXlKUySSmUpKKdJLJJMkkpSdMk
+ kpdJMkkhdJMkkpdJMkkpdMkkkpSSSSSlJSkmSUvKUpkkVLylKZJBS8pSmSSUvKUpkklLylKZJJS8pSmS
+ SUvKUpkklLykopIKZJpTJIqXlKUySCl5SlMkkpeUpTJJKXlKUySSl5SlMklal5SlMkkpeUpTJJKXlKUy
+ SKl5SlMkgpeU6ikipeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlM
+ kkpeUpSSSUqU6ZJJS6aUkklKlKUySKl5SlMkkpeUpTJIqXlKUySSl5SlMkkpeUpTJIKXlKUySVqZSlKi
+ nStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSStS8pSmSQtS8pSmSSUylPKilKCWSSaUpSUulKjK
+ UpWplKUqMpJIZSlKjKUpKXlJNKSSV5SlMkkheUpTJJKXSTJJKXSTJIqXSTJJKXSTJJKXSUZSlJTJJMkk
+ pdJNKUpKXSTJJKXTSkmQUvKUpkklMkkySSl0kySSl0kySSl0pTJJKXlNKZJFS8pJkklLpJkklLpJk6Sl
+ JJJJKUnTJJKXSTJIqXSTJJKXSTJIKXSTJJKXTJJJKUnUU6Sl0kySSl0ySZJS6SZJJS6SZJJC6SZJJS6d
+ RTpKXSTJJKXSTJJKXSTJJKXSTJIJXSTJJKXSTJJKXSTJklMkkySSl0lFOkhdJMkkldJMkildJMkildJM
+ kipdJRToKXSTJJIXSUZSQQvKUpkpQQvKSZJJDJJRSlJS8p1GUkksklFJFLJKVFJFLKUpUUklMkkySCF0
+ kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0pTJpSUvKUppSlJS8p1GUpSUySUUkFMpSlRSSUylJRSRU
+ ySlRSSUvKUpkklLynUUklMpSlRSQUylKVFJJTKUpUUklMpSlRSSUylKVFJJTKUlFJJTJJRSRUySUUklM
+ klFJJTJNKZJJS8pSmlKUlLylKaUpSUvKUppSlJS8p5UUklMpSlRSSUyTJkkkrpJkklLpJkklLpJkkkMp
+ TJkklLpJkklMpTJkkkLpJkklLpJkklLpJkklLp1FJJS6dRSSSySlRSSUylMmSSSukmSSUulKZKUlMklG
+ UkFMklFJJTJJRlKUlMklGUpSUvKUppSlJC8pSmlKUlMpSlRSSUylKVFJJTJJRSSUySlRSSUunUUkVMkp
+ UUklMklFJJTJJRSSUySUUklMkpUUklLylKZJJS8p1FJJTJJRSQUylKVFJFTJJRSQUyTSmSlFS8pSmlKU
+ lLynUZTpKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXlJMkkpdJMkkpeUlGUlGVLynlRSTVMklGUpSUvKeV
+ FKUVMklGUpSUylJRlJFTKUpUZSSUylKVFKUVLylKaUklLylKinRUvKUpkklLylKinlFS8pSmSSUvKUpk
+ klLylKZJFS8pSmSSUvKSZJBS6SZJBS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6S
+ ZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS8pJkklKKZO
+ lCSlkk8JJKUFIJgnCSmQTOTqL0lNW1VXKzaqrklJK1dqVKtXK0lNgJikEikpgVFSKiUlKCcJgnCSl0kk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSlJRUklLFAsRygWJKar0zU70zUlNitWGq
+ vWrDUlMkydMkpZJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2J
+ Ka7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklLJJJJKU
+ kkkkpdJJJJS4SKQSKSkL1WerL1WekpiEdiAEdiSmw1SUWqSSlJJJJKUkkkkpZOmTpKUkkkkpZJOmSUpJ
+ JOkpSSSSSlJJJJKUmTpJKWSTpJKWSTpklLpJkklKSTpJKWSTwkkpZNCkkkpjCSlCUJKYpKUJQkpjCUKU
+ JQkpjCSeEoSUsknhKElKTpJJKUkkkklSSSSSFJJJJKUkkkkpSSSSSlJJJJIUmTpJKYpKSSCmKSkkkpjC
+ SkkiljCSkkgpilClCSSmKSkkklilCkkkpjCeE6UJKK0JQpQlCFrGMJQpQlCXEljCUKUJQhxJYwlClCUJ
+ cSWMJQpJIcSWMJQpJQlxKYwlClCUI8SGMJKUJQlxIYpKUJQjxIYpKUJQlamKSlCaEbQskpQlCFpYpKUJ
+ QlxJYpKUJQhxJYwlClCUJcSWMJQpQlCXEhjCUKSSXEhjCUKSSXEpjCUKSUI8SmMJQpQlCVqYwlClCUJW
+ pjCUKUJQjamMJQpQlCVqYwkpJIWpikpJJWpikpJQlamKSlCUI2pikpQlCFqYpKSSVqYpKSUJcSmKSlCU
+ JcSmMJQpQlCXEpjCUKUJJcSWMJQpQlCXEpjCUKUJQlxKYwlClCUJcSGMJQpQlCXEpjCUKSSVqYwlCklC
+ VqYpJ0krUsknSStSySdJLiUsknSS4lLJJ0kuJSySdJLiUsknSS4lLJJ0oStSySeEoRUsknhKElLJJ4Sh
+ JSySeEoSUsknhKElLJJ4ShJSySeEoSUsknhJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJS
+ ySdOklZJJJJKySdJJBWSTp0VrFOknSQxSUkklMUlJJJSyZOnSUxhNCnCUJLmEJQpwlCSWEJQpwlCSmEJ
+ QpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCS1hCUKcJoSUxSUoTIpWSTpJKWSTpIKWSTwlCCFkk6UJKWSTw
+ kkpZJPCUJKWTpQnSSsknSSUsnTpIpWSTpJKWTKSZJSySdJBSkydOkhZJPCSCmKSdKElLJJ4ShJKySeEo
+ SUsknhKEVqySeEoRUsknhKEkLJJ4ShJSySeEoSSskpQlCVJDGEoUoShBLGEoUoShJLGEoUoShJTGEoUo
+ SSUxShShKEkMYShShKEkMYShSSSQxhNCnCUJKYQlCnCUJKYQlCnCUJJYQlCnCUJKYQlCnCUJKYQlCnCU
+ JKYQlCnCUJKYQlCnCUJKYQnTwlCSlkk8JQklZJPCUJIWSTwlCSlkk8JQgq1kk8JQkq1kk8JQkpZJPCUJ
+ KYwlClCeErUwhKFOEoStTCEoU4ShK1MIShThKErUwhKFOEoStTCEoU4ShK1MIShThKErUwhKFOEoStTC
+ EoU4ShK1MIShThKErUwhKFOEoStTCEoU4ShK1MIShThKErUwhKFOEoStTCEoU4ShK1MIShThKErUwhKF
+ OEoStDCEoU4ShK1MIShThKErUwhKFOEoStLCEoU4ShK1MIShThNCVpYwlCnCUJWpjCUJ4SStSySdJK1L
+ JJ06VqYpKSSVoYp0k6VqWSTpJWpinTpQlaFkk6SVqYpoUoSStLGEoUkkbSxhJSShC1MUlKEoQtDFJSSS
+ tDFJSSStTFJSSStTFJShJK1MYShShPCVpYQlCnCUI2lhCUKcJQlamEJQpwlCVqYQlCnCUJWphCUKcJQh
+ amEJQpwlCFoYQlCnCUI2phCUKcJoRtTGEoUoShK1MYShThKErUwhKFOEoStTCEoU4ShK1MIShThKErUw
+ hKFOEoStTCEoU4TQlamMJQpJJWpjCUKSSVqYwlClCeErUwhKFOEoStTCEoU4ShK1MYShShKErUxhKFJJ
+ K1MYShSShK1MIShThKEbUwhKFOEoStLCEoU4ShC1MIShThKErUwhKFOEoS4ksIShShPCVqYQlCnCUJWh
+ hCdShKEOJTFKFKEoS4kMUoUoShLiQxhKFKEoS4lMUlKEkuJTFJShNCXElZJPCUJcSVklKEoQtTFJPCSN
+ qWSTpJWhZJOlCVqWSTpJWpZMnSStSySeEoStSySdJK1LJJ0krUpJKE6NqWTKUJoStSkkoShK1LJJ4ShK
+ 1LJJ4ShK1LJJ4ShK1LJ0oTwlalkk8JQlalkk8JQhaFkk8JQhalkk8JI2pZJPCUJWpZJOklalkk6UJWpZ
+ JPCUJWlZJPCUJWpZJOkjalkk6SVqWSTpJWpZJOklalkk6SVqWSTpJWpZJOklalkykmhK1LJJ4ShC0rJJ
+ 4ShK1LJJ4ShK0LJJ4ShK1LJKUJQlamKSlCUJWhikpQlCVqYpKUJQlamKSlCUJWpikpQlCNqYpKUJQlaW
+ KSlCUJWpikpQlCVpYpKUJQlamKSlCUJWpikpQlCFoYpJ4TwlaGKSlCUJWlikpQlCNpYpKUJQjaWKSlCU
+ JWpikpQlCVqYpKUJQhaGKSlCUIWtYpKUJQlamKSlCUIWhikpQlCVqYpKUJQjaWKSlCUI2likpQlCNpYp
+ KUJQlamKSeEoQtCySeEoQtSySeEoRtSySeEoStKySeEoRtSySeEoStSySeEoQtSySeEoStCySlCUIWhi
+ kpQlCVqYpKUJQlamKSlCUJWpikpQlCNqYpKUJQlaWKSlCUI2likpQlCFqYpKUJQhaGKSlCUJWpikpQlC
+ VqYpKUJQjamKSlCUJWpikpQlCVqYpKUJQlamKSlCUJWpikpQlCVqYpKUJQlamKSlCUJWpikpQlCVoYpK
+ UJQlamKSlCUJWpikpQlCVqYpKUJQlaWKSlCUJWlikpQlCVqYpKUJQlaGKSlCUJWpikpQlCVqYpKUJQla
+ GKSlCUJWpikpQlCVqYpKUJQlamKSlCUJWpikpQlCVpYpKUJQlamKSlCUJWlikpQlCVqYpKUJQlamKSlC
+ UIWhikpQlCVqYpKUJQlamKSlCUJWpikpQlCVqYpKUJQlamKSlCUI2pikpQlCVqYpKUJQlamKSlCUJWpi
+ kpQlCVqYpKUJQlamKSlCUIWpikpQlCVoYpKUJQlamKSlCUI2likpQlCNpYpKUJQlamKSlCUIWhikpQlC
+ FoYpKUJQlamKSlCUJcSmKSlCUJcSmKSlCaErSsknhKEbUsknhKEbSsknhKErUsknhKELUsknhKErQskn
+ hKErUsknhKELUsknhPCKmKSlCUIqYpKUJQkpikpQlCSmKSlCUJKYpKUJQkpikpQlCSmKSlCUJKYpQpQl
+ CSmCdShKEVMUlKEoSUxhKFKEoSUxhKFKEoSUxhKFKEoSUxSUoShFTFJShKElMU6eEoQUsknhKElLJJ4S
+ hJSySeEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSySeEoSUsknh
+ KElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJJ4ShJSySeEoSUsknhKElLJQnhOkpikn
+ TJKUFIKKcJKZKDypSoOKSmtaqxVmxVykpkxW61VYrLElNgFOVEFIlJSxUSpJJKYp0kklKSSSSUpJJJJS
+ 6SZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSkoqSSligWI5QLElNV6Zqd6ZqSmxWrDVXrVhqSmS
+ ZOmSUskkkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSU//1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk
+ 7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklLJJJJKUkkkkpdJJ
+ JJS4SKQSKSkL1WerL1WekpiEdiAEdiSmw1SUWqSSlJJJJKUkkkkpZOmTpKUkkkkpSSSaUlLpk0piUlMp
+ SlQJTbklJJSlC3JbklJZSlC3JbklJZTSobk25JSSUpQ9ybckpJKUoe5NuSUmBTyg70t6Sk8pSg7029JS
+ aUpQd6W9JSaUpQd6W9JSaUpQd6W9JSaUpQd6W9JSaUpQd6W9JSaUpQd6W9JSaUpQN6W9FSeUpQN6W9JS
+ eUpQN6W9BSeUpQN6W9JSeUpQN6W9JSeUpQN6W9JSeUpQN6W9JCeUpQN6fekpPKUoG9PvSUmlKUHelvSU
+ mlKUHelvSSmlKUHelvSUmlKUHelvQUmlKUHelvSSmlKUHelvSUmlKUHelvSUU0pSg70t6FLE0pSg70t6
+ FJTSlKDvS3pUlNKUoO9LehSU8pSgb0t6FJTymlB3pb0qUmlKUHelvRpCaUpQd6W9KkJpSlB3pb0aQmlK
+ UHelvRpSaUpQd6W9KkJpSlB3pb0qSmlKUHelvQpKaUpQd6W9KkppSlB3peohSU0pSg70t6VITylKBvS3
+ pUhNKeUDelvSpSaUpQd6W9GlJpSlB3pb0qUmlKUHelvRpSaUpQd6W9GlJpSlB3pb0qUmlKUHelvSpSaU
+ pQd6W9KlJpSlB3pb0qUmlKUHelvSpSaUpQd6W9ClJpSlB3pb0qUmlKUHelvQpSaUpQd6W9KlJpSlB3pv
+ USpSeUpQPUS9RKkp5SlA9RL1EqUnlKUD1Et6VKTylKBvS9RGlJ5SlA9RL1EqQnlKUDel6iVKTylKB6iW
+ 9KlJpSlA3pb0qSnlKUDelvSpSeUpQN6W9CkJ5SlA3pb0qUnlKUDelvSpCeUpQN6W9KlJ5SlA3pb0qSnl
+ KUDen3o0pPKUoO9LenUpNKUoPqJeolSE0pSg+ol6iFKTSlKD6iXqJUpNKUoPqJeolSk0pSg+ol6iVKTS
+ lKD6iXqJUpNKUoPqJb0qSmlKUHelvSpSaUpQd6W9KlJpSlB3pb0qUmlKUHelvSpSaUpQd6W9KlJpSlB3
+ pb0qUmlKUD1E+9GlJZSlB3pb0khNKUoO9LeklNKUoO9LekgppSlB3pb0lqaUpQd6W9JCaUpQd6W9JSaU
+ pQd6W9JSaUpQd6W9JKeUpQN6XqJJTylKB6iW9JKeUpQPUS9RJSeUpQPUS9RJSeUpQPUS9RJSeUpQPUS9
+ RJCeUpQPUS9RJCeUpQPUS9RJSaU0oW9LenAJSylKFvS3pJTSlKDvS3oUhNKUoO9LehSE0pSg70t6FKTS
+ lKDvS3pUhNKUoO9LelSUsp5Qd6W9GlJpSlB3pb0qSmlKUHelvRSmlKUHelvSUmlKUHelvSUmlKUHelvQ
+ pCaUpQd6W9KlJpSlB3pb0KQmlKUHelvQSnlKUHel6iC5NKUoO9L1EUJpSlB9RLeitTSlKDvS9ROUmlKU
+ H1Et6KE0pSg70t6Sk0pSg70t6SU0pSg70vUQpKeUpQPUS9RCkp5SlA9RL1EqSnlKUDelvQpSeUpQN6Xq
+ JUpPKUoHqJb0kJ5SlA3pb0aQnlKUD1Et6VKTymlB9RN6iSE8pSgeol6iSk8pSgeolvSSnlKUD1Et6SU8
+ pSgeolvSQnlKUDel6iSk8pSgeol6iVKTylKB6iXqJUhPKUoO9LelS5NKUoPqJb0lJpSlB9RL1EKQmlKU
+ HelvSpSaUpQd6W9JCaUpQd6W9JSaUpQd6W9JSaUpQd6W9CkppSlA9RL1EaUnlKUD1EvUS4VJ5SlA9RL1
+ EuFSeUpQPUS9RLhUnlKUD1EvUS4VJ5SlA9RL1EuFSeUpQPUS9RLhUnlKUD1EvUS4VJ5SlA9RL1EuFSeU
+ pQPUS9RLhUnlKUD1EvUS4VJ5SlA9RL1EuFSeUpQPUS9RLhUnlKUD1EvUS4VJ5SlA9RL1EuFSeUpQPUS9
+ RDhQnlKUD1EvUS4VJ5SlA9RL1EuFSeUpQPUS9RKlJ5SlA9RL1EqSnlKUD1EvUSpKeUpQPUS9RLhUnlKU
+ D1EvUR4VJ5TSg+ol6iXCpNKUoPqJeolwqTSlKD6iXqJcKk0pSg+olvS4UJpSlB9RLelwqTSlKDvS3pcK
+ E0pSg+olvS4VJpSlB3pb0uFSeU0oO9LelwpCeU0oW9LelwpSylKDvS3ocKk0pSg70t6HChNKUoO9PvS4
+ UJZSlC3pb0uFSWUpQt6W9LhUllKULelvS4VJpSlA3peojwpTylKB6iXqJcKU8pSgeol6iPCpPKUoHqJe
+ olwqTylKB6iXqIcKk8pSgeol6iHCpPKUoHqJeohwoTylKB6iXqI8Kk8pSgeol6iPCpPKUoHqJeojwqTy
+ lKB6iXqJcKk8pSgeol6iFKTylKB6iXqJcKk8pSgeol6iVKTylKB6iXqJcKk8pSgeol6iXCpNKUoPqJeo
+ lwqTSlKD6iW9LhUnlKUDelvSpSeUpQPUS9RLhUnlKUD1EvUR4VJ5SlA3peolwqbEpSgb0t6XCpNKUoPq
+ JvUSpSeUpQPUS9RClJ5SlA9RL1EqSnlKUD1EvUSpSeUpQPUS9RKkp5SlA9RL1EqUnlKUD1EvUSpSeUpQ
+ PUS9RClJ5SlA9RL1EqQnlKUDelvSpCeUpQPUS9RKkJ5SlA3pb0qUnlKUD1EvUQpSeUpQPUS3pUlPKUoG
+ 9LelSU8pSgeolvSpSaUpQd6W9LhQmlKUHelvR4UJpSlB3pb0uFSaUpQd6W9LhSmlNKFvS3pUpLKUoW9L
+ elwqSylKFvTb0eFSaUpQd6W9LhUnlPKCHp96XCpLKaUPem3pUpLKUoW9LelwqSylKFvS3pUpLKUoW9Le
+ lwqSylKFvS3pcKkspShb0+9LhUllKULelvS4UJZSlB3pb0KUmlKUHelvQpSaU0oW9NvR4VJpSlB3pb0q
+ UmlKUHelvSpSaU8oG9PvS4VJpSlB3pb0uFKaUpQd6W9HhUmlKULelvSpSWUpQt6W9KlJZSlC3pb0qUll
+ KULelvSpSWUpQt6W9KlJZSlC3pb0qUllKULelvSpSWU0oe9NvSpKWUpQt6W9DhUllKULelvS4VJZSlC3
+ pb0aQllKULelvSpSWU8oO9LehwqTSlKDvS3pcKk0pSg70+9LhUllKULelvS4VJZSlC3pb0uFSWUpQt6W
+ 9HhUllKULelvSpSWUpQt6W9KlJZSlC3pb0qSllKULelvSpSWUpQt6W9LhSllKULelvQ4VpSylKFvS3pc
+ KEspShb0t6PClLKUoW9LejwpSylKFvS3pcKUspShb0t6PCpLKUoW9LehwoSylKFvS3pcKkqSFvS3pvCt
+ SylKFvS3pcKkspShb0t6HChLKUoW9LelwqSpShb0t6PClLKUoW9LejwpSylKFvS3o8KUspIW9LelwqSy
+ mlD3pb0OFCSUpQ96W9DhQklKUPelvR4UpJSlD3pb0eFKSUpQ96W9LhUklKUPelvS4VJJSlD3pb0uFSSU
+ 8oW9LehwoSylKFvS3ocKEspShb0t6XCpLKUoW9LelSkspShb0t6XCpLKSFvS3o8KkspShb0t6PClLKUo
+ W9LelwpSylKFvS3oGKkspShb0t6HChLKSFvS3pcKkqSFvS3o0pKlKFvS3pcKkspShb0t6VKSylKFvS3p
+ cKkspShb0t6PCpLKUoW9LelwqSylKFvS3pcKkspShb0t6XCpLKUoW9LelwqSylKFvS3pcKEspShb0t6X
+ CpLKUoW9LelwqSylKFvS3pcKkspShb0t6XCkJZSlC3pb0OFKWUpQt6W9HhUllKULelvS4UJZSlC3pb0u
+ FSWUpQt6W9LhUllKULelvS4UJZSlC3pb0uFSWUpQt6W9LhUllKULelvS4VJZSlC3pb0uFSWUpQt6W9Lh
+ SllKULelvS4VJZSlC3pb0uFKWUpQt6W9LhUllKULelvQ4VJZSlC3pb0uFCWUpQt6W9DhUllKULelvS4V
+ JZSQt6W9LhUlSQt6W9HhUlSQt6W9LhUllKULelvSpSWUpQt6W9KlJZSlC3pb0qUllKULelvSpSWUpQt6
+ W9KlJZSlC3pb0qUllKULelvQ4VJZSlC3pb0uFCWUpQt6W9KlJZSlC3pb0eFISykhb0t6PClLKSFvS3pc
+ KkspShb0t6HCtSylKFvS3ocKkspShb0t6VKSylKFvS3pUpLKUoW9LelwqSpShb0t6PClJKUoe9LelwpS
+ SlKHvS3o8KkkpSh70t6XCpJKUoe9LelwqSSlKHvS3ocKEkpSh70t6XCpJKUoe9LehwqSykhb0t6cApLK
+ UoW9LejSkspShb0t6VKSylKFvS3pUpLKUoW9LelSkspShb0t6VKSylKFvS3pKSylKFvS3pKSylKFvS3p
+ KSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3p
+ KSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3p
+ KSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3p
+ KSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSylKFvS3pKSymlC3pb0lJJTSh7kty
+ Skkp5QdyW5JSbcoOKhvUS5JTB5QSpuKGSkpm1WGFVmlFa5JTZDk+5A3pw9JSeU6EHKYKSl0kkklLJ0yS
+ Sl0kkklLpJk6SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlKSipJKWKBYjlAsSU1Xpmp3pmpKbFasNV
+ etWGpKZJk6ZJSySSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2J
+ Ka7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklLJJJJKU
+ kkkkpdJJJJS4SKQSKSkL1WerL1WekpiEdiAEdiSmw1SUWqSSlJJJJKUkkkkpZOmTpKUkkkkpYqJKcoZK
+ Sly5RLlAlQJSUkL1AvQy5QLklJt6beq5cm3JKbPqJb1W3J9ySmzvS9RVtyfckpsb029A3JtySk+9Leq+
+ 5NuSU2PUTeoq+5Lckpseol6ir7ktySmx6iXqKvKUpKbHqJeoq8pSkpseol6irSluSU2fUTeoq8pSkpse
+ ol6irylKSmx6iXqKvKW5FTY9RL1FW3JbkVNn1EvUVbcluSU2fUS9RVtyW5FTZ9RL1FW3JbkFNn1EvUVb
+ cluSU2fUS9RVtyW5JTZ9RL1FW3JtxQQ2vUS9RVdxT7klNr1UvVVXcluSU2vVS9VVdyW5JTa9VL1VU3FL
+ cklt+ql6qqbktyCm36qXqqpuKW5JLb9VL1VU3JbklNv1UvVVTcn3JKbXqpeqqu5LciEFt+ol6iq7ktyd
+ S1teol6qq7ktyFKDa9VL1VV3FLchS5teql6qq7ktyCW16qXqqruS3IJbXqpeqqu5Lckpteql6qq7ktyK
+ G16qXqKruS3IobXqJeoqu5Lckhteom9RVtyW5OpTZ9RL1FW3JbkqQ2vUS9RVdyW5Kktr1EvUVXcluQS2
+ vUTeoq25LcguDa9RL1FV3JbklNr1EvUVXcluQQ2vUS9RVdyW5BDa9RL1VV3JbkVNr1EvUVXcluRU2vUS
+ 9VVdyW5FTa9RL1VV3JbkaU2vVS9VVdyW5GkNr1EvUVXcluKVKbXqJeoqu4pbijSm16iXqKruS3JUlteo
+ l6iq7ktyFKbXqJeoqu5LclSm16iXqKruS3IUpteol6iq7ktyVKbXqJeoqu5Lcgpteom9RVtyW5KlNn1U
+ 3qqtuTbkKS2vVS9VVdyW5JTa9VL1VV3JbkUtr1UvVVXcluSpTa9VL1VV3JbkkNr1UvVVXcluSQ2vVS9V
+ VdyW5JTa9VL1VV3Jbkktn1EvUVbcluSpLZ9RL1FW3JbklNn1EvUVbcluSQ2fUS9RVtyW5JDZ9VL1FW3J
+ tyVLW16qXqKtuS3JJbPqpeoq25Lcglteol6qq7iluSU2/US9VVdyW5Fa2vUS9RVdyW5JTa9RL1FV3Jbk
+ lNr1EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1
+ EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUV
+ XcluQXBteol6iq7ktyC5teol6iq7ktySG16iXqKruS3JIbXqJeoqu5Lcihteol6iq7ktySG16iXqKruS
+ 3JKbXqJvUVbcluSS2fUS9VVdyW5JLa9VL1VV3Jbkktr1UvVVXcluKSm16qXqqruS3IKbXqpeqqu5Lckp
+ teql6qq7ktySG16qXqqruS3IIbPqp/VVXcluRCm16if1FV3JblIFwbXqJeoqu4pbkUtr1EvUVXcluQWt
+ r1EvUVXcluQQ2vUS9RVdyW4pqG16iXqKruS3JKbXqJeoqu5Lcklteol6iq7ktyKm16iXqKruS3IpbXqJ
+ eoqu5Lcilteol6iq7ktySm16iXqKruS3JKbXqJeoqu5Lcghteol6iq7ktySG16iXqKruS3IKbXqJeoqu
+ 5LcmlIbXqJeqqu5Lcmrm16qXqqruS3JBDa9RL1FV3Jbk4IbXqJeoqu5LcnhDa9RL1VV3FLcUUNr1UvVV
+ XcluKSm16qXqqruKW5JTa9VL1VV3Jbkktn1UvVVbcluQXBs+ql6qrbktyCWz6qXqqtuS3JJbPqpeqq25
+ Lcghs+ql6qrbktySmz6qf1FV3JbkUNr1EvUVXcluSQ2fVS9VVtybckhteql6qq7ktyCm16qXqqruS3JJ
+ Da9VL1VV3JbkVza9VL1VV3JbkkNr1UvVVXcluSQ2vVS9VVdyW5JDa9VL1VV3JbklNv1UvVVXcluSXBte
+ ql6iq7ktyCW16iXqKruS3FFDa9VL1VV3JbkkNr1UvVVXcluQWtr1UvVVXcluSU2vVS9VVdyW5JIbXqJe
+ qqu5LckubPqpvVVbcm3J4Cm16qXqqruS3I0pteql6qq7ktyVKbXqpeqqu5LclSG16qXqqruS3JUpteql
+ 6qq7ktyVKbXqpeqqu5LclSm16qXqKruS3JUpt+ql6qq7ktyVKbXqpeqqu5LclSm16qXqqruS3JUpteql
+ 6qq7ktyVKbXqpeqqu5LclSm16qXqqruS3JUpteql6qq7ktyVKbXqpvUVbcm3JUhteql6qq7ktxQpTa9V
+ L1VV3JbkqU2vVS9VVdyW5KlNr1UvVVbcm3JUlteql6qq7ktyVJbXqpeqqu5LcjSm16qXqqruS3JUlteq
+ n9VVNyfclSm16iXqKruS3JUhteol6iq7ktyVKbXqJeoqu5LclSm16iXqqruS3JUtbXqpeqqu5LclSm16
+ qXqqruS3FKkNr1UvVVXcluSpTa9VP6qqbk+5KlwbXqpeqqu5LclS5teql6qq7ktyFIbXqpeoqu4pbkKQ
+ 2vVS9RVdyW5KkNr1EvUVXcluSpDa9VL1VV3JbkqS2vUS9RVdyW5KlNn1U3qKtuS3I0ls+ol6iq7k+5Gk
+ tn1E/qqruS3JUlteql6qq7ktxSpTa9VL1VV3JbkKU2vVS9VVdyW5CkNr1UvVVXcluQpDa9VL1VV3Jbkq
+ U2fVS9VVdyW5PpTa9VL1VV3JbkqU2vVS9VVdyW5KlNr1UvVVXcluSpTa9VL1VV3JbkKU2vVS9VVdyW5K
+ lNr1UvVVXcluSpTa9VL1VV3JbkqU2/VS9VVdyW5KlNr1UvVVXcluSpTa9VL1VV3JbkqU2vVS9VVdyW5K
+ lNr1UvVVXcluRpTa9VL1VV3JbkqU2vVS9VVdyW5KlNr1U3qqtuTbkqU2vVS9VVdyW5Cktr1UvVVXcluQ
+ pTa9VL1VV3JbkqS2vVS9VVdyW5Kktr1UvVVXcluSU2vVS9VVdyW5KlNr1UvVVXcluQpDa9VL1FV3FLcU
+ qQ2vVS9VVtyW5CkNn1EvUVbcUtySGz6iXqKtuS3JUps+on9VVdyW5KlNr1UvVVXcluSpLa9VL1VV3Jbk
+ ktr1UvVVXcUtyCW16if1FV3J9ycAtLZ9RL1FW3JbkaQ2fUS9RVtyW5KlNn1EvUVbcluSpTZ9RL1FW3Jb
+ kqS2fUS9RVdyW5GlNn1EvUVbcUtyVKbPqJeoq25LclSm2LE/qqpuS3JUlt+om9VVdyW5KlNr1EvUVXel
+ vSpTa9VL1VU3pb0qQ2/VS9RVNyfclSm16iXqKrvS3pUpteol6iq70t6VIbfqJeqqm9LclSm16iXqKruS
+ 3JtKbXqJvVVbcm3JUpteql6qq7k25GlNv1UvVVTcluSpTb9RL1VU3JbkqU2/US9RVdyW5KlNr1E/qKru
+ S3JUpteol6qq7k25Gktv1UvVVTelvSpTb9VL1VU3pb0qU2/VS9VVN6W9KlNv1UvVVTelvSpTb9VL1VU3
+ pb0qU2/VS9VVN6W9KlNv1UvVVTeUt5SpTb9VN6qq7ym3pUpt+ql6qqb0t6VJbfqpeqqm9LelSm36qXqq
+ pvS3pUht+qn9VVN6W9KlNv1UvUVTelvSpTb9RL1VU3pb0qU2/US9VVN6W9KlNv1UvVVTelvKVKbfqpeq
+ qe8pbylSm56qXqqnvKW9KlNz1UvVVPelvSpLc9VL1VT3pbylSm56qXqqnvS3pUlueql6qp7ylvSpTc9V
+ L1VU3pt6VKbnqpeqqe9PvSpaW36qXqqpvS3oUht+ql6qp70t6NJbnqpeqqe9LejSW56qXqqnvT70aS2/
+ VS9VVN6W9KlNv1UvVVTelvSpDb9VL1VU3pb0KQ2/VS9VVN6W9NpDb9VL1VU3pb0qQ2/VS9VVN6W9KlNv
+ 1UvVVTelvSpTb9VL1VU3pb0aS2/VS9VVN6W9Gktv1UvVVTelvRpLb9VL1VU3pb0qU2/VS9VVN6W9Npa2
+ /VS9RVN6W9KlNv1UvVVTelvSpc2/VS9VVN6W9Gktv1UvVVTelvRpTb9VL1VU3pb0qU2/VS9VVN6W9CkN
+ v1UvVVTelvQpDb9VL1VU3pb0KQ2/VS9VVN6W9KkNv1UvVVTelvSpTb9VL1VU3pb0qU2/VS9VVN6W9Gkt
+ v1UvVVTelvRpLb9VL1VU3pb0aS2/VS9VVN6W9AhTb9VL1VU3pb02kNv1UvVVTelvSpTb9VL1VU3pb0aU
+ 2/VS9VVN6W9KlNv1UvVVTem3lKlNz1UvVVPeUt5SpTc9VL1VU3pb0aU2/VS9VVN6W9KlNv1UvVVTelvS
+ pTb9VL1VU3pb0qU2/VS9VVN6W9KlNv1UvVVTelvSpDb9VL1VU3pb0qU2/VS9VVN6W9KlNv1UvVVTelvS
+ pDb9VL1VU3pb0qXBt+ql6qqb0t6VJbfqpeqqm9LelSm36qXqqpvS3pUht+ql6qqb0t6VKbfqpeqqm9Le
+ lSm36qXqqpvS3pUht+ql6qqb0t6VKbfqpeqqm9LelSm36qXqqpvS3pUpt+ql6qqb0t6VKbfqpeqqm9Le
+ lSW36qXqqpvS3pUpt+ql6qqb0t6VJbfqpeqqm9LelSm36qXqqpvS3pUpt+ql6qqb0t5QpDb9VL1VU3lL
+ elSm36qXqqpvS3pUpt+ql6qqb0t6VKbfqpeqqm9LelSm36qXqqpvS3pUpt+ql6qp70+9KlNv1UvVVTel
+ vSpTb9VL1VU3pb0qU2/VS9VVN6W9KlNv1UvVVTelvSpTb9VL1VU3pb0qU2/VS9VVN6W9ClNv1UvVVTel
+ vSpDb9VL1VU3pb0qU2/VS9VVN6W9EBIbfqpeqqm9LenUlt+ql6qqbylvKVKbfqpeqqm9Lem0tbfqpeqq
+ m9LehSm36qXqqpvS3pUht+ql6qqbylvSpTb9VL1VU3pb0qS2/VS9VVN6W9GlNv1UvVVTelvRpc2/VS9V
+ VN6W9GlNv1UvVVTelvSpLb9VL1VU3pb0qU2/VS9VVN6W9CkNv1UvUVTelvQpDb9VL1VU3pb0qQ2/VS9V
+ VN6W9Kktv1UvVVTelvKSW36qXqqpvS3pKbfqpeqqm9Lekht+ql6qqb0t6Cm36qXqqpvS3pKbfqpeqqm9
+ Legpt+ql6qqb0t6Cm36qXqKpvS3JKbfqJeoqu5LcmqbXqpeqqm5Lckpt+ql6qqbktySm36qXqqruKW4p
+ KbXqpeqqu4pbikpteol6qqbktySm36qXqKpuT7klNr1EvUVXcluRU2vUS9RVdyW5JTa9RL1FV3JbklNr
+ 1EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvU
+ VXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcl
+ uSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcluSU2vUS9RVdyW5JTa9RL1FV3JbklNr1EvUVXcluSU2
+ vUS9RVdyW5JTa9RP6iqbk+5JTa9RLeqwcluSU2d6beq+5Lckpseool6BuTbklJS5RlDlKUlJQ5TD0AFP
+ KSk+9OLFWLkg5JTda9Ga5UmOVhhSU2AU6gCpJKXSSSSUukmTpKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKUlFSSUsUCxHKBYkpqvTNTvTNSU2K1Yaq9asNSUyTJ0ySlkkkklLpJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//W
+ 69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkk
+ lKTJ0ySlJJJJKUknSSUpJJJJSkkkklKSTpklLJJ0klLJ0kklKSSSSUuEikmKSkT1WerL1WekpiEdiAEd
+ iSmw1SUWqSSlJJJJKUkkkkpZOmTpKUkkkkpiUMhEITEJKQEKBCsFqbYkpqlqgWK4WJjWkppFibYrvpJv
+ SSU09iWxXPSS9JJTU2JbFc9JL0klNPYlsVz0kvSSU0tiWxXPSS9JJTS2JemrvpJekkppeml6au+kl6SS
+ ml6aXpq76SXpJKaXppemrvpJekkppeml6au+kl6SSml6aXpq76SXpJKaXppemrvpJekkppemm9NXvSS9
+ JJTR9NN6av8AopeihxKaHppemr/opvRQ4lNHYm2K96Kb0keJTS2JbFd9JN6SXEpp7Etiuekl6SNoaexL
+ YrvpJeklamnsS9NXfRT+ilamj6aXpq96KXooqaPppvTV/wBFL0UlND00/pq96KXopKaHppemr/opeikp
+ oeml6av+il6KCWh6ZS9NX/RS9FJTQ9NL01e9FL0UktH00vTV70UvRQU0difYrvopeiipp7Etiu+kl6SN
+ oppbEvTV70UvRStDR9NL01e9FL0UkW0fTS2K96KXopJBaOxLYrvopeklS5pbEtiu+kl6SVKtpbEvTV70
+ UvRSW20fTS9NXvRS9FJVtH00tiveil6KSmj6aXpq96KXoo2kBo+ml6aveil6KVp4Wj6aXpq96KXopWgh
+ pemm2K96KXopIto+ml6aveil6KSQWj6aXpq96KXopUuaPppemr3opeihSmj6aXpq96KXopUqmj6aXpq9
+ 6KXopLS0fTS9NXvRS9FFFtH00vTV70UvRSU0diXpq96KXoopaPppbFe9FL0UV1NHYlsV70kvRSTwtH00
+ /pq76Kf0UkU0fTTemr/opvRSta0diWxXvRS9FJFtHYlsV70kvSQRbR2JbFe9JL0krTbR2Jemr3pJekgl
+ peml6au+in9FJdTR9NN6av8AopeigqnP9NL01f8ARTeihawloemn9NXvRS9FK1W0fTS9NXvRS9FK17R9
+ NL01f9FL0UbU0PTS9NX/AEUvRStTQ9NL01e9FL0UrQ0fTS9NXvRS9FK1ttH00vTV70UvRRVbR9NN6a0P
+ RS9FJPE5/ppemtD0U3opKtoeml6av+il6KSWh6af01e9FP6KSGh6ab01oeil6KSKaHppemr/AKKXopKa
+ Hppemr/opeiki2h6aXpq/wCil6KCbaHppemr/opeihaaaHppemr/AKKXopWqmh6aXpq/6KXopWqmh6aX
+ pq/6KXopWqmh6aXpq/6KXopWqmh6aXpq/wCil6KVqpoeml6av+il6KVqpoeml6av+im9FK1U0fTS9NXv
+ RS9FK1U0fTS9NXvRS9FK1U0fTS9NXvRS9FK1U0fTS9NXvRS9FK1U0fTS9NXvRS9FK1U0fTS9NXvRS9FK
+ 1U0fTS9NXvRS9FLiVTR9NLYr3opeiiNUho7Etivekl6SdSWjsS9NXvSS9FKkNH00vTV70U/ooUtaPppe
+ mr3opeilSGj6aXpq96KXooKaPppemr/opeihamh6aXpq/wCil6KFpc/003prQ9FN6KVpaHppemr3opei
+ laWj6aXpq/6KXopWpoeml6av+il6KNqaHppemr/opeikhoeml6av+il6KKLaHppemr/opvRSpFtH00vT
+ V70U/opUgFo+ml6aveil6KcF4LR9NL01e9FL0UbXNH00vTV/0UvRQtVND00vTV/0U/ooIpz/AE0vTWh6
+ KXopIpz/AE0vTV/0UvRQVTQ9NL01f9FN6KS1o+mlsV70UvRRVbR2JbFe9JL0krS0diWxXvSS9FK1waPp
+ pemr3opeila6mj6aWxXvRS9FK1U0difYrvopekhaKaWxNsV70UvRStBDR2JbFe9FL0krWNHYlsV70kvR
+ TUho+ml6aveil6KC9o+ml6aveil6KSC0diXpq96KXopwW20diWxXvRS9FOCGjsS9NXvRS9FOS0fTS2K9
+ 6KXooppo7Etiveil6KS7haOxLYr3opvSSVTS2JbFd9JL0kqQ0tiWxXfRS9FCkW0vTS9NXfSS9FNpXE0v
+ TS9NXvRS9FJVtH00vTV70UvRQVbR9NL01f8ARS9FC0tD00vTV/0UvRStNND00vTV70UvRStYWh6af01e
+ 9FL0UUW0fTS9NXvRS9FK1waHpp/TV70UvRStc0PTS9NX/RS9FK0NH00vTV30UvRSVTR9NPsV30UvRSWl
+ o7E+xXfRS9FFFtL00vTV70UvRSTbR9NL01e9FL0Uk20fTS9NX/RS9FJLQ9NL01f9FL0UFU0PTT+mr3op
+ eikimj6ab01f9FL0UkU0PTS9NX/RTeiki2j6aXpq96KXopJtoeml6av+il6KdaWh6aXpq/6KXoo2loem
+ l6av+il6KVoaHppemr/opeilamh6aXpq/wCil6KVqaHppemr/opeilamh6aXpq/6KXopWpoeml6av+il
+ 6KVqaHppemr/AKKXopWpoeml6av+il6KVqaHppemr/opeilamh6aXpq/6KXopWpoeml6av8Aopeihamh
+ 6aXpq/6KXopWpoeml6av+il6KVqaHppemr/opeilaGh6aXpq/wCil6KVqaHppemr/opeilamh6aXpq96
+ KXopWlo+mm2K96KXopWlo7EvTV70UvRStNNL00vTV70U4pStVND0k/pFaApT+glaXO9JL01oegmNKVoa
+ Hppemr3opeijamj6aXpq96KXopWho+ml6aveil6KVqaPppemr3opeilaGj6aXpq96KXopKpo+mm9NX/R
+ S9FFVND00vTV/wBFL0UlU0fTS2K96Kb0ULVs0tiWxXfRS9FDiVbS9NL01e9FP6KVqtoeml6av+il6KFq
+ aHppemr/AKKb0UrRTR9NNsV/0U3opWqmlsS9NXfRT+ilamj6aXpq96KXoo2po+mm9NX/AEUvRStLQ9NL
+ 01f9FL0UbVbQ9NL01f8ARS9FK1W0PTS9NX/RS9FK1W0PTS9NX/RS9FK020PTS9NX/RS9FBTQ9NL01f8A
+ RS9FJTQ9NL01f9FL0UlND00vTV/0UvRTkND00vTV/wBFL0UlND00vTV/0UvRQtTQ9NL01f8ARS9FK1ND
+ 00vTV/0UvRQtTQ9NL01f9FL0UrU0PTS9NX/RS9FC1ND00vTV/wBFL0UrU0fTS9NXvRS9FK1NH003pq/6
+ KXopWpoeml6av+il6KNqaHppemr/AKKXopWpoeml6av+il6KNqaHppemr/opeikpoeml6av+il6KKmh6
+ aXpq/wCil6KCmh6aXpq/6KXooWloeml6av8Aopeilamh6aXpq/6KXopWloeml6av+il6KVqaHppemr/o
+ peigloeml6av+il6KSGh6aXpq/6KXopWpoeml6av+il6KSGj6aXpq/6KXopIaHppvTWh6KXopIc/00ti
+ vGlN6KCmjsT7Fd9FL0klNLYl6avein9FJLR9NL01f9FL0UktD00vTV/0U3opJaPpp/TV70UvRRCGl6ab
+ 01f9FL0UUU0PTS9NX/RS9FJDQ9NL01f9FN6KSmj6aXpq96Kf0UktD00vTV/0U3oo2po+ml6aveil6KVq
+ aPppemr3opeilaWj6aWxXvRS9FK1NHYm9NXvRS9FC0tH00vTV70UvRStDR9NLYr3opeilamjsTbFe9FL
+ 0UrU0tiWxXPSS9JK0NPYlsV30kvRStDS2J9iu+in9FK1NH00vTV/0UvRQtTQ9NL01e9FL0ULU0PTS9NX
+ /RS9FG1Of6aXpq/6KXopWpoemn9NXvRS9FK1NH00vTV70UvRStTS9NL01d9FP6KVpaPppjWr/pJvRRtT
+ Q9NL01f9FN6KVqaPppemr3opeilamj6ZS9Mq96KXopWpo+mUvTKvein9FK1ND0yl6ZV/0UvRStTQ9Mpb
+ Cr/opeilamhsS2K96KXopWpo7Cl6aveil6KVqaHplL0yr/op/RQtFtD00vTV/wBFL0UrS0PTKXpq/wCi
+ l6KVrqaHppemr/opeilaGh6aXpq/6KXopWho7EvTV70UvRStFtHYlsV70UvRRtVtD00vTKv+il6KVpDQ
+ 9MpemVf9FL0UrXU0PTTemVoeim9FK0U0PTKXprQ9FL0UbU5/ppemtD0UvRStFuf6aXplaHopeilaLc/0
+ 0vTWh6KXopWuDQ9MpvTK0PRS9FK1zQ9MpemVf9FL0ULWtD00vTV/0U3ooWimhsS2K/6Kb0UbRbR9MpbF
+ e9FN6KVqtpbEtiu+il6KNqtpbEtiu+il6KVpBaWxLYrvopeila8C2lsS2K56ScUpWkxaWxP6avClP6KD
+ EdGh6aXpq/6KXopWttoeml6av+il6KFqaHppemr/AKKXopWpoeml6av+il6KNptoeml6av8Aopeilara
+ HplL0yr/AKKXoo8S62h6aXpq/wCil6KXEloemUvTV/0U3ooWimj6aWxX/RS9FK1U0PTS9NX/AEU3opWq
+ 2j6ZS2K96Kf0UbSC0PTS2K/6KXopWupobEvTV/0UvRStRDQ2Jemr/opeila0tDYlsV/0U3ooWtaGxLYr
+ 3opeilaGjsT7Fe9FL0ULU0fTS2K96KXopWupo7Etiveil6KVoaOxLYr3opeijaLaOxL01e9FP6KNpDQ9
+ NL01f9FL0UrXtD00vTKv+il6KBKGh6aXpq96Kf0U20ND00vTV70UvRRtTR9NL01e9FL0UrU0fTS9NXvR
+ S9FK1NHYl6ZV70UvRRtTR9NL01e9FL0UrU0fTS9NXvRS9FK1NH00vTV70U/oo2pobEtiveil6KVqaOxN
+ sV70UvRStTS2Jemr3op/RStDQ9NL01f9FL0UrU0NibYr/opvRStTR2JbFe9FL0UrQ0dif01e9FL0UrU0
+ fTTbFf8ARS9FK1waGxLYr3opeihaWjsKWwq96KXopWpo7ClsKveil6KVoaOxPsV30UvRStTS2JbFd9FL
+ 0UrU0diWxXvRS9FK1NHYlsV70UvRStDR2JbFe9FL0UrU0diWxXvRS9FK1NHYlsV70UvRStTR2JbFe9FL
+ 0UrS0diWxXvRS9FK1NHYlsKveil6KVpaOwpbFe9FL0UrU0difYrvop/RStDR9NL01f8ART+gipz/AE0v
+ TWh6Cb0UkND0ylsV/wBFN6KCmjsKWxXvRS9FK0tH00vTV/0UvRRtTQ9MpemVf9BL0ErU0PTTbFf9FL0U
+ LU0NiWxXvRS9FK1NL00vTV70U/opWpoeml6aveil6KVqaPplL01e9FL0UrQ0fTS9NXvRS9FC1NH0yl6Z
+ V70UvRStTR9Mpemr3opeilamj6aWxXvRS9FC1NH00vTV70UvRRBSGj6aXpq/6KXop3EuaHppemVoegl6
+ CVrS5/ppemr/AKKb0ULW20dibYr/AKKb0UrU0tiXpq96KXooWupo+mUvTV/0UvRRQ0NibYr/AKKb0UkN
+ HYn2K76Kf0UrS0diXpq/6KXoo2lobEtiv+il6KVrwGhsS2K96Kf0UbTTQ9MpbFf9FL0ULWloemUtiv8A
+ opvRQtbbR9NL0yr/AKKb0UrU0diXplXvRS9FC000fTKXpq96KXoo2ho+mUvTV/0UvRRVbQ9NL01f9FN6
+ KCLaPppemVe9FL0Uk20fTS9NXvRS9FJDR9NLYr3opeikpo+ml6aveil6KCmjsS9Mq96Kf0UktH00vTV7
+ 0U/ooKaHppemr/opeilSmh6aXpq/6KXooUpoeml6av8AopeilSmj6aXpq96KXopUho+ml6aveil6KVKa
+ PplL0yr/AKKXopUpoemUvTV/0UvRSpTQ9NLYr3opvSSS0tiWxXfSS9JJTS2Jtiu+kl6SSmlsS2K56SXp
+ JKaexLYrnpJekkpp7Etiuekl6SSmnsS2K56SXpJKaexPsVz0kvSSU09iWxXPST+kkppbEtiu+kl6SSml
+ sS2K76SXpJKaWxLYrvpJekkppbEtiu+kl6SSmlsS2K76SXpJKaWxLYrvpJekkppbEtiu+kl6SSmlsS2K
+ 96KXooqaOxLYrvopekkppbEtiu+kn9JJTR2Jemr3opeikpo+ml6aveil6KSmj6aXpq96KXopKaOxLYr3
+ pJvSQU0tiWxXfRS9JJTT2JbFc9JL0klNPYm2K76SXpJKaWxNsV70kxqSU0S1RhWnshCLUlMAFLYptajt
+ rlJTV2JBiveim9FJTWYxWGBTFakGQkpcBSCQClCSlkk6SSlJJJJKUnSSSUpJJJJSkkk6SlkkkklKSSSS
+ UpJOkkpZJJOkpZSTJwkpYoFisFAsSU1HpmqT1FqSmxWrDUCtWGpKXTJ0klLJJ0ySlJJ0ySlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ /9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWS
+ SSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLpinTFJSJ6rPVl6rPSUxCOxA
+ COxJTYapKLVJJSkkkklKSSSSUsnTJ0lKSSSSUskkkkpUJQkkkpUJQlKeUlLQlCeUpSUqE0J5SlJS0JQn
+ lKUlLQlCeUpSUtCeEpSlJSoShKUpSUqEoSlKUlKhKEpSlJSoShKUpSUqEoSlKUlKhKEpSlJSoShKUpSU
+ qEoSlPKRUran2pSlKhIKltqbapSmlNooY7UtqlKSNFTDYm2IiScpHsT7ESEoRUj2J9imknKYbU+1PKUo
+ oW2pbUpSlFStqW1KUpRUraltSlKUlK2pbUpSlJKtqW1KUpQSraltSlKUFK2ptqeUpSUttS2p5SlJS21L
+ anlKUkrbUtqdKUlytqfalKUohYVbUtqUpSixK2ptqeUpRXBbam2p5SlFkW2p9qUpSgtKtqfalKUpLFbU
+ tqUpSglW1LalKUpJVtS2pSlKDIFoShPKUpL1bUtqUpSixyVtS2pSlKLEraltSlKUVwVCaE8pSivC21La
+ nlKUFwWhLanlKUErbUtqeUpRYyttS2p5SlJYttS2p5SlJcttS2p5SlJcFtqUJ5TSkvCoShJKUUrwltSl
+ PKCCttS2p5SlJYVtqbapSmSYyttS2p0pSQttS2p5SlBcFtqUJSlKS4LwlCaUpQXheEoTSlKSiqEtqUpS
+ mMRVtS2p5SlJAW2pbU8pSkyhW1LalKUopVtS2pSlKSltqW1PKUooK21LanlNKTGVbUtqUpSihUJ9qaUp
+ SQvtS2pSlKKQraltSlKUmQK2pbUpSlJStqW1KU0pKXhLamlKUUFfaltSlKUmIq2pbUpSlNK4K2pbUpSl
+ RllVtShKUpQUqEoSlKUlKhKEpSlJSoShKUpSUqEoSlKUlKhKEpSlJStqbanlKUlLbUtqeUpSUttS2p5S
+ lJS21LanlKUlLbUtqeUpSUttS2p5SlJS21LanlKUlLbUtqeUpSUttTbVKU0qWKltqW1OkpELQn2pJSgh
+ UJQlKUpIVCfalKUoIVCUJSmlNKl4ShNKUpil4ShNKUoJVtTbU8pSklbaltTpIKW2pbU8pSipbaltTyki
+ FLbU+1KUpTggq2pbUpSlOQttS2p5SlFattS2p5SlFStqW1KUpTV4VtS2p5SlJeFbUtqUpSkuVCUJSlKS
+ lQlCUppSQvCUJpSlJaVbUtqUp5QYyttS2p5SlJTHaltTylKSVtqW1PKUoLwttShPKSDIttS2p5SlJStq
+ banlKUkLbUtqdJJaVtqW1PKUpMZW2pbU8pSkkLbU+1KUpQZAttS2p5SlJaVtqW1OknBjW2p9qUpSnJW2
+ pbU8pSiuC21KE6SK8LQlCdJFetCbapJSktLHaltTp0lhY7U+1OlKSwrbUtqeUpQWrbUtqeUpTUhbanhK
+ UpTSuCoShKUpTV4VCUJSlKS5W1LalKUpMUlbUtqeUpRWLbUtqeUpSXhbaltSlKUl621LanlJJS21LanS
+ RUttS2p0kmMrbUtqdJFattTwlKUpKVtS2pSnlJIVtS2pSnlJeFtqW1PKUpLltqUJSlKSlQlCUppSQVbU
+ tqUpSkxlW1LalKeUUBbaltTynlJeGO1LapSlKSWO1LapSlKSmO1LapSlKSltqW1PKUpKW2pbU8pSkpba
+ ltTylKSltqbapSlKSmO1LanlKUlLbUtqeUpSUttS2p5SlJS21LanlKUlLbUtqeUpSUttS2p5SlBS21La
+ nlKUlLbUtqeUpSUttS2p5SlJC21LanlNKSltqW1PKUpLmO1LanlKUly21LanSlJSg1OGpSnBSUuGp4TS
+ nlJSoTFqeUxKSmO1LanlKUULbUtqeUpSUttS2p5SlJC21LanlKUUrbUtqeUpRUttS2p5SlJK21LanlKU
+ krbU21SlMmFjK21LanSTVqtqW1KU8opVtS2pSlKSVbU21PKaUkrbUtqeUpRUttS2p5SlJStqfalKUooV
+ tTbU8pSkhbaltTylKSFtqW1PKeUlMdqW1PKUpKW2pbU8pSilbaltTylKSVtqW1PKUpLltqW1PKUpKW2p
+ bU8pSisK21PtSlKUlK2pbUpSlBKtqW1KUpQUraltSlKUFK2pbUpSlBStqW1KUpQUraltSlKUlK2pbUpS
+ lJStqW1KUpSUraltSlKUVK2pbUpSlFStqW1KUpRUraltSlKUULbUtqeUpRUraltSlKUFK2ptqlKUoJY7
+ UtqlKUpJY7UtqlKUpJY7UtqlKUpKY7UtqlKUpKY7UtqlKUpKW2pbU8pSghjtShOSmlJCoTwoynlJC+1L
+ alKeUlMdqYsU5SSQj2JbERJJLDanDVJKUkrbUtqeU0pJVCaEiU0pKXhPCjKeUVL7UoSlKUVKhKEpSlBC
+ oShNKeUlKhLalKUpKVCUJSlKSlQlCUppSUvCUJSlKSVoShKUpSSqEoSlKUlKhKEpSlJStqW1KUpSUttS
+ 2p5SSQx2pbVJJJC21PtTpSktVtS2p5SlBStqW1KUpQKltqW1PKaUEq2pbUpSlFStqW1KUpSUraltSlKU
+ krbUtqeUpRUttS2p5TSkpW1LalKUpKVtS2p5SlJS21LanlKUkrbUtqeUpSUttS2p5SlJS21LanlKUlLb
+ UtqeUpSUttS2p5TSklW1LanlKUFpW2pbU8pSgsW2pbU8ppSXBW1LalKUpMitqW1KU8pIK21PtSlPKKwr
+ bUtqUpSkhbaltTylKKFtqW1KU8pMkVtqW1PKUpL1tqW1PKUooK21LanlKUkFbaltTylKTGVtqW1PKUor
+ VtqfalKUpMgW2p9qUpSkvVtS2pSmlNKFbUtqUpSgpbaltTykixljtS2qSSS1jtS2qaSSmG1Lappkkhjt
+ US1TTFODYix2pw1JOCkuK4an2pSnlBrTVtS2pSlKTGFbUtqUpSguVtS2pSlKSVtqW1PKUpIW2pbU8pSk
+ pban2pSlKC4K2ptqeUpSXBbaltSlKUVytqW1KUpSQVbUtqUpSksKtqW1KUpSSFbU0J5SlJmC0J9qSUpK
+ KtqW1KUpSYyraltSlPKS1jtS2qUpSktY7UtqlKaUlwW2pbU8pSkvC21LanlKUkFbaltTylKTEraltSlK
+ UlwVtShKU0pMoXhLamlPKBQVbUtqUp5QWLbUtqUpSklW1LalKUpKVtS2p5TSipW1LalKUpKVtS2pSlKK
+ lbUtqeU0pKVtS2pSlKKlbU21PKUpKY7UtqeUpSQran2ppTykpfaltSlKUlLbU21SlMkhjtT7U6SSlbUt
+ qeUpSUttTbVKU0oJC21LanlKUkrbUtqeUpSUttS2p5SlJS21LanlKUlLbUtqeUpSUttS2p5SlJS21Lan
+ lKUlLbUtqeUpSUttS2p5SlJS21LanlKUlLbUtqeUpSUttS2p5SlJS21LanlKUlLbUtqeUpSUttThqUpS
+ kpcNT7UpSlFCtqbanlKUVLbU21PKUpKW2pbU8pSkpban2pSlKCVbUtqUpSkpYtTbU8ppSUttT7UpSlJS
+ +1LalKUoKVtS2pSlKSFbUtqUpSgpW1LalKUpKVtS2pSlKSlbUtqUpSgpW1LalKUpIVtTQnlNKSQqFKFG
+ U4KLIvtT7U0p5RY5LbUxanlIlJjY7U21SlNKS8K2p9qUpSiyL7UtqUp5SWljtTFqnKaUljHan2p5SlJK
+ 21LanlKUlwW2pbU8pSkyBjCeEpSlJcraltTylKDHJbaltTylKSxbaltTylKS4LbUtqeUpQXLbUtqeUpT
+ gxlbaltTylKK1baltTylKSVtqW1PKUpKW2pbU8pSkpbaltTylKSVtqW1PKUoKW2pbU8pSklW1LalKeUl
+ LbUtqeUpSUttS2p5SlJStqW1KUpSUraltSlKUkLbUtqeUpSUqEoTSlKKl4TQlKaUlKhNtTylKYlbamhS
+ lNKSltqaFKU0pKWhNCeUpSUtCUJ0klLbUtqdJJStqW1Okkpban2pJ0lLbUtqeUpSUttS2p5SlJS21Lan
+ lKUlLbUtqeUpSUttS2p5SlJS21LanlKUlLbUtqeUpSUralCUp5SUralCUpSipUJoTylKSloTwlKUpKVC
+ UJSnlJS21PtSlKUlKhNCeU0pKVCaE8ppQUqEtqUp5SUtCaE8pSkpaEoSlPKSlQouCnKi4pKatgVchWLF
+ XKSmbArdYVRit1lJSYNSLU4KYlJS0JoTymSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkk
+ klKSTJ0lKSTJ0lLpwoqSSligWI5VexJTVemaneotSU2q1Yaq9asNSUukkmSUukmSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ U//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSl
+ kkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS6Yp0xSUieqz1Zeqz0lMQjs
+ QAjsSU2GqSi1SSUpJJJJSkkkklLJ0ydJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUlKiU0p3DamUpSoynS4FMpSlRlOlwKZ
+ SnUU8pcKGSSjKeUKUumKaUk1SiVElIpigpUpSmSStTKU6ZJK1LpkkkrUpJJJG1KSSSRSukkkipZJOkjS
+ VkkkkaUpOklCBClJJ4ShMSskkkktKkkkkWNSSSSK4KTpQlCLIpJJJJaVJk6ZBYpJJJBKkkkkFKSSSSZA
+ pJJJBepJJJG2OSkkkkbY1JJJJ1rgpJJJG1ykkkk0lK6ZKEk21WpJJJG1hUkkkla1SSSSVpUkkkja4KSS
+ SSteFJJQkla5SeUySVoK6SZJK1hXSSSQtjKkkkkrQpMnSStKyZPCUIWuBWSShKErXhZJKEoStRXTpoTp
+ MZUnTJJKCk6ZOkyBZJJOkpZOkkklSZOmRQVJJJJMZUmTpQkhZKUkklLpJk6VpC6SZOla9ZJJJK0rSlKS
+ SVqUkklCVrSpOmTpWxqSSSSSFJJJQjS9SSSSVKUkkklSlJJJJUpSSSSVKUkkklSlJJJJUpSSSdKlKSSS
+ SpNqSSSSpVqSSSSpVqSSSSpVqSSSSpVqSSSSpVqSSSSpCkkkktkqSSSStSkySSNoUkkklaFJk6ZC0KSS
+ SQUpMnhNCSlJSlCUIUldOmCdKkrpk6SVJWSTpJUpZJOlCSlkk6ZFapJJJK0KSSTo2hZJJJK0KSShJC1w
+ Ukkkla4KSSSStcpNKSSVpVKaUkkrQpOmTpWtKk6ZOksK6SSSSFkk8JoSSpJJJJeFJJJJMikkkklKSTpJ
+ ItZJJJJaVJJQlCTGpJJOkkLJJ4ShKmQLJJ4SSpaVkk6SLGskknSSsklCdK0hZJOmStkCkkkoStcpJKEk
+ rQVJJJJWtKkkkkrWFSSSSVrVkk6ZJSkkkoSXBZJPCZKl4UkkkhS5dOmTpUxlSSSSKxSSSSDIFJJJ0lyy
+ SdJJSySdKElLJJ4ShJYVkk8JoSWrJJEJQkpSdMnCVqC6SZOlbIFJJJIWlZJJJK1LJJJJWhSSUJJWxldJ
+ JJK1BdJMknLwukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUulKZJJSpSlMkkpeUpTJJKXlKUySSl5Sl
+ MkkpeUpTJJKXlKUySCl5SlMkkpeUkydFS6ZOlCS1ZJJJJKkkkkEqSShKEkqSShKEkqSSSSUqUpTJJKXl
+ KUySSl5SlMkkheUpTJIqXlKUySSF5SlMkipeUpTJJWleUpTJI2leUpTJJKtdJJJNK0qSSShNQpJJJJSk
+ kkkkqSSShJKkkoTwklZJKEkUKSSSSQqUpTJJIXlKUySKl5SlMkkheUpTJJKXlKUySVpXlKUySS5eUpTJ
+ JJXlKUySKl0kySVrV0kySVoXSTJJJXlJMkgpdJMkgpdJMkkpdJMkgldJMkkpdJMkkpdJMkkpdJMkihdJ
+ MkipeUpTJJKXSTJIqXSTJJWheUpTJJWpkkmSTVLpJkkrSulKZJK0rpJkkrUukmSStS6SZJJS8pSmSSQo
+ lRJTlMQkhZPKaEklMpTyopwkhknTJ0lLpJJJKWTJ0xSStKaUkySVEpkkoSUunTQnhFSkkkkrUpJJJJCk
+ kkklKSSSSUpJJJJSkkkklKSSSSSqUkoSSSskklCSlJSlCSSlSnlMkkpeU6ZJJC6SSdJCkkkkkKSlMkkp
+ UpSkmTUrylKZJJS8pJkkkrpSmSSUqUpSSRUqUpSSQUqUpSSRUpJJJJSk6ZJJS6SZJJS6SZJJK6SZJJS6
+ SZJJS6SZJJS6ZJJJK6SZOktKkpSSQWLJJJJLwsnSSSZFJ0ySS0rp0ySKwrpkkkkKTJJJKVKUpJJLwqUp
+ SSSXqlKUkkUFUpSkkkgqlJJJJYVJJJJLVSlKSSTIFSlKSSK5SZOmTSpSdMnQQpOmhPCLGVJJJ0lqkkkk
+ lKSSSKK4LKJTlMUWeKydMkiuLKUpTJ0GtJdNKSSCxUpSkkkuXTSkkklUpSkkghUpSkkkpUpSkkguCpSl
+ JJJKpSlMkileUpTJJIK8pSmTpLCqUkkkkhSSSSTMFJSkmSQV5SlMkkxleU6ZOkhdJJMkhSZIpJJCkkyd
+ JepJJKEkFdJJJJjKkydNCS4LJJ4TQkyWsnShPCSCqUkkkkKlJJJJSkkkklKSSSSUpJJJJSkkkkVKSlJJ
+ JSkkkklKSTJ0FLJJJJWhUpJk6VqXlKUycJWpdOmATwlalklKE0JWpZKUoTFK1KlKUySVpC8pSmSSUvKU
+ pkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8p
+ SmSSUvKUpkklLylKZJJTKUpTJJWheUpTJJWpdJMklal0ySSVpVKUpJkrUvKUpkkrUvKZJJJSkkk8JKUl
+ KSSKlSkkkkpSSSSCFJJJJKUkkkkpSSSSSlJJJJKUVEqSaEkhZOEoTgJLlwnTQnSWFSZJKEmNZMnhKEl4
+ UklCSK9dOmSSWldJJJJapMkkkpUpSmSSXBeUkySTIF0kySS5dJMkgxyXlJMkkxrylKZJJeF5STJILl00
+ pJJWsKpSlJMhxLV5SlMklxJXlKUySVqXlKUySVqXlKUySNpXlKUySVqXlKUycJWlkE6iFJG1KSSTJWpd
+ JNKUoqXSSSSUukkkihZJOmSUsmTlMUlLJJJJKXSSSTUqTJ0klLJJJJKWSTpJKWShOkkpZJOkkpSUJ0kl
+ LJJ0klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKTJ0ySlJJJJKXSSSSUukkkk
+ pZJJJJSySSSClJ0ydJSkydMkpSSSSSl1FykouSU1rFXKsWIBSUyYrdaqsVpiSkwSKQSSUxSTpklKTpk6
+ SlJJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJMkpSSSSSlJJJJKXTpk6SligWI5QLElNV6i1SeotSU
+ 2a1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7F
+ Ycq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpS
+ ZOmSUpJJJJSkkkklLpinTFJSJ6rPVl6rPSUxCOxACOxJTYapKLVJJSkkkklKSSSSUsnTJ0lKSSSSUpMn
+ TJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJBSxUVJJShLGE8J4TwjamMJ08JQghZOkkgpSSSZNKF0kySaVLpoTp01TGEoUoShBS0JJJJKUkk
+ kkpSSSSKlJ4SSTkqSSSRUpKEkk5KoShJJFSoTwkkmlSkoTpKNK0Jk6ZJaVJJJJzGpPCZOiuiqE8JJJMg
+ VCZOkktKyZOmlJapJJJNUpJJJJKkkkkF4UkkkkuUkkkkskpJJJFjUkkknLgpJJJJcpJJPKaUqSSlJBCk
+ 0J0klpWhKE6SSxaEoTpIpWhKE6SS4LQlCdJFeFQmTpJLlkkkyCF0kySS0rp00pJMZXSTJSkhdJKUpQUq
+ EoSSSXBaEoTpJLwxhKFJJJJWhKE6SKwqShJJJAUlCSSLIFQlCSSSVQlCSSCFQkkkkoqSSSlJjKk0J5SS
+ QtCaFJJJS0JJJJJCkk0p5SZFJJJJKVCUJ0klLQlCdJJBWhJJJJjUklKUohQXhKEkk9eqEoSSSUqEoSSS
+ UqEoSSSUqEoSSSUqEoSSSUqEoSSSUqEkkklKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlKUlKSSlJJSkkk
+ klKSSlNKaSpSSUpSm2lSSUpJWhSSSSVoUlCSSKFQmhOkkpaEoTpJKWhKE6SSVAJ0ydJKkkpSSSpJJJJS
+ kkkklKSSSlBCkkpSlJCkkpSlJapJKUklKhNCdJBKySdNKSQpJKU0pL1JQknSUtCUJ06KmMJQpJJLStCS
+ dNKSwrpJpSlJC6SaU6SVJJkpRXBdMkkkyBSdMnSUpJJJJSkkpSlFYVJJJSkxlSSUpSkuCkkkkV6kkkpQ
+ WlSSUpSksUklKUoKUkmlPKS4KSSlJBeFJQlKUoWuUmSlKUrUpJKUpStaVJJSkjawhSSSSK1SSSSSlQlC
+ SSKlQmhOkiyBaEoTpJLlQkkkgsKkkpSSWKSSSSZApOmlKUly6SaUpQUuklKSSlJQkkksKoSSSlJatCUJ
+ 0kFLQknTJKUkkkkyBdJNKUpLlQlCdJBC0JQnSSUVoSTpJMZWSSlKUkBZJJJOXhSSSSSVJJJJIUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6ZJS6cJk4SUvCUJJJLVJ
+ k6ZJKkkpSlJKkkkkkrpQkkgpSZOmSUskkkkpZJJJJS6ZOkkhZOkkipSSSSSlJk6SKlk6SSSlJk6SSVkk
+ 6SNqUnTJ5TShdMkkghSSSSSlJJJJLlQnhMnSSqE8JJJKWhMQpKJSUskkSmlJC6SaU6KFJk6SSFk6SSSF
+ Jk6SSlJk6SSVkk6SS5ZJOkklZJOkkpSSSdFasknSSUsknSStSySdMgpSSSSCVJJ0klLJJ0klLJJ0klLJ
+ J0klLJJ0klLJoUkySlJJ0kVLJJ0kkLJJJ0VLJJ0klLJJ0krQpJMlKapSdNKSSlJ0ySSVJJJJKUkkkkpS
+ dMkkpSSSSSFJQnTpKYwmhTTJIYwnCSSSlwpBRTpKXSSSRUsUxTpkkrJoTpJKWhPCdOklaEoTpkkKSSSS
+ UqEkkklKSSSSUqEkkklKSSSSQpJJJJKoTQnSSUtCUJ06SVoShSSSUwhKFOEySmEJQpJklLJJJklMk6jK
+ dJC6SSdJC0JQnSSUtCaE6SCVoShOkklaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpUJQkk
+ kpUJQkkklUJQkkkpUJQkkkpUJQkkkpUJQkkkpUJQkkklUJJJJLSpKEkklqoShOkkuC0JQnSSZFoSTpJL
+ SskkkktUkkkihSUJ0kEMYShSSRXxYwlCdJJetCUJ0kkLQlCdJJBWhKE6SSwrQlCdJJatCUJ0kWQLQlCd
+ JJctCUJ06apjCeE6SSFoTwkkkxlUJJJSitUklKaUkrpilKaUUhSiU5TFFnisnCZOElxXTwmCdBryVCUJ
+ 0kli0JQnSQStCUJ0kkrQlCdJJC0JQknQUtCUJ0kly0JQnSSSslCdJFSySdJJS0JQnSSWFaEoTpJJC0JQ
+ nSSZQtCUJ0klFaEk6STGVoTpJJIUkkmSQpKE6SSQtCUJ06S9aEoTpJIK0JQnTJMRUkkkkuCoShOnSZAx
+ hKFNMkpjCUJ0yKFQlCdJBS0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klMYShOkkpaEoSTpKWhNCkkg
+ pjCUJ0klLQpAJk4SQuApQmCkkpaE0KSYpKYkJiFIqJSUtCaFJJJLGEoUkklMYShSSSUxhKFJJJTGEoUk
+ klMYShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJJTGEoUkklMYShSSSUxhKFJJJTGEoUkklMYShSSSUx
+ hKFJJJSySdMkpSSdMkpUJ4SSSUqE0KSZJS0JoUkySmKSdJJSkoSCkEVLQlCkkkpaEoTpklKhKE6SSloS
+ hJJJSoShJJJSoShOkkpaEoTpJKWhKEkkVLQnhOnQUxhKFKEkErQlCdMksKoTQnlJJjWShOkivitCUJ0k
+ mRZJOkitKySSSSxSZJJJKoSTpJJWSTpkGQKSSTpL1kk6ZJikqEoTpkFikk6SS4LJJ0kly0JQnSTSFpWh
+ NCkkhS1ZNCkkjSWMJQpJJUpjCdOklSloTQpJJUljCUKSSNKYwnhJOklZOmSRUumlJMkpdKVFKUVM5SlR
+ lKUVM5SlRlKUkMpSTSlKKlJkpTSkpSSZJJS6dMkmpXSTJJKUkkkkpSSSSSl0kkklKSSSSUpOkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpJKWSTpkVKTJ0klLJ0kklKTpk6SlJJJJKUmT
+ pJKWTJ0kFLJ0kklKTJ0klLJJJJKXUXKai5JTWsVcqxYq5SUzYrbFUYrbElJQkUgkUlLJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUskkkkpSSSSSl04TJwkpYoFisFV7ElNV6i1SeotSU2a
+ 1Yaq9asNSUyTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHK
+ vYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTp
+ klKSSSSUpJJJJS6Yp0xSUieqz1Zeqz0lMQjsQAjsSU2GqSi1SSUpJJJJSkkkklLJ0ydJSkkkklKTJ0yS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSQUskkkpAldOmThFS8JQnSTVMYTKZCYhBTBJOUyaULJ0ySapkE6iFIIKXSKSYoKWKZOmSUqUkkkkK
+ SSSRSpOmSTlLpSmSTkrykmToqUkkknKXSlMkmlTKU0pJKJKpTJJkVpXSTJIsa8p5UU6K+K8p5TJJMoXl
+ NKSSS0qlMnTILFJJkkFLykmSQtS6SZJBeF5SlMnSXKSSTJMcl0kySNsa6SZJG14XSTJI2vXSTJ00lC8p
+ pSSTbQvKZJJK1pUlKSSNrVSlKSSSVSlKSSNpCpSlJJK1wVKSSSVrlJk6UJWlZJPCSVqWlKUkkrYyqUpS
+ TIWsZJSmSStS8p5UU6FqC6SZOlbIFJJJJApUmlJJSBYVSnlMkioLylKZJBkC6SSZJK6SSSSlJSmSSQV5
+ TSkkkxlUp0yQQQuknSSUxKaU5TJLgqU0pJIWvC8p5UU4SSyTpgnStSkkkkrQVimTlRKVsapSlMknBTKU
+ 8qKSkUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklL
+ ylKZJJS8pSmSSUvKUpk6SlSlKSSSlSkkmUMiuCpSlJJRWuUnTJJ1oUkkkiCtXlKUySdal5SlMknBC8pS
+ mSTlLylKZJFK8pSmSSSvKUpkkkrylKZJBS8pSmSQUvKUpkk1C8pSmSQtS8pSmSQtC8pSmTpWhdJMnStC
+ 0ppTpkLSFSlKZJG14XlOmCcJJXTpBOlalkk6ZG0FYlMSkUxSYyqUpUUkVM5SlME6SlSlKZJFIXlKUyST
+ IvKUpkkVLylKSZJC8pSmSRQV5SlMkkxLylKZJFcF5SlMkivXlKUySSCvKUpkk1YvKUpkk0qXlJMkm2le
+ UpTJJpK4LylKZJC168pSmSStKkk6SVqWSSSRBWFdNKSSdbGqUpSSTgpUp0ySKF0pTJJwXheUpTJIr15T
+ SkkgtKpSlMkgtXlKUydJeF0kySS5eUpTJJKXlKUySCV5SlJJBjK8pSop0FrJJIJJJWKYqRUSkpaUpSTI
+ WyBeU8qKcJWuZSnUQpBBS6SSSSCsmTlMUmMrSmlJJK0KSSSTrXKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSTpJKUnCZOipUpSkmSQqU0pJJKVKUpkkkry
+ nlMnSUvKSZOgpSZOmSUsknhKEkLJJQnSUsknSQUsknSRUsknSSUsknSSUsnSSSSpJJJG1KSSSStSyUpF
+ MkheU6ipJKUklCSCVJJJJJUnlMnSSvKeVFOkpSiVJRKSmJKZOQmSUuE4TAKQSQpJJJJCkkkkkKTJ0klL
+ JJ0krSpMnSQtKySdJK0rJJ0krUpJJJG1qkkkkrUpJJJK1KSSSSSpJJJFSkkkkkqSSSSUpJJJJSkkkklK
+ SSSSUpJJJJCkkkklKSSSQtCkkkkrUpJJJK1KTJ0yFoUkkklaFJJJJJUkkklalJJJJWpSSSSKlJJJJKUk
+ kkkpdPKinSUvKSZJJSkk6ZFS6SZOkpdJMkkpSZOkkpZJJOkpSeVFKUlLymlJMgpUpSkkhalSlKSSVoVK
+ UpJJWpUpSkkjalSlKSSSlSlKSSSlSlKSSSV5TgqKdFTIJ1EJ0lLpinTFJSxUSnKiUlLSkkmSUyCcKIUg
+ kpdOmCdJS6SSYpKUmlIpkkrylKZJJS8pSmSQUvKUpkklLpJkklLpJkklLpJkklLpSmSSUvKUpkkkrylK
+ ZJJS8pSmSSUvKUpkklLpJkklLpJkklLylKZJJK8pSmTIoK8p5UU4SWsgnUQnSXBdJJMkyLqMp1EpIKpS
+ lMUyTGWUp5UE4SQzBTqITpIXTFJMUl8VSkmSSXrylKZJJC8pSmSSWrylKZOgtKpSlJJJaqUpTJJMgXlK
+ UySS5knUU6Sl0pTJkkFeUkyZJYWUppTJklrKU0pkkUrylKZJJIVKYpJkbZ4qThRUgiuK4UpUU6DXkvKS
+ ZJBYF0kySSV0kySSl0kySCF0kySSl0kySS4LpJkkkrpJkkVLpJkkkFdKUySSwrylKZJJIXSTJJMoXSTJ
+ JIK6SZJJYumSTJIXlKUydJS6SZOkuC6dMnSXqSSTFJaVEppTFMSkxFeUpUZSlJcEgKkChgqQKS9lKYpS
+ mKQUqU0pJJyl0pTJJKXSTJJKXSlMkgpdJMkkpdKUySCl0kySSlSkkmSUulKZJBS8pJkklKlJMnQUunCi
+ nSUyBTyoSnlK1MpSlRlNKVqZSmlNKSVqUnTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqXSTJJWpd
+ JMklal0kySVqXSTJJWpdJMklal0kySVqXSTJJWpdJMklal0kySVqXTJJJKUkkmStSk8pkkrUunUU6VqX
+ SSSSUsmTpkrUskkkipcJwmCcJKZJJkkVKlJMkkpdJMkkpdKUySKl5SlMkkpdJMkildJMkkpdKUySSlwp
+ BQCkgVMk0ppTEpqFEppTEppSWFlKUqEpwUljOU6iE6LJFdOmSSZFJinTFFYVk0pJJLVSkmTpKXSTJJKX
+ STJIMgUlKSSS5dJMkkxyXSTJILF0kySS8LpJkkly6SZOisKkkkkVKTpkklKSSSSSpJJJJSkkkklKSSSS
+ SpOmSSUpJOkkpZMpQmhJTFJPCUJKWSTwlCSlJSkkkpUpJJJIUmTpklKSSSSUukkkklSSSSSlJJJJKUkk
+ kkpdJJJJSkkkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklKTpk6SlJJJIq
+ UmTpJKWTpJJKUkkkkpSdJJJSkydMkpSZOmQUpOmTpKWSSSSUsnTJ0lLqLlJRckprWKuVYsVcpKZsVtiq
+ MVtiSkoSKQSKSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpZOkkkpSkE
+ ycJKWKr2KwUCxJTUemapPUWpKbFasNQK1YakpdJJJJSkkkklLJJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Pr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkk
+ kpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkp
+ dJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLpinTFJSJ6rPVl6rPSUxCOxACOxJTYapKLVJJSkk
+ kklKSSSSUsnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUknTJKWShOnR4krAKQTJ0uJK6dNKUpcSF0xCUppStSxCaFKUyCmMJQ
+ nSSpCydJJLhUukmlKUuFSoShOkhwqWhKE6SXCpaEoTpI8KloShOkjSloShOkjSVoTwknRpSySeUpRUsl
+ CeUpQIUtCSeU0pnClSUJJJcK0qhNCdJGli0J4SSRpfFSSSUpUyqSSlJKlpCoShJJKllLQnhJJCkKhNCd
+ OhwqYwnhOkhwrgtCUJ0kOFetCUJ0keFjktCUJ0kuFjYwlCkmR4V4WhKE6SPCvWhPCdJNMULJJ0kOFCyS
+ dJLhWrJJ0pR4ULQlCdJLhUsknSS4VLJJ0kuFeFkk6SXCvCoShKUpR4U0qE0J5SlLhVS0JoUpSQ4VhDGE
+ oTpJcKwhaEk6SXCtWhKE6SXCoKhKEk6HCyBaEoTpI8KVoShJJOAWFUJJJSjSgpJJOhTIFkoTylKVJWhK
+ E8pJUpZJOklSCslCUpJUxlUJQklKXCpdJKUpQ4VLEJoTymS4UhaEoTpJcLIFoTgJJ5S4UqTppSlLhUuk
+ mlKUuFBCimhPKUpcLHTGEoTpIiKFoTp0k+lLJJ0klLJJ0kKUsknSSpSySdJKlLJJ0kqUsknSSpS0JQnS
+ SpS0JQnSSpS0JQnSSpS0JQnSSpS0JQnSSpS0JQnSSpS0JQnSSUtCUJ0kVKhKEkpUco2uCoTQnlJR8C9a
+ EoTylKPAtK0JQnlNKdwIVCUJSlKPChSSUpSjwoWhKE8ppRpSkkpSlGkrpQkklSVQlCdMlSVQlCUpShSl
+ QlCSdKlLQlCdJDhUtCUJ0k3hQtCUJ0kOFC0JQnSS4VKhJJJHhWqhNCdJLhSGMJQpJJcLIFgE4CSUpcKa
+ ZJJpSlLhVS6SaUpR4UELEKJClKZLhYyGMJQpJI8KFoTwklKXCpUJQkklSQqEoTpkaXqhKE8pJUlaEoTp
+ kqUqEoTpkqWlUJQklKVMZCoShJKUaSFQlCUpIr1QlCUpIUgqhKEkkKW0qEoSTocKloSTpIcKloShOkmm
+ KQtCUJ0kOFkC0J4SSlLhSqEkpSlLhTSoShKUpR4VpC0JQnSR4WMhaEoTpk7hWrQlCdJGkLQlCdMjS+Kk
+ kkkWRUJQnSQpYVQlCdJClqySSdKmQLJQnSSpctCUJJ0qUtCUJJSlSlQlCeUpQpjK0JwEkpS4Vq4CdNKe
+ UOFKiFEhSlNKXCljCaFJJLhXhjCcBOkhwrlQnCaU8pcKl0k0pSlwqXTEJSlKXCxkLQmhOklwqpaEoUkk
+ eFTGEoUkkqSxhKFJJKlMYShSSSpTGEoUkkqUxhKFJJKlMYShSSSpDGE8J0kqUtCUJ0kqStCUJ0kqQtCU
+ J0kqUtCUJ0kqUtCUJ0kqUtCUJ0kqUtCUJ0kqUsknTSjSVJJpSlGlUqEoTykhSqWhKFJJKlUxhPCdOhSF
+ oShOklSloShSSSpDGEoUkkqUxhNCmmSpTGEoTpJcKloShSSSpTGEoUkkqSxhKFJJKlMYShSSSpTGEoUk
+ kqUxhKFJMlSmJCUKSSNKYwpAJJ0KUtCUKSSVJYQmhSKYlLhSsnTSlKPCpknhRBUgUqSqExCkkhSkZCaE
+ SE0JUhjCeE6SVIWhKE6SXChaEoUkkuFDGEoUkkqUxhKFJJLhSxhKFJJLhSxhKFJJLhSxhKFJMlwqWhKE
+ 6SHCtYwnhOklSloShOkjwqWhKE6SVJWhKE6SNKYwknSSpKySdJKlLJJ0kqUsknSSpSyeEkkqUqEoSTpU
+ paEoTpJUhaEoTpIcKmMJQpJJcKloShOkhSFoTQpJJcKmMJQpJI8KGMJ4TpJcKloShOkhwqWhNCkkjwqY
+ wlCkklwqYwlCkklwqWhKE6SXCpjCScpkuFNKTplIJcKqWhPCdJKlUtCZOmJRpVKSTSlKXCql08JgU6VK
+ pUJoUkyVIpiknTJUpSUJBSCHCpjCUKSSHCpjCUKSSPCpjCUKSSXCpjCUKSSXCpjCUKSSXCpjCUKSSVKY
+ wlCkmKVKYwknSRpS4TpgnCVKXTFPKZKlLFRIUimSpTGEoUkoSpNLAJwE8J0qTS0J0kxKVKpdMmJTSjwq
+ pdMlKdDhQsknSSpS0JQnSS4VLQlCdJLhUpJOklwpWSSTpcKFkk6SFKWSTpJUljCUKSSVKYwlCkklSmMJ
+ QpJJUpjCUKSZKlLQlCdJKlLQlCdJKlLQlCdJKkrQmhSSRpDGE6SdKkUoJ0ydKlwXTJSlKVL1KMKSZKkF
+ jCaFNNCVLCtCUJ06VLVBOmTpUhSZOklS+KySdJKl6ySdJKkLJJ0kqQVkk6SFLCsknSSpasknSSpkCySd
+ JGl60J0k6HChZMnSS4VLJlJMlwsZWTKSSNLWKUJ0kuFKkykmSpcGKYqRUSnAM0VJwmTgpcK4rp0gnQpr
+ yWSTpIUsWSTpJUuWSTpJcKloShOklwoWhJOklwqWShOkhwrloShOklwpWSTpI0pZKFJJKkFjCUKSSVMZ
+ YwlCkklSQxhKE6SVMoWhKE6SVKK0JJ0kqYytCUJ06VKWhNCkmSpVLJ0k0pcK4BkkmlPKXCyALpk6SVLS
+ GBUSplMQlTCQwSTwklwpAUFMKIThLhXskkkkqSsknSRpSySdJKlLQlCdJKlLQlCdJKlLJJ0kqQtCUJ0k
+ KUtCUJ0kqUtCUJ0kqUtCZSTJUlZJJOhwqWhPCdKEuFS0JQpJkOFSyZIpiUeFS6SjKUpcCmSdME6XCpSS
+ dMlwqUkkklwoUkkklwqUkkklwqUkkklwqUkkklwqUkkklwqUkkklwqUkkklwqUkkklwqUkkklwqUkkkl
+ wqUkkklwqUkkklwqUkknS4VLJJ0kuFS0JJJJcKlkyRKUpcKlJ00pwUuFTJJMCnS4UqTKSZLhQxhJOmS4
+ VKThMpBHhUumTpJUpjCUJ0kqUtCUJ0kqStCUJ0kqUtCSdJGlLQlCdJKlLQknSSpSySdJKkrJ0kkqQpMn
+ TFN4UMSmUkyPCtKycBPCeEuFZSgE6SSVMkQuklKaUqZKUklKUo0tIWhJOkhSyloSTpJUqlkoTpJUpaEo
+ TpJUvCySdJKly0JQnSSpjktCUJ0kKWLQlCdJLhXhaEoTpJcK5aE6SSNLSpJJJGkKSSSQpSkoSSSpKoSh
+ JJKlKhJJOlSVkk6SNKWShOklSlk6aU0pUpkkmlKUqUqEoTp0KUxhNCkkgpjCUKSZJSySdJBSySSdK0LJ
+ oUkySlkk6ZFKkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUnTJJKXSSTIqXSTJJKXSTJJKXSSSSUpJJJJSkkkklKTJJIKUnTJJKUkkmSUpJJJJS6Zyd
+ Rckpr2KuUexAKSmbFbYqjFaYkpMEikEikpZJJJJSkkydJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJJK
+ UkkkkpSSZJJS6SZOkpdOFFSCSligWI5QLElNV6i1SeotSU2a1Yaq9asNSUukkkkpSSSSSlkk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSU//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSS
+ SSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS6Yp0xSUieqz1Zeqz0l
+ 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
+ JUpsplX9cJeuEqQWwlCr+uE/rhKlhbEJ4Vf1wl64Spa2ElX9cJjeEqZItiVElVzeExuRplbMpSqvrJxe
+ EqWFtBSVUXhOLwlS1spKv64S9cIUhOkq/rhL1wjSmykq3rhL1whS4NlJVvXCXrhKlzZSVb1wl64Spjk2
+ UlW9cJeuEqWNlJVvXCX2gJUvDZSVb7QEvXCVL2ymVf1wl64R4StLYSVb1wn9cJcJQ2ElX9cJeuEuEqbC
+ Sr+uEvXCXCVNlJVvXCXrhLhKmwnVb1wl64S4SlspKt64S9cIUpspKv64TG8JUlOVElB9cJvVBSQnlIOQ
+ Q+VIFBSYFOChgqQKCmcpJpSTVLpkpTIKUkmSQUunUU6CF0kkySlJk6SclZJOkkpSSSSSlJJJJKUnSTJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJkkVKSSSSUpOmSSU
+ ukmTpKUkkkkpSSSSSlJkkkFLpJk6SlJk6ZJSkkkklMlBykouSU1rEAo9iAUlM2K0xVWK0xJSYJJBJJSy
+ ZOmSUpOmTpKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklLJJJJKUkkkkpdOmThJSiq9iOUCxJT
+ VemaneotSU2a1Yaq9asNSUySSTJKXSTJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/V69JJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSk
+ kkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkk
+ klLpJJJKUmTpklKSSSSUpJJJJS4SKQSSUheqz1aeqr0lMQjsQAjsSU2GqSi1SSUpMkkkpSSSSSlJ0ydJ
+ SkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSYp0klMCmhShTa1ClyEtQLTCvOas/J0CPCppW37VUfmQg5dsSsi28yjwqdg5yX21YYtJ
+ RA8lOEVOx9tS+3eayZcmJcnCKHX+3+acZ/msWXJwXJ4ip2xnKX21YwLlIFyPCh1jmqJzllkuUSXJ1KdQ
+ 5yb7d5rJO5N7kqU6/wBuS+3eayPcn9yVKdf7d5pvtyyfcn9yFKdX7d5pfblle5N7kKU6325L7csn3Je5
+ NS6v27zS+3LK9yb3IUp1vtyX25ZPuS9yap1ft3ml9u81k+5N7kQFOv8AbvNP9u81j+5P7lIAh1/t3mn+
+ 3eayPcnhydSHV+3pvt/msohyidyNLXX+3+aX2/zWKS5QNjglS+LvDP8ANSGd5rnvWIS+0FHhZg9F9u80
+ vtq58ZBUxeSlwoLu/bUvtyxBaSphzihwsZdf7d5pfbVkjcn9yBC11vtqX21ZXuS9yaQh1PtqX21ZXuS9
+ ybS4Or9uTfblle5L3JUudX7d5pfblle5N7kqWSdf7cl9uWT7kvclTG6325L7csn3Je5KmSLrfbUvtyyv
+ cl7kaXur9uTfblle5N7kqQ6325L7csn3J/clwodb7al9tWV7k/uS4U06v21L7asr3J/clwqp0/tqX21Z
+ fuTe5HhWF1ftqX21ZXuS9yXCh1ftyX25ZXuS9yXCuDq/bUvtqy/cmJcEeFki6321P9tWI6whDOQQlwsw
+ Dv8A21L7asAZJUheUuFcQ7v21N9tWH6xTiwpcLHIO39tS+3LGDypS5LhYiHW+3eab7d5rIJcmlyXCwl2
+ ft/ml9u81kDcn9yXCgOt9u80vtyyfcl7kOFmi6/25L7askbkvclwri6pzU321ZZ3JvchTGXV+2pfbfNZ
+ XuS9yCA6v21L7csr3Je5GmQOr9uS+3LK9yXuSpLq/bk/25ZPuS9yVIdX7cl9u81le5L3JUgur9u80vty
+ yvcm9yNLC6325L7asr3JxuSpDqfbUxzVmw5RIcjSnT+3Jfb1kkOTe5GlwdkZymM1YzdyK3cjTIHW+2KJ
+ zFmkkINlhCPCudY5qb7b5rAfkEKIySlwKei+2pfbVgjJKf1yjwILufbUvtqxBaSpB5KPAsLtfbkvtyyQ
+ XJ/cmyiinV+3eaX25ZPuS9yiIQ6325L7csn3Je5ClOt9uS+3LJ9yXuRpTrfbkvtyyfcl7kqU6325L7cs
+ n3Je5KlOt9uS+3LJ9yXuSpTrfbkvtyyfcl7kqU6325L7csn3Je5KlOr9uS+3LJ9yXuSpTrfbkvtyyfcl
+ 7kqU6325L7csn3Je5KlOt9uS+3LJ9yXuSpTrfbkvtyyfcl7kqU6325L7csn3Je5ClOt9uS+3LKhyY7kq
+ U6/21L7asYvIQzeQpBG14d77Ym+2LB+0lSGQSn+2vdz7am+2rF9YpxYShwLS7P21L7YsgOJU5chwLXT+
+ 2pvtqzTuUSHIcK0up9uT/blkw5P7kKQ6v25P9uWR7k43IUp1xmp/tqyRuUvcgp1Ptqb7asz3KPuQS6v2
+ 3zTfbll+5N7kkur9tS+3LK9yb3JKdb7d5pfblk+5L3JJdb7cl9uWT7kvclSnW+3Jfblk+5L3JUp1vtyX
+ 25ZPuS9yVIdb7d5pfbVle5L3IiKHV+2pvtqy/cmO5PEUOp9u8032/wA1kncm9yPCoOwM/wA1MZyxBuRW
+ 7kuFlAdgZiRzFmAuQ3vIS4V9Omc7zTfbvNYVl5CF9pKXCmnpBm+af7auebklFF5KHCoh3ftqX21YotJU
+ g8lLhYyHY+2pvtyyZcl7kKWEOr9uS+3LK9yb3JUh1vtyX25ZPuS9yVKdb7cl9u81k+5L3IUudb7d5pfb
+ vNZXuS9ySXV+3JfbvNZXuS9ySnV+3Jfblle5L3JILrfbkvtyyfcn9ySynV+3Jfblk+5P7kkur9tS+2rJ
+ 9yf3JJdX7al9tWV7kvckl1ftqX21ZXuS9yVKp1ftqX21ZXuS9yNLSHV+2pfbVle5L3JcK11ftqX25ZPu
+ S9yXCkOr9uS+3eayfcl7kuFeHXGcnGasUvcFE3kJcDNEO99sS+2LA+0lOMkpcDJTu/bE321YnrlP6pS4
+ FhDtfbUvtqxw8lTBKXCxEOoc1Mc1Zh3KJ3JUxSDqfbk/25ZPuTjchSx1ft3mn+3LJ9yXuSZIuv8AbU/2
+ 1ZALlL3JMjqfbUvtqyzuUTuSWF1ftyX25ZPuSlyVLHW+3JfbVky5L3JMgdb7d5pfblky5KXJLnW+3Jfb
+ Vk+5L3JUh1ftqX21ZXuS9yVKdX7al9tWV7kvclSwur9t80vtqyvcl7kqWur9tTfbVl+5L3I0l1Ptyf7c
+ sr3JoclSQ6325OM5ZEOUm7kaZA7AzE/2xZQ3JOcQjwrnSOao/bvNY1lxCAckpcKXoPtvmn+2rnRklTGQ
+ UeBTv/bk327zWF6xKkLCUeBYXc+3eaX2/wA1jBzk8uQ4Vrs/b/NL9oeaxSXJpcmEIdv9oeaX7Q81iS5K
+ XJUp2/2h5pftDzWJLkpchSnb/aHml+0PNYkuSlyVKdv9oeaX7Q81iS5KXJUp2/2h5pv2h5rFlyUuSpTt
+ /tDzS/aHmsSXJS5KlO3+0PNL9oeaxJclLkqU7f2/zTjP81hguUgXJUp2/t3ml9u81jguSlyVKdj7f5pf
+ b/NYxLk0uSpTtfb/ADTfb/NY25yW5yNKdn7f5pfb/NYu5yW5yVKdr7f5p/t/msTc5PucjSna+3+ab9oe
+ axi5ygXuS4VO59v804zZWCLHKYuIR4Vwds5aic2FjHIKC7JKXCyU7327zUhnea50XkozLCUuFBDvDNSO
+ csgOcUiXJUtp1Tn+ab9oeaxyXKJLkKWkO1+0PNP9v81iAuTguQpDtfb/ADTfb/NY8uTEuSpDs/tDzS/a
+ HmsQlyUuQpTt/tDzT/b/ADWHLk4LkqU7f2/zS+3+axZclLkKS7X2/wA0vt/msWXJS5Kku19v80v2h5rF
+ lyaXJUmnb/aHmm+3+axZclLkqQ7X2/zT/b/NYkuTy5KlO1+0PNL9oeaxZclLkqU7X2/zS/aHmsSXJ5cl
+ SHa+3+aX2/zWLLki5ycAp2f2h5pftDzWGXOTbnJ1Kd4dQ80/2/zWGC5S3OQpLsHO80323zWK6whQF5S4
+ UvQDLlS+1LDZeUX1ylwpdU5kKBz47rGsvKrOvKVJeiHUPNSGf5rnW2uKO17ihSHc+3+ab9oeaxpcoy5K
+ lO1+0PNP+0PNYkuTy5KkO19v80vt/msWXJS5CkO1+0PNL7f5rFlyUuSpDtfb/NL9oeaxZclLkKU7X7Q8
+ 0v2h5rFlyUuSpTtftDzS/aHmsWXJS5KlO1+0PNL9oeaxZclLkqS7X7Q8032/zWNLkpchSnZ+3+aX7Q81
+ iy5RJclSHb/aHmn/AGh5rC3OThzkqU7oz/NP9v8ANYgLlKXIgKdn7f5pvt/msYucolzkaS7X7Q80x6j5
+ rELnKJc5OpLuftHzTjqHmsGXKQLkaU7wz/NP9v8ANYe9ygbXBGkvQftDzUhn+a5o5BCcZJS4VPTfbvNM
+ c7zXPDJKl65KXCp3Tn+aic/zWGbSU29yXCp2/wBoeaX7Q81ibnJ5chSHb+3+aX2/zWJLk+5ybSnb+3+a
+ X2/zWLuclLkKQ7P2/wA037Q81jS5NLkKQ7X7Q8037Q81iy5NLk2lO5+0PNL9oeaw5cnlyNKdv9oeaX7Q
+ 81iy5KXI0mna/aHml9v81iy5KXJUqna/aHml+0PNYsuSlyNIdr9oeaX7Q81iy5KXIUp2v2h5pftDzWLL
+ kpcjSHa/aHml+0PNYsuSlyVJdr9oeaX7Q81iS5KXI0l2/t/mn+3+axAXJ5clSadv7f5pftDzWLLkxLkq
+ XU7Z6j5qP7R81hlzlA2OCNJp3/t890/22Vz4uKmLylwqp3ftib7YsT7QVE5BR4UU7v26O6X2/wA1geuS
+ l6rilwrad/8AaPmn/aPmsDe5OHOSpVO9+0PNL7f5rDDnKQLkqRTtfb/NN9v81jS5KXJhCKdn7f5pfb/N
+ Y0uSlyFIdn7f5pfb/NY0uSlyVJdn7f5pfb/NY0uSlyVJp2ft/ml9v81iy5KXJUqna+3+aX2/zWLLkpcj
+ Sadn9oeaX2/zWNLk0uSpFO19v80/2/zWJLk4LkqRTtfb/NP9v81iguSJcjSHYPUPNL9o+awy5yYOclSn
+ eHUPNP8Ab/NYYc5TlyVKdc5/mm/aHmsclygS5Gku4Oo+akOoeawQXKQLkqXU7w6h5p/t/msMOcmL3BKl
+ wDtnP81E5091hG0hMLylS6nd+2JxmLDF5SN5R4VEO6M6O6kM/wA1zpyCnbeSlwsRei+3+aY53msRtjip
+ bnJcKHXOf5pv2h5rGJcoEuQpTuftDzS/aHmsOXJ9zkqU7n2/zT/b/NYYc5SDnJUp2vt/mmOf5rH3OUCX
+ IUp2v2h5pftDzWGXOSDnJUp3hn+aX2/zWIC5PLkqU7X7Q80v2h5rELnJtzkqS7n7Q8037Q81ibnJbnJU
+ p2/2h5pftBYm5yW5yVKdv9oJftBYm5yW5yVKdv8AaHml+0PNYe5yW5yVKdz9oeaX7Q81h7nJ9zkqU7n7
+ Q80v2h5rD3OS3OSpDt/tDzS/aHmsTc5NLk6ku5+0PNL9oeaw5clucjSnc+3+aQz/ADWCbHBQN5CXCvD0
+ gzvNTGauZGUUVuUUuFc9F9t81E53msL7SSom8lDhQXc+3+aX7Q81g+o4qQe5KmMu59v80xz/ADWLucol
+ zkKWl2/t/mm+3+axNzlIFyVIdn7f5p/t/msaXJpclS4O39v80v2h5rE3OS3OSpe7f7Q80vt/msTc5Lc5
+ ClF2/t/ml9v81ibnJbnJUtLt/b/NL7f5rE3OS3OQpYXb+3+aX2/zWJLktzkqQ7f2/wA032/zWLuclucl
+ S8O19v8ANL7f5rF3OS3OSpe7f2/zT/b/ADWJuclucjSna/aHmm/aHmsQucm3OSpTuftDzS/aHmsMOcnl
+ yNMZdr9oeaX7Q81iEuTS5KlruftDzT/b/NYYLk+5yFJdv7f5p/t3msPe5N6pRpdF3vtvml9tWF6xTHII
+ R4W3B3vtvmm+3ea585RUftJKXCvls9D9u80/2/zWALSUQOcUqac3b+3+aX2/zWLLk8uSpjDs/bvNL7d5
+ rGlyeXIUl2ft/mm+3eax5clLkqS7H2/zS+3+axpcmlyVLXZ+3+aX2/zWLLktzkKU7X2/zS+3+axdzkpc
+ lSXa+3+aX2/zWLLkpclS52vt/ml9v81iy5KXI0mna+3+aX2/zWLLkpclSCHa+3+aX2/zWLLkpclTGXa+
+ 3+aX2/zWLLkpclSg7X2/zS+3+axZclLkqZQ7X2/zS+3+axJcnlyVKLtfb/NL7f5rElyUuSpbTt/b/NP+
+ 0PNYcuTy5KlU7f7Q8037Q81iFzlA2OCVJAd4Z/mpDNXOi8hEbkFLhZAHoPtiY5sd1ifaChuyClwrwHdO
+ fHdN+0fNc8bynFrilwrJB6H9oeab9oeaww5xTy5KmEh2j1DzTftDzWLLkpclSQHa+3+af7esSXJ5clS5
+ 2vt/ml+0PNYsuSJchSHa/aHml+0PNYkuTS5BDuftDzS/aHmsSXJS5JTt/tDzS/aHmsSXJS5KlO3+0PNL
+ 9oeaxJclLkqU7f7Q80v2h5rElyUuSpTt/tDzS/aHmsTc5KXJUp2/2h5pftDzWJLkpclSnb/aPml+0fNY
+ ZLk0uRpTu/tDzT/b/NYQLkQFyVKdn7f5pfb/ADWMS5RLnI8KXb/aHmn/AGj5rC3OS3OR4VO9+0PNL7f5
+ rC3OS3uR4Uu59u80323zWGbSFA3lHgU7321P9tWB9oKX2gpcCXoPt3ml+0PNc/65SFzijwKeg/aHml+0
+ PNYIscVIOcozFaXb+3+aX2/zWLLkpcm0h2vt/ml9v81iy5KXJUp2vt/ml9v81iy5KXJUp2vt/ml9v81i
+ y5KXJUp2vt/ml9v81iy5KXJUp2vt/ml9v81iy5KXJUp2vt/ml9v81iy5KXJUp2vt/mn+3+axJclLkqU7
+ f2/zS+3+axJclLkqU7f2/wA0vt/msSXJS5KlO39v80vt/msSXJS5KlO39v8ANL7f5rElyUuSpTt/b/NL
+ 7f5rElyUuSpTt/b/ADS+3+axJcnlyVKdr7f5pj1DzWKS5QL3IgKdz9oeakM6e6571XBTbcVIILnoBmJH
+ LWILymdkFHgU7JzVH7d5rCdkFRF5KHAp3/t3mkc/zWILHFIuchwodn9oeacdQ81hkuTguQpTuDP80/27
+ zWMC5SlyVKdb7cm+3+aySXKBLkKQ7P7Q8046h5rDlycFyFKdwdQ80/7Q81iAuSlyFKdv9oeaX7Q81iS5
+ KXJUp2/2h5pftDzWJLkpclSnb/aHml+0PNYkuSlyVJdv9oeaX7Q81iS5KXJKdv8AaHml+0PNYkuSlySn
+ b/aHml+0PNYkuSlySXb+3+aX2/zWJLkpclSnb+3+aX29YsuTy5KkOz9v8037Q81jEuUSXJUgh2/2j5px
+ 1DzWFLk4c5GltO7+0PNN+0PNYRe4IZuISpkiHpBnT3UxlyubZkFWWZBRplp3DloZzYWQ68oD7ylS0h3P
+ t/ml9v8ANc/6xKm17ilTGQ732/zTHP8ANYu5yYlyVIp2v2h5pftDzWJucluclSHb+3+aX2/zWJuclLkq
+ XB2/t/ml9v8ANYkuSlyVJdv9oeaX7Q81ibnJbnIUsLt/tDzS/aHmsSXJS5Kljt/tDzS/aHmsTc5Lc5Km
+ QO3+0PNL9oeaxNzktzkqX07f2/zT/b/NYkuTy5JYXZ+3+ab9oeaxiXJpcktdv9oeaX2/zWJLk4LklO39
+ v80vt/msWXJS5JLs/b/NL9oeaxSXKJc5BTt/tDzS/aHmsTc5Lc5JTuftDzS/aHmsSXJ5cgl2vt/ml+0P
+ NYsuUHPcEFO8M/zR68zcuXF5BVzGvJKap6qq3crjNVj4dkrZpEoKSAJ4U4TEIKWSSTIKXSSSTVLJJ4Sh
+ BSydKEkEKSTJIqXSSSRSpJJJJSk6ZJJS6SZJJS6ZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUsknTIqUkkkkpSSSSSlJ0kklKSSTpKWSSSSUsmTpIKUnTJ0lKTJ0ySl
+ JJJJKXUXKSi5JTWsQCj2IBSUzYrTFVYrTElJgkkEklLJk6ZJSk6ZJJS6SZOkpSSSSSlJJJJKUkkkkpdM
+ kkkpSSSSSlJJkklLpJJJKUkkkkpdOmThJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKZJk6ZJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklP8A/9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYj
+ hJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKR
+ PVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOEycJKXAUwFEKYKK5Z/Cy
+ sw6LUedFk5icFPO5p5WU8SVq5fJVANkoqY1Ukq/Vikp8aoFbOPQCnBTnNwieyc4B8F0FeOEUYwRtTzBw
+ D4JDAPgumOKE32UJ3Eh50YJ8FL7EfBdCMYJ/swS4lPOHCPgl9hPguh+zhOMcJcSnnPsB8E/7P8l0gxgn
+ +zBDiU81+zz4JfYPJdL9nCX2cJcSnm/sHkl9g8l0n2YJ/swQ4lPN/YD4Jfs/yXSfZwl9mCHEp5r9n+SX
+ 7PPgul+zBL7MErU81+z/ACS/Z/kul+zBL7MELU8z+z/JL9nnwXTfZgl9nCVqeY/Z/kmPTz4Lp/swTHGC
+ IKnmPsHknGAfBdJ9mCf7ME7iQ84On+Sl+z/JdGMcKQxwgZIeb/Z3khu6cfBdV9nCg/GCQkh5CzAI7Knb
+ ikLr7scLJyaQFKJL4vM2VEKu5pC2L6wqD2J9swawBR62Ep2sVqmtK0FlVQSrteISjY1IWvRQE0ljLltw
+ D4Kf2DyW+zHCL9nCiMlpeb+weSb7B5LpDjhN9nCHEh5z7B5JvsHkuk+zhN9nCXEkPOfYPJN9g8l0n2cJ
+ fZwla55v7B5JfYPJdH9nCX2cJWxyec+wHwS+wHwXR/Zwn+zhK1jzn2DyS+weS6P7OEvs4Stki879g8kv
+ sHkuj+zhL7OEuJe839g8lH7AfBdL9nCb7MEbQ839gPgnGB5Lovs4T/ZwlxKed+wHwT/YPJdD9nCf7OEu
+ JLzv2HyT/YfJdD9nCX2cIcSnnfsPkm+wHwXR/Zwl9nCPEsLzn2HyTfYT4Lo/s4S+zhLiWvOfYT4JxgeS
+ 6H7OE4xwlxLg8/8AYPJBtwoC6r7OFVyKBCQkyxeNyKC1ZtoIK6TOqAWBkNgqQFni1gSjsBKC0aq3UEbX
+ lkyuVYZQSiVMCv01ApWxSazMQlHGET2WpTQCrjMcIEsJcH7AfBIYB8F0gxgnGMEwyYS84OnnwUv2f5Lo
+ xjBP9nCbxIDzRwPJN9g8l0pxwonHCPEzRed+weSX2DyXRegEvs4S4lxed+weSX2DyXR/Zwn+zhC2IvN/
+ YPJL7AfBdJ9nCX2cIWgPN/YPJL7B5LpPs4S+zhLiZA839g8k/wBg8l0f2cJfZwlxJec+weSX2DyXSfZw
+ m+zhK1PN/YPJL7B5LpPs4S+zhHiQXm/sB8EvsHkuk+zhL7MEuJjLzf2DyT/YPJdH9nCb7OEuJDzv2HyS
+ OB5Lovs4S+zhHiS82en+SX7O8l0n2cKX2cIcS4PNDp/kp/YY7Lovs4THHCPGyB5mzEgLMyaSF119AhYm
+ ZSphJLzFzSFXkrRya9VSLNU+1LsJR2NJUa2K5VWjaCtXSSrtWKSi0VBauPQEDJa0GYRPZEGAfBbleOEc
+ Y4UEpIec+weSX2A+C6Q44TfZwmWh5z7B5JfYPJdH9nCX2cJWp5z7B5JfYPJdH9nCX2cJWp5z7B5JfYPJ
+ dH9nCX2cJWp5z7B5JfYPJdH9nCX2cJWp5z7B5JfYPJdH9nCX2cJWp5z7B5JfYPJdH9nCX2cJWp5z7B5J
+ fYPJdH9nCf7OErU83+z/ACS/Z/kuk+zhL7OErU83+z/JL9n+S6T7OEvs4StTzf7P8kv2f5LpPs4S+zhK
+ 1PN/s/yS/Z/kuk+zhL7OErU83+z/ACS/Z/kuk+zhL7OErU83+z/JIYHkuk+zhIY4QtTzo6f5KL8CBwuo
+ GOEO3HEIA6qeLyMUtWTe0tXX51AErmsyuCVZgV4czcZRWElQLNUepqltclYyVYZTKlUxX6awgSgoa8aV
+ aZhyr1FIWhXQFFKS1xfsPkm+weS6IY4Uvs4UZktLzf7P8k/2DyXRjHCf7OE3iQ80cDyTfYD4LpTjBN9m
+ CPEh5sYJ8FIYJ8F0X2YJxjBC1PO/YfJL7B5LoxjBP9mCFqeb+wHwS+weS6T7OEvswQtc819g8kvsHkuk
+ +zBL7MEbU819gPgl9gPgul+zBL7MErS819g8kvsB8F0v2YJvswRtTzf2DyS+wHwXSfZgl9mCXEp5v7Af
+ BL7AfBdJ9mCf7MEuJDzX2A+CX2DyXS/ZgonHCIkp5z7D5JvsHkuiNATegE7iQ879g8kv2f5LoxQFIY4Q
+ 4kh5odP8lMYEdl0X2cJ/QCXEyh5x2HCoZGOQuttoCyMukJ4kveTvYQqRWzl1crMezVOtLBkq1W0lCrYr
+ 1LErQzqqJV2vFlTx6gtWikJpLGWg3BnsifYPJblVARxjhRmS0vNnA8k32DyXSnHCb7OEuJa839g8kvsB
+ 8F0n2cJfZwlxKDzf2A+CX2DyXSfZgl9nCHEueb+weSX2DyXSfZwl9nCXEl5z7B5JfYPJdH9nCX2cJcSn
+ nPsB8EvsB8F0f2cJfZwlxILzn2DyT/YD4Lo/s4S+zhLiWvN/YPJL7B5Lo/s4S+zhLiU839g8kvsB8F0f
+ 2YJfZglxJec+wHwS+wHwXR/Zgl9mCXEp5z7D5JfYT4Lo/swS+zBHiXPOfYfJP9hPgui+zBL7MEuJaXnf
+ sJ8E32E+C6P7OEvs4R4mN5v7CfBL7CfBdH9nCb7OEuJIeeGAfBM7APgulGMEz8YQlxMgeQvxC1Zd7C1d
+ hmUALm82qJTwWeLjlxlSa4lM9sFSrGqdbKnYCVZZVKjU1X6awlawsK8eVbZhyrVFQWlVQEwliLkDBnsk
+ cDyXQtxwp/ZwmGTBJ5v9n+Sf9n+S6P7OE/2cIcTG819g8k32A+C6U44THGCXEyxeb+wnwT/YT4LovswS
+ +zBG2R537CfBN9hPguj+zBL7MErYy839gPgl9gPguk+zBL7MEuJY839gPgl9h8l0n2YJfZglbIHm/sPk
+ n+w+S6P7MEvswStc859gPgl9h8l0f2YJfZglaHnPsB8EvsPkuj+zBL7MEuJTzf2HyS+w+S6T7MEvswS4
+ lheb+wHwS+w+S6P7MEvs4S4lrzv2E+CcYHkuh+zhP6AS4kvPfYPJP+z/ACXQigKXoBDiXB5v9n+ScYHk
+ uj9AJegEuJkDzhwo7KtdjELqX0BZ2VQIUkZLnksishZtgIK6DMqhY1zNVIClqglHYCVBrNVaqrTrQyrr
+ JVurGJU6KlqUUhIlaWpXhEowwD4LYpoCtsxwopSWvOnp58FH9nnwXT/Zgl9mCj4kPMfs8+CX7PPgum+z
+ BL7MEuJDzP7PPgl+zz4LpvswS+zBLiU8z+zz4Jfs8+C6b7MEvswS4lPM/s8+CX7PPgum+zBL7MEuJTzP
+ 7PPgl+zz4LpvswS+zBLiU8z+zz4Jfs8+C6b7ME/2YJcSnmP2efBN+zz4Lp/swTHGCXEp5n7AfBSGAfBd
+ H9mCf7MEbU86ME+CRwT4Lo/swS+zBDiU80cE+CX2A+C6T7MEvswR4lPNfYT4JfYT4LpPswTHGCPEp5v7
+ CfBN9hPguk+zBL7MEuJTzf2E+Cf7CfBdH9mCf7MEeJTzZwT4IbsI+C6Y4wQ344SBU8s/EIVWystXSX0A
+ LIya4T7XxciwkIBJKtXN1VcN1StlDOphK0sfHJQMZgJW5iVAwgSgo68MlF+w+S2KaBCtDHCYZLS82cDy
+ Uf2efBdKccJfZwm8S0vNfs8+CcYB8F0f2cJ/s4S4lrzf2A+CY4B8F0v2cJvswS4kPMnAPgm+wHwXTfZg
+ l9lCPEh5r7AfBL7AfBdN9mCX2YIcSXmvsB8EvsB8F0v2YJfZglaXmvsB8E32A+C6X7MEvswStLzX2A+C
+ X2A+C6X7MEvswRtLzX2A+CX2A+C6X7ME32YJWh5v7AfBL7AfBdJ9mCX2YJWp5v7AfBL7AfBdL9mCX2YJ
+ Wp5r7AfBL7AfBdL9mCX2YJWh5r7AfBN9hPgukOME32YIiSHmzgHwSHTz4LpRjBSGKEuJTzQ6efBRfhEd
+ l1X2UIFuKIQEkvH3YxCovrIXUZeOAsW+qCn2loNkIkpy1PCNpQvBKg2okqxtR6awShaWFOMStGrBJ7Kz
+ i0AraoxhCBKnDHTz4Jj08+C6gYwSOMFHxKeW/Z58EvsB8F0/2YJjjBHiQXmfsB8EvsB8F0v2YJfZglxL
+ Xmv2efBL7AfBdL9mCX2YJcSHmvsB8EvsB8F0v2YJfZglxKea/Z58Ev2efBdL9mCX2YJcSnmv2efBL7Af
+ BdL9mCf7MEuJTzP2A+CX2A+C6b7MEvswStLzP2A+CX2A+C6b7MEvswStTzH7PPgmPTz4LqPsoSOKEOJD
+ y37PPgnGAfBdMcUJfZgjanmxgHwT/YT4Lo/swS+zBK1PMnBPgm+wHwXTfZQm+yhO4kvNfYD4Jfs8+C6Y
+ YoUhihDiS8v+zj4J/wBnnwXUfZQkcUJcaXlH4JHZU7sYhdddjALIy6QFIJJeYtrIQDIWnksAVBw1TrQp
+ kqwxhKhW1X6K0rUxrxyVZZhkq7RSCtKnHCBKnGGAfBTHTz4Lo2YwRBihRGSnmP2efBN9gPgunOKFA4wS
+ 4kPN/YT4JxgnwXQ/ZwnGOEbQ899gPgl+zz4LoxjhTGMEwlDzP7PPgmPTz4LqPswTfZQlxKeX/Z58Ev2e
+ fBdP9lCX2UJcSXmf2efBL9nnwXTfZgl9mCNpeZ/Z58Ev2efBdN9mCX2YJcSnmf2efBL9nnwXTfZgl9mC
+ VoeZ/Z58Ev2efBdN9mCX2YJWh5n9nnwS/Z58F032YJfZglxKeZ/Z58Ev2efBdN9mCX2YJcSXmf2efBL9
+ nnwXTfZgm+zBLiS819gPgl9gPgul+zBN9nCPEuedGAfBMennwXSjHCc4zUOJc8o/APgqtmGQuvsxgs+/
+ HAThJLyz6CEBzYW3kVALLubCfaGk4wmBlO9Jg1RtBTVsLlcqxS5LGrlbeLjgpWhzmYBPZFHTz4LoasUK
+ wMUKMyQ8wOnnwUvsB8F0v2YJjjhDiQ839gPgn+wHwXRDHCkMYJGSHm/2efBL9nnwXS/Zgl9mCbaHmv2e
+ fBL9nnwXS/Zgl9mCVpea/Z58Ev2efBdL9mCX2YJWl5r9nnwS/Z58F0v2YJfZglxJeZ/Z58Ev2efBdN9m
+ Cb7MEeJTzX7PPgl+zz4LpfswS+zBLiU8z+zz4J/2efBdL9mCX2YJcSHm/sB8FE4B8F0/2YKJxgjxLXlj
+ gHwTDAPgumOMEwxgnWp55uAfBEGAfBdC3GCIMYJpkl5k9PPgo/s4+C6g44TfZghxJeY/Zx8FIdPPgul+
+ zBS+zBLiXB5g4BHZV7MMhda7GCpX44ThJeHkrcchVHMIXQZNICy7WJ1rmjBTGUctUdqdaCiDSVYqpJT1
+ sWjjVApWwljTikq23BJ7LQxqAVo144TDJa88ennwUT08+C6j7ME32YJnEl5c9PPgm+wHwXUHFCicUJ3E
+ p5n7AfBSGCfBdH9lCcYwS4lPOfYD4JHAPgulGMEvswQ4lPMfs8+CQ6efBdP9lCf7KEOJDzIwD4J/sB8F
+ 0v2UJfZglxKeZ+wHwTfYD4LpvswS+zBHiU8z9gPgl9gPgum+zBN9mCXEp5n7AfBL7AfBdN9mCX2YJcSn
+ mfsB8EvsB8F032YJfZglxKeZ+wHwS+wHwXTfZgl9mCXEp5n7AfBL7AfBdN9mCX2YJcSnmfsB8EvsB8F0
+ 32YJvswS4lPNjAPgnHTz4LpRjBSGMEOJLzP7OPgoOwCOy6r7MEKzGCIkuePuxC1Zt1RauwyscLBy6YUt
+ rg4TiQnY8otteqgxmqVrk7JKssqLlGitamPTKVrS168QlWmYJPZaVFAWhXjBMJYy4H2A+CicA+C6b7MF
+ E4wQ4lpeZGAfBTGAfBdEMYKYxgkZIec+wHwSOAfBdL9mCRxgm8S8PMfYD4JfYD4LpvswS+zBHiXvM/YD
+ 4J/sB8F0v2YJfZglxILzX2A+CX2A+C6X7MEvswS4lpea+wHwS+wHwXS/Zgl9mCHEsLzX2A+CX2A+C6X7
+ MEvswS4kPNfYD4JvsB8F032YJfZglxLw8z9gPgn+wHwXS/Zgl9mCXEvea+wHwTfYD4LpvswTfZgjxKeZ
+ OAfBN9gPgum+zBL7MEeJTzY6efBTHTz4LoxjBSGME0yWF5k9OPgm/Z58F1Bxwo/ZglxLXmf2efBROCR2
+ XTnGCE/HCIkl5Z+IQq78chdLdQFn3VBPBXRcN9RCrWAha1tYVG5idbag55KlWCSnc3VHx65KFr5NnHoL
+ lp1YJI4U8KkGFvUY4hNMmpNw/sB8E32A+C6b7MFE44TeJjec+wHwS+wHwXR/Zwl9nCXEuec+wHwS+wHw
+ XR/Zwl9nCXEp5v7AfBL7AfBdJ9nCb7MEuJa839gPgm+wHwXSfZgl9mCXEp5v7AfBL7AfBdJ9mCX2YJcS
+ nm/sB8E/2A+C6P7ME/2YJcS4PN/YD4JfYD4LpfswS+zBLiXh5r7AfBL7AfBdL9mCX2YJcSC819gPgl9g
+ Pgul+zBL7MEuJiLzX2A+CX2A+C6X7MEvswS4lB5r7AfBL7AfBdL9mCX2YJcTKHmv2efBL9nnwXS/Zgl9
+ mCXEovNfs8+CX7PPgul+zBL7MEuJa80MA+Cf9nnwXSjGCl9lCHEl5V+AR2VK7EIXZW4whZOXQAnCSQ8p
+ ZUWoeoWnk1gKg9uqfa8MJKUEqQCIxqVsgYMqJVynEJRKKwVsY1AKBKyTRrwCeyKOnHwW9TjiFZGMEwyY
+ S8wenHwTfs8+C6c44Ufs4Q4kh5r9nnwS+wHwXS/Zwl9mCPEl5r7AfBN+zz4Lp/swS+zBDiQXmP2efBL9
+ nnwXTfZgl9mCVrXmf2efBL9nnwXTfZgn+zBK1PMfs8+CX7PPgun+zBL7MErU8x+zz4Jfs8+C6f7MEvsw
+ StTzH7PPgl+zz4Lp/swTfZglanmf2efBL9nnwXTfZgl9mCXEp5n9nnwS/Z58F032YJfZglxKeY/Z58Ev
+ 2cfBdR9mCX2YJcSnmB08+Cf7AfBdMcYKJxwiJJebOCfBQOCfBdIccJvswTuJTzn2A+Cf7AfBdIMYKQxg
+ hxJeZOAfBBfhELrHYoVS7GAToyS8nbQWqlY0hdDlUgLGyGwpbU0CU7dUncolQlG0s2Vkq1XjEqdFcrWx
+ 6AUiVNGvCJVluAfBbFOMFdZjBQSK0vO/s8+CY9PPgunGMExxgo+Ja8z+zz4Jfs8+C6X7MEvswR4lPNfs
+ 8+CX7PPgul+zBL7MEuJTzX7PPgl+zz4LpfswS+zBLiU81+zz4Jfs8+C6X7MEvswS4lPNfs8+CX7PPgul
+ +zBL7MEuJTzX7PPgl+zz4LpfswS+zBLiU819gPgl+zz4LpfswS+zBLiU81+zz4Jfs8+C6X7MEvswS4lP
+ Nfs8+CX7PPgul+zBL7MEuJTzX7PPgl+zz4LpfswS+zBLiU81+zz4Jfs8+C6X7MEvswS4lPNfs8+CX7PP
+ gul+zBL7MEuJTzX7PPgnHTz4LpPswUhjBDiU8yennwVezBI7LrXYwVa3GCdGSXkLMQhANJC6O/HCzrqg
+ FYiUuWRCC8q5Y2FTsTrUh1KPVWXIbBJWjisBTbUkpxS5Wm4BPZaGJQCtSvGCZKVKec/Zx8FIdOPgunGK
+ E4xgouNTzQwD4JHBPgulOMFA44S4lPNnBPgonAPgukOOE4xgjxIea/Z58E/7PPgumGME/wBmCbxIeY/Z
+ 58E/2A+C6b7ME32YJcSnmv2efBL9nnwXTfZgl9mCXEp5n9nnwS/Z58F032YJfZglxKeZ/Z58Ev2efBdN
+ 9mCX2YJcSXmf2efBL9nnwXTfZgl9mCVqeZ/Z58Ev2efBdN9mCX2YJWp5n9nnwS/Z58F032YJfZghanmf
+ sB8E32A+C6Y4wTfZgjaXmvsB8FIYB8F0f2YJxjBHiU83+zz4Jj04+C6f7MEvswQ4kPL/ALOPgkenkdl1
+ P2YKD8YJCS15C3CIVC2ghddk0ALFyagE8Fki4m0hTaUWxsKACNsyiSobSUXaiMrlG1pYV0Eq9Vhko2NS
+ CtnGxwmksZcoYB8E5wD4LpGYwUjihN4lry/2A+CX2A+C6b7MEvswS4kPM/YD4JfYD4LpvswS+zBLiXB5
+ n7AfBL7AfBdN9mCX2YJcSXmfsB8EvsB8F032YJfZglxLC8z9gPgl9gPgum+zBL7MEOJY8z9gPgl9gPgu
+ m+zBL7MEuJki8z9gPgl9gPgum+zBL7MEeJe82MA+Cf7AfBdJ9mCf7ME3iYy8yennwUf2efBdOcYJvswS
+ ta8z+zz4JxgHwXS/Zgn+zBK0vN/YD4JfYD4LpfswTfZglanmTgHwUTgHwXTnGCj9mCNqea+wHwS+wHwX
+ S/Zgn+zBK0vNfYD4KQ6efBdH9mCkMYIWp5o9PPgqt+GQuvdjiFm5dAAQU8fbSWlTo0Ku5VYBVaoQUFO5
+ gnhdBRwuewV0GPwgptqBUlAoKUmSSQUukkE6ClJJ0kFLJJ0kFMUykmSUpJJJFSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpkVKTJ0klL
+ J0kklKTpk6SlJJJJKUmTpklKTJ0yCl0kk6SlkydJJSySSSSl1Fykmckpq2IBVixVykpmxWmKqxW2JKSh
+ IpBIpKWSSSSUsknSSUpJJOkpZOmTpKWSTpJKWSTpJKWSTpJKWSSTpKYpJ0klKSSTpKWSTpklLpwmTpKU
+ VXsVgoFiSmo9RapPTNSU2K1YagVqw1JS6ZOkkpZJOkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9fr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJ
+ JJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJ
+ JSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUp
+ JJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSTpKWSSTFIKZSpAoJKm0qSlwZv4WVmcLUPCzcwaJBLzeXyqTeVfyxqVQA1TwEO
+ liLcxlh4oW1Qip0qyigqswooKYQpKlChKkEEMoSISTFBDEpSmKilakgKeUNOhamcpSoJkrUklKVBJC1M
+ 5SlDSStSSUpUEyFqSbkpQ0krUklKUNJG1JJTSoJJWplKUqCSNrWYKluQwE8IqSByZxTAJiEkNW8rIyit
+ a8LGyk8Fki5N5VFw1Vu8qmTqncTOGTQrdIVVhVukpcS0upjBbGOVjY5WrQUCWMukwokoDCiJhWlkSlKi
+ lCC1eUpUYTIWllKUqMJIWm2UpSopJWsLKUpUITpWsZSlKjCUJWyRZylKhCeErZGUppTQlCNoXlKU0JQl
+ aF5TyopI2uDKUpUUkkspSlRhKEmOS8pSmhKEVipTgqMJAJLgllVMg6KyqmRwkGWLg5y53JGq6LNCwMka
+ p1tmLSHKt1FVY1VipLiZCHQpK06CsqkrTx0uJik61CvsWfQtBiVsMkwSlRTJrWkkBSlDCdKkAsiVElKE
+ 0JM8VSnlRhPCRKSyBTyoQkoyWIs5SlQSQ4kBnKUqKSVsgZylKgklaWcpSopI2hlKUqMJQlaiylKVGEoR
+ tjLKU0poShG0KlNKUJoStTLcnDkOE4CK4JAUiogKUJMoa140WHmhbt/Cw80qQFc8/kjVUS3VXsk6qiXa
+ p3ElNW1XKgqdZVyopwkgujQFrY6yaFq46RKx0qyjgqvWEcBQlDKU0piEyahlKUqKSKmUpSopJKZSlKik
+ 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
+ kklLp0ydJSxQLEcoFiSmq9RapPUWpKbNasNVetWGpKXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//Q69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSS
+ SlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySl
+ JJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWq
+ SSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTFOkQkFIyptTQptClvRcFzws7M4Wi7hZeYdEAlwMs6lUG8q3
+ lnVU2HVPCHUxAtmgaLHxFuUDRJTYaEQJNaphqbaFlIFKEySGYKRKjKUoUpRTJJIUhcJ0gklSlQmTpIUp
+ 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
+ hIFIBQBUpTVMoShR3JtyFIZpFQ3JbkqQvCUJSlKVIVCUJSlKFKVCUJSlKVKVCUJSlKVKVCUJSlKVJVCU
+ JSlKVKVCUJSlKVKVCUJSnSpKgE4TSmLkaUkSQt6W9KlJkzhooBycu0QpTn5Y0XOZo5XR5Z0XOZvdOpki
+ 41p1UGlSt5QgUaZ2w1ysVFU2lWailSwuvjFbeMsLFW7jJUxl0GKRTM4SKCwrFMmJSlGlq6SaUpSpNrpJ
+ pSlKk2ukmlKUKYyV0k0pSlS210k0pSlTLFdJNKUpUvXSTSlKFLCySTSlKHCtZJJpSlKkrlRKclRJRpSx
+ ShIlNKNJXATwmBTylSlEJoTkppRpLB/CyszhajzosvMOiVKeeyuVVrOqs5R1VWvlKlO5gldDj8LncHsu
+ hx+EqU20xThJBTGEoUoShJSydJMUEKSlNKSCl5STSklal0kkklLJJJIKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ySSl0ySSKlJJJJKUkkkkpd
+ JMnSUpJJJJSkkkySlJJJkFLp0ySSl0ySSSlJJk6Sl1FykouSU1rFXKsWKuUlM2K3WqjFbrSUmCRTBIpK
+ UmSSSUpJJJJSk6ZJJSk6ZJJS6SSSSlJJJJKUkkmSUpOmSSUpJJJJSk6ZJJS6ZJJJS6dMnCSlFV7EcoFi
+ Smq9M1O9RakptVqw1Vq1YakpkmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Hr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkk
+ lKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklK
+ SSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6Z
+ OkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmThJSoUwEwUwnLkb+Fk5q138LKzQnhTzWXyVTZyr2WNSqTdCih1sNb2PwudxHwtv
+ HtCSnVYESFUZcEYXBNUkIUSE3qhN6gSQvCUKPqBL1AihlCeFD1Al6oSUzhJD9UJeqEEJEoQ/VCXqhFTO
+ EoUPVCXqhJTOEkP1Ql6oSpKRJD9UJeqEqUkSQ/VCXqhKlJEkP1Ql6gRpSUBSAQBaFIWhNIQUxCg4KPqh
+ RNoQWqITQm3hOHhEKZtCJCG14UjYEqUhv4WLlha19ghY+W8J4DLFxMkarPeNVoZB1VB3KczhZquUKo1W
+ 6UkF18VbWMFiYzoWvj2AJpDGXUYFMquy0KZtCZRYyyKSEbQl6oRpYlSQvVCXqhBKRJD9UJeqEEpEkP1Q
+ l6oSWFKkheqEvVCSxKkheqEvVCTLFKkheqEvVCLIlToPqhP6oQWFKmQ/VCb1QktSpIXqhL1QkyBInQvV
+ CXqhFclSQ/VCb1QkxSSpkP1Ql6oRY2ZSCH6oSFoSXBMVVyOEb1Qqt9ghEMkXDzu657J5XQ5pmVg5Akot
+ 2DQhWaghhuqsVBBlLcoC1cYLMpWnjuhJik7OOtBiyqLAFfZaECGvNtKJQ/WCibghTVkmTIXqhP6oSpYG
+ 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
+ w1R6QoluqNU1JLo4wW1jBY+PotbHfCKXWpCttCoU2BW22hMLEU4CRCgLQmNoTKWs0kP1Al6gRUkSQ/UC
+ XqBJSRJD9QJeoElJEkP1Al6gSUkSQ/UCXqBJSRJD9QJeoElM0lD1Qm9UJUpIkh+qEvVCVKSJIfqhL1Ql
+ SkiSH6oS9UJUpIkh+qEvVCVKSJIfqhL1QlSkimAg+qFIWhClM3BVbkZ1oVW6wIhIc/ICyrwtK96zrTKk
+ DKHOtCqPC0LAqr2opQ1jVa+GFmsbqtLGMIIehxFps4WPjWALSrtCaUNghNCh6oS9UJtFBSJlD1Qm9UJU
+ tZlMo+oE28JIZpwobwl6gQQlToPqhP6oSQkSQ/VCXqhJSVJC9UJeqEFJUyH6oS9UIqSJIfqhL1QkpIkh
+ +qE3qhFKVJC9UJeqElJgnQfVCf1QhSkpUCoG0KJsCCWRTBNvCcPCKkrQpOUGvCT7AkhpZXC5/MHK3cmw
+ LCy3SkzRca4aoICs2jVBARZlAKxUEIBHqCS0upiBb2MsDGdC28awBJiLqMCchBZaFM2hCisKxCUKPqBL
+ 1AitZQlCj6gS9QJKZQlCj6gS9QJJZQlCj6gS9QJMZZQlCj6gS9QILWUJQo+oEvUCTLFlCUKPqBL1AkvZ
+ QmhR9QJeoEaQWUJ4Q/UCf1AjSEiSh6gS9QIUpnCiQm9QJjYEqSvCUKPqBN6gRpSQBPCGLAn9QJUlmQmh
+ R9QJeoEqKlnjRZWYNFqPeIWXmPEIhTzuWNVUr5VvKOqq1DVJTt4PZdFjcLnsEcLocfhAqbYSSSTFKSSS
+ SUsmKcqJQUsUyRTJqGScKIThBTJJMnSUsknTIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkmRUumSSSUpJJJJS6SSSSl0kkklLJJJJKWS
+ SSQUpOmTpKUmTpklKSSSSUyUHKSi5JTWsQCj2KuUlJGK0xVWK1WkpMEkgkkpZMnTJKUkkkkpSdMkkpdJ
+ MnSUpJJJJSkkkklKSSSSUpJMkkpSSSSSlJJJJKUkkkkpdSCinSUooFiOVXsSU1Xpmp3qLUlNqtWGqtWr
+ DUlMkydMkpdJMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9Lr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu
+ 5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJ
+ JJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOkmSU
+ vKmChSpApwXMnnRZmWNFou4WflcJwU85ljUrNLoK1cwcrHt0KehtU3wtCrLhYIeQiC8hOAU9IzO80UZ/
+ muZGSVIZRThBT0/27zS+3ea5r7WUjllPGND0hz/NN9v81zRyyonLKcMSHpvt/ml9v81zH2spfaynDCp6
+ f7f5pfbvNcz9rKX2oo+wh6b7d5pfbvNc19rKX2oo+wp6X7d5pfbvNc19qKX2opewp6X7d5pfbvNc19qK
+ X2opewp6X7d5pfbvNc19qKX2opewl6X7d5pvt/mub+1FN9qKHsqel+3+aX27zXNfaim+1lL2VPTfb/NP
+ 9v8ANcz9rKcZRQOFBem+3+aX27zXNfail9qKb7K16X7d5p/t48VzP2spvtZS9lT1Izx4pHqA8Vy32spv
+ thTvZU9DbnT3WdflSs12USgutJThhZYprbZVculRJJTgI+yzhm0qxW6FXARBol7KC6VV0K9VlwsIPIT+
+ uQl7LGXpG53mpfb/ADXM/ail9rKXssZel+3+ab7d5rmvtRS+1FN9lY9N9u80vt3muZ+1FL7UUDhU9N9u
+ 80vt3mua+1FL7UU32UvS/bvNL7f5rmvtRS+1FL2Vpel+3+aX2/zXNfail9qKXsrHpft3ml9u81zX2opf
+ ail7LJF6X7d5pfbvNc19qKX2opeyyvS/b/NL7f5rmvtRS+1lD2WMvTfbvNL7d5rmftRT/ail7Ky3pft3
+ ml9u81zf2opfail7LIC9L9u80vt3mub+1FL7UUvZX29H9u80vt3mub+1FL7UUfZYZF6T7d5pvt3mub+1
+ FL7UUfZY7ek+3eaQzvNc19qKX2ope0uBem+3+aDbmz3XP/aimOSSj7LLEt/Iv3LNtdKTrSUM6pey3cbB
+ FY6FDanAKXssxbVdkK5VfCygSERthCXssUnfqy4VhubHdc4LyFL7SUvZa03ojn+aj9v81zhyiofail7L
+ UkXpxn+al9v81zAyinGUUvZWAvTfb/NN9v8ANc39qKb7UUvZbMS9J9u80vt3mua+1FL7UUvZXEvS/bvN
+ P9u81zX2opfail7DGXpft/ml9u81zX2opfaij7Cg9L9v80/27zXM/ain+1FD2F4el+3DxS+3ea5r7UUv
+ tRQ9hL0v2/zS+3+a5r7UUvtZQ9hD0v2/zS+3+a5r7WUvtZS9lBel+3+aX2/zXNfayl9rKXsrC9L9v80v
+ t/mua+1lMcspeyh6X7ePFL9oDxXMHLKgcspeyl6odRHipDqI8VyX2wpxmFL2VweuHUB4pjn+a5UZhUhl
+ lH2mUPQW5s91nX5EqgcklQdYSj7S5Vr5VcohBKbYj7S5ZphHZZCDtTGQj7SC6VWRCvVZkLn/AFCFIZBC
+ XtLS9UzP80T7f5rlRllSGWUPaWF6c5/mm+3ea5r7UUvtRQ9pZb0v27zS+3ea5r7UUvtRS9pVvS/bvNL7
+ d5rmvtRS+1FL2lW9L9u80vt3mua+1FL7UUvaVb0v27zS+3ea5r7UUvtRS9pVvS/bvNL7d5rmvtRS+1FL
+ 2lW9L9u80vt3mua+1FL7UUvaVb0v27zS+3ea5r7UUvtRS9pVvS/bvNL7d5rmvtRS+1FL2lW9L9u80vt3
+ mua+1FL7UUvaVb0v27zS+3ea5r7UU/2ope0q3pPt3ml9u81zf2opfail7Srek+3eaX27zXN/aim+1FL2
+ lW9L9u804zvNcz9qKX2ope0q3qBn+ai/Onuua+1lI5RKXtKt1cjK3LIvfuUXXEoZMoHEzwRFEYYUdqeE
+ 322VtMshW6r4WXJCcWEI+2tL0FWXCtszgO65cZBCn9rIS9pYXqf2gPFMeojxXKnMKh9tKPtLC9aOojxT
+ /tAeK5MZhUxllL2VhepOf5qJz/Nc19rKY5RR9ha9Gc7zTfbvNc4copvtRS9hD0oz/NSGePFcx9qKX2sp
+ fd1PUfb/ADS+3+a5j7WUvtZS+7qen+3+af7f5rl/tZT/AGspfd0vT/b/ADS+3+a5j7WUvtZS9hL0/wBv
+ 80vt/muY+1lL7WUvYU9P9v8ANL7f5rmPtZS+1lD2VPT/AG/zTfb/ADXM/ayl9rKXsqem+3+aX2/zXM/a
+ yl9rKXsoem+3+ab7f5rmftZTHLKHtLSXqP2gPFP+0R4rlPtZS+2FL2lAvWftEeKX7Q81ygzCpDLKXtM8
+ S9I/NnuqF+TKzPtRKg64lL2mUFlfZKpO1RnGVDYj7S5g1Wa3QhBimBCXtKLequhX6sqFiBxCkLiEvZYi
+ XpGZsd0UZ/muX+1EJ/tZS9ljJemOf5pvt/mua+1lL7WUfZWEvS/b/NL7f5rmvtZS+1lL2VW9L9v80vt/
+ mua+1lL7UUfYVb0v2/zS+3ea5r7UUvtRS9hNvS/bvNL7f5rmvtRS+1FL2E29L9v80vt3mua+1FL7UUfY
+ Vb0v27zS+3ea5r7UUvtRS9hFvS/bvNL7f5rmvtRS+1lL2EW9N9v80vt/muY+1FL7WUPYRb0/2/zS+3+a
+ 5j7WUvtZS9hcC9P9v80vt/muY+1FL7WUPYZXp/t/mn+3+a5j7WUvtRS9ljkXp/t/ml9v81zH2spfayh7
+ LCS9N9v8032/zXM/aym+1lD2kgvUDqHmk7qHmuX+1lN9rKXtLwXdvzNyysi3cqxyCVEuLkvabmMon6pm
+ 6IhZKjshL2m0lY+FarvhZ+oTh5CXtMcndpyoV6vNjuuXbeQijKIR9lgk9UM8eKc9QHiuW+1lROYUvZak
+ y9V+0B4p/wBoDxXKDMKcZZR9lgep/aHmmOf5rmPtZS+1lH2GaJelOf5pvt/mua+1lN9qKX3dmt6YZ/mp
+ DP8ANcx9rKf7WUvYWF6f7f5pfb/Ncx9rKX2so+wten+3jxS+3jxXMfayl9rKHsLw9P8Ab/NL7f5rmPtZ
+ S+1lL2Fz0/2/zS+3+a5j7WUvtZQ9hD0324eKf7ePFcx9rKX2soewp6f7ePFL7f5rmPtZS+1lD2Vhen+3
+ +aX28eK5j7WUvtZS9la9P9v80vt/muY+1lL7WUPZS9N9vHil9vHiuY+1lL7WUfZSHqPt48Uvt48Vy32s
+ qQyyl7TKHpXZ091UuypWN9qJTG8lH2l4TX2yqFmqK50oZbKPtLkQCsVmFAMUgIS9pTcqthXqsmFjh0KQ
+ uIR9paXomZkd0YZ3muZGSQn+1lH2lhen+3+ab7f5rmftZS+1lN9ljL0327zS+3ea5n7WUvtZS9lT0327
+ zS+3ea5n7WUvtZQ9lT0327zS+3jxXM/ayl9rKXsqem+3eaX27zXM/ayl9rKHsqem+3eaX27zXM/ayl9r
+ KXsqem+3eaX27zXM/ayl9rKHsqem+3eab7f5rmvtZS+1lL2VPS/b/NROd5rnPtRS+1FH2VPRHO80327z
+ XOnJKY5RS9lT0f27zTjO81zX2opxlFH2VPTfbvNI53mubGUU/wBqKPsqeh+2+aX23zXO/ail9qKd7Kno
+ xm+al9t81zQyipDKKPsqehOb5oFmZ5rFOSUJ2QUvZQ6duTKpW2SqpuJTgkpeyyQYv1QlYLZQyxN9lshn
+ U+FpUZELIAIRW2EJeytL0VebHdF+3+a5z7QQonKKHssRL0wz/NFbn+a5MZZUxllL2WIl6z7ePFMc8eK5
+ f7YUjmFL2WMl6b7ePFL7d5rmPthTjLKHsot6b7d5pjnea5v7WUvtRS9lVvSfbvNL7f5rmvtRTfayl7KQ
+ Xp/t/ml9v81y/wBrKX2soeyvBeo+3+ab7f5rmPtZS+1lL2VwL0/2/wA0vt/muY+1lN9rKPspt6j7f5pv
+ t/muY+1lL7WUvZVb0/2/zS+3+a5j7WUvtZS9lbb0/wBv80/2/wA1y/2spfayl7K0l6j7f5pfb/Ncv9rK
+ f7WUfZRb1Azx4p/t48Vy/wBrKX2wo+yuD0xzx4qJz/NcycsqP2speyl6j7f5ob82e650ZRT/AGkpeyud
+ W7JlUbLZVY3EqG+UvZSE+5IlDBTlL2Vyi+FJl0Ku+ULcQl7KncoyoWlVmx3XKstIVhuSQh7KnqRnjxSO
+ ePFcx9rKicwpeyp6j7ePFL7ePFcv9sKf7WUvZQ9P9v8ANL7ePFcx9rKX2speyten+3jxS+3jxXMfayl9
+ rKXsoen+3jxS+3+a5j7WUvtZS9lD0/28eKX28eK5j7WUvtZS9lD0/wBvHil9vHiuY+1lL7WUvZU9P9vH
+ il9v81zH2spvtZQ9lL1H2/zS+3jxXL/aypDLKXsqel+3eaX27zXN/ayl9qKPsoeiOd5pvt/mudOUVE5R
+ R9lT0f27zTjO81zX2opxlFL2UvTDN81IZvmuaGUVMZRS9lL0X23zTHN81z/2oqDsopeyuegOf5pfb/Nc
+ 0copvtZS9lL0b82e6oX5MrMOSShuuJS9lKS6yVX5TEkqTQl7KkrFZY+FXaFKYS9lTfZfCtV5cLENhCXr
+ kJeyh6Nmb5owzvNcwMkqYyil7Knpvtvml9tHiucGUUvtRS9la9Cc0eKj9u81zxyioHKKHsoek+3+aX7Q
+ 81zByym+1lH2UPVDqHmpDP8ANcqMwqYyyh7KHp/t3mmOd5rm/tZTHLKPspekOf5pvt/muaOWU32oo+ym
+ 3pvt/ml9v81zP2sp/tZS9lBL0v2/zS+3+a5r7WUvtZQ9lbb0v2/zS+3+a5r7WUvtZS9lFvS/b/NP9v8A
+ Ncz9rKX2speyi3pft/ml9v8ANc19rKX2speykF6X7f5pfb/Nc19rKX2speyvBem+3+af7f5rmPtZT/ay
+ l7LIC9OM/wA0xzvNc0MspHLKXsrw7783zVO3LlZLskoRvJS9lc37L5VR75QfUJS5S9lTF6ZhhSLU22Ev
+ ZQW9j2QtWjJhYDHQjtvIS9lYXpW5sd0jnea537UQoHLKXssZL0n27zS+3ea5n7WU/wBrKXsrbel+3eaX
+ 27zXNfail9qKHsot6X7d5pfbvNc19qKf7UUvZVb0v27zS+3ea5r7UUvtRS9lIL0v27zS+3ea5r7UUvtR
+ S9lfb0v27zS+3ea5r7WUvtZS9lNvS/b/ADS+3ea5r7UU32speyp6b7f5pfb/ADXM/ayl9rKXsrSXpvt/
+ mmOd5rmvtZS+1lL2VpL0hzvNN9t81zn2op/tJS9laS9GM3zUhnea5v7UUvtZS9lFvS/bh4pfbh4rmftZ
+ THLKXspt6Y548U328eK5k5ZUTllL2VwL0/2/zUhn+a5b7WU4yyh7LIC9Qc/zVe3MnusH7WUxyCUvZZQ3
+ rsiVSe+UE2EpgZS9llCSUpTAJij7KJM2vhW6b4WaTCdthCeMLVk9FTlwrbc7zXMNvIU/tRS9la9Kc/zT
+ DO81zRyinGUUPZS9N9t80xzfNc6MopHKKHsqd85vmonN81z5yionJKHsqei+3eakM/zXNfaSnGSUPZQ9
+ MM/zT/bvNc0Mkp/tRQ9lT0f23zTjO81zn2opvtRS9lT0328eKX28eK5j7WUvtZQ9lT0/28eKb7f5rmft
+ ZTfayl7KHp/t48Uvt/muY+1lL7WUfZU9P9vHil9vHiuY+1lL7WUvZU9P9vHil9vHiuY+1lL7WUfZU9P9
+ vHil9v8ANcx9rKX2so+yp6f7ePFL7ePFcx9rKX2speyh6gZ48VIZ48Vyv2sp/thS9lcHqvt48VB+ePFc
+ z9sKY5ZKXssgdq/MlZORduVd2QSgueSj7K8LP1KdjUg2UZrEvZXM2GFZZdtVYiEJzyEPZWl2K8uFcrzv
+ Ncv65Cm3KKPssRetbnjxU/tw8Vyrcsqf2soeysL0xzh4qJz/ADXNHLKicspeytem/aHmn+3+a5b7WU/2
+ speyuD1H2/zS+3jxXMfayl9rKXsr3p/t48Uvt48VzH2spfayl7KHp/t48Uvt/muY+1lL7WUvZQXp/t48
+ Uvt48VzH2spfayl7KwvT/bx4pfbx4rmPtZS+1lL2UPT/AG/zS+3jxXMfayl9rKHsrw9P9v8ANL7f5rl/
+ tZT/AGspeyven+3eab7d5rmhllP9rKXspek+3eaf7d5rmvtZS+1lL2VPTDO80vt/muZ+1lI5ZS9lYXpT
+ njxTfbx4rmDllR+2FH2Vr1X28eKi7OnuuZGYVL7WUvZS7duXKpW3ys85BKibSUvZXxbD7JVV5lPJKYiU
+ fZbcEBCNUYKRYmiEvZXy2dTHv2rSqzYHK5sWlqkMohL2WnN6j7f5pjnea5n7WU/2speyxvS/bvNP9u81
+ zX2op/tRQ9lL0v27zS+3ea5r7WUvtZS9lT0n27zS+3ea5r7WU32speytL0v27zS+3ea5r7WUvtZQ9lD0
+ v27zS+3ea5r7WUvtZS9lc9L9v80/27zXM/ayl9rKXspem+3eaX27zXNfayl9rKPspt6X7d5pfbvNc19r
+ KX2opeygl6X7d5pfbvNc19rKX2speywkvS/b/NL7d5rmvtRS+1lL2VAvS/b/ADS+3ea5r7WUvtZS9lkB
+ el+3eaX27zXNfayl9qKXspt6X7d5pfbvNc19qKX2speyi3pft/mkc/zXNfayl9qKXspBd+zOnuqN2VKz
+ DkkobrSUvZZAU9tsquTKhuJUgEvZZAunDoShRIS9llDZrthX6cuFi7iE4uIS9lZJ6mrOjurTc8eK5FuU
+ QijMKXstcvV/bx4qJzx4rmPthTHMKHsot6Y548VH7f5rmfthS+1lH2VW9N9u80vt3mua+1lL7UUfZU9L
+ 9u80327zXN/ail9qKPsIek+3eaX27zXN/ayl9rKXsKek+3eaX27zXNfayn+1FD2FPSfbvNL7d5rm/tRS
+ +1FD2EPSfbvNL7d5rm/tRS+1FD2FPSfbvNL7d5rm/tRS+1lD2VPSfbvNL7d5rm/tZS+1lL2VPSfbh4pf
+ bvNc19rKb7UUvZU9N9v80/27zXMfayn+1lL2UvT/AG4eKX27zXM/ayl9rKPtJem+3eaY53mub+1lL7UU
+ faXPRHN80CzMlYn2oqDsklL2kt6/IlZtr5UX2koRJKPtJWlGrKCGlFaCEfaS3arIV2rIhZIJCmLSEvaU
+ 7zMuEcZ3mub+0EJfaigcLGXp/t/mmOf5rmftZS+1lD2Vr0v2/wA0vt/mua+1lL7WUvZU9L9v80vt/mua
+ +1lL7WUvZU9L9v8ANL7f5rmvtZS+1lL2VPS/b/NL7f5rmvtZS+1lL2VPS/b/ADS+3+a5r7WUvtZS9lT0
+ v2/zS+3+a5r7WUvtZS9lT0v27zS+3ea5r7WUvtZS9lT0v27zS+3ea5r7WUvtZS9lT0v27zS+3ea5r7WU
+ vtZS9lT0v27zS+3ea5r7WUvtZS9lT0v27zS+3ea5r7WUvtZS9lT0v27zS+3ea5r7WUvtZS9lT0v27zTj
+ P81zP2spfayl7Knpjn+aBZmz3WB9rKicklL2Uh1rMmVWdbKo+uSpB8p3tMoTudKA8qfKg4FL2kow6FZq
+ uhU3AhRDyEPaQ79OXCuMzvNcu28hFGUUvaQ9P9u80vt/mubGUUvtRQ9pa9J9v80vt3mua+1lL7WUPaQ9
+ N9u80/27zXMjLKf7WUPZQ9L9uHim+3ea5v7WUxyyl7K16T7f5pvt/mua+1lL7UUvZU9L9vHil9v81zX2
+ spfail7Knpvt3mm+3+a5r7WUvtZR9hD0v2/zS+3+a5r7UUvtZR9hT0327zS+3ea5n7WUvtZS9hL0v2/z
+ S+3+a5r7WUvtZTvYVb0v2/zS+3+a5r7WUvtRS9hT0327zS+3ea5n7WU/2ooHAp6X7d5pfbvNc39rKX2s
+ pnsqt6UZw8VIZw8VzH2spfayl7KrepGePFRdn+a5n7YVE5ZR9lVu5fmz3WZfkSqLsklCNhKXss0Eznyk
+ EJslGa1L2WdkFNroUYUCYS9lYW/VdC0KsuFz4shTGQQj7LEXp253mpfb/Ncz9qKY5ZS9ljJem+3+aX2/
+ zXMfayl9rKXsrben+3+aX2/zXMfayl9rKHspt6f7f5pfb/Ncx9rKX2speyq3p/t/ml9v81zH2spfayl7
+ Kwl6f7f5pfb/ADXMfayl9rKXsrLen+3+aX2/zXMfayl9rKHsssS9P9v80vt/muY+1lL7WUvZZLen+3Dx
+ S+3ea5oZZT/ainDCh6T7d5pfbvNc19qKX2sp3sqel+3eaf7d5rmftZT/AGsoeyp6X7d5pvtw8Vzf2spf
+ ayh7Sno/t3mm+3ea5s5ZTfayl7SXpvt3mn+3DxXMfayl9rKHtqen+3eaX2/zXM/aym+1lN9tL0rs7zVH
+ Iy5WOcsoT8glAwUnus3FNSJKqh+4q7jCSmGKnawm8Lfo4WLht4W3TwoyFNkJpSTSmJZSkoylKCF1EqSY
+ ppQwKZSKZNJUoJwmAUgm2pSdJJG1LJJJJylJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6SKlkk6SSlk6SSSlJJJJKXSTJ0lLJJ0ySlkk6Z
+ BSk6SSSlJk6ZJSkkkklLqLlJRckprWKuVZsVcpKZsVqtVWK1WkpMEkgkUlLJk6SSlkk6SSlkk6SSlk6S
+ SSlJJJ0lLJJ0klLJJJJKWSTpJKWSTpJKWSSSSUpJJJJS6dMnSUoqvYrBVexJTVeotUnpmpKbFasNVetW
+ GpKZJk6ZJSk6ZOkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//9Pr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu
+ 5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJ
+ JJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT
+ FSCUKQCcEsXKjkjRaDgqOQE4JcHLYsi6tbeUsywSnhDnGtL0yrorlFGPKkCnM9Mp/TK1RiqX2RSgocj0
+ ymLCtc4iicRSghTkFhTemVr/AGROMRSCQQ5AqKf0itkYac4ikEgpxfSKXpla5xE32VP4ghyfTKXpla32
+ VP8AZUeMKcn0yl6ZWt9lS+yocYU5PplL0ytb7Kn+ypcYU5HplL0ytf7Km+yocQU5HplL0ytf7Kl9lS4g
+ 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
+ l7Cn9MrUGIpDER4gpyfTKb0ytn7GmOGlxBNON6ZU21LTOLCh6UJcQZYNVlSsNrUw0BTEJcQZ0RYgvYrZ
+ QiJSsLC0ixR2FXhVKm3HlHiDGXO2FN6ZWsMRP9kS4gxFx/TKXpla/wBkS+yJcQWuR6ZS9MrX+yJfZEOI
+ Kcj0yl6ZWv8AZEvsiXEEuR6ZS9MrX+yJfZEuIMZcj0yl6ZWv9kS+yJcQW05HplL0ytf7Il9kQ4gyxcj0
+ yl6ZWv8AZEvsiXEGRyhWU+wrV+yJ/sqdxBTkFhTFhWucVR+yJcQU5Wwp9hWp9kT/AGRLiCnL2FLYVqfZ
+ UvsqbxBTklhUSwrXOIonEQ4glydhS2Fav2RL7ImkhTl7ClsK1fsiX2RNJCXK2FRLCtc4iE/HhMJCmgxi
+ 0sUaqtsgq1jmCoyUu7iBbFXCx8MrYq4UElJ1ElOoEpil5TgqKcIFDJJJJMKlkydJMKFk6ZPKapdJJJIK
+ WSSST1KSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkk6Slkk6ZFSkkkklKSSSSUpOkkkpSSSSSlJJJJKWSSSQUpOmTpKUmTpklLJ0kklLqLlJRckpr
+ WKuVYsQCkpkxW61VYrTElJgkUgkUlMUk6ZJSkkkklKSSTpKWSTpJKUkkkkpSSSSSlJk6SSlkk6SSlkkk
+ klLJJ0klLJ0kklKUgmThJSxQLEcoFiSmo9M1SeotSU2a1Yaq9asNSUuknTJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ p//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSl
+ kkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdi
+ AEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSKQUpEahSiMKfSWThoqGVoFoHhZuYdEgpw
+ st3KzXOkq5mO1Kzd2qeENyoSr9VUqnjCVsY9cp1qYsx0QYyu11IwqR4lOYcZROMtU1KBqR41OZ9mTjGW
+ j6aXpo+4VNAY6Rx1f2JbEfcKnNOOm+zrS9NL0kvdKnN+zpfZ1pekl6SXulTm/Z0vs60vSS9JL3Spzvs6
+ X2daPpJekl7pU532dL7OtH0kvSS90qc37Ol9nWl6SXpJe6VU5v2dL7OtL0kvSS90qc37Ml9nWl6SXpJe
+ 6qnN+zpfZ1p+kl6SHup4XM+zp/s60vSS9JL3VcLnjHTnGWiKk5qR91VOPZRCo3Nhbl9cBZGU2EfdKdnM
+ sfCAbU95gqoXao+6U22xYisdKoscrVRR9wqtvVtlXK6ZVfHbK1aK5S90oRNx1L7MtFlSn6SHuopy/syX
+ 2ZaRqTekl7qKc77Ml9mWl6SXpJe4qnN+zJfZlpekl6SHuIpzfs6X2daXpJekh7hVTm/Z0vs60vTS9ND3
+ Cjhc37Ol9nWl6aXppe4U05v2dL7OtL00vSS90qc37Mm+zLT9JL0kPcKC5n2ZP9mWl6SXpJe4inN+zp/s
+ 60fSS9NL3Eud9nS+zrR9JL0kfcS532dN9nWl6SXpJ3uKpzfs6X2daPpJekj7iuBzvs6cYy0PSUhUh7ie
+ Fz/syFZRAWx6SrX16JDImqeeyG7Vm2vha+a2Fg5Jgp3GvEqV6yMy5Zu7VGrJR4ynjLpsfKtVarPqWljt
+ Q4ytMm3XVKsNx5UqGLQZUh7i06uf9mTfZlq+imNSb7qwxtzBjqX2daHpJ/SQ90o4XO+zpfZ1o+kl6SXu
+ lLnfZ0xxlp+kl6SXulTlnGUfsy1DUm9JH3SmnM+zJfZlp+kl6SPulVOZ9mS+zLT9JL0kvdKXM+zpfZlp
+ +kl6SHulTm/Zk32ZafpJekl7qHM+zJfZlp+kl6SXuKcz7Ml9mWn6SXpJe4inM+zJfZ1p+km9JL3EU532
+ dOMdaHpqQrS9xNOd9mS+zrT9JRNSXuLqc37On+zq/wCkpCpH3FzlPx4VG9u1b1teixc0Qj7hS5VtkIHr
+ oeS6CqfqGUuMpdNtsorXys6t6t1lHjKW6wSrddUqrQJWpQyUfcKaUyiUUYyt11o4qTTkWkOacdN9nWma
+ k3ppnuFiIc37Ol9nWl6SXpJe4UOb9nS+zrS9JL0kvcKHN+zpfZ1pekl6SXuFDm/Z0vs60vSS9JL3Cpzf
+ s6X2daXpJekl7hU5v2dL7OtL0k3pI+4VOd9nTfZ1pekm9JD3Cuc77On+zrR9JOKkvcKac77Ml9mWl6Sf
+ 0kvcTTmfZ032daZqUTUl7hVTm/Z0vs60fSS9JL3CmnO+zp/s60RUnFSPuFVOd9mT/ZlpekkKkPdRTnfZ
+ lB+PC1xUg21aJe6VU8/fXtWZc6FuZjIXP5RhO42aAQm2FNlyoPfqp1uR4mV1GPlWa9Vn1FaNAlDjWltV
+ 1yrLceUqGLQrrS41haYxUvsq1G1KXpIe4sIcsYykMdaPpJvTS91jLQ+zpfZloCtP6aHurXNOMonGWp6a
+ Y1o+6UOX9mS+zLT9JN6SXulTm/Z0vs60vSS9JL3Spzfs6X2daXpJekl7pS5v2dL7OtH0k/pJe6Uub9nT
+ /Z1o+kl6SHulTnfZ032daXpJekl7pU5v2dL7OtL0kvSS91Tm/Z0vs60fST+kl7iqc37OmOOtP0kxqR9x
+ FOYcdL7OtE1JCpH3FAOeMdP9mWiKlMVIe4yAOQ/GVS6rat6yrRZeWyEeNkDiXHaqjrkfKMLMsfqjxle3
+ G2o7Hystj1dqclxlTo16q0yuVVo1WlS2UvcK2lNolEGOrddaO2pL3Fpi532ZL7MtT0kvSQ91jMXL+zJf
+ Zlp+kl6SXuracv7Ml9nWn6SXpI+6VrmfZ0vs60/STekh7pU5v2dL7OtL0kvSS90pc37Ol9nWl6Sf0kPd
+ K6nN+zpfZ1pekl6SXvFdTm/Z0vs60vSS9JL3Sghzvs6f7OtD0lIVJe6VlOb9mT/Zlpekl6SXulIcw46Y
+ 460zUompL3Suc30E3oLRNSb0kvcKqaHoJfZ1oCpOKkvcKOFz/s6X2daPpJekl7ieFzvsyZ2MtQVKL6kP
+ cXcLh21Qs647VuZTIWBlmEeMrgaa7roSbcqNj9UzHpca7jdZlkqzXqs2p0rRo1S4ygybldcq0yiVGhq0
+ KmJe4sJav2ZI4y0hUnNSXurCHL+zpegtE1KJrR91bwuf6CX2dX/TUhUl7pVVOb9mTfZlqekm9JH3Sq3M
+ +zJfZlp+kl6SHulDm/Z0vs60vSS9JD3SpzPs6X2dafpJvSS90ptzfs6X2dafpJekl7pVbmfZ0vs60vSS
+ 9JL3Sm3N+zpfZ1pekl6SXuFTm/Z0vs60/STekh7hU5v2dOMdaPpJxUj7hTTnjGT/AGZaIqT+ml7iac04
+ 6b0FomtR9NL3E00PQT/ZlfFSmKkfcSHLdiqtbRC3XVKhksgJDIucG72qi+2FezNFjXO1TuNNtgXIrHys
+ xr9Vcpcjxqt0axKt11SqtGq06GSlxlSmUSjDGVqqtWW1IHIghz/sqX2VagqS9NRnKWMhy/sqX2Vanppe
+ kl7pQ5f2ZL7MtP0kvSS90qcv7Ml9mWp6ab0kPcKnM+zJfZlp+kl6SPuFTmfZkvsy1PTS9NL3Cpy/syX2
+ ZanppvTS9wqcz7Ml9mWn6aXpJe4U05v2ZSGMtEVKYqS9xVOX9lTHFWt6SiakvdVTkHFTfZVqmpL0kfcV
+ Tl/ZUvsy1fSTGpL3VU5Rxk32ZanpJekj7pVTmDFUhiLUFSl6SHulVOScZV7KIW4+pUb60fdKKcaxkKq8
+ wtC9sLMu0TvcLJFE+2EA5CHc9U3PMo8ZZw6tV0rSx/csDHeSVv4WsJcZQXSqolG+yo+OyQrgrCYchWEO
+ WcVN9mWoa0xrQ90rDFy/syb7KtT0k4qS91YYuV9kS+yrW9JL0kvdRwuV9lS+zLU9JN6SHuFHC5v2ZL7M
+ tL00/ppe4U8Lm/Zkvsy0vTS9NL3CqnN+zJfZlpeml6aXuFLm/Zk32Zafppeml7hU5n2ZL7MtP00vTS9w
+ qcz7Ml9mWn6aXpo+4UU5n2ZL7MtP00vTS9wopzPsyX2Zafppeml7pRTm/Zkvsy0vTT+ml7pU5f2ZN9nW
+ ma03pI+6VOacdDfQtb0kGypH3VwcO2qFTeIWtkMhZV+iXuFkCHdCf1EBzlEuS9wrwGx6iKx0qiHK1SZS
+ 9wpp0aWSrrKJQMVsrWpr0Q90opp/ZlE4q1hUompD3UU5Yxk/2ZaXpJ/SS91YXM+zJfZlp+kl6SXurC5n
+ 2ZL7MtP0kvSS90rbcz7Ml9mWn6SXpJe6UOZ9mS+zLT9JL0kPdKXM+zJfZlp+kl6SXulIcz7Ml9mWn6SX
+ pJe6V1OZ9mTHGWp6SXpJe6U05X2VN9mWr6Sb0kfdKKcwYykMZaPpJxWj7qqc/wCzJjirTFaf0wh7pVTk
+ nES+yrV9IJGoJe6UuX9mS+zLT9JN6aPulTmfZU4xVpipS9JL3VOQ7GhVLmbVuWsgLHzNEfcKnKuftVU3
+ JZT4We63VL3Cp0W2yrDDKy6rFfpdKXuFTfrZKtMplBoErSpYl7hUjbjKYxleZWjCpA5SpzPsyX2daZqU
+ TWl7pU532dL7MtD004rS9wqc/wCzJvsq0xWn9ND3SinJOIonEWwalE1Je6VU5H2VOMVanpJekl7pVTmj
+ GS+zLT9JL00PdKnM+zJfZlp+kl6SXulVOb9mS+zLT9JL0kvdKKcz7Ml9mWl6aXpo+6UU5v2ZL7MtL00v
+ SS90opzfsyb7MtP00vSS90ppzPsyX2ZafpJekl7pXU5v2ZL7MtL0kvSR90rnO+zKJxlqekmNSXupcd+O
+ qtlULbsqVC9kI+4Vzk2CFWe+FbyBCzLnQj7hSydembdKoPsT1P1S9wodqk7loU07lmYhlb+KyUvcKKYt
+ xlL7KtJlWimakPdVwuV9mT/Zlpekl6aXulaYud9mT/ZloCtS9ND3WIhzfsyX2ZafppvTQ90rHN+zJfZl
+ pemn9NL3V4c37Ml9mWl6aXppe6Vwc37Ml9mWl6aXppe6vpzfsyb7MtP00vTS90ppzPsyX2Zafppeml7p
+ RTmfZkvsy0/SS9JL3StIcz7Mn+zLS9NL00vcKwhzfsyX2VaXpp/TS9wqpy/sqb7KtX003ppe4VU5f2VP
+ 9mWn6ab00vcKQHM+zJ/sy0fTTipD3CyAOYcZVraIW46tUMlkBH3Cyhw7RCqOfCuZWiy7H6pe4WQJw9Pv
+ VQPUw9L3CqTaa5XKWys2ty08XVL3S1ZN+qiVYGMiYzJCvtrS90rXLOMo/ZlqurUPTS90pc77MkcVaYrT
+ +ml7pU5X2VOMVafphL00vdKnPGMl9nWj6aYsS9wqc40JfZ1eLE4Yh7hQ0PsyY4q0wxL00vcKacs4yb7M
+ tM1pvTS9wqpzfsyX2ZaXpJeml7iqc37Ml9mWl6aXppe4VU5v2ZL7MtL00vTS9wqpzfsyX2ZaXppemj7h
+ RTm/Zkvsy0vTS9NL3CqnN+zJfZlpeml6aXuFVOb9mT/Z1o+ml6aXupAc/wCzpjQtH01F7EfcK9xrqoWZ
+ fotzJbAWFlmE7jKLabrYTsuVO1+qix6XuFVusyyVZYJWdS6VpUCUvcKrbDKpVhtClSxXq60PcK1p/Z0x
+ xlpipI1Je6qnMGMpjGWgKlIVoe4UU532ZI4y0vTS9ND3FU5n2ZL7MtL00vTS9wqc37Ml9mWl6aXppe4V
+ Ob9mS+zLS9NL00vcKnN+zJfZlpekl6aHuFVOb9mS+zLS9NL00vdKKc37Ml9mWl6SXpJe4U05v2ZL7MtL
+ 0kvSS90pcs4yb7KtT0kvSS9wocv7Kn+zLT9JP6Sd7inL+zpfZ1pGtRNaXuIc77Ol9mWiKlIVJe4mnN+y
+ pHGWr6Sg6pL3U05D6IVZ7IWvbWs69qd7hSHPeYVWy2FYvWdcUvcK8SpkbkSp8rPLtVaxzJS9wp43XoZu
+ WjXjSFVwmytyivRA5Fm7T+ypvsy1fSUTUh7pVTmfZkvsy0/SS9JL3UU5n2ZN9mWn6SXpJe6hzPsyb7Mt
+ P0kvTQ9wopzPsyX2VafpJ/SQ9wopy/sqX2VanpJ/SQ90qcr7KnGKtT0kvSS90qc0Yyf7MtL0kvTR90rw
+ 5n2ZL7MtP003po+6VEOb9mS+zLS9NL00vcKwxcz7Ml9mWl6aXpo+4VtOb9mS+zLS9NL00vcKnN+zJfZl
+ peml6aXulLm/Zkvsy0vTS9NL3FwDnDGUxjK+K1P00DlK8ByX48KheyFv216LGzBEojIyAOPaYQfUT5Bg
+ qmX6p3uFfTdFicWKkHqQelxlLo1ulX6GbllUGStrEbKByFBDarx5Rfsyt016Kx6aYcpYyHKOMoHFWq6t
+ R9NH3CsIco4qb7Ktb0k3pI+6scsYyf7MtP0kvSS90oc37Ml9mWn6Sf00vdKnL+zJfZlp+kl6SHulTmfZ
+ kvsy0/SS9JL3SpzPsyX2ZafpJekl7pU5n2ZL7MtP0kvSQ90ppzPsyX2ZafpJekl7hVTmfZkvsy0/SS9J
+ L3CmnN+zJfZ1pekl6SXuFNOacdROMtP0k3pI+4qnM+zJfZVqCpP6SXuJpyvsqb7MtY1KPpIjImnM+zKD
+ saFrekhWV6IjImnCtq2qja7atbLELCynQniaVjfCk26Vmvt1U6rE7iU6zHSrddcrPxzK2MdspcSmTMeU
+ duMrNVatNrUUshWFz/syRxlp+kkakz3Stpy/syX2Zafppeml7hVTmfZkvsy0/TS9NL3CqnM+zJfZlp+m
+ l6aXuFVOZ9mS+zLT9NL00vcKqcz7Ml9mWn6aXppe4VU5n2ZL7MtP00vTS9wqpzPsyX2Zafppeml7hVTm
+ fZkvsy0/TS9NL3CqnM+zJfZlp+ml6aXuFVOZ9mS+zLT9NL00vcKqcz7Ml9mWn6aXppe4VU5n2ZL7MtP0
+ 0vTS9wqpzPsykMZaPpqQqS90qpyzjIFmOtp1SrW1ojIVBwrKYVciFp3shZ1uimE14YF8IbrkKx8Kq+xL
+ iS3PVlGr9yzGWSVpYplDjQ3qqJVpuMiYzJV9tSacinP+zpvQWkak3pIe4inO+zpxjLRFSkKkPcVTnDGT
+ /ZlpCpL0kPcRTmfZkvsy0vSS9JD3CqnO+zJfZlpemn9NL3CinM+zJfZlpeml6aXuFVOb9mS+zLS9NL00
+ vdKqc37Ml9mWl6aXpo+6VU5v2ZL7MtL00vTS90opzfsyX2Zafppeml7pVTmfZkvsy0/TS9NL3SqnM+zJ
+ jjLT9NL0kvdKqco4yb7MtU1JvSS9xDmDGUxjLQFSmKkvcSA54xUzsVaoqTPrQ90rxFwLqIWdcNq3spkL
+ By9E/wBxkAajrITC1VrH6qAejxle3fUTgyqoejVlLjKC3amSr9VEqrjCVsY7JS9wrCEbcZS+zLRZUpGp
+ N91YQ5f2ZL7MtL0kvSS91YQ5v2ZL7MtL0kvSS9xYXN+zJfZlpekl6SXuIc37Ml9mWl6SXpIe4hzfsyX2
+ ZaXpJekh7pTTm/Zkvsy0vSS9JD3CvAc37Ml9mWl6SXpJe6Uub9mS+zLS9JL0kfdKHM+zJfZlp+kn9JH3
+ UW5f2ZL7MtP0kvSS91LmfZkvsy0/SS9JL3Cly/syX2VanpJ/SQ9xLlfZUvsq1vSTekl7iXJ+ypDGWoak
+ vSS40uU7GVO+mFvvqWbl1wEOJTz1ogpUO1U8kQUGk6oGSXoMJy3KeFgYPZb9A0TCVJSoFEIQyE1C4Ukw
+ UkFKSTEppTSpdMUpTFNQqUgUycIUhkE6YBOkpSZOUycpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkipSSSSSlJJJJKUnTJJKXSTJJKXT
+ JJJKXTJJIKUkkkkpSSSSSlJJJwkpSi5TUXJKatiAVYsVcpKZsVpiqMVtiSkwTFIJFJSkydMkpSSSSSlJ
+ JJJKUkkkkpSdMkkpdJMkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXThMnSUoqvYrBQLElNR6Zqd6ZqSmxW
+ rDVXrVhqSmSSSSSlJk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//V69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHK
+ vYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTp
+ klKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Sl
+ kxUkyQUxU2KMIjApOimR4WZmnRahGiys3hAJeazTqVntOqvZp1KoMOqeEOriBb2M3RYeEt/GGiKm4wIo
+ CixECYUsSFGEQhNCVqREJiEbaolqNoQwnAUy1LakpYBPtUgE8IJYbUtqnCSSmG1LappJKYbUtqmkkpht
+ S2qaSSmG1LappJKYbUtqmlCSmG1PtUkklBjtT7VJJJex2pbVJOgpYNSIUgmKSGneNFiZYW5fwsTLUgU4
+ WQNVRdytDJ5VB3KchdiuUKk0q7QUVOtjBbOOFj4pWzjFNKm8xqmQmYplR2pEQmhTITQjamMJQpQklaGM
+ JQpJ0rUwhKFNJJTGEoUkkEMYShSSSUxhKFJJJDGEoUkklMYShSSSQxhKFJJJLCEoU0kUsIShTSStLCEo
+ UoShK0sYTgJ4UmhK0rwquQNFchVcgaIAqedzhyueyRqujzu653JOqmCGlGqsVNQAdVaqTkNylq08dqz6
+ Vp46BU6mOFo1hUMcrQrKiKkoCYtUgUkxTDaltU0kkMNqaFNRSQqE0J0kUMSE21TShJcGG1KFNKEksNqW
+ 1TSSQw2pbVNJJTCEtqmkkphCUKaSSGG1PtUoSStTCExCIolFTCFIBMpBJLIBMWqYSKbaUW1PCkmKNpa1
+ 3Cwc7ut6/hYOb3UgS85lDVUTytDKGqokapyU1Su1BU6gr1IRS6GOFr4wWXjhbGMEClv1NRwEOsaI4CiJ
+ QUZCaEQpkGIsIShShPCSGEJQpwlCSGEJQpwlCSKYQlCnCUJKphCUKcJQkqmEJQpJQiqmEJoRE0JLmMJw
+ E6kEEsYTwpJJJYEKJCImSSj2pbVOEkVMQE4CcKQQUxhOApJBJS4CDaNFYCFbwgN0ODmjlc3mDUrps7uu
+ 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
+ FoShThKELQwhKFKEoSQxhKFKEoSUxhKFJJJTGEoUkkksYShSSSSxhKFJJJTGEoUoShJLGE8KQCdC0oyF
+ EhFKgU4FKwCcBJSCSVoUdqImQtTAhV7uFaKrXcJ8d0uJmnlc9lldDmd1z+WFMFOW/lEp5UHjVFpGqep0
+ 8YLcxQsbGC28YJFTp0hW2hVqVbaFXmsK4CYhThIhRrUcJQpwlCSWEJQpwlCSmEJQpwlCSmEJQpwlCSmE
+ JQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEKYCUKQCR
+ KmDgqlwV1wVW4J0VOTkLKvWtkhZN6sRXOfaqbyrloVR4RUtXytbEWXWNVrYgQKnfxFpsCzcRalahkpct
+ UdqNCaEy1IoTgKRTJWpcJQknQQtCUKSUJKYwlClCUJKYwlClCUJKYQlCnCUJIYQnhShKElMUlKEoSQxh
+ KFKEoSUxShShKElMYShShJJTGE0KcJQlaGMJwFKEyVpDIKL1IJnIMgcvL4XO5vddJl8LnM0cqULw4tvK
+ g1FtGqi0JyWTVYqQ2hHqCKnRxQtzGCxsULcxgmlDeYFMhJgUoURKwo4ShShKErYyxhKFKEoStYWMJQpw
+ lCVoYQlCnCUJKYQlCnCUJWkMIShTSSXMYShSSQSwhLaiQlCVrSw2pQpwlCVoYQmhEhNCNpYQlCnCUJWl
+ hCeFKEkrSxhKFOE0JWuRkJAKRCcBG1InjRZmYNFruGiys3hEJeay+VWq5VnMOpVOt3uRU9BgHhdDRwub
+ wHcLosc6JpU2SEMhFUSE1TGEipQokJIYkppTkJk1S6SQToIWhSAShOEELgJJJJKWKZOUyKlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJI
+ qUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJ0ydJS6i5SUXJKa1irlWLFXKSmbFaYqrF
+ aYkpMEikEikpZJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl06ZOk
+ pRQLEcoFiSmo9M1O9M1JTYrVhqr1qw1JTJJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/9br0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJ
+ JJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJ
+ JSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUp
+ JJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJIKXARWhCCICnKZO4WTnHRab3aLJzTIRAU81mnUqg06q9mDUrOA1Tgp
+ 2cN63cezRc1iuhbFNsBFTtstCmLQspt6l66CnU9UJeqFmfaEhkJUp1PUCW8LNGQn+0IUp0C8KPqBUDem
+ N6KnQ9QJeqFm+ul9oRU6XqhL1Qs37Ql9oSU6XqhL1Qsz10vXSU6fqhL1Qsz10vXSU6fqhL1Qs310vXSU
+ 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
+ IqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJ0ySlJJ0kVLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0kFLJJJJKUkkmSUukmTpKZKDlJRckpr2Ks
+ VYsVcpKZsVtiqMVpiSkwSKQSKSlJkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUunTJ0lKKBYjlAsSU1Hpmp3pmpKbFasNVetWGpKZJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//1+vS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSk
+ ydMkpSSSSSl0kkklKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkps
+ NUlFqkkpZJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJS6cFMnCepZ/CzctshaTlUuZKKnmcqqSqBpMror
+ seVUOKjamhSwhX65CmzHhGbSlamAJSko3pJeklakBcUtxRTUm9JJTDeU+8qXppvTSUx3lNuKn6af0klI
+ 9xS3FF9JL0krUi3FLcUX0kvSStSLcUtxRfSS9JK1ItxS3FF9JL0krUi3FLcUX0kvSRUi3FLcUX0kvSSt
+ SLcUpKL6SXpJWpFuKeSiekn9JK0hFJTSUf0k3pJtpQSUpKP6SXpI2pECVKSiCpTFSVqarwSqdrCVqmpB
+ fRKNqcKyklVzQVvOxkM4iNqcQUFEZSQtb7InGKjamlUwhXawQiNx4Rm0wlaGLSVPcVMVJ/TSUikpSUT0
+ kvTSUikpSUX00vTSQikpSUX00vTSUikpSUX0kvSQUikpSUX0kvSQUikpSUX00vSSUikpSUX0kvSQUikp
+ SUX0kvTSQikpSUX00vTSQikpSUX00vTStKKSlJRfSS9JG1IpKUlF9JL00rSikpSUX0kvTRtKKSnDiiek
+ n9NK0sNxQrCSrHpqJqlK1OTewlZ9lBK6F+PKC7ElK1PP/ZiiNoK2vsacYiVqcplRCs1sIV0YqI3HStCG
+ sEKw2URtCJ6SFqQklRJKOalA1pWhHuKfcVP00vTStCPcU24onppemgpgCU8lTFaf0klItxS3FF9JN6SV
+ rgj3FLcUT0kvSStSPcU24ovpJeklakW4pbii+kl6SVoRbiluKL6SXpJWhFuKW4ovpJeklake4pbiiekl
+ 6SVqR7ilJRPSUhUlakUlPJRhUn9JK1IJKiXFHNSgakbSh3FSBKn6SmKkrS13glU7mErWNKE/HlG0vP2U
+ koQxyt12JKYYiVpchtBRm0lagxFP7Kjabc5lZCssBCsjHUhTCNqtg0lT3FTFSf000lSKSmko3pJekm2s
+ QyUpKN6SXpJWpDJSko3pJeklaqQyU8lF9JL0krRSGSlJRvSS9JK0UhkpSUb0kvSStVIZKeSi+kl6SVqQ
+ klNJRvSTeklaUUlPJRPST+kjakW4p5KJ6SXpJJRbimko3pJvSSUhkpSUb0kvSStKLcU+4onpJ/SSUjkp
+ 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
+ oJChK1IASpSUcUJ/RStTXkpSVZ9BOKErU1tUpKtegkaErU0ySlJVo0JvQStTWkpSVZ9BP6CVqaslKSrX
+ oJeglamrJSkq16CXoJWpqyUpKtegl6CVqaslKSrXoJeglamrJSkqz6CXoJWprSU8lWfQS9BEFTXBKYgq
+ 0KFP0E61zl2MJVO2klbxxpQXYkpWp512OU7ccrdOEkMLyStDkMpKsMrIWkMRSGKlamkxpCM2VZGOpChC
+ 0NaSkSVa9BN6CVoauqfVWfQT+glamrqmkq36CY0JWpqSUpKtegl6CFqaslKSrXoJeglamrJSkq16CXoJ
+ WpqyUpKtegl6CFqaslKSrXoJegklqyUpKtegl6CSmrJSkq16CXoJKaslPJVn0E3oIoQSUpKP6Kf0UrQ1
+ 5KUlWPRS9FG0teSnEqwKVIUJWpq6qJBV30EvQRtLmvYSq76iVsHHQzjJWlwn0EoLsYldAcRN9jStLzv2
+ QojMYhbwwvJSGFCVqcuqstVthIVr7LCf0ErUg3FNJVn0E/oJWpqyUpKtegm9BBDVkpSVa9BN6CFqa0lK
+ SrPoJ/QQta1pKeSrPoJeghamrJSkq16CXoJIaslNJVr0EvQSS1pKUlWvQS9BK14aslKSrXoJegjamrJS
+ kq16CXoJWtaslKSrXoJegla1qyUpKtegl6CNqaslKSrXoJeglamrJSkq16CXoI2uDVBKlJVj0E/oI2vD
+ UdKq2NJWoaFA40pWvDiPpJUfs5W39kTjDStNuJ9nKiaCt/7GhuxErU4zaiFaqaQrn2REbjQlaiiZKnJV
+ gUJ/QQtYWoZS1Vv0EvQStYWpqmJKuGhRNCVrGrJSkqx6CcUJEqa0lKSrXoJ/s6baWpJSkq16CXoJWpqy
+ UpKtegl6CVqaslKSrXoJeglamtJTSVa9BL0ELU1ZKeSrPoJeglamtJTSVa9BL0ErS1ZKUlWvQTegjaWt
+ JSkqz6CXoI2prSU8lWfQS9BG0tUkppKtGhN6CNqa4JSIJVoUKYx0bVblWVkqpZQSt840obsRG1W86cYp
+ xjlbxw032NG025DKSFYYwhaIxE4xkrVbUaCFMEq19nT+go5FaWtJTSVa9BL0Ey1rVkpSVa9BL0EbS1ZK
+ UlWvQS9BK1NWSlJVr0EvQStTVkpSVa9BL0ErU1ZKUlWvQS9BK1NWSlJVr0EvQStTVkpSVa9BL0ErU1ZK
+ UlWvQS9BK1NWSlJVr0EvQStTVkpSVa9BL0ErU1ZKUlWvQS9BK1NWSlJVr0EvQStTVkp5Ks+gl6CFoapJ
+ UHSVd9BL7OiClzHsJQXVErY+zJvsilBXOIaChnHK3vsiY4aNqcEY5Viukhav2NSGIhamkxpCLqrgxkxo
+ QtTTJKYEq0aEwoQtCAEqYlHFCIKELU1tU2quegmNCFqaZJTSVbNCj6CFqa0lKSrPoJeglaGtJSkqz6CX
+ oJWprSUpKs+gl6CVqa0lKSrPoJegkprSUpKs+gl6CSGtJSkqz6CXoIqa0lKSrPoJegkprSU8lWPQS9FJ
+ DXkpSVY9FL0UrQ1ySoyVa9BL0ErXBrAlSJKsegl6KNrw0LQSqFtZK23USguxZSteHC9AqbaCtgYaK3DR
+ tdbjCgqQpK2vsiX2RK0OXXWQrbAQrIxYUxRCVoQSVBxKt+iomhK1haZJTSVb+zpfZ0rWFqyUpKt/Z032
+ dC1paslKSrf2dL7OhaGpJSkq39nS+zpWpqSUpKt/Z0vs6FpaklKSrX2dL7Oha9qSU8lWvs6X2dJTWkp5
+ Ks/Z0/oJWtLVkpSVa9BN6CNoaslKSrXoJeglaWrJSkq16Cf0EUtWSlJVr7On+zpJaklNJVv7Ol6CSWmS
+ U0lXPs6b7OklpElCeCVo/Z1E4yVqck1Eo9NGqvDGVirGhBK+LVC16mwq9NUK8xsIIZhOEyUoKZgpSogp
+ SgpRTJEpiUELpKMp5QUukmToIUmUkySlkk6ZFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmSSUukmSRUukmSSUukmSSUukmSSUukmSSUukmSSUu
+ kmSQUumSSSUsknTJKUnTJ0lLqLlJRckprWKuVYsVcpKZsVpiqsVpiSkwSSCSSlkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lKKBYjlAsSU1Hpmp3pmpKbFasNVetWG
+ pKZJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSU//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTs
+ TOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSU
+ pJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUqUp
+ TJk8KZSoObKkpAJKarqZQTjrR2ymLElOd6EJxUrhYm2JKawqS9JWg1PsRU0zSomlXtibYkpo+il6KvbE
+ vTQU0fRT+ir3ppemippekl6SubEtiSmn6SXpK5sS2JKafpJekrmxLYkpp+kl6SubEtiSmn6SXpK5sS2J
+ KafpJekrmxLYkpp+kl6KubEtiSmn6SXpK5sUdiSWr6SXpK1sThialq+kl6St7E+xJTUFScVK1sS2oqap
+ qUTSrm1NtRU0TQl9nV7YlsRU0fs6b0FobExYkpoegnFSulibYihqekn9JWtiWxJTV9JL0la2JbElNT0k
+ /pK1sS2JIavpJekrWxLYkpq+kl6St7EtiSmp6SXpK3sS2JKanpJekrexLYgpqekl6St7EtiSmp6SXpK3
+ sS2IIanpJekrexLYkhqekl6St7EtiSWp6SXpK3sS2JKanpJekrexLYklqekl6St7EtiSWp6SXpK3sS2J
+ JanpJekrexLYkpqeil6CuBqcNSU0vs6Rx1e2pbElND0EhSrpYlsSU1RUn9JWg1ItSQ0jWoGtXSxR2JIa
+ npJekrexL00kNP0k3pK56aXppIaoqUvSVoVpxWklqekl6SubEtiS4NP0kvSVzYlsQS0/SS9JXNiWxFDT
+ 9JL0lc2JbElNP0kvSVzYlsQQ0/SS9JXNiWxJTT9JL0Vc2JbEkNMVKQqVrYpBiSmsKkjUrW1ItSU0jUom
+ pXSxRLEUtP0lNtSshikGJJa4qTGlXA1LakpoHHTjHV3YnDUrS0xQkaFd2pFqVpaBpTekrpaolidamp6S
+ XpK1sThiBU1fSS9JW9ifYmoafpJekrmxLYkpp+kl6SubE2xFTU9JL0lb2JbElNT0kvSVvYlsSQ1PSS9J
+ W9ifYkpp+kl6SubEtiSGn6Sb0lc2JbElNP0UvSVzYlsSU1PSS9JW9iWxJTT9JL0lc2JbEVNL0k/pK5sS
+ 2JJafpJekrmxLYklqekl6St7EtiSGn6SXpK5sS2JKafop/QVwMT7UrXBo/Z032dX9qW1G1zQ+zpxQrux
+ LYlaC0xSn9JW9iW1C0NT0lE1K7sUSxJa0jUm9JXSxNsRQ0/STipWticMQQ1RUn9JWwxPsSU0/STekrux
+ NsQU0vSS9JXdiWxJLS9JL0ld2JbElNL0kvSV3YlsSU0vSS9JXdiWxJDS9JL0ld2JbEkNL0k/oq5sS2Io
+ aXpJ/SVzYlsSU1PSS9JW9ifYgpp+km9JXdiWxJIaXpJxUrexOGJLg1RUkaFcDE+xJeHPOOm+zLQ2JbEl
+ zn/Zk/2dX9iRYkpoegl6KulibYipp+kl6SubEtiSC0/SS9JW9iWxJaWp6SXpK5sS2JLWn6SXpK5sS2II
+ afpJ/SVvYlsSU1PSS9JXNiWxBTS9JL0lc2JbElwafpJekrmxLYkuafpJekrmxLYkgtT0kvRVzYlsRWNP
+ 0kvSVzYlsSU0/STekruxNsSS0/SS9FXNiWxJLT9FL0lc2JbEktP0kvSVzYlsSS0/STekruxLYkppilSF
+ CthikGpKaf2dN9nV/am2pKaH2dOKFd2pbUkNMUp/SVvaltSU1PSTGpXNibYkhpGpRNSvFiYsRWtH0k/p
+ K5sS2JIagqT+krYYn2JKafpJvSV3YmLEFNP0kvSVvYlsSU1PSS9JW9iWxJTU9JL0lb2JbEktT0kvSVvY
+ lsSQ1PSS9JW9iWxJLU9JL0lb2JbEFNT0kvSVvYlsSS1fSS9JW9iWxJTSNSialeLE3popaXpKQqVvYnDE
+ lNcVJzSrIYpbUktE0KP2dX9iWxFTRGOpDHV3Yn2pWppegl6Cu7U21K1NL0UvRVzalsSU1PRS9FW9ifYm
+ rWn6KXoq5sS2IKaXopeiruxLYippeil6KubEtiSmn6KXoq5sS2JKafopeirmxLYkpp+il6KubEtiKmn6
+ Kb0Vd2JixJTS9FOKla2JwxJTWFSf0lZDVLakpqekl6St7U21JTV9JRNSubU21JTT9JL0lb2JtiKmqKlL
+ 0lY2p9qSmt6SY0q3tT7ElNL0EvQV3YlsSXBpGhQNCvlqiWI2vaAoU20q3sThiKi1xUkalZ2pbUFpahqS
+ 9JWtiWxBaWr6Sf0la2J9iS1qekn9JWtifYgppmpMalcLFEsQQ1PSTipWticMSS1fRS9FW9ifYkpp+il6
+ KubE21JLU9FL0Vb2pbUlNT0UvRVvalsRU1PRS9FW9ifYkhp+il6Kt7EtqSmp6KXoq5sTFiKmn6Sb01aL
+ VAtRWtf003pKyGqYYkppeinFKuemkGJLg1hQiChWGsRA1C14avoBMaArcKJCS9pGgKPoK6Qm2pKagoUh
+ UrO1KElNf0kxqVmEoSQ1TSm9FW9qfYgtLS9FL0Vd2JbElhaXopeiruxLYktaXopeiruxLYkppeil6Ku7
+ EtiSml6KXoq7sS2JLg0vRS9FXdiWxBc0vRS9FXdiWxJTS9BL0Vd2JbEUNL0U3oq7sTFiSmn6SkKlZ2pw
+ 1JSAUp/RVoNUtqSmiaU3oq8WKOxJTS9FP6SubE21JTV9JP6KsQpAIqavoBL7OFcDVLaglpfZ0/oK5tS2
+ pKafoJvQV3am2pKaRpUTSrxYmLEkNA0peirpYm2JKafop/RVvYlsSU1fRS9FW9qfakpp+im9BXdiWxJT
+ R9BL0Fe2JtiSWl6KXoq5sS2JKafopeirmxLYkpqeil6Kt7E+xJDT9FL0Vc2JbEkNP0UvRVzYm2JIafop
+ eirmxLYklp+il6KubEtiSmn6SXpK2WJtqSWr6SXpK1sThiK5q+in9BWwxSDEFNMUJ/QVzaltSU0jjhN6
+ Cu7U21FTT9BP6Kt7UtqSmmak3pK5sTbEkNT0k/pK1sS2pILV9JN6Kt7U+xBYWn6KXoq5sS2JIafop/RV
+ vYlsSXBqeil6Kt7E+xJc0/RS9FXNiWxJLT9FL0Vc2JbEktP0UvRVzYlsSQ0/RTeiruxNsSWlpGlN6Ku7
+ E2xJa0/RTilW9iWxJTV9FL0Vb2J9iSmkaVH0Ve2JbElNH0FIUK6K1IVpLw1BQmNCvBiRYgvDnHHTjHV4
+ sTbUV4awoSNAVsBPtSQS57sdRGOtEsUSxJjLSFMKXpK1sS2pIaZqTeirmxPsSU0vRSNCvbExYkpoGhL0
+ VeLE2xJTS9FP6KubEtiSmn6SkKla2J9iSmr6SXoq3tS2pKafopeirmxLYkpp+il6KubEtiSmn6KXoq5s
+ S2JKafopeirmxLYkpp+il6KubEtiSmn6KXoq5sS2JKafopeirmxLYkppeil6KubEtiQU1BUpCpWdicNT
+ ktf0VE0K3tT7UFNL7OnGOrm1PtStTS9BMaVdLVEtSU0/SS9JWy1NtSQ1PSS9JWtiWxJDV9JOKlZ2pbUl
+ Nf0kvRVkNUtqSmn6KXoq5sS2JKafopeirmxLYgpp+il6KubEtiSmn6KXoq5sS2JJafopeirmxLYkpp+i
+ l6KubEtiSmn6KXoq5sS2JKaXopvRV7Ym2IoaXpJvSV3Ym2JIafpJ/SVrYn2JJavpJxUrOxPsSU1vTS9N
+ Wdqbailr+km9JWdqW1JLV9FOKQrO1OGpJa4pCf0QrMJQkpqGlR9FXdqWxJTS9FP6KubEtiFqafopvRV3
+ YlsSQ0vRS9FXNiWxJTT9FOKVc2JBiCGp6KXoq5sT7EENL0UvRV3Ym2IIaXopeirmxLYkkNP0UvRVzYls
+ SXhp+il6Ku7EtiSmn6KXoq5sS2IrWn6KXoq5sS2IoafopeiruxLYkppeil6Ku7E2xJTT9FL0Vc2JbEUh
+ peil6Ku7E2xJeGn6Kb0Vd2JtiK5qChSFCs7VIBBLWNAQ3UK7CYtSU0DQnFCubE4YkotQUp/SVvYlsSWF
+ p+kn9JWtiWxJYWoalE0q9sTbElrS9FOKVc9NPsSU0xSn9FXNiWxBLT9FL0Vc2JbElNP0UvRVzYlsSU0/
+ RS9FXNiWxBTT9FL0Vc2JbElNP0UvRVzYlsSU0/RS9FXNiWxJTSNKiaVeLExYklo+kl6SuFibYilq+kl6
+ Ss7U+xJTU9JL0Vc2J9iKmoKUQVKwGJ9qKmv6SY0qzCUJKavoJegFahKEbU1PQTeirm1LalaWn6Kf0Vb2
+ J9iYVpafopeirmxLYghp+il6KubEtiSmn6KXoq5sS2JKafopeirmxLYkpp+il6KubEtiSmn6KXoq5sS2
+ JKafopeirmxLYkpp+il6KubEtiSmn6KXoq5sS2JKafopeirmxLYkpp+il6KubEtiSmn6KXoq5sS2JKaf
+ opeirmxLYkpp+il6KubEtiSmn6KXoq5sS2JKanopeire1Langrmr6Kb0QrUJoRtLV9EJxSrMJw1K1Nb0
+ VE0q7tTFiFoc80peirxrTemkpqClTFSs7E+1BTW9JRNSt7U21BDTNSXpK3sS2JKanopeirmxPsSU0vRS
+ 9FXNiWxJDT9FL0Vc2JbElNP0UvRVzYlsSU0/RS9FXNiWxFTT9FL0Vc2JbElNP0UvRVzYlsSU0/RTekrp
+ YoliSGn6Sf0la2JwxJDV9FP6KthilsSSGiakxqV0sUCxJeGmakhQrWxTDEV4aooUxQFaDFINQS1fQSNC
+ twkWpWpomlRNSvFqGWooavpJeirIYphiSC1PQS9BXdiWxC1haXoJegruxLYksaXoJeiruxLYkppeil6C
+ u7EtiCml6Cf0Fc2JbEEhpegl6Cu7EtiC5pegl6Cu7EtiSWn6KXoq5sS2IrS0vRS9FXNibYkhp+il6Kub
+ UtiKmp6Kf0VbDE+xJLT9FP6KubEtiSWl6KXoq5sS2JJaXopegruxLYipo+gm9BX9ibYkloihEZTCs7FI
+ NQUxYyEUBIJEpKUVGUiVGUFMwU6gFIIKUmKkmhBDFOlCSSlwnTJ0ELpJpSlJSkySSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJkkVLpJ
+ kklLpJkklLpJkklLpJkklLpJkklLpJkkFLpJJ0lLJJ0klLJ0kklLqLlNRckpq2KuVZsVYpKZMVtiqsVp
+ iSkwSSCSSlkk6ZJSySdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOmTpKU
+ UCxHKBYkpqPTNTvTNSU2K1Yaq9asNSUySSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0evSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkk
+ klKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkkl
+ KSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpZJJJJSkk
+ kklKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpOmSSUumSTpKWhKFIJJymMKQCZOCkpIEiFAOT7kFLEKBCkUxCKlk6ZMkpkkopJKZJ
+ JkkrUySUZSlK1MkoTSkjal4ShMklal4ShMklal4ShMklal4ShMkkpeEoTJJKXhJMkkpUJoTpIKWhOAkn
+ QtcuAlCUpSlalQmSJTSlalJQmlOjalQnhJKUbUqEoTSlKSFQmhPKSKloShOkipaEoSSSQqEkkklKSSSS
+ UpKEkklKhKEkklKhKEkkFKhKEkklKhKEkkkKhKEkkFKhKEkklKShJJK1KhJJJC0qhKEkkrSpJJJC0qSS
+ TJWpdIKJKQKVqSBOoAqUpWpRCZIppStC4CeEwKUo2pYhRhSKQStCg1PtThSRtCPaltU0gkpYNT7VIJ0L
+ UjITQpFRJSXKhKE0p5SSqEoSSStCoShJJK1KhKEkkLQqEoSSStS8JoSSStCoTpk0pWpkmTSklal00JJ4
+ RtK0J4TwklalJSolKUrSySlQlKUVM5SlQlPKSVymITpQlamMJwE8JJWpSdNKSCl0kyUpKXSTSlKSl0k0
+ pSkpdJMkkhdJMlKVqXSTJI2hdKEySSl4TQklKSFJJpSlJS8JQlKSSl4ShMkkq1QkklKVpUklKaUrSvCU
+ JJSkpSaUxKiSim2cpShgqQKSrZpKKSSLZJKKUpItkkmSSRaoTQnlNKSFoTgJpTgpJZAJ4UQVKUFKhNCe
+ U0pJUkmlKUlLwlCaUpStS8JQmlKUrUvCUJpTykhUJQlKUpWhUJQlKUpWtVCUJSmlK1KTqKcIWllCSYJ0
+ rStCSRUSUrXMk4Q5UgUlwZp4UQVJK1yoTJJilalimTEpI2pdJMklaipJMkla1kkmSStaunhMkhaF0kyS
+ VqXSTJJJXSTJJLlJJJIJXShMlKVoK8JJpSlG1i6SaUpStS6SaUpStK8JQmlPKVpVCSaUpStK8JQmlKUr
+ SvCSaUpRtS6SaU0pKZylKgkgpkkmSRQunUUpSQySTSnSUqE0J0yS1aEoSKSNqXATwogp5QQvCYhKUkkr
+ QlCSSSlQlCdJJS0JQnSStS0JQknQtS0JQnTJKVCUJJJKVCUJ0yCVQnTSlKVqXhNCdJG1LQlCdMSlalJ1
+ CUpStLNJQlPKVoZJSoyklabZSlKjKSVqtdOop0rUyTqMpIIZJk0pSkpdJRlKUVMklGUpSUukmSSUukmS
+ lJTJJRlKUrUyTQmlKUrUqEoTpJWpUJ4TJSlal4ShNKUo2pUJQlKSVqWhKE6SVqYwknKaUrUuFIBQBUgU
+ rUyhMQlKYlJIWhKE0qQRXWttShThMUrVbGEoSKSS1UJ4SSlC0WqE8JSlKVrVQnhNKeULUsQokKUpikpj
+ CeEkklLpJkkkrpJkkkrpJkklLpJkklLpJkkrUukmSStC6RTSkUbQwIUYUymhG1KDUQNTAKYQtS21RhTK
+ iSlaQoBSUJS3JLwyJUSmJTJJXSUUpStK6RSSStSySSSVoZBSCgFKUrWldJKU0pWtXSTSlKFoXSTSlKVo
+ XSTSlKSV0k0pSkldJNKUpJXSTSlKSV06hKcFK0LwokKSYhK1MCE4SKZK1JApIYKeUlM0lGU4KVqXIUCE
+ RQclamBSBTFII2pIFJQCkgpdJMmlJTJJRlKUlMklGUpSUvCaE8pkrUqE0J0yVqXSTJkrUzCdQlPKVqZJ
+ imlKUrSsUkkyKV0kkkkKTpkkkKTpkkkKSSSStCoShJMlal4STJJWlUJoUkoStKwCkAnATpWlUJJSmlK0
+ rpkxKaUrUukmlJK0LwlCZPKVqXhKEgUkrRa0JoUiolK0KSTJShaF0k0pSlamSSjKdK0rpJpSlK0rp1GU
+ pSSySUZSlJS6SaUpSUukmlKUrWrwmhOklaFoShJJK0KhPCSSSlQlCSUpWpkApAKAKeUrXM0xTSmJSXAq
+ KikSoykvtknCgnBStBSJimlMSksKiopEpgUlMgFIBRCklal4SISUSUlKITQkSmlJS8JQknSUtCaFKExS
+ UsnTJJWpdOoynStS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6UJgpJWpjCUJyoko2ldOFCVIFK1M
+ wE8KIKeUrUoqJTkqJKVoWhKEpThK1LQlCklCVoYwmhSKYpWpQCcKKcJWpkkmSStS6SZKUlLpJpSSUukm
+ SSSukmSSUukmSSUukmSSUvCUJBOlaFoUYUyopWpaE8JJwlalbUtqkklamG1NtU0yKWO1LapJJWlbaltU
+ k6VpY7UoU0xStTGEoSKaUrUukmlKUFLpJpSlK0KSTSlKVoZJ4UZTyhamSSZPKSFQmSSJQUskmlJJS6Sa
+ UpSteunTSkhal0kySNoXTpkkbQukmSSQpJJJK1KhJJJG0qSTSnlJcFQmhPKSVrrYwknUSlalJ1FOErSu
+ ApQmCeUrQVQlCUpSla0rQlCdOla0rQn2p0kLWrQmhOSmJStSySaUpRtK6SaUpQtTJJRlKUlLpJpSlJS6
+ SaUpSUukmlKUFLpJpSlJTKE0JSnStTEhRIUyolK0sYTgJJwjalwE8JwnRtTGExTkqBKVqtRSUZSStVsg
+ nTBSCNqtUJQklKVqteE6jKUptoZJJpSlJS6SaUpSUukmlKUlLpJpSlJS6SaUpSUukmlKUlLpJpSlJS6S
+ aUpSUukmlKUlLpJpSlJS6SaUpSUukmlKUlLpJpSlJS6SaUpSUukmlIFJS8JiE8qJTksSmTpQlalAKQCY
+ BSCVqZQlCQTygpaE0KSaUrUtCaE5TJWpaEoSToWpaEoUkkrUtCUJJpSQulCSSSlJQkkipSUJJJKVCUJJ
+ SipSUJJpSUvCUJSlKSFiE0J0klLQpBqQUghaFbU8J0iUEhgQhkIpKiUbXhHtUgE8Jwja4KhOkmlJK6dR
+ lKUFLkKBCnKZFDCFIBPCSVoK6SjKUoLSySTSlKS1dJRlKUrUySUZSlC1MklGUpSSySUZSlBLJJRlKUks
+ kySSS0qTJJkUKSTJJKZBOoynStLJJMkjaV0yaU0pWpkkoynlK0skyaUkrSopk6ZJS6YlMkkhYlJJKEEr
+ hTCiE4KSmSSaUpQQpNCdJJSoTFShMQghjKUpikkpdOmCdJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSySdJJSySdJJSySdJJSySdJJSySdJ
+ JSySdJJSySdJBSk6ZOkpSSSZJS6SZOkpkouTqLklNexVyj2KuUlM2K2xVGK0xJSYJ0wSSUpJMkkpSSZJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dMnSUooFiOUCxJTUemanemakps
+ Vqw1V61YakpkkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//0uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTp
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVh
+ yr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkklKSSSSUpJJJJS6SSSSlJk
+ 6ZJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpZJJJJSkkkklKTpk6SlJJJJKUmTpk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklLynlMmRUolMSkVEpKVuUgUNSCSkoTwogqUpKWIUYUyVFJS0JQnSSUqEoTpklLJk6SKlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUnTJJKXSTJJq5dKUyZJS8ppSTJIXUgohSCKl0xSSKKlimSKS
+ SlwnCinCKmSZJJFSySSdJCySdJJSySdJJSySdJJSySdJJSySdJJSySSSClJJJJIUkkkkpSSSSClJJSlK
+ SVJJJIKUkknQSsknSQUpMU6ZJTEplIpoSUyCkohSSUsUycpkVKCSSSSFkgkkEVMwpSoBPKKlyUpTSlKS
+ GYKRKiClKSlFQKkSooL1JJk6Sl0ySSSFJJJJKUkkkgpSSSSSFJJJJKUkkkkpZOmTpKXCmAoAqQKSl4TE
+ J5TEoqYlRUimSUsmTpkUqUgoqQRUyAUoUQU8oKXhRITymJSUsUycqKCl0k0p0lKTpJJKWSTpJJWSTpJK
+ WSTpklKSSSRQpOoylKS1kmSlJJSkk8JQkhZOmTpKUkmSlJS6ZJJJKkkkkVyk6ZJBSxUSFJKEVMQFIBOA
+ pAIoYwlCkmQUsmSJTSkhkkmCkAkhZMVOExCSmCSlCaElKCkopSklkmTSnQSskpQlCSlkk8JklKSSTJKX
+ SUZSlJDJJRlOkhdJMkktXTJSkkpScJJ0EhcJ0yUpLlioFTKiUksVIJoThJczCmoBSlJKiolSlRKKmJCa
+ FIpkkrJJ0kkMUk6SSFJJJ0kKSSSQQukkkkpSSSSSVJk6SSVkk6SCVkk6ZJBWSSTIrV0kydJSkkkklLpJ
+ kkkrpkkkkqSSSRSpOmSSUulCSdJSoTwkE6SFoTQpJklMYSTpJIUE6ZOkhSYp5TJKWTJ0ySFJ5UU6Kl06
+ ZJBSkk6SSlkk6SSlkk6SSlkk6SClkk6SSlkk6SCVkk6ZJSySSSSlwnTBOkpSiVJRKKmJSTwmhJS4TwkE
+ 6SlQlCdJJS0JQnTpKWhKE6SSlkkkklKTJ0kFLJJJIqUkkkkpZJOkkpZJOkkpSSSSSlJJJJKUkkkkpaUp
+ SSSUqUpSSRUpOEydJS6dMkkpYqJUiokJKWlSBUYThJTKUxKSSIUFKYUAphJcyTFPKYlBDEpkimRQulKZ
+ JBC8ppSTJIZSnlRSQUyTSkkkpSSSSSlJJ0kkrJJ0kkrJJ0kkrJJ0kkLJJ0klLJJ0kkLJJ0kULQkAnTpK
+ UApKKUpKUSoEqRUCklYlKUoSASXMgnhMFJJcxITQplRhJSwClCQCdJTGEoUkklMYTpQnSWlZJOkktWST
+ pIIWSTpJKWSTpJKWSTpJJWSTpQklZMVKExCSmKcJQnCSmQTkJBOkpGQowiFRISUxSTwlCSlBTCgFMJKZ
+ hRIUgUxKSkRCYBTKQSUuApQmCeUlLEJiFKUxSUwKZSTJKWTpk6SlwnTJ0lKShOmSUtCZOmSUsknTJKUn
+ TJ0kqSTpIpWSTpJIWSTpJIWSTpJIWSTpJIWSTpJKWSTpJJUAnATJ0krpinUSklRKiSnUSkpUpJQkAkpc
+ J0gnQUskkmSQuCnlMkkhdMUkkkLJJ0klLJJ0klLJJ0kkqSSTpJWSTpkkqSSSSUpJJOkhZJJJJC6SSSSF
+ JJJJIXSSSSUsmTpklKlPKZMkkMpTSmSSXLpJJJLlQnhJOkpZMU6iUlrFOEoTgJKZBSUQpSkpZRKkVFJT
+ FJJOkpcKQCYKQSUqExCeUySmJCZOUklLJ0kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6SlgpJk6Sli
+ oFTKgUUrKQUYUgkpmEkwTykhYqJUiopKUkEk6SlwnTJ0kLFRKkUySlkgknSUpJOkkpZOkkkpZJOkilZJ
+ OkkpZJOkkpZJOkkpZJJOkpSdMkghRTJymSUpOEySSmUpSmSSSqU0pJkVLynlRTpJZApSmSSUvKYlJMkp
+ SSSSSlJJ0yClJJJJKWSSSQQpSCZOkpdJJJJCkydMgpZMnSSUpJJOgvWTpJJKUkknRQpJJJFCkkkklKSS
+ SSUpJJJJSySSYorlSnCinCSV0xCdIpKYpBOkkldKUkyCFSlKZJJaWSdMkktZSlKaU0pIXlMmTpKWSSSR
+ XKSSSSUpJOkgpZJOmSUpJJJJSkk6SSFkkkkFLp0ySSlFRKcpklLKQTJwkpkEkySKliVAqRUSElLJwEgF
+ IBFS4CeEgnSUsVEqSiUlKTpk6ClJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0kl
+ LJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJ0kklKTJ0k4JYwnATpwkpQCeEkkFKTSkVFJTKU0pkklLymSSS
+ UpSCinCCmSZJIlFCxTJFMkpdJJJJSkkkklKSSSSUpOmSRUpJOkkpSZOmRQpJJMgpkFIKAUpQUylRJSJU
+ SUlLykoqQSXLwkkkiuWKYp0ySVkpSSSUuFJRCkEkKhMVJRKSFkkkkFqkk6SSFkk6SSlkk6SCVJk6SSlk
+ k6SC5ZJOkkpSSSdJaViE0J0yKFoSTpJKUnTJ0kqSSSRUsUydJJKySdJFSk6SSSVQmhSSQUxhNCkmSUtC
+ UJ0klMUpTwmhJSpTymhJBC4KkFEKQSUyTEJ0xQUwITKRTJKUFJRTpKXTJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKl0kkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkkFLJJJJKUmSSSUukmTpKXUXKSi5JTWsVcqxYq5SUzYrVaqsVtiSkoSKQCRCSlkk
+ oShJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0ydJSigWI5QLElNR6
+ Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/0+vSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpO
+ mTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJ
+ JSzlXsVhyr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkklKSSSSUpJJJJS
+ 6SSSSlJk6ZJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpZJJJJSkkkklKTpk6SlJJ
+ JJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklLpJJJKWTEJ0klMYShOkkpQTymSSUvKUpk6SlJ0ySSl0kkklKTJJIqUkkkkpSSSSSlJ
+ JJJKUkkkkpZJJJJSkkkklKSSSSUpJJJIqXSSSTUqTJ0klLJJ0klKSSSRUqUkydJCkydJFSydJJFSkkkk
+ lKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSTJKXSSShBSkylCaEkLJJ4SQSsklCSClJ0ydBSkkkkl
+ KSSTIKXSTJJJUnSTpIWTpJklLpJJJKUkkkipaEoTpIqUkkkipSZJJJC6SZOklZJJJBKkk6ZJKkkkkkKS
+ SSQUpJJJJSkkkkkKSTpJKWSTpJKWSTwmhJSpTymSSUqUpSSSUsknSRUsmTwnSUsknTQipUp5TJklMpTq
+ IUgkpSiVOFEhBasnTQnCSWQTpgnSSpMnTJJUkkkkpSZOmSUsknShJDFMpQmhJBWCmFEBOElrJJKU0pKU
+ kkkkpYpk6ZJSkkySS5mElGU8pLgumSlMklSdMkkgsgnUJSlJazTFIFOipGUyJtTbUkLBTCYBPKSl0yiX
+ JtySmaRCiCpApKYkKJRCFEhJLEKQTQlKCWYTqAcluSUyKimLkgUlLpEJwpQkpEQmRCE0JIYBSShJJCky
+ dMktUnShPCClJJJJLgvKUpkklykkkklLQnSSSSvKUpkkkrykmSRUpJJJFKkkkkkKSSSSUpJJJBS6ZOmS
+ QpJJJJSkkkkFKTpkkkqSSSSUpJJJJSySSSK1SSSSSlJJJJJUkkkklSSSSSlJJJ0lLJJ0ySlJ0ySSmUpS
+ opIqZSmlMkkpeUkkkkKlKUkklKlJJJJCkydJJCySdJJSkkkklKSSSSSpJJJJSkkkklKTpkkFLpkkklKS
+ TpkFKTpkklKSSSSQpJJJJSkkkklLQlCdJJSkkkklKSSSSUpPKZJFS8pJkklLpJJJJUkkkkpSSSSSlkk6
+ SSlkk6SSlkk6SSlJJJJKUkkkkpSZOkkpZKE6SSloShOkkpZJOkkpSSSSKlkoTpJKYwnhOkkpZJOkkpZO
+ kmSSvKUpkkkKSTpJIWSTpJIWSTpJIWSTpIKWSTpJKWTpJJJUkkkglSSSSK5SSSSSlJJJJKUkkkkhSSSS
+ SFJJJIoUkkkkpSSSSSVkoTpJJYwlCkkklZOkkkpSZOkkpZOkkkpSSSSSlJJJ0EKSSSSQpJJJJSkkkklL
+ JJ0klKTJ0klKSSSSSpNCdJJTGE6SSSlJ5TJIKUkkkipaEoTpIKWhOkkkpeUpTJJKUkkkkpeUpTJJKXlN
+ KZOkpSZOkkpZJOkkpSSSSSlJJJJKUkkkkpZKE6SSloSTpIpUkkkilSSSSSFJJJJIUkkkkhSSSSSFJJJJ
+ KUkkkklSSSSClSkkkkuWShOkkpaEoTpJKWTpJJIUmTpJIWTpJJIUmSSSQpJOkklZJOkklZJOkklSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJIUkkkkhSSSSSlJJJJKUmTpJKWSTpJKWSTpJJWTpJJJUkkkkpSZOkkpZJOk
+ kpSUpJJKUmTpJKWhKE6SSlJSkkkpeU0pk6SlJk6SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSaE6SSmMJ06SSlJJJJKUmTpJKWSTpIqUkkkkhSZOkkpZOkkkpSSSSSlJJJJKUkkkklSSSSSlJ
+ JJJKUkkkilSSSSSlJJJIIUmTpIIWSTpJJUkkkipZJOkkpaEk6SSlJJJJKUmTpJKWTpJJKUkkkkpSZOkg
+ pZJOkkpZOkkkpSSSSClJJJJIWSTpJJUkkkglSSSSSVJJJIoUkkkkpSSSSSFJJk6KlJJJJJUmTpJKWTpJ
+ IpUkkkgpZJOkkpSZOkkpaEk6SC1SSSSSFJJJJIWTpJIpUkkkilSSSSClJJJJKUkkkkpSSSSClJJJJIWS
+ TpJKUkkkkpSZOkkpZJOkkpSSSSSlkoTpJKWhJOkkpSUpJI2hSZOklaloTpJJJUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkklalJSkklaV
+ 5SlMkkpSZOkkpZJOkkhZJOkkpZOkkkpSZJJJSySdKEVKSTwkkpZJOmKSlkydMkpdOmSCKl06ZOkpZMnU
+ UlLpJk6Cl0kydBCkySSSVJ0kkVLpSmSSXKSSSSSpKEk6SFk6SZJS6SZJJS6SZJJCk6ZJJC6ZJJBS6ZJJ
+ JSk6ZJJSk6ZJBKk6ZJJSk8pkkkLpkkkVKSSSSUpOmSSUumSSSSpJJJFSkkkklKTpkklLpSmSKSVSmlJM
+ kpknUQpBJCk0KSZJS0JoTpJKUnCZOgpdIlMkkpYpk6ZJSk6SdJSySdJJSySdJJSySdJJSySdJJSySdJJ
+ SySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySSSKlJJ0klKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkydJBSySSSSlkkkklLpwmSCSmSi5SUXJKa1irlWLFXKSmbFbYqjFbrSUlCRSCRKSl
+ JkpSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKa
+ j0zU70zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//U69JJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSk
+ kkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkk
+ klLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpK
+ UkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSTpKUmSTpKWSSSSUsknSSUslCdOkpaEoTpJKUknSSUskkkkpZJOmSUpJJMipdJMkkpd
+ JMkkpdMkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkk1KkkkklKSSSSUpJJJFCkkkklKSSSRUpJJJJSkkkkVK
+ SSSSUpOmTpKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUunTJ0lKSSSlBSk0J0yClJk6SClkkkklKSSSSUpMn
+ SQUsknSSUsnTJJKXSTSlKSl06jKdFS6SZJJS8pSmSSUukmSRUpJMlKKl0k0pSkpdOoylKCWSZNKUpKXS
+ TSlKSl0k0pSgpdJNKUpKXSTSlKSGSSjKUpKZJKMpSkpkkmlJJS6SZNKSmSSjKUpKXSTSlKSl0k0pSkpd
+ JNKSKlJJJkVMlIKAKkEkFkmITpIIYQkpFRSUvKUppTSkuZSnlRlOkldJMkklSSSZJC6lCYKQQUtCaFNM
+ UlpYQmTlRKS1eU0pkklLynTJJKZJoSTpJDGEoUoShK1wDBJShKElwCyeEoUgkmmMJiEQBIhJahKaVNwQ
+ ylaqZgqYKACiNKVqpME8KAKlKVopYhRKkSolK0UjKZThLalaGIUwkGp4RtLJJNKUpWpYhRIREiEFyEpp
+ RC1QISUxlSCaE4CSqSNUwhAqYKSqZJiEpTEpKpYpinJUSktpZJMnCCKZhPCYJ0lUsUycpkk0pJJJJcpO
+ kmSUpJJJFSkkkkkqSSSRUpJJJJSkkkklKSSSSUpJJJJS6SZJJCkkkklKSSSQUpJJJJKkkkklKSSSSUpJ
+ JJJapJJJJKkkkklKSSSSSpJJJJSkkkkVKSSSSUpMnSSUpJJJJSydJJJSkkkkUKSSSSUpJJJJCkkkklKS
+ SSSQpJJJJSkkkkkqSSSSUpJJJBSkkkklKSSSQUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJS6SZOipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkklSSSSKlJJJJKUkkkkhSSSSSFJJJIIUkkkkpSSSSSVJJJJJUkkkklSSS
+ SSVJJJJKUkkkkpSSSSSFJJJJIUkkkkhSSSSSVJJJJKUkkkilSSSSSlJJJIJUkkkkpSSSSSlJJJJKUkkk
+ khdMkkkpSdMkkhdJMkkpSSSSSlJJJJKXSTJJKXTJJJKUkkkklSSSSClJJJIqUkkkgpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJIKUkkkilSSSSKVJJJJIUkkkkhSSSSSFJJJ
+ JIUkkkkpSSSSCVJJJJKUkkkkuUkkkkpSSSSClJJJJIUkkkkhSSSSSFJkk6SFJJJIrlJJJJJUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSFJJJJKUkkkkhSSSSSlJJJJKUkkkkpSSSSSVJJJJKUkkkkpSSSSSlJJJJJUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSFJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSSVJJJJKUkkkklSSSSS
+ lJJJJKUkkkghSSSSClJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgp
+ SSSSSlJJJJKUkkkkpSSSSCVJJJJKUkkkkpSSZOipSSSSSlJJJIqUkkkkhSSSSSVJJJJKUkkkkpSSSSCl
+ JJJJKUkkkkhSSSSSFJJJJKUkkkkpSSSSKVJJJJKUkkkkpSSSSClJJJJKUkkkkhSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkhSSSSSlJJJJKUkkkkpSSSSSVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kmSUukmSSUukmSSUukmSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUkkkkpS
+ SSZJS6SZJJSk6jKeUlLp00pJKXTJJIqWKZOkkpZOkkkpSdJJFSyaFJNCSmKSeEkFKSSSQUpJJJJSk6ZJ
+ JS6SZJJKkkkkUrpJk6ClJJJJKUkkkihSSZJJS6SZJBS6SZJJC6SZJBS6SZJJK6SZJJS6SZJJS6ZOmSQu
+ kmSRUukmSSUukkmSUukmSSSukkkkpSSSSKlJJJJKUknSSUxSTpJKWUgmTpKUknTFJSxTJFJBSk6ZOElL
+ pJJ0lMUk6ZJSkkySKl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0kySSl0k
+ ySSl0kySSl0kySSl0kySSl06ZOkpSdMkkpdJMkkpdJMkkpdJMkkpSSaUpSUukmTSkpkmTSlKCl0ySSSl
+ JJJJKUnCScJKXUXKSi5JTWsVcqxYq5SUzYrTFVYrTElJQkU4TFJSySSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU70zUlNitWGqvWrDUlMkkkklKS
+ SSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKf/9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYj
+ hAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJI
+ JJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJpQU
+ pJNKaUVMklGUpSUzlKVCU8pKZykoSlKSmSSjKUpKZJKMpwUlLwlCcFPKSmMJQpSmlJS0JQnlKUVLQlCd
+ JJS0JQnlKUlLQlCeUpSUtCUJ5SlJS0JQnlKUlKhKE8pSmqWhKE8pSipaEoTylKSloShPKUpKWhKE8pSk
+ paEoTylKKloShPKUpKWhKE8pSkpaEoTpJKWhKE6UpKWhKE8pSipaEoTykkpaEoTpJKWhKE6eUlMYShSl
+ KUlMYTJymKBUtKUpJJql0ySZJS6SZJJS6SaU0pKZJKMpSkpkkoynlJTJJRlKUlLpJSlKSlQknSSUtCUJ
+ 0pSUtCUJ5SlJS0JQnlKUlLQlCeUpSUsknlMkpaEoTylKKloSTpkkqShJJJSoShJJJCoShJJBSkkkklKS
+ SSSUpJJJJSkkkpQUpJJJJSkkkpSUpJKUpRUpJKUpSUpKEpSlJSkkpSRUqEoSSSUqFIKKUpILMFOoAqQK
+ SxRUSpKJSSGJSSKZJcyCcJgpBBcFJJ0xRSskmKZBTMFSBQ5ThySEsqJUdyUpLSoqJTpkELJ4STpKWKaU
+ 5USkpeVIFDCkEkhIE6iE8oLwumSlMUV4UlKimlJNJQU8oO5OHILaZlDIUplPCSKRbU4CJtT7UlMQpSlC
+ YpIUSmlMUySGYUgFAKYKKF4TFKUxKSlimCdJJK4KlKgmlJLIqBSlJJS0JJ4SSSslKYppSUzlPKgCnCCl
+ 0iknhJDGEgpQmhJC4TyopJKZJkkkkqSTpkVKSSSSQpJJJFSkkkklKSSSSUpJJJFKkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJCkkkkFKSSSSUpJJJJSkk6SSlk6SSSlJk6SSVkk6SSlJk6SSlkk6SSlkk6SKlkk6
+ ZBSkkkklKSSSRUpJJJJCkkkklKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSS
+ SQpJJJBSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUukkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSVJkkklLpJJJ
+ IUkkkkhSSSSSFJJJJKUkkkklSSSSSVJJJJJUkkkklSSSSSlJJJJKUkkkktUkkkkhSSSSSlJJJJJUkkkk
+ lSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSKFJJJJK
+ UkkkklSSSSSlJJJJKUkkkgpSSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSKlJJJJKUkkkkpSSSSKl
+ JJJJKUkkkkpSSSSS5SSSSSFJJJJIUkkkkhSSSSSFJJJJKUkkkkpSSSSS5SSSSSVJJJIKUkkkkpSSSSSl
+ JJJJLVJJJJKUkkkkhSSSSSVJJJIpUkkkkpSSSSSlJJJJIUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJJUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSCFJJJIqUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSVJJJJKUkkkklSSSSSlJJJJKUkkkghSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSKlJJJ
+ JJUkkkkpSSSSKFJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJIKUkkkkpSSSSKlJJJIqUkkkgpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkhSSSSSlJJJJKUkkkkpSSSSSlJJJIIUkkkkpSSSSKlJJJkkqSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6ZJJJSkkkklKSSSSUukkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkxTpikpZKUkySmUp5UU6Kl0kySSl0kySKl06ZJJ
+ S6SaUpSUukmlNKSl0oTSnBQKlQlCeU8oJYwlCeUpSUtCeEpTykpaEoTylKSloShPKSSloShOlKSloShP
+ KUpKWhKE8p5SUxhKFKUpSUxhKFKUpSUxhKFKUpSUxhKFKUpSUxhKFKUklMYShSlJJDGEoUpSSUxhKFKU
+ pSUxhKFKUpRSxhKFKUpSUxhKFKUpSUxhKFKUpSUxhKFKUpSUxhKFKUpSUxhKFKUxKSlkkiVElJS6SjKe
+ UlMk4UQVIJKXTFOmKSmJTJyoykpdOFGU8pKZJSoylKSmUpk0pSipeEoSBTykpaEoTylKSloShPKUpKWh
+ KE8pSkpaEoTylKSloShPKUpKWhKE8pSkpaEoTylKSloShPKUpKWhKE8pSkpaEoTylKSloShPKUpKWhKE
+ 8pSkpaEoTylKSloShPKUpKWhPCUpSkpUJ00pSkpdJNKUpKXTQlKUpKVCSUpSkpaEoTymlJSoTQnlJJS0
+ JQnlKUFLJ0k0pKXSTSlKSl04TSnBSUyUXKQUXJKa1irlWbFXKSmTFaYqzFaYkpKAkQnCYpKWTJ0klMUk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dMnSUooFiOUCxJTUemanemak
+ psVqw1V61YakpkkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7F
+ Ycq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpS
+ ZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6
+ ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkySlSmJSKiSkpclRJTEqJKSmW5LchkptySku5LchbktySk25LchbkpSUl3JShylKSkkp9y
+ HKaUlJt6W9A3JtyKmxvS3qvuS3JKbG9Leq+5Lckpsb0t6r7ktySmxvS3qvuS3JKbG9Leq+5Lckpsb0t6
+ r7ktySmxvS3qvuS3JKbG9Leq+5Lckpsb0t6r7ktySmxvS3qvuS3JKbG9Leq+5Lckpsb0t6r7ktySmxvS
+ 3qvuS3JKbG9Leq+5Lckpsb0t6r7ktySmxvS3qvuS3JKbG9Leq+5Lckpsb0t6r7ktySmxvS3qvuS3JKbG
+ 9Leq+5Lckpsb0+9VtyW5FTZ3pb1W3Jw5JTZDk6C0orU0qZQmhShIpqmKZSUSipSaUiokpKXlNKiSmJRU
+ ylNKgSmlJSTcluQ5SlGlJdyW5ClLclSku5Leg7k25JSfen3qvuT7kqUn3pb0DcluSUn3pb0DcluQUn3p
+ b0DcluQUn3pb0DcluSUn3pb0DcluSUm3pb0DcluSUn3pbkGUpRUm3JbkGUpRUm3pbkGUpQUm3JbkGUpS
+ Um3JbkGUpQUm3JbkGUpSUm3JbkGUpSUm3Jb0GUpSUm3pb0GUpSUm3pb0GUpSUm3pb0GUpSUm3pb0GUpS
+ Um3pb0GUpRUm3JbkGUpSUm3pb0GUpSUm3JbkGVIFJBTAqYKCCiAorGaYpJikkMSknSCC8LhSCYJ0lwC6
+ iVJRKS6mJTJymKCqWlNuTOKEXJKpPvUg5Vg9FaZQWkJZSTAJ4SW0uE6inQtVKKiQpJkrVTEBTASATpJA
+ UlKi50ITrQEGQBPKaVW9YJxcEV1JyVEoXqhRNoStICUlNuVd1oUPWQtdwt5rkQFUG3IzbgktMW5KUqt6
+ wTG8JWs4WySokqv64Ti2UrTwpYTwoB8qYKVrSFwE6iXQhm2EUUmJTSq5tTeskqmzKdVhcFIWhK1UmTIX
+ qhL1QlaaSwnhC9UJ/VCSaSJihm0JvUSTTMqKbdKdBNKTgpkxKSqSApwUHel6qVo4Wwkq/qhP6wSRwpky
+ D6wTi0FJXClSUQ6VIJwQQpJOmRWrpkkklKSSSSUpJJJJCkkk6Klkk6ZJSkkkkUqSSSSUpJJJJSkkkklK
+ SSSSUpJJJBCkkkklKSSSQQpOmSSUukkkklSSSSSlJJJJJUkkkkpSSSSSlJJJJKUkkkipSSSSSlkkkklK
+ SSSSUpJJJJCkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUukmTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIKUkkkklSSSSSlJJJJIUkkkkhSS
+ SSKlJJJJKUkkkkpSSSSSVJJJJJUkkkklSSSSSlJJJJKUkkkktUkkkkhSSSSSlJJJIJCkkkkkqSSSSUpJ
+ JJFCkkkklKSSSSUpJJJJSkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkkUqSS
+ SSUpJJJBSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSRUpJJJJCkkk
+ kEqSSSSXKSSSSQpJJJJCkkkkkKSSSSQpJJJJKkkkklKSSSSSpJJJJKkkkkEqSSSSUpJJJJCkkkkUKSSS
+ SQpJJJJSkkkkkqSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSQpJJJJSkkydJSkkkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJKkkkkkqSSSSUpJJJJKkkkklKSSSQQpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSSpJJJJSkkkkkqSSSRUp
+ JJJJCkkkklKSSSSUpJJJJCkkkkFKSSSSUpJJJJKkkkklKSSSQSpJJJFSkkkkkKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkySSSlJJJJJUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ0kkLJJ0klKSSSSSpJJJJCkk
+ kkkqSSSSUpJJJJCkkkklKSSSSUpJJJJSk0J0klMYShThKEUsISUoSSUxSTpkkKSSTFJSpTSmJTEpKZSm
+ 3KBKYlJTPcluQ5TbkVJdyW9B3JbkEp96W9V9yW5BLY3pb1X3JbklNjelvVfcluSQ2N6W9A3JbkkJ96fe
+ q25PuSU2N6W9V9yW5JTY3pb1X3JbklNjelvVfcluSU2N6W9V9yW5JLY3pb1X3JbklNjelvVfcluSU2N6
+ W9V9yW5JTY3pb1X3JbkkNjelvVfcluSU2N6W9V9yW5JDY3pb1X3JbkUtjelvQNyW5JKfelvVfcluSU2N
+ 6W9V9yW5JTY3pb1X3JbklNjelvVfcluSU2N6W9V9yW5JDZ9RNvVfcluSUnLk25C3JSkpLKcFCBUgUlJg
+ VIFCBUwkpnKYlMmKSliVElOSoEpKXlPKHKUpKSSlKHKUpJZym3KEqJKSk29PvVfcluRU2N6W9V9yW5JT
+ Y3pb1X3JbklNjelvVfcluSU2N6W9V9yW5JTY3pb1X3JbklNjelvVfcluSU2N6W9V9yW5JTY3pb1X3Jbk
+ lNjelvVfcluSU2N6W9V9yW5JTY3pb1X3JbklNjelvVfcluSU2N6W9V9yW5JTY3pb1X3JbklNjelvVfcl
+ uSU2N6W9V9yW5JTY3pb1X3JbklNjelvVfcn3JKT70t6BuSlJSfem3oMpSkpNvS3oMpSkpNvS3oMpSgpP
+ uSlBBUgUlJZSlDlKUlJQU4KECpApKSgpnFMCmcUlILCgEothQCUlJWK1WqbCrdZSUnCRTApEpKUmSTJK
+ XTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU70
+ zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/1+vSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzl
+ XsVhyr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkklKSSSSUpJJJJS6SSS
+ SlJk6ZJSkkkklKSSSSUuEkgkkpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpZJJJJSkkkklKTpk6SlJJJJKU
+ mTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKTFOkkpgVEqZUCkpgVElSKgUlMSU0pyopKVKeUyZJTKU8qKdJTKU8qKdJS8pJk6Klk0KSS
+ SmMJQpJJKYwlCkkkpjCUKSUJKYwlCnCUJKYQlCnCUJKYQlCnCUJKYQlCnCaElMYShShKEkMYShShKEks
+ YShShKElMYShShKElMYShShKElMYShShKElMUlKEoSUxShShJJTGEoUkoSUxTKcJoSUxSUoShJTFKFKE
+ oSUxhPCeE8JKYwnTwnhJTCE4ClCQCKmbUZqE1ECYVJAkU0ppQUpMUpTFFSxUSnKiUlLEqBKkVEoqWJUZ
+ TpkVKlKUySKl5STJ0lKSTpJKWhKE6SSloShOnSUsknSQUsknSQUxhJSSQUxhKFJJBTFKE6SSlQlCdJPC
+ loShOkkhaEoTpJJWhKE6SSloShOkgpaEoTpJKWhKE6SCloSTpJKYwknTpKYpKSSSlkk6SSlkk6SKlkoT
+ pJKWhKE6SSloShOkipZOknSQWQRGoYRGpLEiSQSSSGKcBJOAkyBcJJ0yC8KKiU5KZJKyYqSYhBSB5VZz
+ lYtVKwpKSNerVRlZzXq3S9BaXQaE5CGx6JKCGJCZOUxQUqUkydJS6i50KSE9JcEFtsKlZkQi3lZlzikv
+ DY+0pxkrN3FEaSgyAOh9oUTkKmSVBxKS6m2chQ9dVCSmBKCqb7b0UZCz2kogJRRTdOSoHJVQyowUEU3h
+ kI7LpWcwFWqmlFaXQZYjeoqtbSinQJLCu+2FWfeo2uhUbHoobRyEheqQcSitBKSm0Lk/roAYU+wpKTeu
+ m+0IBYU2wpKbQvT+uqoaUiCElzZ+0KTb5WeXEKTHpJdZlko7Ss+lyvMKSWZQnuhEKr2FBTB9kIJuUbCg
+ OSSn9dMchV4KYtKSE4yEau6VRDCrFTCkh0qnyrTVTpCuNTwsLIhRUioorVJJJJIUkkkkpSSSSSFJJJ0V
+ LJJJ0lKTJJIqUkkkklSSSSSlJJJJKUkkkkpSSSSSFJJJIIUkkkkhSSSSSV0kkkFykkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJFSkydJJSySdJJSySdJJSySdJJCySdJJSySdJJSySdJJSySdJJCkkkySlJJJIoUkk
+ kgpSSSSSlJJJJKUkkkkpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJIqUkkkkpSSSSSl0kk
+ kFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkkFKSSSSSpJJJJSkkkkkKSSSSQpJJJFSkkkklKSSSSSpJJJJSkkkkkqSSSSSpJJJJSkkkklKSSSS
+ WqSSSSQpJJJJCkkkkFwUkkkklSSSSSlJJJIoWTpk6SlJJJJIUkkkkpSSSSSVJJJJKUkkkklSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJIUkkmSUumTpkUqSSSSUpJJJJS6SZJJSkkkkFKSSSQUpJJJJCkkkklLpJJJJUkk
+ kkpSSSSSlJJJIqUkkkkpSSSSKlJJJJKUkkkkpSSSSauUkkkkhSSSSKFJJJJIUkkkkhSZOmSSukkkkpSS
+ SSSVJJJJJUkkkklSSSSSlJJJJKUkkkkhZJOkktWSSTpKUkkkklSSSSSlJJJJKUkkkkpSSSSSFJJJJKUk
+ kkkpSSSSSVJJJJKUkkkklSSSSSlJJJJKUkkkkpSSSSSFJJJJIWTpk6SlJJJJJUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JIqUkkkkhSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSVJJJJJUkkkkpSSSSSVJJJJKUkkkghSSS
+ SSFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkk
+ gpSSSSSFJJJJKUkkkklSSSSSlJJJIpUkkkkpSSSSSFJJJJKUkkkkhSSSSSlJJJJKUkkkgpSSSSSVJJJJ
+ JUkkkkpSSSSSlJJJJIUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSC
+ FJJJJKUkkkkpSSSSSlJk6SSVkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkkkklKSSSSUpJJ
+ JJSkkkklKSTpJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipScJkklLpJ
+ pSlJSkk0ppSUumSlMkpSYp0xSUxKiVIqBSUsSokp0xSUtKaUkoSUpJKE8IJYpKcJJKYJKcJQkpjCUKSS
+ SGMJQpJJIYwlCklCSmMJQpwlCSmEJQpwlCSmEJ4UoShJTGElKEoSUxSUoShJLFJShKElMYSUoShJTFJS
+ hKEUMYShShKEkMUoUoShJTFJShKEksYSUoShJLGElKEoSUxSUoShJTFJShKElMUlKEoSUxhKFKEoSQxh
+ KFJMQgpilKcpkVMgVIKAUwkpIEQIYRAkpdMU6YpKYFQKmUMpKWJTSkmSUvKaUkySlEpkkkkqShOkipaE
+ oTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSlo
+ ShOkkpaEoTpJKWhKE6SSloTQpJJKYp4TpJKWhKE6dJTGE8J0klLJQpJJKYwnhOnSUxhKFJJJTCE8KSSC
+ mKdJMkpeU8qKdJTIFSBUQpBJTMJnJBJySmvYgFHsVcpKSMVutVGK3WkpMEikEikpZJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0ydJSigWI5QLElNR6Zqd6ZqSmxWrDVXr
+ VhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Dr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu
+ 5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJ
+ JJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ 6ZJIpKYlQKmVApKYFRKmVAoqYEJoUimSUxSTpJKWTpJ0lKTpJJKXSSSSUpJJMkpdJMkkpdJMkipdJJJJ
+ S6SZJJS6SZJJS6SZJJS6ZJJJSkkydJCkkySSl0kySSV0kySSl0kySSl0kydJSkkkkFKSSSSUpJJJJSky
+ SSSlJJJJKUkkkkpdJMnSUpOmSSUunCinRUzCIFBqIAmFTJMnhKE1TFMVKE0IqYlRKmQokIqYFRKkVEpy
+ mJTJymRUpJJJOUvCSSSSlJJJklKlOop0lLylKZJBS8pSmSTVLpJkkFLpSmSQUvKSZMgpeU6inSCl5SlM
+ nTwhUpJJIqUkkkkpSSSSClJJJJJUkkkkpUpJJIKUlKSSSlJk6SSlk6SUJKUkkkkpSSSUJKUknhKEVLJJ
+ 4ShJS0pJ4TQkpdOEwCmAkgrgIoCi0IgCK1cBJPCUIJC0JwEoTpMgWUSVIoZSXhUpKMpwgupkE5CTVIhJ
+ DUuCzritO8LKvKCUG+CrFVqz3vgqVdqCC7lVqstfKyabFoVOlBY2Uk7QnIQSxCkAmhOElLwhPCLKG8pJ
+ Ac7ICy7m6rVvKzbeUGUBqhiOytJgVqtqDKAgNaE5ivOCrvSX01dikKkUCUZjJQVSFtSIKlZaxTDElU1P
+ RTihW9qkGhJaQgZQrNdKIxoR2BEMUmLaoTPbARwh2nROY3NvWe8aq/kFUTqUE0yrZKvVUSg0NlatNeiK
+ EAx0vQV/YokJKaJx0vs6uwnASU0fs6DZTC1C1V7m6JJDjWshDbyrN4VUHVJc3qCtCs6LOoK0GHRJNMyV
+ XsKK4qtY5BICJ6HtlJz1EPQTSVtcogqQ2vRRYkqlxSEVlUIYtCKy0FELSGwxsIwQmOlGCeGIqTKRCiit
+ UkkkkhSSSSKFJJJJIUnTJIqUkknSQskkkilSSSSSVJJJJKUkknSUsknSSUskknQQsknTJIUkkkkhSdMk
+ gVLpJkkFy6SZJJK6SZJJS6SZJJS6SZJFS6SZJJS6SZJJS6SSSSlJJJJKUkkkkpSSSSSFJJJJKUkkkkpS
+ SSSSlJJJJIUmTpkUKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpklKSSSRUp
+ JJJJSkkkkVKSSSSUpJJOkpZOkkgpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJk6SSlJJJIKCkkkklykkkklKSSSSWqSSSSUpJJJFCkkkklKSSSSSpJJJJK
+ kkkkkqSSSSUpJJJJSkkkklKSSSSWqSSSSQpJJJJCkkkkl4UkkkglSSSSKCpJJMkhdJJJJCkkkklKSSSS
+ UpJMnSUpJJJJKkkkkkqSSSSSpJJJJSkkkkkKSSSRUpJJJBCkkkkVLJJ0yKlJJJJKUkkkkpSSSSClJJJI
+ KUkkkkpSSSSClJJJJKXSSSSUpJJJJSkkkklKSSSTlKSSSSUpJJJFSkkkklKSSSQKQpJJJNSpJJJJSkkk
+ kkKSSSSQpJJJFCkkkkkqSSSSUpJJJJcpJJJJKkkkklKSSSSSpJJJJCkkkklKSSSRWqSSSSUpJJJBSkkk
+ kkqSSSSQpJJJJCkkkklKSSSSUpJJJJSkkkkkqSSSSSpJJJJKkkkklKSSSSUpJJJJCkkkkkKSSSSQpJJJ
+ JSkkkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSSpJJJJSkkkkk
+ qSSSSUpJJJJKkkkkFKSSSSQpJJJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSRUpJJJJSkkkklKSSSSUpJJJBapJJJJSkkkkUqSSSSSpJJJFSkkkklKSSSSUpJJJJSkkkkkK
+ SSSSUpJJJBSkkkklKSSSQSpJJJJKkkkkkqSSSSUpJJJJapJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSRUp
+ JJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkkVKS
+ SSSUpJJJJSySdMkpSSSdBSySSSSlJ0kklKSSSSUpJOmSUpOkkkpSZOkkpZJJJJSkkkklKSSSSQpJJJJS
+ kkySSV0kydFSkkkklKTJ0ySlJk6ZJSySSZJS6SZOkpSYp0klMColTKiUlMColTUSkpaE0J0klLQnSSQS
+ FJJk6SVJJJJIUkkkkhSSSSSFJ0ySSF0kkklKSSTJKXSTJJJXSTJJKXSTJJJXSTJ0lKSSSRUpJMkkhdJM
+ nSQpJJMkhdJJJFcFJJkkkrpJkklLpJkkFLpJkklLpJkklLpJJkkLpikmSUpMkkkpcIgUAphJSRqIFBqm
+ ElLpipKJSUjKgVMoZKSmKZOUySlJk6SSlkydMkpSdMkildJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkk
+ pdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdJMkkpdMkkkpUp5TJJKXlKUySSl5TqKdJS6Up
+ kklLynlRSlJTKUpUZSlJTKUpUUpQUySTBOElKTwknSUoKQTBSCSmQTOUgmckpr2KuVYegFJTNit1qqxW
+ q0lJgkUgkUlLJk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0ydJ
+ SigWI5QLElNR6Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJ
+ JJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJ
+ JSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUp
+ JJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpYqBRCFEhJSMqBUyoFFSxUU6ZJSkkkklKSSSSUukkkkpdMk
+ kkpSSZJJS6SZJJS6SZOkpSSSSSl0ySSSl0kySSl0kySSl0k0pIqUkkkkhSSSSSlJJJJJUkkkkpSSSSCl
+ JJJJKUkkkkpSdMkkpdMkkkpSSSZJS6ZJJJSkkkklLp1FOkpdJMnSUpOEycJKSNRmoLUZqBUyhKE4STaU
+ xITEKRTFFTAqBUyoEpKYlQKclRJTlLFMnTIqWTpQnRtSydJJK1LJJ0oStSyUJ0krUsnSToWpZJJOgpZJ
+ JJBSkydJBSySdJClLJJJ0qUoJ0ydPCFJJJIqUkkkgpSSSSSlJJJJJUkkkkpSSSSClJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpdJNKUoqXSSSlJSkkpTSkpcKYUJTgpKTNRAgNKM0oraZpJwmKSQFSlKgSlKC8MihlSlK
+ El4KKFIBT2pQgm1wnJUZhRc9JVWivKychaVr5WddqgvEXNs5UWI72SmbWmq4WxQVqUFZtTYV6p0ILeF0
+ mFSVdliKHykgxZFNKUpklUolDeVIoT01cA07ys6zlaFyz7BqkvCmK2wqmxWWlJkBZWFU7HKxYVTsSXgs
+ 2vVqtyzQ6EdlsIJdMOCfcqTbUQWSkps7lIOVcOUwUkENpjkZrlUaUdhRYyGxuQbTopgodnCLHTm3lVO6
+ t3hVBykgt7GC16BosnGWxTwixEpCEJxRigPCVqBWlSBQ4U2hC11s0C4aKyAhXN0RtQLjZAVONVoZDVSI
+ 1QZA2aFfZwqFKv18JLlPVSxXXCUB7ElNB6hqrTq1EVILkQJSLiFZFKi+lBFtX1SEaq1CfXCZggohBLrU
+ PlXmFZVDoV9j1IGItgqJTByUoraXSTpJLVkk6SSFJJJIoWSSTJWpdJNKdK1UpJJJG1UpJJJK0qSSTpWh
+ ZOkklaLUkkmStVrpkkkrVakkkkrQpJJJC00pJOmSUpJJJBKkkkkkqSSSSUpJJJJCkkkkVKSSSSUpJJJJ
+ Sk6ZOkpSSSSSlJJJklLpJkklLpJkklLpJkklLpJk6SFJJJJKUmTpkUKSSSSUpOkkkpSSSSClkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJS6ZOmRUpJJJJSkkkklKSSSSUpJJJFSkkkklKTpJkFLpJkkFLpJkklLp
+ JkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJJkErpJk
+ kkrpJJklLpJkkkLpJJJIUkkkipSSZJJS6SZOkpSSZJJK6SZOklSSSSSlJJJJKUkmSSQukmTpKUkkkkhS
+ SSSSFJJJklwXSSSSSpJMnSQpJJJJCkkkkkKSSSSUpJJJJVKSSSSSpJJJJSkkkySV0kkkkqSSSSUpJJJJ
+ CkkkklKSSSSQpJJJFSkySSVqUkkkjalJJJIKUkkkkpSSSSClJJJJKUkkkkpSSSSSl0kySSl0kySSl0ky
+ SSl0kySSl0kkkVKSTJJKXSTJIqXSTJIFK6SZJNSukmSSUukmSSQukkkkhSSSSKlJJJJKUkkkklSSZOkp
+ SSSSSVJJkkk2ukmSSVa6SZJJS6SZJJC6SSZFC6SSZJS6SZJBS6SZJJK6SZJJC6SZOkhSSZJJS6SZJJS6
+ SZOkpSSSZJK6SZOklSSSZJS6SZJJK6SZOkhSSSZJS6SZOkhSSSZJC6SZJJS6SSZJK6SZJJS6SZJJS6SZ
+ JJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJJS6SZJF
+ S6SZJJS6SZJJS6SZOkhSSSSSlJJJklLpJkkFLpJkklLpJJkkrpJkklLpJkklLpJk6SVJJJJKUkmSSUuk
+ mSSUukkmQUukmSSQukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmS
+ RUukmSSUukkmSUukmTpKUkkkkhSSSSSlJJJJKUkmSSSukkkipSSSSSlJJkklLpJkklLpJJJIUkkkkpSS
+ SSClJJJJKUkkmQSukmTpJUkmSSSukkkkhSSSSSlJJJJKUkkkihSSSSSlJJJJKUkkkkpSSSSSlkpTEqJK
+ SmcpKIKcJKXSSUZSUyTqIUwkpZJShMUk0smTqJSVS8pSoEptySqSykhhymCkql0k6SSlklKEoQQxShTh
+ KEksISUoTFJVLJJJkrTS6UJAp5StVLQknlNKFq4VJJSmJRtXCukoFyQehaeFmlCYFSRtFLQklKUpWrhU
+ knCSVqpZJJIJKpdJOE6SKYpJymlJVKSTSlKSlJJ0kkLJJJBJSkk6YpJpaUpUSUgUlUySSCdJNKSSTJKp
+ dJMkkil0kyeUlUpMnlNKKFkoTqQCSmEJQibUiElI4TFSKGSkpRKiUxKaUk0oqJUpUSUF3CskmlOkrgUk
+ nSSTwrQmTymlC08K6SjKW5K1cDJJR3JwUrV7a6SQTpWsMFkkimJStbwrylKgXJtyVopIkogqYSUtCUKa
+ YpLhG2KSRKaUV/trpJBShJHAxTSk5DLkkcKTclKBvUw5FYTSROohSSW8Sk0piVElJVpJSUAVKUlLymlR
+ JUdyS8BKkotKIAlaaYpJyFEpIXSTBSCSLWSTwolJVrppTJpSUylKVGU4QXUyShSATwkrhRwmUyFFJXCu
+ FMKARAkrhSNUwhhTCS1lKiU6YootGUMohQykq2JTSnKikm2SZNKdJKkkk6SqWSSSRUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkk6ZJSkkkklKSSSSUpJJJJSkkkklKSTpJKWSTpJKWTKSZJSySdJJSy
+ dJJJSkkkklKSSSSUpMnSSUsknSSUskkkgpcKQUU8pKZJ1GUgUlMwphQCmElMgmcpBRckpBYq5R7EApKS
+ MVpiqMVtiSkwSKZMSkpdMmlOkpSSSdJSySdMkpSSdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSl06ZOkpRQLEcoFiSmo9M1O9M1JTYrVhqr1qw1JTJJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//S69JJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSS
+ SlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySl
+ JJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWq
+ SSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6gVNRckpC5DKI5DKSmKdMnSUpJJJJTFJJJJS6
+ dMnSUpMkkkpZJOkkpSSSSSlJJ0klLJJ0klKSSSSUpJJJJSySdJJSySdJFSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSdMkpSSSSSlJJJJKXSSSSUukEkgkpK1FahNRWpKSBJIJ
+ IKWUSpKJSUwKGUQoZSUwKinKZJSydMnSUukkkkpZJOmSUpOmTpKUkkkkpSSSSSlJJkklLpJkklKSSSSU
+ pJJJJSkkkklKSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXST
+ JJKXSTJJKXSTJJKXSTJJKXSBTJwipI1HYgNCOxFKUJEJ2p4SUhcFAozghOCClgUQIKI0oJCWFEpblB70
+ lwYPdCrvtStsVKyxBmiEr7JQCJUA6UZjZQZEXpSpClXG1KXpIKtp7IUg6EV7IVd+iCdE7LVYZYs0PhGZ
+ YktIdIPUpVRliO10oMdJFFzVNqchJFufcxZ9jVq3BZ9oQXAtdoRmBQaFYrCC8I3MlVrKlp7EN9SK8OQ6
+ shMGkLQfUhGpBeELZR2pgxFa1BK4CIEwCmAkpm1HYUFqK1OCwpwo2cJwo2HRJhc68KpGqt3lVJ1QWlv4
+ y16OFjYxWvQ7RFhk2SEJzUWVAkJLEWxTaxOCFNpCSVw1CtGiNIQbnaJJDl5AVAjVX8gqi46pNiKWpXqy
+ qFSu1lBenUXBPKg4ooARlqdrQolydr0FzZawJn1BOx6k54QYi0LakDZBV2whAIRC1VYhW2FV2BHYFKFJ
+ 2lTCG0IgRUWadME6TEVJJJJIWSSSSQsUydMkkLJwmThBcunSSSUskkkkpSSSSS0rpJJJMZUkkmSUpJJJ
+ JSkkkkkhdJJJJkCkkkkUFSZOmRQukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUumSSS
+ UpJJJJSkkkklKSSSSUpOmSSUumSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSk6ZJJSkkkklKTpkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklLpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6ZJJJSk6ZJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukmSSUukmSSUumSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKTpkklLpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUkkkklSSSSSlJJJJIUkkkkhSSS
+ SSlJJJJKUkmSSUsQokIkJ9qSkQCkApQlCSloTQpAKUILmACkE5CgSkllKYlQLlGUUpJTFMCpQklE5DJh
+ HcEB4SStvUxYqrnQoixJTotfKIDKoV2K3W6UFhTgJQkCkUlqk0piVAuQSGcplHcnBSXBRUSVIobzCC5R
+ fCY2qvZZCruvQS3jam9RZ/rqbbUF1N71FF1qq+ohvtSTTYdcoi9Z9lyELykqnbZcii1ZFdxVhtqKKb5s
+ TCxUvVTixJVN8PUtypsejNeitITSnBQwU+5JCUFPKBvTG1FCYlRJQvUS3ooSylKFvTF6SE+5NuVc2JxY
+ gtTypAoAepb0lJlEqHqJb5SXhRCQCflOAkuXCkohSlFVLEJoUkxSUsmSJUC9BTNKUPepBySwspSTJ0Vq
+ 4UwhhTBSQkCYppUSUlMXFBcURyE4JJCMlR3pOQXOhJkCbeol6rmxNvSZAGxvT71X3JF6TJTY9RRNqqut
+ hAfcmlVN83KPrLNN6YXJiHS9ZN6qz/VKcWpL4h0Raptes5tqsMeiycLeaVMKuxyMHJMMwyKgVIlDcUmu
+ WBKaUznKG5FYU7Sigqs1yJuSWpS+EJ1sIVlkKnZei2MYbxtTh8rMF0qzXZKLZpvtKnKrNep70lpDJ5QH
+ FSLpUeUWGQWCI0JmtR2tSak1AKSUQokpMNrOQyiqDgivCOYT70N5hBL0mQNkvlIIDXSjsQXhMxFCEFIF
+ JcWZQyFMFIhJiLAJwUxUZSWpJTQogogSSwhNCLCaEkhFCkAibUx0SZguE8oRfCibUlyQlRUN8pwUlMwp
+ hDCmEkFKFMIYUwkwlkmKdJFYwIQyEUhQISUhIUSiEKBCSgxThJJJlDJJME6SlJk6ZJCkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklLpk6ZJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSKlJJJJKUk
+ kkkpSSSSSlJJJJKUmTpJKWSTpJKWSSSQUpJJJJSkgUycJKSBEahNRWpKSKLlJRckpq2IBR7EApKSVq2x
+ VK1bYkpImKdMUlLKSipJKXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXT
+ pk6SlFAsRygWJKaj0zU70zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Pr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkk
+ kpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkp
+ dJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSS
+ SSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLqBU1ApKROQyiOQykpinTJ0lKSSSSUxSSSSUunTJ0lL
+ JJJJKUknSSUpJJJJS6SSSSlk6SSSlJJJJKUkkkkpZJOkkpZJOmRUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkydMkpSSSSSlJ0kklKTJ0ySlJJJJKUkkkkpdJJOkpSQSThJTNqM1BajNSUkCSYJ0FLKJ
+ UlEpKYFDKIUMpKRlMnKZJSydMnSUukkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSTJJKXSTJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSZOkkpScJkkUhM0ozVXaUZpSXUnClKGHJ9yCCuShuClKUJLUe1LhEIQ3aJJYufCr2Wp7HKpY9Bc
+ CtZZKrnVSOqmxkpMgkwYyVcqYlXUrTGQgu4mTGKRYpgJyit4mpYxU7WLTeJVaxiC7icxwhRD4Vi2tVS2
+ EKQZtquxW63rOrV2spUs4m4HpOtQS6EF9iVItlbZKo2OlTe+UIiUqXArAozHoO1OJCFMoLcFiYvVcEpy
+ SjS8Fk9yA5yTygPKBC4FJvUxYqm4qQcU2k8TcD1MOVRpR2JUribLSjNKrsCO0J1LSUwKhYdFIBDsGiVL
+ C0L3KkX6q3eFReNUqWFuUWwtOm9YVZhXa7CEqYyHZGQonIWb6pTG0pUt4XR+0JxkrKNpTeqUqTwux9pQ
+ bciVnC0qLrSlS4BJdbKrbpKi90pmcpUyht1K9WFTpCv1jRKlzJDejwg2BClW1nlQD4UrAgFKkEtlt0Jz
+ eqklQc4pUxlsOvTNtlUi4olZKQC23SrMq0wKnQFfrCkCrZgKQSATooJXSSTIMZK6SZJFba6SZOgq1kyk
+ mSUCskknSXhSdMnSSskkkkpSdMkktK6SZOkxlZJJJJSkkkklKSSSSXBdJMnSXgKSTJ0lFSZJOitWSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKTpk6SlJJJJJUkkkkpSSSSSFJJJJIUkkkkpSSSSSlJk6SSlwnlRlNKSmRKjKiXJpSUlBUwg
+ gogKS5coTlMlQISSjKQCntThqSVgphR4SlJK5QLAiyhuEpJaVgQCrdjVXc1JTKtyu1PWcDCsV2IIIdNr
+ lIlVa7EcGUFtLOKGSiFCcEFwCpU2lCUmlJdSaUG0okoNp0QVTQvfCpPs1VjIKoOOqC8BM18o7Cq1YVpg
+ QXUzlCeUQmEFxSTSB4lQDSjESpsYElUqphVkNSY0IwCSqQkJBEIUUVtM2FWGlAajNSRSWVBz4TlAtdCK
+ KU+2EI3qtbYq5sKK2nRF6kLlnNeUZpKKKbvqqJtVcEpapWikptTi1AgpxKFoptC1I3KqTCG+yElU3PXR
+ GXysk2otdqS4B2GWSihyz6nyrTSkvpPKcOQk8pKpLuUC9DL0Jz0bVSR9iA65CssVOy1BFN4XozLJWOLt
+ VdoslJaQ6jDKJCFSZVgBFYQjhOpEKKSqUkUk6SqYEKJaiwkQkqmo9qp2BaNgVC4JMgDVJThMVNoSZAFw
+ EzgigKDwkvAar1WerViruCaV1IIU2tUg1GYxMTwotiW1WdigWpMkYI2hWGFBCK0osnC2WORQ9V2lSlJh
+ nFMbEJ1qG4qu9xSa5gmdaoeqqrnlQD0Vhg6LLUXes9j1Ya5FbwMrXKhYVcfqqz2JW2ccETCrdTlWDYRm
+ GEmzwtwPT+oq25PuRtYYtgPlEaVVaUdhStilBssRgVWaUUORtqTgkJUClKUJWwcC4TkJBIlK2QQa1oVV
+ wV54lV3sSteIIW6KyxyrnRJr4SXcLeBUgqzHyrDSkkxSApEqEqJKTGYruKgnTgJLOFdqICoBPKKeFnKU
+ qBKaUkiKUlCsfCi58KrdakygKsvhB9dVLbUFtmqS6nXrslWWGVmUOlaNaSKTBTCiFIJIIZhECGEQJMJD
+ IJ0yRSY6WKgVMlDJSQxKgVIqJSSGKZOkkyBSdMnRUpMnTJIUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpdMkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKSSTJ
+ KXTJJJKUkkkgpSSSSSlk4TJwkpm1FahtRGpKSKLlJRckpq2IBR7EApKSVq2xVK1bYkpImKdMUlLKSipJ
+ KXSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU7
+ 0zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6
+ SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs
+ 5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukk
+ kkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSS
+ lJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklLqBU1ApKROQyiOQykpinTJ0lKSSSSUxSSSSUunTJ0lLJJJJKXTpkklKSTpJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqWSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0klLJJ
+ JJKXSSSSUpMnSSUsknTJKUkkkkpdOmTpKUnCZOElM2ozUJqK1JTMJ0wSQUpRKcqJSUwKgVMoZSUwKZOU
+ ySlk6ZOkpdJMnSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKTpJ0lLJJ0klLJ
+ J0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0
+ kkhQUw5QSCS9OHKYMoDUdgSQWYCnCQCRKCxi4qvY5Ee5V3lJSCwygObKsESkK5SS121o9daK2pFDISXB
+ ZjEYBRCeUl7KUpUZTIIXKg5sqaUJKadlcqq+lahZKGaklpc9tUKwxsI3pJwxJYiIQHtlXC1QLElwaXpq
+ YpVoVoja0VwafoJvQWiKwn9IIgL7c30ExpWkagoGtGlwLlvqQH0rXdUhOpTCyAuSaU4qWkaEwoTU2021
+ I7KlZbSitqRWkoWVozWIgYphqNLTJgGob2KyAmc1Jbbk3VKk+lbVlcqu6lJVuY2pHZWrQpRW0pIamwpj
+ WVfFKcUpIc70il6JWmKE/oJJcv0iouqK1DShupSXByjUpMrV40pm1JLlqWK8wIVbFaa1JBK0Ib2o8KJa
+ ki2k9iAaloligakEuf6SY0StIVJxSEFhcn7Misx4WmKApeiAitatVcK0wQn2QnATwpkE6ZOktKkxSTFJ
+ jKkkySSGSSYKSSFJk6SSQskkkkyBSdJJJSkydMkpSSSSSCpJJMkxrpJJJKUnSSSUsnSSSXBZJJJJkCkk
+ kkkFSdMnSWrJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJ0ydJSkkkkkqSSSSUpJJJJCkkkklKSSSSQpJJJJSkkkklLFRKkVEhJT
+ FJOkkpcJwVFOElzMJ4TNRAEksdqYhTKG4pKYOKGXJ3FQ5SXMwU8JNCnCSWtYFUs0V21Z9xQUhc+E7LVX
+ e5M1yBU6lVivVulZFLlo0uQVTc5UC1SaZUyEkNctSARSFCEF4Ug28IyDadEkhy8hUTyr2Qqcapq8Jagr
+ I0CDUFYI0SXILHQqzrUS4qk52qSmwLEZj1SZJVhgKSm4yxE9VVACpapKTmxIPQQCiNaUkJ2lWGKuxqtM
+ aihlCrXK5Cq3BFDmWoIEqxaFBg1SQkqrlW2UpUMWgysIrS0xQn9BX9gT7Aitc40JjStL0woOqTUOW+uF
+ VtateypUba0kuaQiVKbmKVbEl4bdIV5gVWlqvMCKiraou0RigWFJQKF7kJzk73IRKC5HYVQtK0HhUrmo
+ oLWDtVoYzlQDdVdxgktLtY50VsKnjq2ElhUVGU5UUlKlKUySSmQKRKimJSUGFpVC4q3YVRtSZAGuTqpt
+ chkJwkvDYDkN71GUJ7kl4YWPVdz09jlXcUCvCdr0dj1RaUZjkxeG2XoTrEMuQXvSZQn9RFY9UA9WKnJL
+ 3QYZRQJQKirbAiwzROYq72LQLUCxiTXLmPYh7VcsagEJLSsxWGFABRWlFalQ3BS3KBck2cbAhNKRcoSi
+ 2EkqQUGorQktLNqK0oQ0Ug5Jik2WlFaq7DKtMCLUmyAUoTgJ0mFiVElTKgUmQLFBepuMIFj0l6Cwwgb9
+ VKx6rkopbldit1vWbWVcqKSm4DKUKLCiAJMRWATwpQlCS1ikE8JJJVCi5OTCG96KgisdCo3PVqwyqdgl
+ JkDSeZSY3VFNamxiSWxQFo1KlUIV1hSUnCkFAFTCS0pAphQCmEmGTJMSkmKTGsSoEpyVAlJCxKiUiVGU
+ lBdJMpJMgUknSRUsmTpkkKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKTpkklLpJJJKUkkkipZJJJJS6SSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkyCl0kkklKSCSdJT
+ NqI1DCK1JTNRcpBRckprWKuVYsVcpKSVq2xVa1aYkpKolSTFJSycJlJJSkkkklKSSSSUskkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl06ZOkpRQLEcoFiSmo9M1O9M1JTYrVhqr1qw1JTJJJJJSkk
+ kklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSn/1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElNliOE
+ BiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkklKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUuEkgk
+ kpE9VXq09VXpKYhHYgBHYkpsNUlFqkkpZJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuoFTUCkp
+ E5DKI5DKSmKdMnSUpJJJJTFJJJJS6dMnSUskkkkpdJMkkpdJJJJS6SZJJS6SSSSlJJkklLpJkklLpJJk
+ lLpkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMkpSSSS
+ Sl06ZOkpScJk4SUkaitQmogSUkCSQSQUsVEqRUSkpgUMohQykpgVFSKikpSdMnSUpOmTpKUmTpklKSST
+ pKWSSSSUpJOmSUpJJJJSkkkklKSSSSUpMnSSUskknSUpOmSSUukmSSUukmSSUukmSSUukmSSUukmSSUu
+ kmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmTpJC4CkGpNCM1qDIxaxHaEgF
+ LhJaVTCG5yclDcUliN5QyJRCEtqSEYaiNYpAKQSRag1IhSlNCSQWKUpyE0ILrXTgJgpBFVqATwnCdJHE
+ tCYhOSokpLDJbam2qUp4RRaMtUdqMQokI0kFhCcJ4ShKmQFkCpSoQlKIZAyJUClKSK5jCW1SSTSE2wLE
+ 2xFShNpBkjDFMNUgE8JUtMmMJJymRW2uEimTpKtG5qGWKxCbalSrQBikGIkJ0aXMQxSDU6eUqUttShOk
+ jSWBCg5qKVEhCkgtcsSDEUhIBKk2pjUYBQaiApLSVQmITymlBba21LanlJClWxhOEimlKkWkCRQ5SlKl
+ WuUyUp0UqCdIJ0UFYqJUiolBjKySZOihcKSiFJJCkkkkkhZJJJJeF0kkkkqSSSSUskkkkgqTJJJLCukk
+ kkpdJJJJSkkkklwWTJ0yTIpOmTpIKk6ZOgsUmSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpkklLpJJJJUkkkkhSSSSSlJJJJKUk
+ kkkhSSSSSlJJJJKWShJJJSxCZOU0JJWThKE4CSWTVOVCUxckpk5yA5yTnIZMpJX5UmtTNCM0JJZNCTjC
+ RdCC+1BSK5yzrirdj5VR7ZSS03CU7Wqx6UqYqhArgwr0V2p0KtthTY6E1dTp1vRwVn1WK0x6K0hKUMqR
+ KiUFBYlAtKMVXtQZAHPvVUcqzcqw5QXgNmoIzhog1KxEhBNNC8KoWSVpWslV/T1STTCqpXGVKFYhWA4B
+ JVMDWo7FN1gUPUCSqZtYjMrQmPCsscEUEM2MR2tUGlFBTmIrkKlerjiqWQUkBzbTqo1nVK06qNfKS51M
+ cq+wrPxwr7RoigpNyQcoFNKVraTgpIQcphyC2mD2qlc1X3KlckkOe8J2BKwpmOSZAG9UrbSqFbkf1Ekk
+ NgvVe16i61Vn2SjahFT3JgUIulTYUE0kI0VW1qtSq9pSRTV26q1QFWJ1R6XJLSHXoKtgrOperbXpLCEx
+ ShQDlIFFFKhKE6dFDAhRKmVByC4IHhVbGq25BcEGQBplijtVktQyEV4CEhAerDkB6S4NZ4QC1WXhCITS
+ vARtajNak0IrWpjIAjLUB7VdLUJzEmQNOEetIsUmiEWSm5SVdrKoVFXGFJgmGwSgWOUi5VrXpMFIbHKs
+ 5ynY5AJlJFMwURpQ2NlHbWiimJcoOeiuYgPCTPALFycaocIrAiz0mYEYBQYEYBJYUbjChuUnoMorCG5U
+ 5X6lmUlaNRSa0w2FAlOSoEpMVMgUxTApnOSXAILXQqVr0e5ypPMorwGJMpBsqTGSrDakV1ImMhWWaKO2
+ Eg6ElU22FFBVVjlYYUlhCWU6iE8pLeFeFBxhOXIFr0kUxfZCAbZQrXoG/VJVNqZTFkqDHI0orgGu5iiB
+ CI8oO5JLarKssKpMcrLCkhtNKM1V2FGYUlhTtUwoNRAkxlSiVOFEhJjKMoZRChlJawKipFRSSoKQUQpJ
+ LmSSQSSUsmTpkUKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUukkkkpSSSSKlkkkklKTpkklLpJJJKUmTpJKWSSSSUpJJJJSySSSCl06ZOkpSQSThJTMIjUMI
+ rUlMwouUlFySmtYq5VixVykpJWrbFUrVtiSkqiVJMUlLJ0wTpKUknTJKUkkkkpZJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklLp0ydJSigWI5QLElNR6Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklP//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SU
+ ukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1V
+ erT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6gVNQKSkTkMoj
+ kMpKYp0ydJSkkkklMUkkklLp0ydJSkydMkpSSSSSlJJJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkV
+ LpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6S
+ lJwmThJTNqKEJqKElMwnTBOgpZRKkVEpKYFDKIUMpKYFRUiopKUnTJ0lKTpk6SlJk6ZJS6SZJJS6SZJJ
+ SkkkklKSSSSUpJJJJSkkkklKSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXST
+ JJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXTJJklMlIBRCI0JJDJoRmoYT7oQZE8qJKFvUgZSWF
+ RKaFMBS2oLUe1KFMhQJSQsVGUiUySKZAogCgAiBJICoUSFOUxSXUjSCchJJFMgU8qKSKKUSoEqcJtqS0
+ hYFTBUITyitpmVEppTorgFgFMBIBOkyALEKBUyVEpzIGKSSaUly5KaUyUJpQVwVIJgFMBNWlSdKExSWE
+ qTJSkii1JBJIJKtkAlCQToptgVElTKgUl4KpTyowpQkvXlJMkjaF0xTpEJKYFRUyE0IKtQUpSAUoSWks
+ SU0qRCaEFtqlPKaE8JKWKipEJiEErSlKUJklUyBThRTgorqZhOogp0kEKKiVJRKTGQskkkiilwpKITpI
+ pdMnTJJAUkmSSXgLp0ydJKkkkklLJk6ZJBUkkkixlSdMnSUukkkkpSSSSS4LJJ0yTIFk6ZJBBXTpk6Cx
+ ZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSFJJJJKUkkkkpSSSSSlkydKElLKQCcBTDUksNqR
+ CLCiQklCTCE5yK9AckpiSnASAU2hJLJoUyYUZhBtshJKrboVJ96HfcqLrZKCm+H7kVjJVKl0rUobKSVC
+ lJ1UK4GKFjUCvDnPbCCTCtWhVHBNXJq3q5W9ZzTCtVuSS3gZToTHIoKS1iQq9qtFVrUiui5tyq91buCq
+ HlNXtioq00qgwwrDHpLkrhKC4KZehuKSrWLoQ3WwmcUB6SrXdcmFyrulMJSVboV2q3XYsytW6ylSHRZY
+ jteqLCrDCitbBcqd5ViVXuCSHOt5SqGqlYEq+UUF0ccLQaNFQxyr7CisK5CGQikoZSKgwU2lNCm0IKKi
+ qd6vEKneEkBy7SoMKnaNVFjUmQNmsohcmrapuYkutrvegkyjvYh7ElMAEZgTtrRgxJVoyqlrlde1ULwk
+ i2s5+qLU9Vnco1ISWl1KXK4xyo0BXmNSWpgVMFQAUwElMwU8qKdFCihOKIUJySQjcUIlTeUBzkGQKJQ3
+ FIvQy5FdbF5Vd5RnFV3lJcCjcVBIlME0rgWbUVqEFMFMpeJJkxaohynKK8SQuaoQjOQikycaWtWmKrWr
+ lYSY5SXcqtqvFirWsSYDJz3qIajvYohqK3iSVMVtlSFUFcYEkcSB9SqWsWk8KnaEmaEmjtRGBOQpNCLP
+ xJWBFQ2ogSWmSJ4Qi1WSFHYixmS1QhXaiqzGqwwJMEi2AUxSCTikxWwLoQn2JWPhVH2JLwV7HSghslPM
+ o1bZSX2yqqVkVwE9bEUjRORbTsEKsTBVy0Km8IptLW5XKys5hhWq3oIJboKYlQa9SJSW2je5VrHI7wqz
+ wkhrP1UAEYsTtrSUswQpkqYrTPYkutqvchbkaxqBCKrT1lW6yqlYVusJIJbLEdiAwI7ElhLYYihCaihJ
+ jK6iVJMUlhRlCIRShlJajIUVMqJSUsnTJJLmSSZJJS6ZJJFCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpMnTJKUkkkkpSSSSSl0kkklKSSSSUukmTpKUmTpIqWSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkydMkpSSSSCl06ZOkpScJk4SUzCK1CCK1JTNRcpKLklNaxVyrFirlJSStW2KpWrbElJUxTqJSUoJ0
+ wTpKXTJ0ySlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dMnSUooFiOUCxJTUe
+ manemakpsVqw1V61YakpkkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/X69JJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ Sk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSk
+ kkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkk
+ klLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpK
+ UkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS6gVNQKSkTkMojkMpKYp0ydJSkkkklMUkkklLp0ydJSkySSSlJJJJKUknS
+ SUpJJJJSkkkklLpJJJKUmTpklKSSTpKWSTpIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJ
+ JJSkkkklKSTpJKWSTpklKSSSSUpJJJJSk6ZOkpSdJOElMgihDCIElMwkkEkFLFMU5TFJSMqBUyoFJTAq
+ KkVFJSk6ZOkpSdMnSUpMnTJKUkkmSUukmSSUukmSSUukmSSUpJJJJSkkkklKSSTJKXSTJ0lKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJS4RG
+ lDThySQmlQJTBycCUF6wKMxRDERohJBStCkVAGEi5BYpyEVMmU0JIRwpAKW1PCSVAJJSmJQXBeUlCU+5
+ JcvCUJtyYuRUunUdycFBDIKUKAKfcitKiFAhEmUoRWowFMBPtS4SSumKUpiUV4WJTEpEqBciyALlMlKc
+ IpVCkAklKaVpLMBShQDlLcgxFYqBKcuQy5JjJZSnUA5SBSW2vKQKZJFNswU8qAKeUkWolRTEqMossUgU
+ oQw5TDkmRRCZOSmSSuE6QTpKLApJEpgUmMlIApwhtKJKC22JCjCkSoEoKXhPCjuThySl4TbU4cE8pLww
+ LUxCJKiSkvCOE8JyU0pLlwpAJgVIFJBWhIhSlNKS0sYTQppklqydJJJCk0J0pSStCUJ5SlFeqEoTykkp
+ ZJOmSQsmTpkUFSSSSTEpOmTpKXTpk6SlJk6ZJIUmTqKTIFJJJJIK6dMnQWqTJ0ySlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0
+ kkklKSSSSUpJJJJSkkkkkKSSSSUpJJJJSkkydJSk4CQUklLgKQUZTFySUkqDioF6gXJKU5CIRJlKEkow
+ 1S4UoQ3mEksHvhUrrUS16pWGUkoLXEoIaSVZ9Pcisx0lLY7FrUCFVrphWmaIKbYKG9IOTnVArg1LGqq9
+ i0XMlAfWgvBaEQiMfCexsIBMJJbzLUdtiy22QjNtSU6BegWOlBFiZzpQSENuqqOarbhKh6cpLkDWorQU
+ RtSKKkEtfVRIVv0lE1JKahCE5iumtDNaSmia0wrVz0lJtSSkDK1ZYxEZUiitFDBoR2BRDEVjUkMwEC0K
+ 0AgXBFFubahNfBRbwqZMFJDqU2wrjL1hstIR23FJTr+ul6wWV65S9cpIdYWhEbcFjDIUhkpILsG4Knfa
+ FUOSq1t5KSEljwSnqMqibCSrFDklzq1CUYsQaCrYCSWq6tR9NWy1Q2pKtE1iIGKQCmAkm2tYzRZ97FsP
+ YqV1SS23GczVGpYjup1U6q4SU2aGK8xqBS2FbYEVpX2pQpJikhZJRJTSklkSoOTymKSWvYqljoVq1ULi
+ kuDEvSBlAnVFYJSXBdwVd4VwtQHsSXNUhOGomxFZWgVIdqYhW/SQ3VpiLQhFCYMRmsSXAoXBAJVx7FUe
+ EmS2dRWjSsyvlaFJSY5FtEaKvaEcnRV7SixktR4UApPKgElttitWmFVagrbQkhZ5VSwqzYqVpSZYlGSn
+ aUKURgRZbTNRAUMBSJhJBLIuS3BAc+EMWJLCW+wo7VSqfKuMOiTDIpd0IT7FGx8KnZaksZ2PlVzqlulE
+ YyUlwKzGq3UxRZWrLGwkvBSMCkUmhShOXBrvbKqvYr7moL2JJaBbCk10Iz2ILhCSEzLUYWSs8vhTZakh
+ vHVQLJTVulWWslJTVNSdtatmtR2JKRitM9isAKLgkpzbK1XLFovagGtFSJjFaY1RYxWGNSWlkwIzQotC
+ K0JLSzaiBQCkktLKVElKVElJYViVApyVElJDEqJUiopKWSSSSUpJMnSUukkkipSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJklLpkkklKSSSSUpJJJJS6SZJJS6SSSSl0kkklLJJJIqUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJk6ZJSkkkkFKTpk6SlJwmThJSRqI1CaitSUkCg5SCi5JTWsQCj2KuUlJa1aYqla
+ tsSUlTFJMUlKUgohOElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0y
+ dJSigWI5QLElNR6Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Dr0kkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkk
+ kpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkp
+ dJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSS
+ SSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLqBU1EpKQuQyiuQikpinSTpKWSTpJKYplIpklKTpJ0l
+ LJk6SSlkkkklKSSSSUukmSSUukmSSUvKUpkklLylKZMkpeUpTJJKXlPKikiplKSZJJS6SZJJS6SZJJS6
+ SZJJS6SZJJS6SZJJS6SZJJS6SZJJSk6ZJJS6SZJJS6SZJJS6ZJJJSk6ZJJS8pSmSSUylOCoSnBSUlaUR
+ pQWlFaUlJAnUQU8oKUVEp0xSUwKgVMqJSUjKiplMkpinSTpKUkknSUslCdJJTFMpFRSUpJJJJSkkkklK
+ SSSSUpJJMkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZJJSioynKZJTNpR2BV2qwxJdacBIpApiUqQSxJTSkUgEEMgpgK
+ ICeUEs4TEJtyYvSTSxQ3GE7noD7EGSMVy+EM3QgWWqs+5C2TgbpvTfaFmG4phaUrVwOsLkVtkrJZaVZZ
+ alauB0Q5TBVNlqM2wJWsMGy1TCA2wKfqI2s4EhKE5yYvQnOStXCz3pb1XL1AvStcIthz0I2IDrEM2I2y
+ ANsWKYtWf6qf1UeJcYt82pvWVA2lIPKBKwxdJtkqe9UWPRt+iFrDBI+yEE3INtqqOt1StiMHSZbKsMMr
+ KqslaVJlG1vC2AE+1TaFKErRwoYUSikITkrVSNxQyYRHBBfojbIAv6kKQtVN74UBala50w+UQKjVZKuM
+ MpWlImJTqJStSxTAJ04CFrCFwpSmhJK0UsShOcpuVax0JWqlzbCj68KnbbCquvSteIOsMlSGSsT1ypi8
+ oWyiDtfaExvWQLykbyla7gdM5AUftIWU68oRvKVruF2xlBEGSFgDIKMy8o2tMHcF8p/WWWy4onqoWsMX
+ Q9ZOLJWd6pRa7EbWcLoAypIDHIu5K0UomEN1kKNlip22pWkRbRvSF6y3XKIvKVrqdltsogfKyq7lbrsl
+ G1U3AU6E10ooKVoIVCaFJNCNrCxSTwmStjKk6ZOlaF06YJ0kKTJ0yS4LJk6SNr1k6SSCCpOkkkhSZJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSFJJJJKUkkkkpZJOkkpQUpUUklLkqJKUpikliSoqcJoS
+ UoKYTAJ0kqKBYEcqBbKSWhYyVXNUrSNUqPopKaldKtsqU21wjAQkpFshNCMQokIJYhECYBSCSbXhDe1E
+ TFKkgtG2tVH1LVcyUI0yhSbcv0yphhV/0EhQlSbagaVIMVsUpxUhSeJqempCpWxUnFaVJ4kDakQVowYn
+ hKlcSD01E1qzCbalSuJpmpQNSvFij6aVK4mj6SmKlb9NOGJUria4qUtiPsT7UqVxNfYptaibU4ajSOJa
+ EG1sqzCi5spUttyLqpVJ9BW66mUI40pUq3GFJUhUVrfZUvsyVK4nK9MpGsrV+zJfZkqVbk+mUgwrV+yp
+ fZUqRbllhQnVErZ+ypjiJUq3FFJVqmohaAxEVuPCVJthS2FcaFFlcIoCVKtYhQIRU0JUq0UKYCeE4CVK
+ tYhAsZKsqJEootoOqTtqhWyxIMSpVsGNhHamAhOlSLZSolPKiUqRbEqKnCaEqTawSKdMUqTaC0KjayVo
+ OEoD65SpNuds1RmMRjUnDISpdxLbUJ7FYhMWpUniaorRmMUwxEDUCEcTDYhOrVqFEtTaRxtUVogYi7E8
+ JUuE2u9iqPrWiWyhmqUqX8bQZXCuVCE4qRGshKlhmueEGwSrEKJZKVLOJoOYmFaumpIVI0jiRVsVpoTN
+ ZCIAlSOJBYFStYtJzZQXVSlTJGTmitFZWrXoqYqSpfxoAxM5qtbExrSpHG5z2FCDDK0jTKj6CVLTJDS2
+ FcbwotqhFARpjMkFoVJ7TK0nMlBNMpUstpsYrlTE7aYR2thKlwK4apBJJKl3EzBUpQwU8pLuJmVAhPKZ
+ JXGic1V7GK4QhuZKSuJzXsTNaZV41SmFKSuJVIV5irsZCMDCKuJKUMpbkxKSuJdRKUpkkcTBwUNiLCUJ
+ K4mDWorQkApBJHEuEQIYKkCki0oKdQBUgki1yolSSISQjKgUQhRISQwKaFIpkkMYShSTQkhjCSeEklKS
+ TJIpXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ0lKTJ0klLJJJJKUkkkkpSSSSSlJJJ0lKSSSS
+ UpJJJJSkkkyKlJSmSSUySUU6Sl0kySSl0kySSl0ySSSlJJJklLpkkkFLp0ydJSk4TJwkpmERqGEVqSmY
+ UXKQTOSU1bFXKs2KuUlM61bYqtatsSUkUSpKJSUspJkklMkkySSl0kydJSySSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU70zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKf//R69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkk
+ kpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1
+ VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOEydJSlEqagUlInIZRHIZS
+ UxTpJ0lKSKSRSUxKSRSSUukkkkpSSSSSloShSSSUxhKFJJJTGEoUoShJTGEoUoTQkpjCUKSSSmMJQpJQ
+ kpjCUKUJQkpjCUKUJIqYwknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUtCeE6SSloShOkkpZKE
+ 6SSlk0KSSSmMJQpJJKYwlCkkkpjCdOkkpjCcBOkAkpk1FahgIgSUzCSSSClkxTpklMSoFTKgUlMSmTlR
+ SUumSSSUukmSlJTKUlGU8pKUmTpJKWShOkkpaE8JJJKWhKE6SSlkykmSUtCSdJJSySdJJS0J0k6Slkk6
+ SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SS
+ lkk6SSmMJQnSRUuAisQwiNSQlBSJTBKElKUgEwCmEEqhQcYUyUCwoLgs6yEF18IdjlUe8prIGy7IQH3y
+ qrnlDJKRZohO6yUImUwBKK1iayItkqQrVlrFPYEEtUNhPuhHc1VrAglmL4UxlKg+VAEpLC7DMmVYZfKx
+ a3FXKnlFidIPlMSgscipKYFDcURyC8pKRucglyd7kIlFeGW5SGqGEdgSXsmslFbUiVtCOAEWMlrhsKL3
+ wjvVO0oLUVj5QOVJydoSWEJqQtOhUagr1SLGW4wqe5ABTlyS1mSoFRL0wckilyECwKwNVGxqS8OVcFXn
+ VXb2Kk4QUlzaoctKorHqfCv02pKb6iQmY+VNJDBSCYhIFJBSAJ4TNU0lqB4VG8q/Ys+9JeHOucqjjKsX
+ IAElJlis1pKKKyi1MlWRWEGcNIsUSFbe0BCISXNYtJUfTJVwMlEFQSU0BUUZlRVwVBSDAEUFCxiIGoga
+ ERrUmIoAxFYIRgxOWQksKmuhJ10IbzCrWPKSEllyrPfKiSSpMYSkpEWkptpCvNoUX1QilrsMK1U9VXCF
+ JjklOpW9WGuVCpytsKK0tgFOhgqYSWFeE0KSUIsZYQkpEJklqkkkyKF5TJkkkhSdMFIJL1JKSYpKYpJy
+ mSQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkk6ZJSkkkklKShJJJ
+ SkkkkkqShJJJS8JbUpSlJKoTJ5TJKUlCSSSlJ0kkkqSSSSSqE8JpTykpW1LalKUpKWhPCUpSgpUJQlKU
+ pJWhJJJJSkkkklKhKEk8pKVCUJSlKSloSSlJJSkkkklKShJJJC8JbQkCnlFC2wJbAnlNKSlbAltCUpSg
+ pWwJbAlKeUkLbAn2BKUtySlbAm2p9yaUVLQklKSSVJJJJJUkkkkpSSSSSFQlCUpSkhSZKUklLJ0ydJSy
+ UJ0kVMSolTKgQkpgQokKZUSklGQokKZUSkljCUKUJQklaE8J06BQVoShOkgsWhNCkmSXBjCW1OnSXMdq
+ UJ5SSWlaE8JJ0lqtqW1PKUpIVCUJJJKWhLapJJLgx2JtqImSXsNqW1TSSQw2JbFNKUkFhtTQppQksLDa
+ n2KSdJaw2pbVNMkkMYShShKElzGElKE0JKWShOkgpaEoTp0ly21LanlKUVMSEymU0JKYp06SSlkoTpJI
+ WhKE6SSFJJJJKXTgqKkElMwiBDCIEkskikkUlMSoFTKGUkMSmTlMihSRTJJIUmSSSUpKE6SSVoSTpJKW
+ STpJKWSTpJKWSTpJKWSTpJKWSTpJKWShOkkpUJQkkkpUJQkkkpUJQkkkpUJQkkkpUJQkkkpUJQkkkpUJ
+ JJJKWhKE6SKmMJQpJJKYwlCkkkpZKE6SSloShOkkpaEk6SSlk0KSSSmMJQpJIKWhJOkkpSQTJ0lJAiNQ
+ morUlJAouUgouSU1rEAo9iAUlJK1aYqrFaYkpKolSUCkpSSZOkpdJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJS6dMnSUooFiOUCxJTUemanemakpsVqw1V61YakpkkkkkpSSSSSlkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJT//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SU
+ ukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1V
+ erT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKXUCpKJSUichlE
+ chlJSydMnSUpIpJFJTEpJFJJS6SZOkpSSSZJS8pSmTpKVKSSZJS6SZJJS6SZJJS8pSmSSUvKaUySSl5S
+ lMkkpeUkydFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJJJklLpJkklLpJk6SlJJJJ
+ KUkkkkpSSSdJSycJk4SUzCIENqK0JKZAJQpAJQgphCYhThRISUwKgUQhQKSkZUSplRKSmKSdMkpSdMnS
+ UpMnTJKXSTJJKXlKUydJS8pSmSSUvKaUkklKlNKSSSlSlKZJJS6SSSSl0pTJJKXlKUySSl5SlMkkpeUp
+ TJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5S
+ lMkkpeUpTJJKXlNKSSKGbUZgQWo7EUWkDU+1SanKCkcJ5TlRKCViUB6KUJyaV4azxKrvrVtyE6EGYBqG
+ pQ9JWiQhlwQZohEGQpgQmLwol6azAJd8Jjaqz7EF1qCeFuGyVAjcqosRmPSVTI0ynGMjMeEZrgkxSDVF
+ EIrWQjyEoSY6UxGCg0IkIWmkbzCqWvVm1ULijaKRvsUA9Ce5M1yVrg2mlHYVVYZVpgSXp22QiC5ViCoy
+ UbRw22i+UJ4lMxF26JWjhaTxCiDCNaFVJ1SQYt6ly0Kll0FalCLFKLYAUXKYUHosYiicVEOScFEBBdwt
+ phUnDRDYiOOiK0ho3hZlxhaeQVk5BSXAIxbBVqm9Zbnao1LzKCaegotlXWGQsfGetSp2iK2kpCgiKBCS
+ KZAqW5BJhLcgnhZPKoZCuEyql4SXRi5NyA06qzeFVA1QZ4xbtTkcv0VKsopdokzCKrLEEWKFhKGJSX8L
+ eY5GDlUrRS6ErWEJjZCiblUfYh7ylawhvi2VYrfKzqySrtQStjIbrCnKiwIkIrC1nhAdXKulkphUktaQ
+ pVmulWG1BEDQEUFGK4Cr3CFbe6FRvekoNG0qLClYZKesJLm7SrjFVparrAigswphRAUwkxFkEkyUosRX
+ TJSmRQpMnTJIWSShJJIXUgopwkvZJkkklLFMnKZFCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6SSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkkkqSSSSUpJJJJSkkkklKSSSQUukmToqtSSSSKrU
+ kkkkq1JJJJKtSSSSSrUkkkgm1JJJJUq1JJJJUq1JJJJItSSSSSrUkkklSrUkkkkq1JJJIqtSSSSSLUkk
+ kkq1JJJJKtSSSSSrUkkkkq1JJJJKtSSSSSrUkkkkm1JJJJItSSSSSrUmTpklWskkkkq10kk6SrUknTJK
+ tiVEqZUSkq2BUCplQKKrYFMpFMkm1oTwknSVa0JKSiUKVa0pJkkqUumSSSpKkydJCk2skkklSLXSSSSp
+ S6SZOlSFJ0ydJSkpSTJJXlKUySVJtdJMkki15SlRTpItdJMkkheUlFOkheUkySSV0pTJJJXTJJILCVJJ
+ JJI4lJJJJLgVJJJJJtSSSSSrUkkkkq1JJJJLSVJJJIotZJJJJVrhSCiFMJJtmEQKDUQJLgV0inSKSUZQ
+ yilDKSmBUVIqKSlJk6ZJYpMnTJKXSlMkkuXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMkkpeUpTJJKXl
+ KUySSmUpSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUqUpSTIqXlKVFOkpeUpTJJKX
+ lKUySSmUpSopJKXlKUySSl5SlMkkpeUpTJkFMpTqIUgkpSQSThJTJqK1CCK1JTMJnJwouSU17FXKPYgF
+ JSVitMVStW2JKSKJUlEpKWTpk6Sl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklLp0ydJSigWI5QLElNR6Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9Pr0kkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp
+ JJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnT
+ JKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJ
+ RapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkySSmSgVJRKSkbkMqbkMpKWTpJJKXSKSSSmJSSK
+ SSlJ0ydJSydMkkpSSdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJS0J4SSRUpOkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpaEk6ZJSkkkklKSSSSUpJJJJSkkk6SlJJJJKUnhJJJSycBJIJKSNRGobU
+ QJKSBJME6CllEqSiUlMSoFTKgUlMColSKiUlMSkkUySlJJJJKUkmSSUunTJ0lKhJJJJS6SSSSlJQkkkp
+ ZJJJJSySdJJSyeEkklKhKE6SSloSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJOkkpaEoTpIoZNRmlBCmCihOCpShApSgpJKShKcFBKiEJ4RpQ3BNL
+ IGo9VnuhXXsVSytBlBar7EF1iO+ooJqKazxKM2Ji9T9IpekgzAoXGUMhWjUoGpNTbW4U2vhTNaga0k2k
+ F0Ijcgqv6ZRGUlJjlTcrtlWq9VVppKv1VwkxEpGtTkIgbCG9Kltta1ULldtKo2lKlW03qARHhQARpcGz
+ Sr9QlZ9RhXano0ubBYoGtTD0+5GlAsWthTJUC6EN9iCbYXFVDyp2WKuXpKtu0FadLliV2Qr9NySwh1Q5
+ MTKAyyUduqLFVMS2Ug1EhRcYSpW6gYUH2INlsKq+9JVMrnys64SrJduSFW5JTmmslFrrhXhjKYohJFrU
+ aLSqes8DaisthJTqB0pFVa7ZRw6UlrFyhKIQoQlS4LoNoRkK0pLg5l7VULdVeuVUjVBniVMCIQkwIoak
+ zAtR7Eza1aLFHaku4lmNhJ6mNFB5QWEtZ6i1slEIlTraksKamtX6q0ClqusCLFIs2tU4SCkEWIlhtUgE
+ 6YmEkWvwoPfCg6yFWstSUF7bVSsfKm90oe2UVwRRKsVVqTKlarqSSWdTFaa1RY2EUBFjJVCSkmKSwrSm
+ lIqJRYyvKeVGU4RWskkgnSQtCZSTJJCyUpJkl7KUlFOipSSSSSFJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kydJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0klLJJ0klLJJ0klKSSSSUpMnSSSsnSSSUpJJJJSkkkkFKSS
+ SRQpJJJFCkkkkkqSSSSUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSSUpJJ
+ JJCkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKWSSSRUuE6ZOkpdMkkkpYqJTlRK
+ SmJUCpFQKSmJTJFJJS4TqKkElLpikmKSlkoTpklyoShJOklaEoTpIKWhKE6SKloShOkgpUJJJJKUknTJ
+ IUmTpJKWSSSSSpJJJJCkkkkFKSSSRQpJJJJSkkkkkqSSSSUpOkkgxlSSSSCxSSSSK8BSSSSS5SSSSSqU
+ kkkkqlJJJJLSpMnSKSFkyRTJKZBTCGCpgpJCVqIEIFEBRXhmkU0piUkrFDKkShkpKYlMUiVGUlFdJNKa
+ UlhXSTSkCkpklCQToLloSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6SlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKWTKSZFSySSSSlJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJJIKUFIJgnSUpOEyd
+ JTIIrUIIrUlMwouUgouSU1rEAo9iAUlJK1aYqtatMSUlUSpKJSUsnTJ0lLpJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU70zUlNitWGqvWrDUlMkkkklKS
+ SSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKf/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYj
+ hAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJI
+ JJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJTFJJJJS6iVJMU
+ lInIZRHIZSUpJJOElKSTwlCSmJTJyEoSUsnShPCSmKSeEklLJ0ySSl0kySSl0kydJSkkySSl0kkklKSS
+ SSUpJJJJSkkkyKlSlKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pSmSSUukmSSUu
+ kmSSUulKZJJS8pSmSSUylJRTpKXlPKinSUqU4KZJJSVpRGlBaitSUkCdMEkFKTFOmKSmBUCplRKSmBUC
+ pkKJCSmKZShKElMUk8JQkpikpQlCSmKeUoTJKXlOop0lLylKZJJS8pJkklKlKUkySl5SlMkkpdOmSSUv
+ KUpkklLykmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUukmSSUu
+ kmSSUukmSSUukmTJKZJJgpAIqXCIEwCmAkhQTpQnhBSycJw1SDUFLBKFMBIhBcELmoL2Kw4qu96ayBC6
+ sKBqCmbFEPQZgw9FMaUcGVJBfbUNSE6tXnBV3oLraprSFSNCI1qSbQNoR2UBTAhPvhJYSlZUAjtACqi5
+ FFqLEUriq9jk7noD3SkpDYZVV4lWiJTGqUVNAsUdivGpDNaK8IA2ERpIRBXKK2lJNsWuKICpilP6aSLR
+ OKA8q2a0F9SCWg8oJKt2VIBrSSGLCVbpJQmVK7TSjSSW1SVeYq1VcI8wEWI6s3OhVrrYUbbYVG26UimI
+ WttVfeSUxJcpsqlBJS1CVfpqlAqrhX6hCKwrikKNlUK0Ch2cJLHMtEKtvgq5e1UXjVBTZqtV2t8rJYYV
+ yqxJc6IMpQhMeiSkqlnGFWtci2OVO16TIAhtKApuMqICC8M2BGCE0IkpLrUUMlO4oLnJJtkXIZcoFyiX
+ IKtmisVcOU2uQQW/W6FaZYs1j0ZtiLEXRFimHrPFiKLElhbhegWWwhG1VrbUUM7L0A2yqtlqg16Km8DK
+ MwKpW5Ha+ElzbYArDIVAWozLUVFvtKmCqzHyjAorCEspk0pJLCsVEqaiQixlipBMnCSGQTpgkihdMUpT
+ IpCySSdJesnShJJRUnSTILFJJJJJUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0ydJJSkkkkkKSSSSUpJJJJKkkkklKSSSSUpJJJJSkkk
+ klKSSTJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJJKXSTJ0lKSSSSUpJJJJSkkkklKSSSRQp
+ JJJJSkkkklKSSSSUpJJJJCkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSXKSSSSUpJJJJCk
+ kkklKSSSRQpJJJJSkkkkkqSSTJKUkkkkpSdMkkldMkkkpYqBUiolJTAqBUyolJDAplIhNCSFJ00KSSFJ
+ inUSiuC0pSkmSXspSTJJKXSSSSUpJJJJSkkkkkqSlJJJSpSlMkgpeUkydJBUkkkkhSSZOkhSSZJBSkkk
+ kkqTpkkkrpJk6SlJJJJKUlKSZJjK8pSmSSWBeUpTJJMgXSlMkkvXlKUySSF0pTJJKK8pJkkWMrymlJJJ
+ apMnhKEkqCkE0JwElBIFMFDCIEmQMpSJTJFJcwJQyiFDIRUxKipEJoSUVkk8JQkxFikE8JQkoLhKUydB
+ cumlJMgleUpTJJKXlKUySSl5SlMkkpeUpTJJKXlKUySSl5SlMnSUukmSSUukmSSUukmSSUukmSSUukmS
+ SUukmSSUukmSSUumSTIqXSTJJKXTpkklLpJkklLpJkklLpJkklLpkkklKSTJIKZBSCiFIJKUknSSUyCI
+ 1DCK1JTIKLlMKLklNWxAKPYgFJSStW2KpWrbElJFEqSiUlLJ0k6SlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU70zUlNitWGqvWrDUlMkkkklKSSSSUs
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKf/1evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpJJJJSzlXsVhyr2JKa7k7Ezk7ElNliOEBiOE
+ lLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkklKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUuEkgkkpE9
+ VXq09VXpKYhHYgBHYkpsNUlFqkkpZJJJJSkkkklKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJwElKUSppiElIXK
+ BCK4IZCSmMJwE8JwElLQkQpwlCSkZCaFMhKElMYTwpQlCSmEJoRIShJSOE0Iu1LakpHCUIm1PtSUihKE
+ XaltSUihKEXaltSUihKEXaltSUihKEXaltSUihKEXaltSUihKEXaltRUh2pbUbaltSUh2pbUbaltSUh2
+ pbUbaltSUh2pbUbaltSUh2pbUbaltSUh2pbUbaltSUh2pbUbaltSUh2pbUbaltSUh2pbUfam2pKQ7Utq
+ NtS2pKQ7UtqNtS2pKQ7UoRtqW1JSHanhF2pbUlIoShF2p9qSkMJwEXaltSUxaEQBMGqQCSmSdMnQUskQ
+ nSKSmBCgQiEKJCSkZCYhEIUYSUwhNCJCUJKRwlCJCUJKRwlCJCUJKREKO1G2pbUlIdqfai7UtqSkW1La
+ jbUtqSkO1LajbUtqSkO1LajbUtqSkO1Lai7UtqSkW1PtRdqW1JSLaltRtqW1JSDaltRtqW1JSHaltRtq
+ W1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1J
+ SHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHaltRtqW1JSHalCNtS2JKQgKYCntSASUuAp
+ gJgiAJKpYNT7VMBOQgphCUpOKE56CEu5RLkAvTF6CQvY5VLHKw7VBe2UF4LVc4pg4oprUSxBljJdr4RB
+ aq7hCEXwgycTbdahOfKr+ops1SVxJmCVYYxQqYrjK0qQZtZ7YVWwkLUfWqdtSNLDNph5RmPUTUpNYlS3
+ iSzKbbKIxiO2pGlcTWbWiemrQqTObCNJtovbCrOVu1U3co0vBSViVcrYCqVRV+oo0ks/TUTWjpiECGMy
+ pB6Si6lW2tTuZom0j3HHtqhVCzVat7FQe3VKmQTVUxX6mBU61dqKdSrTxCFY6ApFyA8ykoNa5yqEElXH
+ MlM2iUKX2grqlXqqFKqmFcZXCNLCUTaoRAIRtiiWpUxmTHcmcZSITAJUt4kD2SqtlS0wyVB9SVI4nILI
+ UmGFZtqhVi2EKXCTarej71SYYRgUqXCS9jlVfqjuEqGyUqXiSDbKkGI7akVtSVJ42sGJyxWxUn9JCke4
+ 57mFBcwrVNCC+hKlDI5bmoZCvvpQHVJpZRK2tCm0IoqRmUpKJRNaUZrCrNdCO3HSpiMmmGlSAKuegl6K
+ NLLabgVWtBWkakF9EpItyXsKTKytE46duOikFrMYpEFXBQkaUU20ZKLWSimlO2qEk2nqKtNKrMbCO1Fa
+ UwKkFAKQRWFdJOmRpjK0JJ0kkKSSTIoUmSSRXBSkFEKQSXrpk6RQQWKSSSC1SSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJS
+ kkkkkKSSSSUpJJJJKkkkklKSSSSUpJJJJSkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUnSSQUpJJJJKkkkkkKSSSSUpJJJFSkkkkkKSSSSUpJJJJSkkkkkKSSSSUpJJJJKkkkklKSSSSQp
+ JJJJSkkkkFKSSSSTSkkkkl1KSSSSVSkkkkkUpJJJFCkkkklKSSSSUpJJJJSkkkkk0pMnTJKpSZJJFNKS
+ SSQUsmKkmhFVMCFEhEITEJIpEQmhEhKEkI4TwpwlCSGEJiEWE21JIRQlCLtS2or0UJ4RdqW1JSLaltRt
+ qW1JCHaltRtqW1JKHaltRtqW1JKGEtqNtTbUFIoShF2pbUlIoShF2pbUlpKKEoRdqW1JbaKEoRdqW1BV
+ oYShG2pbUlWhhKEXaltSSCihKEbaltQTaLalCLtS2oqtFCUIu1Lagq0UJoRtqW1FYUMJQi7UtqKAEW1L
+ ajbUtqTKAh2pbUbaltSXUh2pbUbaltSRSHalCNtTbUlEItqW1F2pbUmIhFCUIu1PtSWog1PtRNqW1JSO
+ EgESEoSUFgFMBMApgJMoWhIhShKEVyMhQIRSFEhJSKE0IkJbUkFHCUIm1LakxFFCUIu1LakoIoS2ou1P
+ tQXIdqW1G2pbUEodqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUl
+ IdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdqW1G2pbUlIdq
+ UI21NtRUhhKEXaltSUihPCJtT7UlIoShF2pbUlIoShF2pbUlIoShF2pbUlIoShF2ptqSkUJQi7UtqCkY
+ CkApbUoSUxSTpBJTIIgUAiBJTJRcpqDklNaxVyrFiAUlM61bYqtatsSUkUSpKJSUsnSTpKUmTpklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0ydJSigWI5QLElNR6Zqd6ZqSmxWrDVX
+ rVhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkp
+ ruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKS
+ SSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpOAknCSl4USFNRKSkRCgQiFQKSlgFIBMFIJKUAlCkEklMCEoTlJJSoShOkkpaEoTp0lLAJ4TgpSkpaE
+ oUkklMYShSSSUxhPCdKUlLQlCeUpSUttShSlKUlLQlCeUpSUtCaFKUpRUxhKE8pSkpaEoTylKSloShPK
+ UpKWhKE8pSkpaEoTylKSloShPKUpKWhKE8pSkpUJQnlKUlLQlCeUpSUtCUJ5SlJS0JoUpTSkpaE8JSlK
+ SlQlCeU0pKVCUJSlKSlQlCeUpSUtCZOSmSUunUU4QUyTJJJKWKYpymSUxKZOkkpaEoTpJKWhPCdJJS0J
+ QnSSUtCeEk6SloShOnSUtCUJ0klLQlCdJJS0JQnSSUxhKFJJJS0JQnSSUqEoTpJKYwlCdJJS0JQnSSUt
+ CUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS
+ 0JQnSSUtCUJ0klMYTQpqKSlgiNUFIFBclBSJUAU8oILB6C4I5Qy1BaghOGowYphiCkGxRLFaLENwSS1i
+ xRLFYIS2oMgaL61VfUVrGuUM0SgvcoVFWKqldGOptphJDGpkK2xqg1sIoRCCs4ID2KwShlFYWo6tMKla
+ 2pwxFaiYxWGtTBsJ5hFLOEJ4RJTESnBLQtYqjqlqurlCNScygtFlcK3WIUhUitZCK61wnhPCSYWvMsmp
+ yogpEprC1rWyqb6lpOEoZqlJmi0G1wrDGwjipOGIswKEhRLFZ2JtiK62uK0RtSMGKQCSrYtZCKAkAnSW
+ ErqJTkqJKDGUZCQClCcBFYzaE7gmBTkpKatrJVR1a0HCUI1oLg0hWihiP6amK0lzXFacVK2K0ixJVtYM
+ Uw1EIUUlLgKYaoAogKDGVFiG+tGlMUlRLRfUgOqWi5soRrTS2YloipGZUjitTayEFxK9bEcNCg1TBRYy
+ vtCiWKcpklqMsUDWjpQkprekn9JHhKEVIfTTGtGTQiuQGpN6asQltRVaAMUwFPanhJVrAKQShJFaVJpS
+ KiSixleU6hKcIqZJ0wTpIWhMpJiiuCyeUySS9lKUqMp0CgqSTpJqxZJOmSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkhS
+ SSSSlJJJJJUkkkkpSSSSSlJJJJKUkkkkpSZJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkLp
+ JJILgpJJJBKkkkkVKSSSSQpJJJJSkkkkkKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSQSFJJJJLlJJJJKUkkkkhSSSSKFJJJJKUkkkkpSSSSSlJJJJJUmKdMUkrJk6ZJS6SZOElLpQn
+ TpKYwmhTShJDCE21EhNCKGG1LapwnhBDCE0KZCZFTGEoTpJy5UJ4STpKWhPCSdJC0JQnSSSFoShOkklj
+ CUJ0kFMYShOkgpaE8JJ0lhWhKE6SS1aE0KSSCmMJQpJJKYwlCkkkuDGEoUkkksYTwnSSUtCUJ06SmMJo
+ UkkQpjCUKSSKgxhKFJMiyhaEoTpIJWhKE6dFTGEoUkkkFjCUKSSTEWMJ4TpJLFoSIUkikpGQmhTITJKC
+ wCkEwUgkyhdJJJJcxITQpJkkMYShSSSQVoS2p0pRYixhKFKUyCAqE8JSnlBetCUJ5SlBK0JQnlKUlLQl
+ CeUpSUtCUJ5SlJS0JQnlKUlLQlCeUpSUtCUJ5SlJS0JQnSlJS0J4SlKUlLQlCeUpSUtCUJ0klLQlCdJJ
+ S0JQnlKUlLQlCeUpSUtCaFKUyKmMJQpJJKYwlCkkkpjCeE6eUlMYShSSlJTGE0KaZJTGE+1OlKSltqaF
+ OUyCmBCgQiFQKSmBSCRSCSmYRAhhECSmag5TUXJKatiAVYsVcpKSVq2xVK1bYkpImKkolJSydJJJSkyd
+ MkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOmTpKUUCxHKBYkpqPTNTvTNSU
+ 2K1Yaq9asNSUySSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//9fr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk
+ 6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7F
+ Ycq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpS
+ ZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6
+ ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJS6cKKcJKZJiUpUSUlMHFQJTuKGSkplKkChSnBSUl3JbkOUpSUzJSlCJSlJSbclKFKeUlJJS3I
+ cppSUl3JbkKUtySk25LcgynlJSXcluQpSlJSXcluQdyW5JSbelvQdybckpPvS3oG5LckpPvS3oO5Lckp
+ NvS3oO5NuSUm3pb0HcluRUm3pb0HcluSUm3pb0HcluSUm3pb0HcluSUm3pb0HcluSUm3pb0HcluSUm3p
+ b0HcluSUm3pb0Hcm3JKbG9Leq+5Lckpsb0t6BuS3JKT7029B3JbklJt6W9B3JtySk+9LegbktySk+9Le
+ g7ktySk+9Lcg7k4KSk0p0MFTCCmSdME6SlJJkklLpk6ZJSyUJ0klLQlCdJJSydJJJSkkkklKSSSSUpJJ
+ JJSk6ZJJS6SZJJSkkkklKTpkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkkl
+ LpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpkk6SlkkkklLylKZJKlLpJk8oUhcKQK
+ hKUpUpmSoFKUyVJYwnATpIUm1wE8JpSlLhXcS+1KEpTSlwo4l0pTSkjSrUU0J0yVItQCkEyUpUhcqJTy
+ mRUoKQUU8pJtkokJSlKKbWhKE6SVp4lkk6ZArDqsmUkyFLaXATwmTylS4aKhNCeUyS7iVCUJJIq4lQkk
+ kkriXSTJJKtRTJ0kkErJ0kklqkkkklKShJKUkqhOAmlPKCbZhMVGUpRVbFwUIRE0IKtiApBKE6SFJ0yS
+ SlEJoTpJUuEqY7U8J0kqTxLJ0kkKRxLynlRSRpVspSUZSlKkWySUZSlKlWukmSSTa6dRlKUVWySUZSlJ
+ VskxTSkki1imIUkySGMJwnhJG1LhOmSStC6RTSklaVJk6SVptZJOkkq1JJJILVJJJJJUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kyS
+ Sl0kkklKSTJ0lLJJ0klLJ0kySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSdMkgpdJMkkldMkkkpSSSSKFJJJJKUkkkkpSdMkkpdJMkkpSSSSSlJJJJKUkkkkpSSSSSl0k
+ ySSl0kySSl0kySCl0kySSl0ySSSVJ0ySSrXTJJJKXSTJJIUkkkipSSSSSlJ0ySSlJ0ySSl0ySSSbWSTp
+ JKWTpJJKtdKUySSrZJKMp5SQukmlKUlLpJpSlJS6inlJEKYpJ0kVKSSSSUukkmSUvKSZJBS6SZJC02um
+ SToWq1kkkkrUpOmTpWhSSSSFopSSSSKqUkkkkqlJJJIpUkkkjSlJJJI0pSSSSVKUmSSQUpJMnSUpJJJB
+ dak6SSVq4lJJJIWq1JJJJWq1JJkkbWqThMklaKZJJk8oqpYpoTpIqpaE6SSS5dJJMkq1FRJTkqBKSrXl
+ NuUSVElJVpNybchFybcha2k25NvQtybckqk29PvVfcpApKT7ktyECnlJSTcm3IZKaUlJdycOQZUgUlJZ
+ TyhAp9ySmcptyGXKJckpLuS3IMp5SUm3J5QQVIFJSSUxcoSmJSUz3pt6ESoykpsB6cOQAVMFJSYFPKGC
+ n3JKZymJUS5QLklJC5NuQi5R3JKTbk+5A3JwUlWm3J5QpTyiFJJTyhbk+5OpKSUpQ9yeUCFMiU25QJUS
+ 5NUl3JByBuUg5JSeUpQg5PuSUzJUS5RJUCU4BSYOSlBDlIFHhUkJUCUpUSUqUopBNKQSpSQIgQgiNTCp
+ IouUgoOTVNaxAKPYq5QtSWtWmKoxW2JWpKmTpinKUkmToqUmTpkFKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklLp0ydJSigWI5QLElNR6Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklP//Q69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkk
+ kpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1
+ VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOop0lLqJTqJSUjchlEchFJ
+ SkkycJKXSKSRSUxKSRSSUuE6ZOkpSZOmSUpJJJJSk6ZOkpSSSSSlkkkklLJJ0ySlkk6SSlJJJ0lKTJ0y
+ Slkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlk6SSSlJk6SSlkk6SSlkk6SSl
+ JJJ0lKThMnCSmbUUIbUQJKZpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJBSkkkkVKSSSSUpJJJJS6SZJJSk6ZJJS6
+ ZJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpOmTpKUkmSSUpJJJJSkkkklKSSSSQpJJJJSkkkklKSSSSUp
+ JJJJSkkkkkqSSSSUpJJJJSkkkklKSSSSQpJJJJKkkkkkKSSSSSpJJJJCkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJJCkkkklKSSSSSpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKT
+ pkklLpJkklKSSSSUpJJJJSkkkklKSSSSUpJJJEKUkkkipSdMnSUskkkgpSSSSClJJJIKUkkkgpSSSSVK
+ UnTJ0qUpJJJKlKSSSSUpJJJFSkkkk5SkkkkVKSSSRtSkydJK1LJJ0kFLJJJ0FLJJ0kFKSSSQUpMkmQUu
+ kmTpKXSTJ0lKhJPCSKlkycpkVKSTJIqXTpkkVLppSTJKUVAqRUSkpgVEqRUSgpiUydMgpSZOnhJTFOE8
+ JJyFwnUJTgpIZJQmBTpKWSlOokpKXlLcoEppSSzlJQBUgkpdOEgnSUoJ5TSmlJDKUxUZTygpYhNCklCS
+ mIUgUoTJKZAp9yGSokpKSF6iXKBKaUlMyU0qMpwkpmFIKAUwUlLpSmlMSnBK8ptyiUk60sw5PKgE4TSp
+ kSolOmKapjKQKRUUlJA5S3IMqQKSkhKikCnTwpZOCmKYlOUylKVCUpSUylOCoSnBQUlaUVqC0orUwqSB
+ RcpBRco1NaxVyrFirlBSRitsVRitsSUkTFOmKeFKTqKdFS6ZJJBSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJS6dMnSUooFiOUCxJTUemanemakpsVqw1V61YakpkkkkkpSSSSSlkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJT/9Hr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYjhAYjhJS6SSSS
+ lJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVV6tPVV
+ 6SmIR2IAR2JKbDVJRapJKWSSSSUpJJJJSk6ZOkpSSSSSlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSl1Ep1EpKRuQyiOQykpi
+ nCZOElMkxSSSUsUkkySl06ZOkpSSSSSlJJkklLpJJJKXSTJJKUkkkkpZJJJJSkkkklKSSSSUumTpklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJSk6ZOkpS
+ cJk4SUkaiBDaiBJTNJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUnTJJKUkkkhalJJJJWpSSSSKlJJJJKUkkkkpSSSSKlJJJJKUnTJJKXST
+ JJKXSTJ0FKSSSSUpJJJJSkkkkrUpJJJK1KSSSStSkkkklKSTJ0VKSTJIKUkkmQUpJJMgpdJJJJS6kFFO
+ kpkkmToqWKipJklLJJ0yKlJJ0yKlJinTFJSxUSnKiUlMSolSKiUlMUkkkFKSSSSUpMU6YpymMpApFMkp
+ mCpSoBSCSl1Ep0xCSmBTKZCW1JTEKYSAUgElKCRTpigpiSmJSKikpeU4KipAJKZBSTBOkpZMVJRKSmBU
+ SpkJoSUwTwpQnASUxATwpQnhBTFKU5CikpeUpTJwihSeEgpAI2piApAJ4TppKloTEKSSZakZCgUUoZCV
+ qYKQTJBFKQKSiFJPBUsVAlTKGU9S0pwVFOElMpThRUgkpI1FagtRmphUkCZycJnJimtYgFHsQCgpIxWm
+ KrWrTElJFEqSiU4KUkmTpyl0kkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklL
+ p0ydJSigWI5QLElNR6Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//S69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJ
+ JJKWSSSSUpJJJJSkkkklLOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJ
+ KXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlk
+ kkklKSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUskkkkpSiVNQKSkbkIorkIpKWTpk6Sl0kkklLJk6SSlJ0ydJ
+ SkydMkpSSSSSlJ0ydJSkkkklKTJJJKUkkmSUukmTpKUkkkkpdMnTJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpMnTJKUkkkkpSSSSSlJ0ydJSk4TJwkpI1ECG1ECSmaSSSSlkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJBSkkkklKSSSSUpJJJJSkkkkVKSSSRUpJJJFSkkkklKSSSSUpJJJJSkkk6ClkkkklKSSSQUpJJJBS
+ k6ZJJS6SZOgpZOkknBSkySZFSkkkyCl0kydBSkk6eElLQknhKEFKSSSSUqUpTJSipkkoynlJSkyUpJKU
+ kmSTlKTFJMUlKKgVIqBQUsVEpyolJSySSZJS6UpkpSUylMoynlOpSoTQnTwlSlk6ZNKVKZhOoAqQKSl4
+ TwkE6SlQkmJTEpKXJUSmlNKSlFKE6UJKWhSASSSSunlRlKUlLymJTSmlJS6SaUpQUyCcKEp5SpDNJRlK
+ UqUoqJUpTJUpikEioykpICphCBRWlJDKEkkxKaVKlNKYlNKYpcqJCUp0VMIShThNCKlBSUU8p4UoqBCk
+ lCepHCcBShPCSWMKQCUJwElMmhFaoNCI1MKmYTOUgouTFNaxVyrFirlBSStW2KoxW2JKSKJUkxTwpZOm
+ ToqUknSQUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0z
+ U70zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/T69JJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkkl
+ LOVexWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLp
+ JJJKUmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkk
+ kpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUsknSSUpRKkolJSJyGURyGUlMU6ScJKUknSSUxSSKSSl0kk6SlkykmKSlkydMkpdJJJJ
+ S6SSSSlJkkklKTJ0klLJ0ydJSkkk6SlJk6SSlkk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUukkkkpSZOmSUpJJJJSkkkklKTpk6SlJwmThJSRqIENqIElM0kkklLJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSBUpJJJNUpJJJF
+ SkkkkVKSSSRUpJJJOUpJJJFSkkkklKSSSSUpJJJJSkkkkFKSSSQUpJJJNUpJJJBS6ZJJBSkkkklLpJJ0
+ 8KWTFOmKcpZMnSQUsnCScJKXhPCQThBSoShOkkpimKkVEoKWTJymSUpOmSSUpJJJJSySdJJSyYqSaElM
+ ColEIUSEVIyolTITEJKYJJ4SSUsolTUSEQpinCaFIBPCWQCeEgpJJRkKJRSFAhBDFOCmhIJKSApSoSkS
+ kpclRJTEpklLypBQCmAklkAnhOEikpikmKSSl00JwE8JKYwlCnCUIKRwmhFhRISUwTSpEJiEVKlKU0JJ
+ IZSkmCdBSxTEKcJoSQVgiNUQFIJpQzTFKUxTCpiVFSITQmqWCmFEKQRUvCYhTCYohSMppUioFSBS4Ugo
+ hTCepUJ4TpJKYwnASTpJZBEahhFCYVMwoOU1ByYprWKuVYsVcoKSVq2xVGK2xJSVRKkmKeFLJ0wTpylJ
+ k6ZNUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lKKBYjlAsSU1Hpmp3pm
+ pKbFasNVetWGpKZJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKWSSSSUpJJJJSkkkklLOVe
+ xWHKvYkpruTsTOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJK
+ UmTpklKSSSSUpJJJJS4SSCSSkT1VerT1VekpiEdiAEdiSmw1SUWqSSlkkkklKSSSSUpOmTpKUkkkkpSZ
+ OmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJMnSUpRKkolJSJyGURyGUlLJwmThJS6SSSSmJSSSSUunTBOkpSZOmSUsmTpklLpJJJKXSS
+ SSUpMnTJKUkkkkpSSSdJSydJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSl0kkklKTJ0ySlJJJJKUkkkkpSdMnSUpOEycJKSNRAhtRAkpmkkkkpZJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJClKSSSSpSkkk
+ kVKSSSSUpJJJFSkkkkrUpJJJK1KSSSStSkkkkrUpJJJK1KSSSQUpJJJJSkkkkFKSSSSpSkkkkKUukmSl
+ PAUumSlJOpSkkkkqUpOmhPCVKXTyownQpS8pSmhJKlKTJJIUpZJOlCFKWSTpklLJJ0klKSSTpKWTKSZJ
+ TEqJUiokoqYlRKclRJSpSySSZKlLpiEkk4BS0JBOol0KQBLMFSlVzZCb1UqU2JTEIQsUw5LhUvCaE8pF
+ LhUxSSKSVKWhKFIBSAS4VMAFIBOQokwlwqZymJQi9IPlLhUzTgJgVIIcKlwFIBRlLclwqZpIZeom1LhU
+ lKYoJtCXqhLhUkITEKIeCpByXCpbaltUwlCXCphCeFIpkuFSgE8JgphDhQxIUSYUnGFXe+EOFal3KQKq
+ CxFY9NMUp0xCQKcpnCpinBTEqMo8KkoKSGHKQKNKUUMohUCngKWCmFBSBT6UklJRlJKlLpBMnCFJZhEa
+ hhEamEKSKDlIKLlHSmtYq5VixVygpIxW2KoxW2JKSqJTpinBSgnUQpJylJk6ZNUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lKKBYjlAsSU1Hpmp3pmpKbFasNVetWGpKZJJJJKUk
+ kkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSU//9Xr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpZJJJJSkkkklKSSSSUs5V7FYcq9iSmu5OxM5OxJTZYj
+ hAYjhJS6SSSSlJJJJKWSSSSUpMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJI
+ JJKRPVV6tPVV6SmIR2IAR2JKbDVJRapJKWSSTpKWSTpklKTpk6SlJJJJKUmTpklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJJKXUSpKJ
+ SUichlEchlJSyQTJwkpkmSSSUsUkkySmQTpkklKSSTJKUmTpklLpJJJKXSSSSUpJJJJSySdJJSySdJJS
+ kkk6SlJk6ZJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSkydMkpSSSSS
+ lJJJJKUnTJ0lKThMnCSkjUQIbUQJKZpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6ZJSkkoSRUpJJJJS6SZJBSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkk0pKXSTSlKSl0kkklKSShJJSkkkkqUpJJJJSyZOmTgpSdMApAJylJ0tqUJKUnU
+ C6EN1sJKTynkKkckBQOWAlSnQkJSFnfbR4qTcsFBTeJTIDbQ5FBlJTJOklKClikkmQUpJJNKCl0kkklK
+ TEp1FFSxKgSpFRIRUwJUZTkITjCKkkppVd1sKHrhJTblKVV9dL1U4KbBcq9lkKDrVWstUoUkfcoeuqb7
+ EMWJKdRlysMtWSx6tMekp0Q9PvVQWJjdCSm2XpByo+upstlJTdBRAVWY9E3wkpI50KtZZCay6FQuvSU2
+ DcpstlZRv1R6rklOux0om5Uq7UQ2oKTF6gbVWfdCqvyElN516A7IVB+Shm2UlN85KQyFQBJRGgpKdFly
+ sMslZrJVuuUlN1r1MOQGIiSmZKiXKDnQguthJTaDlMOVJtqKHyhSGdj1StsRrXaLPuelSEgtViqyVlh+
+ qt0uTCFOoxynKr1lFJTaUpxQy5M9yA56VJbAeiNcqbXqwxyNKTyolIFIp4UxTgp4ShOUuCpgoJdCGbwE
+ lNqUpVP7QFNt4KCW4CphVmWSjtMphUlCi5SCZwURU1bEAqxYEAhBTOtW2KoxW2JKSKJUlEohSk4UU6cp
+ dOmSQUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lKKBYjlAsSU1Hpmp3p
+ mpKbFasNVetWGpKZJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//1uvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpK
+ UmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLF
+ V7FYKr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkklKSSSSUpJJJJS6SSS
+ SlJk6ZJSkkkklKSSSSUuEkkklInqq9Wnqs9JTAI7EAI9aSmw1SUWqSSlJJJJKUmTpJKWTpJJKUkkkkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUskknSUpRKkolJSJyGURyGUlLJBJOElLpk6SSmJSSKSSl06ZOkpSZOmSUskkkkpSdMnSUpJ
+ JJJSkkkklLJJJJKUkkkkpdJJJJSkkkklKTJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJJJK
+ UkkkkpSdMkkpdMkkkpSSSSSlJJJJKUnTJ0lKThMnCSkjUQIbUQJKZpJJJKWSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4TqKeUQpdMU8qJTqUsU
+ ydNCNKVKdNCcBNUuklCdBSkydMmqWSTpoQtSkkoTwhalJ0gE8JWpZMVIqJStSxTJSkjalJJwFINRUsAp
+ QnAShOUtCYp0xTgFMSkkkjSlJ0ydKlLJKSaElKCmFAmFB1sJKTkhCe8BVbMoBUrc2EQFNy28BULcmFTu
+ zZVJ+QXJym5ZlqpZmkIDiXKtawpUpsnqBnlWKc+TysJ4IKlVYQUqU9jjZW5atVkhcjh5ELexsiQm0p15
+ TSgMslGbqgVMwlCkAkQmqYFRUiowgpcJ4SAUoSUxhMVIqBKSmJShMSkCnBSzgqd5hXXFUchFTnXWwqpy
+ CiZAKplpRpTbbeii5UmgqRMKQBTZNqE58oBepNMqUBasRKYNVhtcqRqhKlImaI7HQgO0UfUhGlNw2QgW
+ XIJtQXulClJfX1VmmyVntaSVdoalSnTqcpvfAQq+FJ/CVKal9sLNttV29pWbcEqUx9TVWarFRA1VugJU
+ p0qnoxeg0slWPS0QpTUueQs624rSvq0WTeyEaUw9Ukq1T7lQaNVqYbJSpTbqolHGOrePUIVr0gmmlOc2
+ mEdlcKwawnDYQSxaxSIUgmcmqatphULbYVzIKx73wVJSGwy/VXarJWJXZqtPHdKVKbVh0WdeVoPOizsh
+ IRU12nVXqCs8HVXqCkYqdOs6KTihMdok96ZwqYWPVZz0rXqs56XCptMerdRWbW5XqSlwqbrU6ZikQlSV
+ BJxhRLoQbLYRpSO+yFm3ZMImTcsq55KdSmz9r1VirJlYoJlW6CUCFPQUWytGoysXGK16FEQlutCTgnYn
+ coipqWBVyFZsVZyapkxWmKsxWWIKSJinSKcFMUkkkVKTpJIKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU70zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKf//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydMk
+ pSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsVXsVgqvYkpruTsTOTsSU2WI4QGI4SUukkkkpSS
+ SSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS6SSSSkT1WerL1Wekpg
+ EetACPWkpsNUlFqkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJ0ydJSlEqSiUlInIZRHIZSUsnCZO
+ kpdJJMkpZJJJJS4Tpk6SlJkkklLJJJJKUnTJ0lKSSSSUpJJJJSySdMkpSSSSSlJ0ydJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSl0ydJJSydJMkpSSSSSlJJJJKXSSSSUpSCZOE
+ lM2ogQ2ogSUzSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJSkknBSpSShKE9SkoTwnQUxhPCSUoKUkmlNKapkkoynlNUukmlPKapUJ4SSl
+ BSk6gSm3JKZEqBSlOAkpZSATgJwE5S4CmAoSn3JwUyUSm3JpTgpYplKE8IqYQlCnCiUbUsmlIlBfZCcA
+ pKXwoG0BU7ciFSszISU6b8gBU7slZtmaqz8kuSU2r8pZ9uQSmJLkhQXIqQGwuRK2lysswyVbrxISU1q6
+ JUn44hXxVtQLnQElONfQAqJbtK0cl6znmSips0WQVs4tywqQZWtigppU9Bj2StCsysnG0WnU5NKm2ExU
+ Q5IlNUsVGEiUgUlMwE8JBShJSMobkchDLUlICoyilqGQiFMS5V7RKMVAiU5TnW1Sq5oWo5ir2NhOU0TX
+ CDYFZe6EBxlPCmtt1VmmuU7K5V2ilSrWVVOieypXK2ABJ7AU21OJcyFTcCtm6qVUdjpwQ0ACiNrlWxjw
+ pCqEVIq6VbrrhQbojMKSkzAplkpmaqy1qaTSXPupWXkVQuhtZosnKbCQKnHLYKuY4VawwUWl8FFDtY7Q
+ rgYIWdj2q2LtE0pR5DBCxclgWrfdosfJtRCGqBBWniOAWMbdVZoyIRU9ZRaIVn1Qudqy4CsDMTCEuubA
+ m3rLblSrDLZRpTdDknFCY5SJQpTVyFjZA1W1dqsy5kpyGiwarSxzCphkFWGGE6lN179FnZD0Sy2As6+5
+ Gksw/VXKHrIbZqrtD0CEOyx+iT3qqx+imXJlKYWOVclFcobUlM6loUKlU1X6gkluMUnFQaYTPehWqUVr
+ 4VC61WLXKhbqngKa9r5VZzJVkslOK0aU1BUrFTIRNimwJhU3cYLXoWVjrVoUUkt1iTyk1M9RFTVsKrko
+ 9pVYlMKkrCrTFTrVytBSVMU6YpwUskkkipSSdMgpSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpdOmTpKUUCxHKBYkpqPTNTvTNSU2K1Yaq9asNSUySSSSUpJJJJSySSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9Dr
+ 0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJ0ydJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSxVexWCq9iSmu5OxM5OxJTZYjhAYjhJS6SSSSlJJJJKWSSSSU
+ pMnTJKUkkkkpdJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLpJBJJSJ6rPVl6qvSUxCPWgBHYkp
+ sNUlFqkkpSSSSSlJJJklLpJk6SlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJ0ySSl1EqSiUlInIZRHIZSUsnUU6Sl0kkklL
+ JJFJJS6SSSSlJJJJKWSSSSUpOmTpKUkkkkpSZOmSUpJJJJSkkkklKTpkklLpJJJKUkmSSUukmSSUukmS
+ SUukmSSUukmSSUukmSSUukmSSUukmTpKWSSTpKUkkkkpSSSSSlkkkklKSSSSUukknSUpOEycJKZtRAht
+ RAkpmkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKTwmTohS8JJJJ6lJJpTSkpclRKdNCClkylCUJpUxUk8J4TVLJKUJJqlkxUkyCmBUUSEt
+ qKmICIAkGqQSUqExTkqBKcFLEqMpFIBOClwpgJmhTCcpcBI6JF4CBZaAlSWTnwgPvAVe7IhZ12VCeAp0
+ H5QCqW5YWVbllVHZRKeh0bsmVRsuJQg8uRW0lyaVIC4lTYwlXGYhKt1YaCmtTjkrSoxJVinFhXq6oStT
+ XZhhSOOAroACg9C0uZdXCyslpW9ayVStxtyeh5m6skoAxySukdgT2TDp/klanHoxitSiiFbrwo7KyyiE
+ FMKmQrlag1kIrWppUmaVJM0IkJikRSCmQowgpm0qYKECpSkpmSmKjuTbklKIQXhEJQnlPCkTlFM4pAp4
+ UpwVK/RXiqWQE4Kcu16E16neFWBITwh0aSFeY8BZFdkIv2iFItLsC4BMbwVjHLTDLQpTql4Kjos4ZKkM
+ hKlN4wgvcFXOQhm2UaQn3otZlVGGVdpakVNuoKyDCCwQmsfAUZSvdaAFjZdoRsm+Fj5F8pwCmFj5KlU5
+ Vd0lXKGSnob1LirO8wh01I5q0QU07rDCyshxK1rq1nW1pKc10yi1Aowokq3TiykpHXuRQXK9Xh6Iv2NN
+ tTTrJWjQCosxoVyqqErUkYFJxUogIFjoStLCwyqz2SpuenGqchrGpMWQrwrlJ1KVpce8ELMulbuRSsq6
+ rVPBU0mAytDHaUCurVaeNSgVJq2GETYrVdGimaVHanPLEgxW31whEQipVbVaYIQGIwKSUhfCrvuTWvhU
+ LbU4BTYdbKGRKqiyVYrMpyWWxMWwjBDeUCpC7RM0qL3IYfqmFTp0OWrQViY71rY7lFJTpsKT1FhSeVCU
+ tW1VzyrFqrHlMUlrVytU61drQUlUSpKJRUxTpkkVLpJJIKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKXTpk6SlFAsRygWJKaj0zU70zUlNitWGqvWrDUlMkkkklKSSSSUskkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKf/0evSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKUn
+ TJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLFV7FYKr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkk
+ pZJJJJSkydMkpSSSSSl0kkklKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUuEkgmKSkb1VerNirPSUxC
+ OxVwrDElNhqkotUklKSSSSUpMnTJKUnTJJKXSSSSUpMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJS6iVJRKSkTkMojkMpKYpwmT
+ hJS6SSSSlkydMkpkEkwTpKUkkkkpZJJJJSkkkklLpJJJKUmTpklKSSTJKXSTJ0lKSSSSUumTpklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SZOkpSSSSSlJJJJKWSTpklKSSSSUunTJ0lKThM
+ nCSmbUQIbUQJKZpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSgnTJ0VKSlMmKNqXlMkkErUunASCmAhalgE8KQCSSmMJinJUCUKUvKaVAuU
+ dyVKSSlKHKcFLhUkCdQBTylwqZSluQyVGUeFSWZTgShgorSlSlbEtkKe8BCfcAiFKc7agPyA1V78kBZe
+ Rlp1KdKzNAVK3OWRbllVjeSnBTqWZUqnZYXILSXK1XSXI2ppPYXJm0ErYrw5VqvA8kbU5FOKVp0YqvV4
+ QCtMohMJU16sYK0ygBFa2FMIWpi2sBS4TyokpKWLkMlOVGE4KVEpxWCnARGpEqYigJ/QCMCpSmWUtc1A
+ KBYrBKgUQUIdqmGqUJ4SJUuFKVCUtyYSpclRSlMhalJSkmStSpTSnhNCVqWKG5FIUCE8FSAhINRCE4Ce
+ FMdqrXVyrkhQeAU4KcW6iVUdQtx9YKAaQpApxzUQg2AhbL6AqN9UJ9rC5bnFO0koj2aqVTErQyY0lFFZ
+ VmmkFXG44StLl+mU4qK0zjhIUAJWpqVVLQpZCi2sBWGCECVJANFXvGitBQeyUxTg5LCsq2syulvolZl1
+ EJ4KnKrr1WnjVoIrgq/jhK1N+irRWDVolQFa2aJpkpyMipZVzIK6DJZosPKEJ3EprMAlaeKwFZAfBWni
+ WoEqduqoQiGoIVNohEdaExTAsATiAgvuQzcipO96p2vTvtlVnulIKVu1Rayq0orHwn2p0ahKNs0VWq0K
+ yLRCaVNXIrCyL2arYyLBCx8h4lPBUgrbqtXFYFksfqtPFsCRKnYqYIUnMUKrBCm+wQouqWncIVJ74VjI
+ sWXbdqn2huMerLTIWXVbJWlQZStLG5uizbmlbbq5CpXUJwKnLaDKtVJ/RhTayE+1M5QrHIhCBYgSlrWO
+ Qg7VTsCGBqmEqb2O5bGM5Y2OFsYyjkp06ypuOiHWpu4UJU1rFWPKs2KsVGUpa1erVGtXayglMolSCYpw
+ UwSTpIqUknSTULJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl06ZOkpRQLEcoFiS
+ mo9M1O9M1JTYrVhqr1qw1JTJJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0uvSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKUnTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklLFV7FYKr2JKa7k7Ezk7ElNliOEBiOElLpJJJKUkkkkpZJJJJSkydMkpSSSSSl0kkklKSSSSUpJ
+ JJJS6SSSSlJk6ZJSkkkklKSSSSUumKdMUlIrFWerNirPSUwCsMVcKxWkpsNUlFqkkpSZJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklLJJJJKXUSnUSkpG5DKI5CKSlk4TJ0lLpJJJKWTJ0ySl06ZOkpSZOmSUpJMkkp
+ dJJJJS6SSSSlkk6ZJSkydMkpSSSSSl0kk6SlJk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKTpkklLpkkklKSSSSUukmTpKXThRThJSRqIENqIElM0kkklLJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkgpRTJ0yS
+ llIJk4SUyCkFAFPKKmcpiVGUxKKliUMlSKgQipiSkEoThqKlwpgJBqIGpKYgJ4Twol0IqX2pixN6oCg6
+ 8BJS5O1AfkBqDdkgLMyMtGlN+3PjuqVvUfNZF+SSqbrXFKlOrbm7lVfaXqqwOcrtNBKKkHpFyKzFJWpT
+ iSr9WGElORViFaFONC0WYwCKKgEFIaqQFabWAkBClKSmQaExCW5MXJpUpMmlJBS6aFIBOAiFMIS2okJQ
+ jakYCkAnSRUyCRKaUkErEqKkQowkhcJ1FKU0qUSoynShMUoJ0gE6ClkkkpSUpIp0xRUxKgSpOQ3J4UsX
+ IZshJ5VaxyeFJTfCGchU3vKA60p4U6BvlL1Qs31Spi0p4U3XvCz8h6m6xVLnSisatj9U9VmqDZKiyQUV
+ O1RaFeZaFh1PIVtlhQU6ZtCibAqXqlN6qSm8LERr1nixHrdKSm816JKrMKLKSmNsQsvIIV656zL3Skpr
+ F2qtY71RIJKt44KSnbxir7RIWdjBaLOEySWvkt0WBmMXRX8LFy2SkCpwHCCreO+FCyrVKtsJ6HXqvgKT
+ 8lUGuICi55SU2jfKQslUwSVZraSkpNulDcUYMUHsSU13OhR9WErAq7gUFN1mTCOMpZIJRA4ohTcuyJCz
+ L7ZRnyVWfWSnoRtt1V/HvhZ4qKNWCE0qd6rJRXZEhZFbirG4piVZFyzLbdVauBKpPYZRUmos1W1iOlYd
+ DCCtrE0SU6rRIUH1Sp1HREIlK0ue6pDNa0HMQnVp4Kmi5iC+taJqQ3VIqcl9SGKlqPpUBSmlKKitauO1
+ V6qloUshRyU2KwpOCkxqdwUJS07AqzlbtCquCYVMq1crKpsVusoJbAKRTAp0VLJJJkVKSSSQQpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lKKBYjlAsSU1Hpmp3pmpKbFasNVetWG
+ pKZJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSU//T69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkydMkpSdMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUsVXsVgqvYkpruTs
+ TOTsSU2WI4QGI4SUukkkkpSSSSSlkkkklKTJ0ySlJJJJKXSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSU
+ pJJJJSkikkUlInqs9WXqs9JTAI9aAEdiSmw1TUGqSSl0ySSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSS
+ SUpRKkolJSJyGURyGUlLJ0ydJS6SSSSmJSSKSSl06ZOkpSZOmSUskkkkpdJJJJS6SZOkpSZJJJSkySSS
+ lJJJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySlJ0ySSl0kkklKSSTJ
+ KXTJJJKUnTJJKXTpkklLpwmThJSRqIEJqKElM0kkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSZNJUqUkkoUfEpZOlCUIiSl5SlMkngqZJ
+ oSCmAnBTCE21G2p9qcpBtSARSIQnOhEJZhOXBVXXgKu/LAThG1N19gCqW5EKnbmhUbcuVIIobtuZCpWZ
+ /mqFt5KqPc4o8Km/Zmkqs60uVcMcVbpxyUqUjFJejV4JPZaWPirUpxQmlTjVdP8AJX6sPatZmOAiekAo
+ 7S0q6dqsNEKZZCiQlaGYKdDCkELUzhKEgkhamJCZSKaE21LQpAJAJwlalwFJMkSiCpRKgSnJUCnKVKUp
+ oTgIqZBTAUApApKZQmLVMFMU21IiFBEcEOE0lS4UgFEKYTCVKhMVJRIQtTElNKchNCNqZApJgE6QKmJU
+ CFMqJKkCkLmqtYxXChuEqQKcyytV3VLVdXKC6pSBTm+mnDFdNSga0VNUtQn1Sr3ppxTKFocl2PKQxVsD
+ HUxjJWhymY8IwpWj6EJeilamh6agWLQNSGakrU1GsVqpidtSsV1wlamTGKTgjNaovCVqaNoVGyuVpvZK
+ F6UpWpzm48lXKMeFYZSrVdYCFqVTXCtDQKLRCclC0orSs69kq+8ygOZKSnIsolDFELWNKgaUbQ53pKJq
+ K0vRS9FK1NBlCuVUI7KVZZXCVqQilCsqWjsQnsStTkWUoBx5WuapTChK0uSMZTGKtYUBTFAStaXIGJKR
+ wp7LaFIUhSEeJDgHC8lH7JC6A0BCdQEDJTjNx4RRQtH0ApCpM4lOU/HlV3Yq3DSEM0BHiS5NePCv0Vwj
+ CmEVrIRBUkr0RgUICFMJyWUJi1OCnCKWGxRNaMkUrU1XVKPpK0QowjamDK1arbCG0IzCo5KTNCTkwKTi
+ oilrWhVXBWrCqzkxSzVarVZqsVoJbDVJRapwnBTEqKmQoFFSk6ipIIUkknSUskkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSl06ZOkpRQLEcoFiSmo9M1O9M1JTYrVhqr1qw1JTJJJJJSkkkklLJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSn/1OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pMnTJKUnSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTpKYlV7FYKr2JKa7k7Ezk7ElNliOEBiOElLpJ
+ JJKUkkkkpZJJJJSkydJJSySSSSl0kkklKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUpIpJykpC9Vnqy
+ 9VnpKYBHYgBHYkpsNUlFqmkpZJJOkpZJJJJSkkkklKSSSSUpJJJJSkk6SSlkk6SSlkk6SSlkk6SSlkk6
+ SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6ZJSkkkklLJJilKSl1Ep5USUlI3
+ IZRHKBSUxTpk6Sl0kySSlikkkkpdOmSSUumSSSUskkkkpdJJJJSk6ZJJSkkkklLJJJJKUkkkkpdJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnTJKUkkkkpSSdJJSySdJJSySdMkpSSSdJ
+ SkkkklKUgmSCSkjUUITUVqSmaSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJNkFKSTSlKi4VMkyjuS3IiKl0kgpgKQBSwUwkAmJhPAUz
+ BTF4Crvu2qnblwniKm8+0BUrsgBZ9ud5qjbmSpBFTcvyoWfbllVrLy5AILk4BSZ2SSoh5cotoJVurFKc
+ pE2ouR2Ycq9TirQqxgEuJTmV4Cu1YULSZSAjCsBRykpqVUbVaYIUtsKJCbakgcpTKCFIFNNKZxKbYnBU
+ wm2pHsS2oiiUFME0pyopKXSTBSCapSSdMkpUppSTIhS6cBMFIJ6lw1ItUgkShakZCjKm5DKNqZhylKEF
+ IIFTIqMKSSaVMU4TJJhCmSRCYFPKFKYkJQnSlKlLQkU8qJKNKYOKGSpuQinhSxKaUxCcBSAqVCi5qIAm
+ IUgKmu5qGWKyQobUrUiDEVtakGojQhaFNrUtikFJC1ISxQLUYqBCVqQlqbYiwnARtSIVooZCkAnQtSlE
+ hOSmStSItlNsRUoRtTENhTBhMmSUk3KJcopkFLnVLakFIJKY7FEsRUxCSkOxOGIkJwElMQ1TGiUJJKXl
+ MdUycJKY7U4apJJKVCSSZJBXBUg5DTJWikpKiVBKUCql4ShNKaU1VLwmISlOkqmO1PCdJOCaWhOmJTSn
+ gqZSnlQlKU6wpnuTyhp0LCWcpKKcBKwpkCiAoYCmAmEqSApEpgEiFEUoXlAcjvVcptKXarFaA1WKwlSW
+ wxEhDaiSiFLEIZRCVAoqYp0kkEKSSSSUpJOkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6d
+ MnSUooFiOUCxJTUemanemakpsVqw1V61YakpkkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/V69JJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKTpk6SmLlXsVhyr2JKa7k7Uzk7UlNliOEBiOElLpJJJKUkkkkpZJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhIpBOUlIXqq9Wnqq9JTAI1aCEatJTZapqDVNJS
+ kkkklKTJ0klLJJJJKUkkkkpSdJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpMU6YpKYlRlSKgUlKlMSkUxSUsVEpymSUxSTpklLJJ0klLJJ4ShJ
+ SkkoShJSkkoShJSkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCZJSkk6SSlk
+ k6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6SSlkk6ZJSkkk6Slkk6SSlk6SSSlJJJJKUkkkkpSSSdJSyQSS
+ CSkjURqG1EakpmkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkhYqJCIAn2pUhCQU0FWNii5oCcAlGDClvhCe/aqVuTtT6U6JvAVe3KA
+ WPbnQqVmfKfGKnVvywsu/KlVH5JchSXKWkL2XkoQcXIzccuVmvDKCWsysuVynFlW6cSFfqxoQtTVqw/J
+ Xa8QBWq6gFYDQEwyU12UAIwZCJCRTLUsNFKVBJNJUyJUSnSTLUtCcJJIWpcFPKikglnuTSopIqXTQnSR
+ UsnSSSUpJJJJSyUJ0klLJwUkklLylKinSUopoTpJKYwnTpJKUkkkkpZJJJJSkpTJJKVKaUkySl5USUky
+ SliokKSSSmEJoU0yVqWTJ0krUxITQpwmhK1LQnBTJJWhluS3KKSVqXlMkklalJJJkbUvKUpkkbUqUkky
+ VqXSTJI2pUpJJ0bUtCUJ06Slk6SSSl5TSkkkpSeUySSl5TJJJKUnTJIKXlPKikkpeUkyUpKXTJpTpWlY
+ pipQlCSkZTIm1LYgpgFIKW1KElLJiU5USkpiSmlOQowjalwVIKCkErUzCdRBUglalwFIBIBSAStS4CmA
+ mCmErUuAmcFMKLkFNaxV3KxYq7klMmKzWFWYrVaSkwTymSSUvKZJJJSkkkkFKSSSQUpJJJJSySSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl06ZOkpRQLEcoFiSmo9M1O9M1JTYrVhqr1qw1JTJJJJJSkkkk
+ lLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSn//W69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SmLlXsVhyr2JKa7k7Uzk7UlNliOEB
+ iOElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhOUwTl
+ JSF6qvVp6qvSUwCNWghGrSU2Wqag1TSUpJJJJSkkkklLJJJJKUkkkkpdJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMU6YpKYlRKkUxCSmEJo
+ U4TQkpgQmhThKElI4ShThKElMIShThKElMIShEhKElMIShThKElMIShThKElMIShThKElMIShThKElMI
+ ShThKElMIShThKElMIShThKElMIShThKElMIShThKElMITQiQmhJSOEoU4ShJTCEoU4ShJTCEoU4ShJT
+ CEoU4ShJTCEoU4ShJTCEoU4ShJTCEoU4ShJTCEoU4ShJTCE8KUJ4SUwhKFOEoSUwhKFOEoSUwhJThKEl
+ MElOEoSUwTwpQlCSmEJwFKEgElKARQoAKYSUySSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpJi6E4C0MgnLwFXdbCrW5MJ3AhvOvAVa3K
+ AWXdmx3WddnHxREVOrfmBZV+VKpPyi5DBL04KVbaSgw5yuV4xcrlWBPZOBU5tdLir9GKStOrp8dldqw9
+ qXGlo04avV4gCtsphHDITTNTVbjgIgrhHhMU3iUjAhPKcpkLUqUpTJ0lKSSSTSpdJJJClKTpk6FKUmTp
+ JUlZJOklSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJOkkpSSSSSlJJJJKUkkkkpZJJJJSySdMkpZJOmSUs
+ mUkySmKSdKElMUylCaElMYShShNCSlkylCUJKYQlCnCUJUhhCUKcJQlSmEJQpwlCVKYQlCnCUIqRwlCn
+ CUIqYQlCnCUJKRwlCnCUJKYQnhShKEVMYShThKErUwhKFOEoStTCEoU4ShK1MUoUoShK1MYShThKEFME
+ lOEoSUwSU4ShJTCE0IkJbULSihOFPamhC1LBSATAKQStS4CUJwklamJCiVIqJStTEqMKUJwErUw2ptqM
+ GqWxK1NYtTQrBYoFiNqYBTASDVMBK1KAUgkAnStS4UgohSCVqZhM5IJnJWpr2KuVYsVcpWpkxWmKsxWm
+ JWpKEkgklalJJJJWpSSSSClJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dMnSU
+ ooFiOUCxJTUemanemakpsVqw1V61YakpkkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/X69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKTpk6SmLlXsVhyr2JKa7k7Uzk7UlNliOEBiOElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhOUwTlJSF6qvVp6qvSUwCNWghGrSU2Wqag1TSUpJJJ
+ JSkkkklLJJJJKUkkkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpMnSSUxTQpJQkpjCUKUJoSUxhNCnCUJKYQlCnCUJKYwlClCeElMITwpQ
+ lCSmMJoU00JKYwlCklCSloShShKElMYShShKElMYShShKElMYShShKElMYShShKElMYShShKElMYShSh
+ KElMYTQpwlCSkcJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQpwlCSmEJQp
+ wlCSmEJ4U4ShJTCEoU4ShJTCEoU4ShJTCEoU4ShJTCEoU4ShJTCEoU4ShJTCEoU4ShJTEBOE6SSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcJ
+ QnCchBSNxhV7LYRLXQszIuhSRQvdkQs+7JQbr1ULy4qcIXttLlVLS5W2VFyuU4cpKctmMSr1GGVrU4A8
+ FeqwwFGSloY+ItOnGARmUhqKNE21LNqAU9gCbelvTdVKiEiUxcmlJSiUySdFTEhMpJigpZJJJJSk6SSS
+ lJJJ0lLJ0kklKSSSSSpJJJBSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSydJJJ
+ SySSSSlkk6ZJSySdJJTFKE6SSmMJQpJoSUxhKFJKElMYShShIBJS0J4UoTwnKYQlCnCUJKYQlCnCUJKY
+ QlCnCUJKRwlCnCUJKYQmhEhKElI4ShThKElMIShThKElMIShThPCCkcJQiQmhJTCEoU4ShJTCE8KUJQk
+ pjCUKcJQkphCUKcJQkphCUKcJklLAJ4TwnQKmBCiQiwokJikUJ4U4ShJTGEoU4TwkpGQo7UbaltSUhDV
+ INRNqeElMQ1S2pwnlFTAtUC1GTEJKQbU8IhCaElMYSTwkkpScJk4RUyCZydRckpr2IBR7FXKSkjFaYqr
+ FbYkpKkUgkUlLJkkklLpJkkVLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dMn
+ SUooFiOUCxJTUemanemakpsVqw1V61YakpkkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//Q69JJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKTpk6SmLlXsVhyr2JKa7k7Uzk7UlNliOEBiOElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhOUwTlJSF6qvVp6qvSUwCNWghGrSU2Wqag1TSUpJJJ
+ JSkkkklLJJJJKUkkkkpdJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLJJJ0lLJJJJKUkkkkpSSSSSl0kySSlJJJJKUkmSSUukkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSmbU5TNUjwgpo5JgLCy7Ft5fC5
+ 3MOpU0AhovfJRKWbiqxOqu4xCs8KnQx6FqUUAKrjuELQreFHIUps1sARgAFXa9T3qEhTMlDcUxcoEph0
+ UuSkCoJwmmSkgKmAoNRAhxKWUSVIoZQ4lLylKgpBHiUySSSRBUpOkknKUkkknKUkkkklSSSSVKUkkkkp
+ SSSSClJJJJqlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJOkkpZJJJJSkydJJSySdJJ
+ SySdJJTFKE6SSloTpJJBS4Tpkk8BS6SSSNKUkkkgpSSSSClJJJJKWSSSQUpJJJC1KSSSStSkkySFqXST
+ JJWpdJMklal0kySNqXSTJJKXSTJJKXSTJJKXSTJJKXShIKQQUxhKFJMlSlk6ZKUqUukkEkqUoqJKcoZS
+ UvuS3IZKYFJTYBUggtKO1JSiFEhEUCkpgQmTlMipSSSSSl0zk6i5JSCxVyj2IBSUkYrbFUYrbElJQkUg
+ kUVMUkkklKSSSQUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLp0ydJSigWI5QL
+ ElNR6Zqd6ZqSmxWrDVXrVhqSmSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/9Hr0kkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpOmTpKYuVexWHKvYkpruTtTOTtSU2WI4QGI4SUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJS6SSSSlJk6ZJSkkkklKSSSSUuE5TBOUlIXqq9Wnqq9JTAI1aCEatJTZapqDVNJSkkkklKSSSSUsk
+ kkkpSSSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSTpJKWSTpJKYp0kklKSSSSUpJJJJSySdJJSyZOkkpZJOkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUknSSUp
+ JJJJSkkkklKSSTJKXTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKZtUjwotUjwgpz8vhc7mjldHlcLnc3up8a
+ HGe6CjUXQVXt5SqBlWxsp3sfIWnTbKwsdpWtjtKjkp1a3SjgKtSFbaoJKWLVEhFhMQopKQwkApwlCiKl
+ BSlMkmqXJUSE4CeEFMITgKcJoTgpSSSSeFKSSSTwpSSSSclSSdMipSSdMkpSSSSClJJJIKUkkkgpSSSS
+ ClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSTpklKSSSSUpJJJJSkkkk
+ gpSSSSkClJJJ0lKTJJ0FKSSSQUpJJJBSySSSClJJJIKUkkkkpZJJJBSkkkklKSSSRUpJJJJSkkkklKSS
+ SRUsknTJKXTgJgpBKlLgJ0yUpUpRUSnlMlSlkk8JwElKClCQCdKlMSENwRiokI0prkKMI5ao7UKUs0Iz
+ UMBTBSpSSVApSmJRpSyZIpJUpZJJOlSlJnKSi5KlNaxAKPYgFJSRitVqoxW60lJgkUgmKSlkydJJSkkk
+ kFLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6dMnSUooFiOUCxJTUemanemakp
+ sVqw1V61YakpkkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpS
+ ZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SmLlX
+ sVhyr2JKa7k7Uzk7UlNliOEBiOElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkp
+ SZOmSUpJJJJSkkkklLhOUwTlJSF6qvVp6qvSUwCNWghGrSU2Wqag1TSUpJJJJSkkkklLJJJJKUkkkkpd
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJS6dMkkpSSSaUlKSTJJKXSTJJKXTpkklLpJk6SlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkySl0kySSl0ySSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKZtUjwoApyUFNLKGi5/LZJXR3tlZV+PKlgp511MlWKMa
+ VofZNVaoxoVkSQjx8VaFVEItVUKwGwmSkpixsIwKgnlRFTOUlCU4KjKlymTymUZUpOAop5TVMgE6iCnl
+ BS6ZJJFSySSSIUpJOknhKydJJOClJJJIqUmTpkVKSSSSUpJJJJSkkkk0qUkkkgpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpZOmSSUukmSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJOUpOmToqUkkkg
+ pSSSSClJJJJqlJJJJKWSTpkFKSSSQUpJJJJSkkkkVKSSSRUsknTIqUknTIqUknTIqUkkkipSdMnRpSpT
+ SkUyNJXlSAUQphAhSoS4TkoL7IQAUkL4UDcAqN2TCo2Zsd08RQ7XrhIWgrn/ALf5o1ebKdQU7gfKcLPq
+ yJVtlkppCkyZONUiE2lLSlKaEkaUumSSSpSk6ZOlSl1FykouQpTWsQCj2KuUqUkYrTFVYrVaSkwSTBIo
+ KUkkkkpSdMnTSpSSSSClJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUunTJ0lKKBYjlAsS
+ U1Hpmp3pmpKbFasNVetWGpKZJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//0+vSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ k6ZOkpi5V7FYcq9iSmu5O1M5O1JTZYjhAYjhJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklLpJJJKUmTpklKSSSSUpJJJJS4TlMEikpE9VXq09VXpKYBGrQQjsSU2Gqag1TSUpJJJJSkkkklLJJJ
+ 0lLJJJJKXSSTJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSTJJKUkkkkpZJJJJSkkkklLpJJJKXSSTJKXSTJJKXSTJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSdMkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kySSl0k
+ ySSl0ySSSlJJJJKUkkkkpSSSSSlJk6SSlkk6SSlk6SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcJSmSQUxcJQXUyrCeE8FTU+zhTbVCsQmh
+ P4lMAIUk8JkLQsUyeEoStTFSCUJQmkKXSSTppipYppTwmhM4VKBUgVGE4S4VMk6ZJClKSSSRpK6SZJFS
+ 6SZJOBUukmTo2pSZJJG1KSSSSUpJJJJSkkkkCpSSSSClJJJJKUkkmSUukmSSUukkmSUukmSSUukmSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTKUJoRtSyeUxTJWplKUqMpShamSSZOhal0k
+ ydJSySSSClJJ06CmMJKSiUlKSTJwipUJQpAJI0pjCSlCaEaUxSTpijSlJSmJUSU6lMpSlQlKUaUzTqAK
+ kElMgE8JBSlJLAhDOiK5wVax4CdHVTLfCY3gKlbfCpW5cJ/Ch1n5ICp3ZYWTZmqs/KJR4VNzIyZWbbeU
+ 5eXKBqJSpSH1yj05BQXUwotG1BTu418rWoslc1jWQtrFsSU7TDKIqtT0cOTCFLpJpToKWSSSRUpOmToK
+ XUXKSi5C1NaxVyrFirlC1M2K0xVWK3WlakoSThJC1LJJ0oStSydMnQKlJJkkFLpJkklKSTpklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklLp0ycJKUUCxHKr2JKar0zU70zUlNitWGoFasNSUukkmSUukmSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSU//U69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SmLlXsVhyr2JKa7k7Uzk7UlNliOEBiOEl
+ LpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVZ
+ 6svVZ6SkYR2IIRmJKbDVNQappKUkkkkpSSSSSlJJJJKWSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpZJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJS6aUkkkKlKUkklKSSSRUpJJJFSoSSSTlKSSSSUpKE6SVKWhJOkmlKkkkk0qUkkkmqUkkkgp
+ SSSSSlJJJIqUkkknBSkkkkVKSSSRUpJJJBSkkkkFKSTJJKUknTJKUkkkkpSSSSSlJJJJKUkkkkpZJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk4TJwkpkEoTBSQUxIUYRIShBSKEoRYTQgphCeFKE0JKUk
+ kkkpSSSYpKVKUqJKiSkpJuTShbk4KKmcp5UQlKKmYKeUKUtyKksppUNyaUVMyUxKjKScFLpoTgKQaiph
+ tThqIGp4hG1Iw1SiE+4BDfaAkpcuhBfkAIF2QAsvIy04RS6T8wBVLcxY9mWUA5BKlApDoXZMrPtuJUS4
+ uSFRcnqQklyIyslW6sSVfqwvJMKnProKP6MBaQxdoQLmbQhanLvACz7LACruUVj3EykpuU5EFbGJkrmK
+ yZWpiPKCnrKLpVxj5WJivK1qTKaVNoKaiwIkJhUsmTpJKWSSToKXUXKSi5NU1bFXKsWKuUlM2K3WqjFb
+ rQUmCdME6ClkkkkFKTJ0yKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpMnTJKXTpk6S
+ ligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSl0kkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf/9Xr0kkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpOmTpKYuVexWHKvYkpruTtTOTtSU2WI4QGI4SUukkkkpSSSSSlkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUuEkgkkpE9Vnqy9VnpKYBGYghGYkpsNU1BqmkpSSSSSlJ
+ JJJKUkkkkpZJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQJUpJJJM4kKSSSTgVKSS
+ STwVKSSSTwpSSSSKV0kkkFKTJJ0qUpJMnTSFKSSSTSFKSSSTFKSSSSUpJJJJSkkkkbUpJJJOBUpJJJFS
+ kkkkFKSTJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpOmTpKXCeUySaplKUqEpSgpJKUocp5SUyTJSlKSlimlIqJRUvKaVFJJS6aFIBTARpSHYnDUfamL
+ UaUjhKFOEoSpSPamIRoTEI0pDCZELU2xOpTEKYCQapAwipkGqUQoeoAhPyAEkpnOAVey8BVrcsLPvy0a
+ Q3bcwBUbeoeazb8klZ9lzinKdS3N3Km+0vVRpc5XKKS5OBUi9MuRWYxK06MOVoVYI8EeJTjV4hVqvDWy
+ zDARhjAJvGpz6caFdZSAjCuE50Q4lNaxoCzclsrTtKpWM3JWpwr6C5U3YJd2XSDG3I7MAHskZKeVb04+
+ CuUYRaukHTx4KX2IBDiU5uPQQtOlsKTaIRmshDiUzapJAJJhKlkk6ZDiUsnSSQ4lLqLlJRchxKatirlW
+ LFXKHEpmxW61UYrdaHEpMEkgkhxKUkkmS4lLpk6ZPClJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKXSSSSUpMnTJKXTpk6SligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSl0kkklLJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf
+ /9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKYuVexWHKvYkpruTtTOTtSU2WI4QGI4SUukkkkpSSSSSlk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJk6ZJSkkkklKSSSSUuEkgkkpE9Vnqy9VnpKYBGYgh
+ GYkpsNU1BqmkpSSSSSlJJJJKUkkkkpZJJJJSkkkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ TSpSSSSiQpJJJOClJJJKUKUkkknhSkkkk5Kkk6ZJSkkkklKTpk6BUpJJJMKlJJJJhUpJJJBSkkkklKSS
+ SRUpJJJEKUkkknKUmTpkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkySSl0kySSlJJ0klLJJ0klLJJ0klL
+ JJ0klLJJ0klLJJ0klLJJ0klLJ0kyCl0kydNUqE0KQTwkphCSnCiQkpaU8piEyKl0oTJwipban2qQSSpS
+ 0JwUimKKmQcpShBTCKl1EmFOFBwRUtuSDlAhRmE5Scap4CB6oCg7JASS2HEBVrbtqr25gWffmSihtXZc
+ Khbn+ao35JKove5yKW/Zmk91XN5cqwa4qzVQSnIW2Fyk3DLlo0YsrToxAgSlxqsA+C0KMOOy12YoCMKA
+ E21NSmiFeYwBMGwpB0IEqSBoSIChvTF6bSlOQXIhKgU4Ia72yh+mrO1OGJykddSt1sAUGthEBhMKmZAQ
+ 3QkXKBKCl4UgEMFEDkCplCiQpblElBTEpk6ZNUpJOmQUuovUlFyCmrYq5VixVygpmxWq1VYrVaCkwTpg
+ nQUskkkkpSSSSlClJJJJylJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklKTJ0ySl06ZOkpYoFiOU
+ CxJTVemanemakps1qw1V61YakpdJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//X69JJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKTpk6SmLlXsVhyr2JKa7k7Uzk7UlNliOEBiOElLpJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUukkkkpSZOmSUpJJJJSkkkklLhJIJJKRPVZ6svVZ6SmARmIIRmJKbDVNQappKUkkkkpSSSSSlJJ
+ JJKWSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkCpSSSSZSFJJJJwSpJJJOClJJJ0
+ 5SydJJFSydJJJSkkkklKSSSSUpJJJBSkkkkKUpJJJClKSSSQSpJJJJSkkkklKSSSSUpMkkihSSSSSlJJ
+ JJKUkkkkpSSSSSlkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJk6SSlk4
+ TJIKZBSQ5TykpmlCiCpApKYkKJCImITqUjKaVMhQIRAUrcpByGkEaUlBUoUGlFCRCWO1PwpEoT3wgApl
+ uSLgqj74QHZcJ9IbznBVrLQFTfmjxVO3Nnukpt25MLPuzVVtydypvcXIqbNmYSgG8uQxUXKxVikoKRhp
+ ej14hcr1GJ5LRpxAOyVqcyrA8ldqwY7LUrxwFYFQCVqaNWPtVtjYUy2ExSUkBUpQAVIFMKmZKGSnJQ3I
+ WpW5OHIacJWpKlCYKYCVqYgKQClCUJWpSdQJS3IWplCYtSDlKUrUjIhR3QiOCE5qFqXD1IGUMBTASUyS
+ SSQUpMnTIKXUXKSi5JTVsVcqxYq5QUzYrVaqsVtiSkoTpgnSUskkkkpSSSScFKSSSTlKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklLpJJJKUmTpklLp0ydJSxQLEcoFiSmq9M1O9M1JTZrVhqr1qw1JS6SSSSlkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklP/0OvSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpi5V7FYcq9iSmu5O1M5O1JTZYjh
+ AYjhJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCS
+ SkT1WerL1WekpgEZiCEZiSmw1TUGqaSlJJJJKUkkkkpSSSSSlkkkklKSSSSUukkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKW
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJKlKSSSQpSkkkkqUpJJJFSkkkkbUpOmTpWpSSSSNqUkkklalJJJJWpSSSSSlJJ
+ JJKUkkkhSlJJJJUlSSSSClJJJIKUkkkkpZJJJFCkkkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSl0
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnShKksUynCYhKlLApwVEhNKNKSgp5QQ5TD
+ kaUzhRLVIFTARUgLVEiFYIQn6IhTDdCf1YVeyyFTtyYTqU6LsgBVbckLLtzYVOzMlKlOhdlKhblKq+8u
+ QyC5GkM35JKCbS5EbjlysV4RKCWsxpcrdWMXK3VhR2WhTiwkpp04Uq/VhAK3XUArLQAmlTXZjAI7awES
+ QmJQUrhLcokpklMiVEpwFIBK1MISUyFAoEoXUSE4UgE1SItShGLVAhJSwRQhBTBSUkTFIFIoKROUCUUh
+ QLUlLByIHIUJwUlJuUi1QDlMFKlLbU0KcqJSpSyZIpJUpSSSSVKXUXKSi5KlNWxVyrFirlKlM2K3WqjF
+ brS4VJgkkEkKUskkklSlJJJIqUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJJSkydMkpdOm
+ TpKWKBYjlAsSU1Xpmp3pmpKbNasNVetWGpKXSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0evSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSk6ZOkpi5V7FYcq9iSmu5O1M5O1JTZYjhAYjhJS6SSSSlJJJJKWSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklLpJJJKUmTpklKSSSSUpJJJJS4SSCSSkT1WerL1WekpgEZiCEZiSmw1TUGqaSlJJJJ
+ KUkkkkpSSSSSlkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJOClJJJk5S6SSSBUpJ
+ JJMKlJJJJpUpJJOm2pSSSSVqUkkkjalJJJJwUpJJJPClJJJJylJJJJKUkkkklSSSSaVKSSSTCpSSSSCl
+ kkkkUKSSSRUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUumSTpKWTpJk4JZJFRlKUVKIUC1TBUoSUh2pAQikBDcQEVLh0J/VAVSy6FTty4RpTqOyAFWtygse
+ zN81VfmEogJdK7JWddfKA68uQyC5PQjssJQtSrjccuVivCJQU0a6iVepxpV6rChXKsaEFNWnECv1YgRm
+ VwrLRCBUhbjAIgqARZSJTVIiITblMhQISUrclKbanhNUuCnCaE6CmYUgUKU29C1JSUMptyflBSwRAVCE
+ pSQllQKjuTzKSmMJBShNCSmQKmEMKQKSmRUCE8piUVMCFBTKaEVLAqQcmhJJSSUpUAU6Kl0ydMipSdMk
+ jSmSg5TUHJUprWKuVYsVco0pmxW61UYrdaVKTBJIJIKUkkkkpSSSZMKlJJJIKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKXSSSSUpMnTJKXTpk6SligWI5QLElNV6Zqd6ZqSmzWrDVXrVhqSl0kkklLJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKf//S69JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOkkpZJOkkpZOkkkpi5V7FZcq1iSmu5OxRcpMSU2WI4QK0cJ
+ KXSSSSUpJJJJSkydMkpSSZOkpSSdMkpSSSSSlJJJJKUkkkkpdJJJJSkydMkpSSdJJSySdMkpcJJJFJSJ
+ 6qvVl6rPSUwCOxACPWkpsNU4UWqcJKWSTlRKSl0kycJKUmTlMUlKSSCcJKWhOnhMUlLJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0ySSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kydJSkkkkl
+ KSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSdEKWSTpk61KSSToWpZJJOmqWSTpIUpZOkkhSlJJJJUpSSSSNKUkkkip
+ SSSSKlJJJI2pSSSSNqUkkkhalJJJIJUkkkghSSSSFJWSSSRQpJJJJSkkkklKTJ0klLJJ0klLJJ0klLJJ
+ 0klLJJ0klKSShKEVKSShOkpZPCQUggpjCUKcJoRUxhMpFMkpZJJJJSk0p0xSUqU8qCcJUpmmKYJ06lLQ
+ lCRcomwBOpVs+ExsAQH3gKpblQjwqtt2ZACpXZgCz78tZ12USlSrdG7NWfbkkqm60uSaC5FVpC8uSawu
+ VinH3LRowpStVufXjkq5ViLVqwvJW2YgCbxKtzasRXasYBXG0gKYbCXEq0LaQFP0wESUxKFqtGQlKkUy
+ VqtUp5TJIWq10kkpStSoShJJBSkxTpigpiVAohCaEqUxCmEwCkEKUuVAoiiQgpgFMJQpAJKXSISSSUsk
+ kkkpYqKkmhFSk8JQnSUtCiQppoRUxThIhMlal0kgnCVqWTp4TI2pdRcFMKLglamrYFXKtWBVnBK1MmK1
+ WqrFbrR4lJgknCUIWpZMnTFK1KTJJkCpdJJJBSkk6SSlkk6SSlkkkySl0kySSl0kydJSkk6SSlJJJJKW
+ TpJklKUgoJwkpcoNiOg2BJTUeotU3hRakpsVqw1V61YakpdMpJklLJJJklLpJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn//0+vS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpOmTpKUmTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklLpJJJKUkkkkpSdMnSUxcq9isFV7ElNVykxJwTsCSmzWjhAYjhJSkkkklLpJJJKWTJ0xS
+ UsnTJ0lLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkUgkUlIXqs9Wnqs8JKRhHrQgEZ
+ gSU2GIgQ2ogSUsVEqSiUlKThMFIJKWKiVIqJSUoKYUApBJS6Yp0xSUskkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKXSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUnCZOElMgE+1OE8pKRkJl
+ IlQJSUunBUJTgpKZylKiCkkpclMkmRUumSSSUqExCkkkphCkAkUi6EgpdDe+FB9oCp3ZICkAQltvhUrc
+ 2FVvyVmXXkp9KdCzO81Usy9yz3PcVJjXORQnc8uUPRLlapxyVoU4koFTksxCVcqwj4LZrwwrLMUBMKnO
+ oxYWlTSAiCoBTaIQSlYwBFgIAen3phCkhUCUxcmlJSxTJ0ySlJJJIKUkkkkpSSSSSlJJJJJUkkkkpSSS
+ SKl0kkkCpdJJJNUpJJJFSkkkklKSSSSUpJMkkpdJMnSUpOmToKYlRUimSUoKSiFIJKXTJ0ySlwmcnCYp
+ Ka9irOVmxVykpditVqsxWmJKTBOmCdJSxUSpFRKSmKSSSSlKSinRUunTJ0lKTJ0ySlkydMkpSZOkkpSc
+ Jk6Sl0kkklKSSSSUpIpJFJTEpwmThJTJCeioT0lNV6iFN6iElJ60dqAxHakpkmTpklLJk6ZJS6SSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkp/9Tr0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUnTJJKWKA9HKC9JTWcE7QnITtCSk7EUITEUJKXSSSSU
+ ukmTpKWTFOkkpinSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJFJIpKRvVd4VlyA
+ 4JKRgIrAoAIrAkpK1ECg1TCSlkxUiopKWUgoqSSliolSKZJSwUgohSCSl1Ep0xSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpOkmSUy3Ji9
+ RKiUlLlyiSlCaElLgqQTAKYCSlwnhIBOkpaEyclMSipZNKRKaUlLypAqCkEFLOMKpddtVmzhZWW+JRCk
+ N+XCz7cuVWybiqXqFxUwQ3XWFyiKi5PQwuWrRjSnIaFeESrlWB5LVpxgrjKAE0lLnVYkK7XTCsisBKEy
+ 1LNACkolJJTIqJSSQUsnCUJwEFLwlCdIoKYpk6ZBSkkkklKSSSQUpJJJJSkkkkUqSSSSUpJJJJSk6ZOk
+ pSdMnTVKSSSRUpJJJJSkkkklLJJJJKXSTJJKXSSSSUsUycpklKCkFEKSSlJJJJKXCYpBIpKQPQCFYegE
+ JKUwKyxAaEdiSkwSTBOkpYpinUSkpZJJJJS6SSdJSkkkklKSSSSUsmTpklKSSSSUpOmTpKXSSSSUsknT
+ JKXSKSSSmKcJJBJS6G9EQ3pKa71EBTcEwCSkrEYITEYJKXTJ0ySlkydMkpdJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU//V69JJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSk6ZOkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUukkkkpSSSSSlJJJJKWKE4IpQ3BJSEhIBSISASUkaiBDaiBJS6SSSSlJ0ydJSkxTpklLJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpJJJJSkkkklMXILgjFDISUjARGhNCkAkpIFMK
+ AUklKKZOmSUpJJJJSlEqSiUlKThMnSUumTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUvCW1KUpSUttS2qUpSkpYNTwnSlJSkxKR
+ KgSkpclRlIpoRUpPCcBSDUlMQEQBINRAEFNe0aLDzu63ruFhZ/dEKebyTqg1Nko2TyhUugqYIdnDrmFt
+ 0VgBY2E/hbdDpCJKG00QiByg3VPCYlnuSBQykCgpLCUKIcpgpqloShSShJTGEk5TFJSpTSmSQUpJJJNU
+ pJJJJSkkkklKSSSSUpJJJJKkkkklKSSSRUpOmToKUkkkgpdJJJFSkkkklKTJ0ySlJJJJKUkkkkpdJJJJ
+ SxTJ0ySl06ZOkpSZOmSUuExSSKSkb0EhGcoEJKWaEZqGAiNSUkCSYJ0lLJk6ZJSySdMkpdJJJJS6SSSS
+ lJJJJKWSSSSUskkkkpSdJJJS6SSSSlJkkklLpJJJKWSSSSUuoOU1BySkLgmAUiEgElM2ogQ2hECSl0kk
+ klLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKf/9br0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTpk6SlJk6ZJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpZRIUkxCSkZCUKcJoSUoKQ
+ UVIJKZJJBJJSk4TJwkpSYqSYpKYpJFJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUk
+ kkkpYqBCmVEhJTGFIJQnCSlwnTJ0lLpkkklKSSSSUopk6ZJSydMkkpdJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU
+ pJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
+ SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk
+ kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
+ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk
+ klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS
+ SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk
+ kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkxUkySmJKaVKE0J
+ KUCpApgFIBJSklKE0JKYlMVKE0JKYwpAJ4UgEVKAU4TJi5BS5KYvAQX2Qq77oSUmvtELCzrAZVq+9Y2X
+ bKIU5uS6Sq9Z1U7ZJT01klSBDp4bjot3GKyMSnhbmPXCRU3a0aFBghElNUjcEMoxQ4SUxBRGlMGKYagp
+ kE5TBIlBSxKikSmlBS6ZKUpQUpJJJBSkkkklKSSSSUpJJJJSkkkkkqSSSSUpJJJJSk6ZOkpSSSSKl0kk
+ klKSSSSUpMnTJKUkkkkpSSSSSl0kkklLJJJJKUnTJ0lLJJJJKUkUkklMCokKZTQkpiAiBRAUgkpkkmSS
+ UukmTpKWSSSSUpJJJJSk6SZJS6SZJJSkkkklKSSSSUpOmSSUumSSSUpJJJJS6SSdJSySSSSllEqSYpKR
+ kJAKUJQkpcBSCYJ0lLpJJklLpkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS
+ kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
+ JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//X69JJJJSkkkklKSSSSUpJJJJSkkkklKSS
+ SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk6Z
+ OkpSZOmSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSS
+ SUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk
+ lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ
+ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpSSSSSlJJJJK
+ WSTpBJS0JiFOExCSmCSRSCSmQTpgnSUpOEycJKXTJ0xSUxKSRSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUukkkkpSSSSSlJkkklKTJJ0lLJJ0klKSTJJKXTpgnSUpJJJJSkySSSlkkkklKTpkklLpJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSS
+ SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkk
+ kpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJ
+ KUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSS
+ lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp
+ SSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKU
+ kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ
+ JJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSS
+ SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkk
+ kkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ
+ JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSS
+ SlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk
+ pSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJK
+ UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl
+ JJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpS
+ SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUk
+ kkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ
+ JJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ
+ JJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJ
+ wkpQCeEgkkpeElElNKSmaUqG5KUlMpSUZSlJTJSUAVIFFS5UHIiiQkpqWKnbK0nslVbKpSU5N0lZ11ZK
+ 3X48oRxJSU899mJKt0Yq124PkjsxITwUIcaiFp1shDZXtR26JWpmEpSSQUspAJk4KCmYCSjKRKClEqJK
+ RKiUFLymTKQCCloShTAShBTFJOUySlJJJJKUkkkglSSSSSlJJJJKUkkkkpSSSSKlJJJJKXSSSRUukmTp
+ KUkkkkpSSZJJSkkkklKSSSSUpOmTpKUmTpklLpJk6SlkkkySlJJJJKUlCdPCSmMJ08JklKSSTJKXTpkk
+ lLpk6SSlkkkklKSSSSUpJJJJSkkkklKSSTpKWSSSSUpJJMkpSdMkkpknTBOkpZMpKJSUpMnTJKWTwnSh
+ JSk6SZJSkkkklLpJJJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJ
+ JSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS
+ UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
+ KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/2Q==
+</value>
+ </data>
+</root>
\ No newline at end of file
diff --git a/qqjf-Background/iWareSda_QQJF/App.config b/qqjf-Background/iWareSda_QQJF/App.config
new file mode 100644
index 0000000..c4fcece
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/App.config
@@ -0,0 +1,83 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <configSections>
+ <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </configSections>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+ </startup>
+ <system.serviceModel>
+ <bindings />
+ <client />
+ <behaviors>
+ <serviceBehaviors>
+ <behavior name="">
+ <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
+ <serviceDebug includeExceptionDetailInFaults="false" />
+ </behavior>
+ </serviceBehaviors>
+ </behaviors>
+ <services>
+ <service name="iWareSda_QQJF.SRM.SrmService.SrmService">
+ <endpoint address="" binding="basicHttpBinding" contract="iWareSda_QQJF.SRM.SrmService.ISrmService">
+ <identity>
+ <dns value="localhost" />
+ </identity>
+ </endpoint>
+ <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
+ <host>
+ <baseAddresses>
+ <add baseAddress="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SrmService/SrmService/" />
+ </baseAddresses>
+ </host>
+ </service>
+ <service name="iWareSda_QQJF.SRMTRAN.SrmTranService.SrmTranService">
+ <endpoint address="" binding="basicHttpBinding" contract="iWareSda_QQJF.SRMTRAN.SrmTranService.ISrmTranService">
+ <identity>
+ <dns value="localhost" />
+ </identity>
+ </endpoint>
+ <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
+ <host>
+ <baseAddresses>
+ <add baseAddress="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.SRMTRAN.SrmTranService/SrmTranService/" />
+ </baseAddresses>
+ </host>
+ </service>
+ <service name="iWareSda_QQJF.RGV.RgvService.RgvService">
+ <endpoint address="" binding="basicHttpBinding" contract="iWareSda_QQJF.RGV.RgvService.IRgvService">
+ <identity>
+ <dns value="localhost" />
+ </identity>
+ </endpoint>
+ <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
+ <host>
+ <baseAddresses>
+ <add baseAddress="http://localhost:8733/Design_Time_Addresses/iWareSda_QQJF.RGV.RgvService/RgvService/" />
+ </baseAddresses>
+ </host>
+ </service>
+ </services>
+ </system.serviceModel>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
+ <parameters>
+ <parameter value="mssqllocaldb" />
+ </parameters>
+ </defaultConnectionFactory>
+ <providers>
+ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+ </providers>
+ </entityFramework>
+ <connectionStrings>
+ <!--<add name="Model1" connectionString="data source=120.53.244.200;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=120.53.244.200;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=10.103.9.200;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=10.103.9.200;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <!--<add name="Model1" connectionString="data source=.;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123abc.com;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" /></connectionStrings>-->
+ <!--<add name="Model1" connectionString="data source=.\SqlExpress;initial catalog=WB20005QingQi-WMS;persist security info=True;user id=sa;password=123456;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />-->
+ <add name="Model1" connectionString="data source=.\SqlExpress;initial catalog=202312061430;persist security info=True;user id=sa;password=123456;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />
+ </connectionStrings>
+</configuration>
\ No newline at end of file
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/EXS7PLC.txt b/qqjf-Background/iWareSda_QQJF/DLL/EXS7PLC.txt
new file mode 100644
index 0000000..aae8d90
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/EXS7PLC.txt
@@ -0,0 +1,99 @@
+using S7.Net;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace iWareSda_QQJF.OPCService
+{
+ public class EXS7PLC : PlcS7
+ {
+ public EXS7PLC(CpuType cpu, string ip, short rack, short slot, string name = "", object tag = null):base(cpu, ip, rack, slot)
+ {
+ }
+ /// <summary>
+ /// S7鍐欏叆锛堟殏鏃跺啓杩欓噷锛�
+ /// </summary>
+ /// <param name="add"></param>
+ /// <param name="value"></param>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public string WriteValuePoint(string add, object value)
+ {
+ object o = new object();
+ //bool
+ var t = value.GetType();
+ if (value.GetType() == typeof(bool))
+ {
+ byte MyData = Convert.ToByte(value);
+ o = this.Write(add, MyData);
+ }
+ //娴偣
+ if (value.GetType() == typeof(double) || value.GetType() == typeof(float))
+ {
+ double MyData = Convert.ToDouble(value);
+ o = this.Write(add, MyData.ConvertToUInt());
+
+ }
+ //鏁存暟
+ else if (value.GetType() == typeof(Int32) || value.GetType() == typeof(short))
+ {
+ short MyData = Convert.ToInt16(value);
+ o = this.Write(add, MyData.ConvertToUshort());
+ }
+ //鍙屾暣鏁�
+ else if (value.GetType() == typeof(Int32))
+ {
+ int myData = Convert.ToInt32(value);
+ o = this.Write(add, myData);
+ }
+ if (o == null)
+ {
+ return "";
+ }
+ return o.ToString();
+ }
+
+ /// <summary>
+ /// S7璇诲彇
+ /// </summary>
+ /// <param name="add"></param>
+ /// <param name="type"></param>
+ /// <param name="plc"></param>
+ /// <returns></returns>
+ public object ReadValuePoint(string add)
+ {
+ ////bool
+ //if (type == "Bool")
+ //{
+ // // double MyPlcData = ((uint)S71200.Read("DB" + txtDB.Text + "." + "DBX" + txtStart.Text)).ConvertToDouble();
+ // var MyPlcData = this.Read(add).ToString();
+ // return MyPlcData;
+ //}
+ ////娴偣
+ //if (type == "Real")
+ //{
+ // double MyPlcData = ((uint)this.Read(add)).ConvertToDouble();
+ // return MyPlcData;
+ //}
+ ////鏁存暟
+ //else if (type == "Int")
+ //{
+ // //short MyPlcData = ((ushort)S71200.Read("DB" + txtDB.Text + "." + "DBW" + txtStart.Text)).ConvertToShort();
+ // var MyPlcData = this.Read(add);
+
+ // return MyPlcData;
+ //}
+ ////鍙屾暣鏁�
+ //else if (type == "DInt")
+ //{
+ // int MyPlcData = ((uint)this.Read(add)).ConvertToInt();
+ // return MyPlcData;
+ //}
+ //return "";
+ object MyPlcData = this.Read(add);
+ return MyPlcData;
+ }
+ }
+}
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.SqlServer.dll b/qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.SqlServer.dll
new file mode 100644
index 0000000..9a9c5e9
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.SqlServer.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.dll b/qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.dll
new file mode 100644
index 0000000..9275df6
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/EntityFramework.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/Interop.OPCAutomation.dll b/qqjf-Background/iWareSda_QQJF/DLL/Interop.OPCAutomation.dll
new file mode 100644
index 0000000..add5141
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/Interop.OPCAutomation.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.dll b/qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.dll
new file mode 100644
index 0000000..bc3ef13
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.xml b/qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.xml
new file mode 100644
index 0000000..157e1f7
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/Newtonsoft.Json.xml
@@ -0,0 +1,10752 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>Newtonsoft.Json</name>
+ </assembly>
+ <members>
+ <member name="T:Newtonsoft.Json.Bson.BsonObjectId">
+ <summary>
+ Represents a BSON Oid (object id).
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Bson.BsonObjectId.Value">
+ <summary>
+ Gets or sets the value of the Oid.
+ </summary>
+ <value>The value of the Oid.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonObjectId.#ctor(System.Byte[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonObjectId"/> class.
+ </summary>
+ <param name="value">The Oid value.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Bson.BsonReader">
+ <summary>
+ Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Bson.BsonReader.JsonNet35BinaryCompatibility">
+ <summary>
+ Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary.
+ </summary>
+ <value>
+ <c>true</c> if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Bson.BsonReader.ReadRootValueAsArray">
+ <summary>
+ Gets or sets a value indicating whether the root object will be read as a JSON array.
+ </summary>
+ <value>
+ <c>true</c> if the root object will be read as a JSON array; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Bson.BsonReader.DateTimeKindHandling">
+ <summary>
+ Gets or sets the <see cref="T:System.DateTimeKind" /> used when reading <see cref="T:System.DateTime"/> values from BSON.
+ </summary>
+ <value>The <see cref="T:System.DateTimeKind" /> used when reading <see cref="T:System.DateTime"/> values from BSON.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.Stream)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class.
+ </summary>
+ <param name="stream">The <see cref="T:System.IO.Stream"/> containing the BSON data to read.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.BinaryReader)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class.
+ </summary>
+ <param name="reader">The <see cref="T:System.IO.BinaryReader"/> containing the BSON data to read.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.Stream,System.Boolean,System.DateTimeKind)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class.
+ </summary>
+ <param name="stream">The <see cref="T:System.IO.Stream"/> containing the BSON data to read.</param>
+ <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param>
+ <param name="dateTimeKindHandling">The <see cref="T:System.DateTimeKind" /> used when reading <see cref="T:System.DateTime"/> values from BSON.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.BinaryReader,System.Boolean,System.DateTimeKind)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class.
+ </summary>
+ <param name="reader">The <see cref="T:System.IO.BinaryReader"/> containing the BSON data to read.</param>
+ <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param>
+ <param name="dateTimeKindHandling">The <see cref="T:System.DateTimeKind" /> used when reading <see cref="T:System.DateTime"/> values from BSON.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonReader.Read">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.Stream"/>.
+ </summary>
+ <returns>
+ <c>true</c> if the next token was read successfully; <c>false</c> if there are no more tokens to read.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonReader.Close">
+ <summary>
+ Changes the reader's state to <see cref="F:Newtonsoft.Json.JsonReader.State.Closed"/>.
+ If <see cref="P:Newtonsoft.Json.JsonReader.CloseInput"/> is set to <c>true</c>, the underlying <see cref="T:System.IO.Stream"/> is also closed.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Bson.BsonWriter">
+ <summary>
+ Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Bson.BsonWriter.DateTimeKindHandling">
+ <summary>
+ Gets or sets the <see cref="T:System.DateTimeKind" /> used when writing <see cref="T:System.DateTime"/> values to BSON.
+ When set to <see cref="F:System.DateTimeKind.Unspecified" /> no conversion will occur.
+ </summary>
+ <value>The <see cref="T:System.DateTimeKind" /> used when writing <see cref="T:System.DateTime"/> values to BSON.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.#ctor(System.IO.Stream)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonWriter"/> class.
+ </summary>
+ <param name="stream">The <see cref="T:System.IO.Stream"/> to write to.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.#ctor(System.IO.BinaryWriter)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonWriter"/> class.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.BinaryWriter"/> to write to.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.Flush">
+ <summary>
+ Flushes whatever is in the buffer to the underlying <see cref="T:System.IO.Stream"/> and also flushes the underlying stream.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
+ <summary>
+ Writes the end.
+ </summary>
+ <param name="token">The token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteComment(System.String)">
+ <summary>
+ Writes a comment <c>/*...*/</c> containing the specified text.
+ </summary>
+ <param name="text">Text to place inside the comment.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartConstructor(System.String)">
+ <summary>
+ Writes the start of a constructor with the given name.
+ </summary>
+ <param name="name">The name of the constructor.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRaw(System.String)">
+ <summary>
+ Writes raw JSON.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRawValue(System.String)">
+ <summary>
+ Writes raw JSON where a value is expected and updates the writer's state.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartArray">
+ <summary>
+ Writes the beginning of a JSON array.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartObject">
+ <summary>
+ Writes the beginning of a JSON object.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WritePropertyName(System.String)">
+ <summary>
+ Writes the property name of a name/value pair on a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.Close">
+ <summary>
+ Closes this writer.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.CloseOutput"/> is set to <c>true</c>, the underlying <see cref="T:System.IO.Stream"/> is also closed.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.AutoCompleteOnClose"/> is set to <c>true</c>, the JSON is auto-completed.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Object)">
+ <summary>
+ Writes a <see cref="T:System.Object"/> value.
+ An error will raised if the value cannot be written as a single JSON token.
+ </summary>
+ <param name="value">The <see cref="T:System.Object"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteNull">
+ <summary>
+ Writes a null value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteUndefined">
+ <summary>
+ Writes an undefined value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.String)">
+ <summary>
+ Writes a <see cref="T:System.String"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.String"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Int32)">
+ <summary>
+ Writes a <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.UInt32)">
+ <summary>
+ Writes a <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Int64)">
+ <summary>
+ Writes a <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.UInt64)">
+ <summary>
+ Writes a <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Single)">
+ <summary>
+ Writes a <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Single"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Double)">
+ <summary>
+ Writes a <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Double"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Boolean)">
+ <summary>
+ Writes a <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Int16)">
+ <summary>
+ Writes a <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.UInt16)">
+ <summary>
+ Writes a <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Char)">
+ <summary>
+ Writes a <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Char"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Byte)">
+ <summary>
+ Writes a <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.SByte)">
+ <summary>
+ Writes a <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Decimal)">
+ <summary>
+ Writes a <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.DateTime)">
+ <summary>
+ Writes a <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.DateTimeOffset)">
+ <summary>
+ Writes a <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Byte[])">
+ <summary>
+ Writes a <see cref="T:System.Byte"/>[] value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/>[] value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Guid)">
+ <summary>
+ Writes a <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Guid"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.TimeSpan)">
+ <summary>
+ Writes a <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteValue(System.Uri)">
+ <summary>
+ Writes a <see cref="T:System.Uri"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Uri"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteObjectId(System.Byte[])">
+ <summary>
+ Writes a <see cref="T:System.Byte"/>[] value that represents a BSON object id.
+ </summary>
+ <param name="value">The Object ID value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRegex(System.String,System.String)">
+ <summary>
+ Writes a BSON regex.
+ </summary>
+ <param name="pattern">The regex pattern.</param>
+ <param name="options">The regex options.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.ConstructorHandling">
+ <summary>
+ Specifies how constructors are used when initializing objects during deserialization by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ConstructorHandling.Default">
+ <summary>
+ First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ConstructorHandling.AllowNonPublicDefaultConstructor">
+ <summary>
+ Json.NET will use a non-public default constructor before falling back to a parameterized constructor.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.BinaryConverter">
+ <summary>
+ Converts a binary value to and from a base 64 string value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.BinaryConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.BinaryConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.BinaryConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.BsonObjectIdConverter">
+ <summary>
+ Converts a <see cref="T:Newtonsoft.Json.Bson.BsonObjectId"/> to and from JSON and BSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.BsonObjectIdConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.BsonObjectIdConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.BsonObjectIdConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.CustomCreationConverter`1">
+ <summary>
+ Creates a custom object.
+ </summary>
+ <typeparam name="T">The object type to convert.</typeparam>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.Create(System.Type)">
+ <summary>
+ Creates an object which will then be populated by the serializer.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>The created object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.CustomCreationConverter`1.CanWrite">
+ <summary>
+ Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON.
+ </summary>
+ <value>
+ <c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.DataSetConverter">
+ <summary>
+ Converts a <see cref="T:System.Data.DataSet"/> to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DataSetConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DataSetConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DataSetConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified value type.
+ </summary>
+ <param name="valueType">Type of the value.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.DataTableConverter">
+ <summary>
+ Converts a <see cref="T:System.Data.DataTable"/> to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DataTableConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DataTableConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DataTableConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified value type.
+ </summary>
+ <param name="valueType">Type of the value.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.DateTimeConverterBase">
+ <summary>
+ Provides a base class for converting a <see cref="T:System.DateTime"/> to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DateTimeConverterBase.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.DiscriminatedUnionConverter">
+ <summary>
+ Converts a F# discriminated union type to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DiscriminatedUnionConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DiscriminatedUnionConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.DiscriminatedUnionConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.EntityKeyMemberConverter">
+ <summary>
+ Converts an Entity Framework <see cref="T:System.Data.EntityKeyMember"/> to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.EntityKeyMemberConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.EntityKeyMemberConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.EntityKeyMemberConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.ExpandoObjectConverter">
+ <summary>
+ Converts an <see cref="T:System.Dynamic.ExpandoObject"/> to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.ExpandoObjectConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.ExpandoObjectConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.ExpandoObjectConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.ExpandoObjectConverter.CanWrite">
+ <summary>
+ Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON.
+ </summary>
+ <value>
+ <c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.IsoDateTimeConverter">
+ <summary>
+ Converts a <see cref="T:System.DateTime"/> to and from the ISO 8601 date format (e.g. <c>"2008-04-12T12:53Z"</c>).
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.DateTimeStyles">
+ <summary>
+ Gets or sets the date time styles used when converting a date to and from JSON.
+ </summary>
+ <value>The date time styles used when converting a date to and from JSON.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.DateTimeFormat">
+ <summary>
+ Gets or sets the date time format used when converting a date to and from JSON.
+ </summary>
+ <value>The date time format used when converting a date to and from JSON.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.Culture">
+ <summary>
+ Gets or sets the culture used when converting a date to and from JSON.
+ </summary>
+ <value>The culture used when converting a date to and from JSON.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.IsoDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.IsoDateTimeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter">
+ <summary>
+ Converts a <see cref="T:System.DateTime"/> to and from a JavaScript <c>Date</c> constructor (e.g. <c>new Date(52231943)</c>).
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing property value of the JSON that is being converted.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.KeyValuePairConverter">
+ <summary>
+ Converts a <see cref="T:System.Collections.Generic.KeyValuePair`2"/> to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.KeyValuePairConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.KeyValuePairConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.KeyValuePairConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.RegexConverter">
+ <summary>
+ Converts a <see cref="T:System.Text.RegularExpressions.Regex"/> to and from JSON and BSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.RegexConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.RegexConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.RegexConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.StringEnumConverter">
+ <summary>
+ Converts an <see cref="T:System.Enum"/> to and from its name string value.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.StringEnumConverter.CamelCaseText">
+ <summary>
+ Gets or sets a value indicating whether the written enum text should be camel case.
+ </summary>
+ <value><c>true</c> if the written enum text will be camel case; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.StringEnumConverter.AllowIntegerValues">
+ <summary>
+ Gets or sets a value indicating whether integer values are allowed when deserializing.
+ </summary>
+ <value><c>true</c> if integers are allowed when deserializing; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Converters.StringEnumConverter"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Converters.StringEnumConverter"/> class.
+ </summary>
+ <param name="camelCaseText"><c>true</c> if the written enum text will be camel case; otherwise, <c>false</c>.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.VersionConverter">
+ <summary>
+ Converts a <see cref="T:System.Version"/> to and from a string (e.g. <c>"1.2.3.4"</c>).
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.VersionConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.VersionConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing property value of the JSON that is being converted.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.VersionConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Converters.XmlNodeConverter">
+ <summary>
+ Converts XML to and from JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.XmlNodeConverter.DeserializeRootElementName">
+ <summary>
+ Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements.
+ </summary>
+ <value>The name of the deserialized root element.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.XmlNodeConverter.WriteArrayAttribute">
+ <summary>
+ Gets or sets a flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+ </summary>
+ <value><c>true</c> if the array attribute is written to the XML; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Converters.XmlNodeConverter.OmitRootObject">
+ <summary>
+ Gets or sets a value indicating whether to write the root JSON object.
+ </summary>
+ <value><c>true</c> if the JSON root object is omitted; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="serializer">The calling serializer.</param>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.IsNamespaceAttribute(System.String,System.String@)">
+ <summary>
+ Checks if the <paramref name="attributeName"/> is a namespace attribute.
+ </summary>
+ <param name="attributeName">Attribute name to test.</param>
+ <param name="prefix">The attribute name prefix if it has one, otherwise an empty string.</param>
+ <returns><c>true</c> if attribute name is for a namespace attribute, otherwise <c>false</c>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified value type.
+ </summary>
+ <param name="valueType">Type of the value.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.FloatParseHandling">
+ <summary>
+ Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.FloatParseHandling.Double">
+ <summary>
+ Floating point numbers are parsed to <see cref="F:Newtonsoft.Json.FloatParseHandling.Double"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.FloatParseHandling.Decimal">
+ <summary>
+ Floating point numbers are parsed to <see cref="F:Newtonsoft.Json.FloatParseHandling.Decimal"/>.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.DateFormatHandling">
+ <summary>
+ Specifies how dates are formatted when writing JSON text.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateFormatHandling.IsoDateFormat">
+ <summary>
+ Dates are written in the ISO 8601 format, e.g. <c>"2012-03-21T05:40Z"</c>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat">
+ <summary>
+ Dates are written in the Microsoft JSON format, e.g. <c>"\/Date(1198908717056)\/"</c>.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.DateParseHandling">
+ <summary>
+ Specifies how date formatted strings, e.g. <c>"\/Date(1198908717056)\/"</c> and <c>"2012-03-21T05:40Z"</c>, are parsed when reading JSON text.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateParseHandling.None">
+ <summary>
+ Date formatted strings are not parsed to a date type and are read as strings.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateParseHandling.DateTime">
+ <summary>
+ Date formatted strings, e.g. <c>"\/Date(1198908717056)\/"</c> and <c>"2012-03-21T05:40Z"</c>, are parsed to <see cref="F:Newtonsoft.Json.DateParseHandling.DateTime"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateParseHandling.DateTimeOffset">
+ <summary>
+ Date formatted strings, e.g. <c>"\/Date(1198908717056)\/"</c> and <c>"2012-03-21T05:40Z"</c>, are parsed to <see cref="F:Newtonsoft.Json.DateParseHandling.DateTimeOffset"/>.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.DateTimeZoneHandling">
+ <summary>
+ Specifies how to treat the time value when converting between string and <see cref="T:System.DateTime"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateTimeZoneHandling.Local">
+ <summary>
+ Treat as local time. If the <see cref="T:System.DateTime"/> object represents a Coordinated Universal Time (UTC), it is converted to the local time.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateTimeZoneHandling.Utc">
+ <summary>
+ Treat as a UTC. If the <see cref="T:System.DateTime"/> object represents a local time, it is converted to a UTC.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateTimeZoneHandling.Unspecified">
+ <summary>
+ Treat as a local time if a <see cref="T:System.DateTime"/> is being converted to a string.
+ If a string is being converted to <see cref="T:System.DateTime"/>, convert to a local time if a time zone is specified.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DateTimeZoneHandling.RoundtripKind">
+ <summary>
+ Time zone information should be preserved when converting.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.DefaultValueHandling">
+ <summary>
+ Specifies default value handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeDefaultValueHandlingObject" title="DefaultValueHandling Class" />
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeDefaultValueHandlingExample" title="DefaultValueHandling Ignore Example" />
+ </example>
+ </member>
+ <member name="F:Newtonsoft.Json.DefaultValueHandling.Include">
+ <summary>
+ Include members where the member value is the same as the member's default value when serializing objects.
+ Included members are written to JSON. Has no effect when deserializing.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DefaultValueHandling.Ignore">
+ <summary>
+ Ignore members where the member value is the same as the member's default value when serializing objects
+ so that it is not written to JSON.
+ This option will ignore all default values (e.g. <c>null</c> for objects and nullable types; <c>0</c> for integers,
+ decimals and floating point numbers; and <c>false</c> for booleans). The default value ignored can be changed by
+ placing the <see cref="T:System.ComponentModel.DefaultValueAttribute"/> on the property.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DefaultValueHandling.Populate">
+ <summary>
+ Members with a default value but no JSON will be set to their default value when deserializing.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.DefaultValueHandling.IgnoreAndPopulate">
+ <summary>
+ Ignore members where the member value is the same as the member's default value when serializing objects
+ and set members to their default value when deserializing.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.FloatFormatHandling">
+ <summary>
+ Specifies float format handling options when writing special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>,
+ <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/> with <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.FloatFormatHandling.String">
+ <summary>
+ Write special floating point values as strings in JSON, e.g. <c>"NaN"</c>, <c>"Infinity"</c>, <c>"-Infinity"</c>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.FloatFormatHandling.Symbol">
+ <summary>
+ Write special floating point values as symbols in JSON, e.g. <c>NaN</c>, <c>Infinity</c>, <c>-Infinity</c>.
+ Note that this will produce non-valid JSON.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.FloatFormatHandling.DefaultValue">
+ <summary>
+ Write special floating point values as the property's default value in JSON, e.g. 0.0 for a <see cref="T:System.Double"/> property, <c>null</c> for a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> property.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Formatting">
+ <summary>
+ Specifies formatting options for the <see cref="T:Newtonsoft.Json.JsonTextWriter"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Formatting.None">
+ <summary>
+ No special formatting is applied. This is the default.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Formatting.Indented">
+ <summary>
+ Causes child objects to be indented according to the <see cref="P:Newtonsoft.Json.JsonTextWriter.Indentation"/> and <see cref="P:Newtonsoft.Json.JsonTextWriter.IndentChar"/> settings.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.IArrayPool`1">
+ <summary>
+ Provides an interface for using pooled arrays.
+ </summary>
+ <typeparam name="T">The array type content.</typeparam>
+ </member>
+ <member name="M:Newtonsoft.Json.IArrayPool`1.Rent(System.Int32)">
+ <summary>
+ Rent an array from the pool. This array must be returned when it is no longer needed.
+ </summary>
+ <param name="minimumLength">The minimum required length of the array. The returned array may be longer.</param>
+ <returns>The rented array from the pool. This array must be returned when it is no longer needed.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.IArrayPool`1.Return(`0[])">
+ <summary>
+ Return an array to the pool.
+ </summary>
+ <param name="array">The array that is being returned.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.IJsonLineInfo">
+ <summary>
+ Provides an interface to enable a class to return line and position information.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.IJsonLineInfo.HasLineInfo">
+ <summary>
+ Gets a value indicating whether the class can return line information.
+ </summary>
+ <returns>
+ <c>true</c> if <see cref="P:Newtonsoft.Json.IJsonLineInfo.LineNumber"/> and <see cref="P:Newtonsoft.Json.IJsonLineInfo.LinePosition"/> can be provided; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.IJsonLineInfo.LineNumber">
+ <summary>
+ Gets the current line number.
+ </summary>
+ <value>The current line number or 0 if no line information is available (for example, when <see cref="M:Newtonsoft.Json.IJsonLineInfo.HasLineInfo"/> returns <c>false</c>).</value>
+ </member>
+ <member name="P:Newtonsoft.Json.IJsonLineInfo.LinePosition">
+ <summary>
+ Gets the current line position.
+ </summary>
+ <value>The current line position or 0 if no line information is available (for example, when <see cref="M:Newtonsoft.Json.IJsonLineInfo.HasLineInfo"/> returns <c>false</c>).</value>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonArrayAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the collection.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonArrayAttribute.AllowNullItems">
+ <summary>
+ Gets or sets a value indicating whether null items are allowed in the collection.
+ </summary>
+ <value><c>true</c> if null items are allowed in the collection; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonArrayAttribute"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with a flag indicating whether the array can contain null items.
+ </summary>
+ <param name="allowNullItems">A flag indicating whether the array can contain null items.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonArrayAttribute"/> class with the specified container Id.
+ </summary>
+ <param name="id">The container Id.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonConstructorAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to use the specified constructor when deserializing that object.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonContainerAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the object.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.Id">
+ <summary>
+ Gets or sets the id.
+ </summary>
+ <value>The id.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.Title">
+ <summary>
+ Gets or sets the title.
+ </summary>
+ <value>The title.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.Description">
+ <summary>
+ Gets or sets the description.
+ </summary>
+ <value>The description.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemConverterType">
+ <summary>
+ Gets or sets the collection's items converter.
+ </summary>
+ <value>The collection's items converter.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemConverterParameters">
+ <summary>
+ The parameter list to use when constructing the <see cref="T:Newtonsoft.Json.JsonConverter"/> described by <see cref="P:Newtonsoft.Json.JsonContainerAttribute.ItemConverterType"/>.
+ If <c>null</c>, the default constructor is used.
+ When non-<c>null</c>, there must be a constructor defined in the <see cref="T:Newtonsoft.Json.JsonConverter"/> that exactly matches the number,
+ order, and type of these parameters.
+ </summary>
+ <example>
+ <code>
+ [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+ </code>
+ </example>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.NamingStrategyType">
+ <summary>
+ Gets or sets the <see cref="T:System.Type"/> of the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/>.
+ </summary>
+ <value>The <see cref="T:System.Type"/> of the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.NamingStrategyParameters">
+ <summary>
+ The parameter list to use when constructing the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/> described by <see cref="P:Newtonsoft.Json.JsonContainerAttribute.NamingStrategyType"/>.
+ If <c>null</c>, the default constructor is used.
+ When non-<c>null</c>, there must be a constructor defined in the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/> that exactly matches the number,
+ order, and type of these parameters.
+ </summary>
+ <example>
+ <code>
+ [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+ </code>
+ </example>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.IsReference">
+ <summary>
+ Gets or sets a value that indicates whether to preserve object references.
+ </summary>
+ <value>
+ <c>true</c> to keep object reference; otherwise, <c>false</c>. The default is <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemIsReference">
+ <summary>
+ Gets or sets a value that indicates whether to preserve collection's items references.
+ </summary>
+ <value>
+ <c>true</c> to keep collection's items object references; otherwise, <c>false</c>. The default is <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemReferenceLoopHandling">
+ <summary>
+ Gets or sets the reference loop handling used when serializing the collection's items.
+ </summary>
+ <value>The reference loop handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonContainerAttribute.ItemTypeNameHandling">
+ <summary>
+ Gets or sets the type name handling used when serializing the collection's items.
+ </summary>
+ <value>The type name handling.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonContainerAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonContainerAttribute"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonContainerAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonContainerAttribute"/> class with the specified container Id.
+ </summary>
+ <param name="id">The container Id.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonConvert">
+ <summary>
+ Provides methods for converting between .NET types and JSON types.
+ </summary>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="SerializeObject" title="Serializing and Deserializing JSON with JsonConvert" />
+ </example>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonConvert.DefaultSettings">
+ <summary>
+ Gets or sets a function that creates default <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ Default settings are automatically used by serialization methods on <see cref="T:Newtonsoft.Json.JsonConvert"/>,
+ and <see cref="M:Newtonsoft.Json.Linq.JToken.ToObject``1"/> and <see cref="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object)"/> on <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ To serialize without using any default settings create a <see cref="T:Newtonsoft.Json.JsonSerializer"/> with
+ <see cref="M:Newtonsoft.Json.JsonSerializer.Create"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonConvert.True">
+ <summary>
+ Represents JavaScript's boolean value <c>true</c> as a string. This field is read-only.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonConvert.False">
+ <summary>
+ Represents JavaScript's boolean value <c>false</c> as a string. This field is read-only.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonConvert.Null">
+ <summary>
+ Represents JavaScript's <c>null</c> as a string. This field is read-only.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonConvert.Undefined">
+ <summary>
+ Represents JavaScript's <c>undefined</c> as a string. This field is read-only.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonConvert.PositiveInfinity">
+ <summary>
+ Represents JavaScript's positive infinity as a string. This field is read-only.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonConvert.NegativeInfinity">
+ <summary>
+ Represents JavaScript's negative infinity as a string. This field is read-only.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonConvert.NaN">
+ <summary>
+ Represents JavaScript's <c>NaN</c> as a string. This field is read-only.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTime)">
+ <summary>
+ Converts the <see cref="T:System.DateTime"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.DateTime"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling)">
+ <summary>
+ Converts the <see cref="T:System.DateTime"/> to its JSON string representation using the <see cref="T:Newtonsoft.Json.DateFormatHandling"/> specified.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <param name="format">The format the date will be converted to.</param>
+ <param name="timeZoneHandling">The time zone handling when the date is converted to a string.</param>
+ <returns>A JSON string representation of the <see cref="T:System.DateTime"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTimeOffset)">
+ <summary>
+ Converts the <see cref="T:System.DateTimeOffset"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.DateTimeOffset"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling)">
+ <summary>
+ Converts the <see cref="T:System.DateTimeOffset"/> to its JSON string representation using the <see cref="T:Newtonsoft.Json.DateFormatHandling"/> specified.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <param name="format">The format the date will be converted to.</param>
+ <returns>A JSON string representation of the <see cref="T:System.DateTimeOffset"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Boolean)">
+ <summary>
+ Converts the <see cref="T:System.Boolean"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Boolean"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Char)">
+ <summary>
+ Converts the <see cref="T:System.Char"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Char"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Enum)">
+ <summary>
+ Converts the <see cref="T:System.Enum"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Enum"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int32)">
+ <summary>
+ Converts the <see cref="T:System.Int32"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Int32"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int16)">
+ <summary>
+ Converts the <see cref="T:System.Int16"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Int16"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt16)">
+ <summary>
+ Converts the <see cref="T:System.UInt16"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.UInt16"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt32)">
+ <summary>
+ Converts the <see cref="T:System.UInt32"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.UInt32"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int64)">
+ <summary>
+ Converts the <see cref="T:System.Int64"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Int64"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt64)">
+ <summary>
+ Converts the <see cref="T:System.UInt64"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.UInt64"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Single)">
+ <summary>
+ Converts the <see cref="T:System.Single"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Single"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Double)">
+ <summary>
+ Converts the <see cref="T:System.Double"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Double"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Byte)">
+ <summary>
+ Converts the <see cref="T:System.Byte"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Byte"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.SByte)">
+ <summary>
+ Converts the <see cref="T:System.SByte"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.SByte"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Decimal)">
+ <summary>
+ Converts the <see cref="T:System.Decimal"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.SByte"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Guid)">
+ <summary>
+ Converts the <see cref="T:System.Guid"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Guid"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.TimeSpan)">
+ <summary>
+ Converts the <see cref="T:System.TimeSpan"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.TimeSpan"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Uri)">
+ <summary>
+ Converts the <see cref="T:System.Uri"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Uri"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String)">
+ <summary>
+ Converts the <see cref="T:System.String"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String,System.Char)">
+ <summary>
+ Converts the <see cref="T:System.String"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <param name="delimiter">The string delimiter character.</param>
+ <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling)">
+ <summary>
+ Converts the <see cref="T:System.String"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <param name="delimiter">The string delimiter character.</param>
+ <param name="stringEscapeHandling">The string escape handling.</param>
+ <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Object)">
+ <summary>
+ Converts the <see cref="T:System.Object"/> to its JSON string representation.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>A JSON string representation of the <see cref="T:System.Object"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object)">
+ <summary>
+ Serializes the specified object to a JSON string.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <returns>A JSON string representation of the object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting)">
+ <summary>
+ Serializes the specified object to a JSON string using formatting.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <returns>
+ A JSON string representation of the object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Serializes the specified object to a JSON string using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <param name="converters">A collection of converters used while serializing.</param>
+ <returns>A JSON string representation of the object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Serializes the specified object to a JSON string using formatting and a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <param name="converters">A collection of converters used while serializing.</param>
+ <returns>A JSON string representation of the object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Serializes the specified object to a JSON string using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
+ If this is <c>null</c>, default serialization settings will be used.</param>
+ <returns>
+ A JSON string representation of the object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Serializes the specified object to a JSON string using a type, formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
+ If this is <c>null</c>, default serialization settings will be used.</param>
+ <param name="type">
+ The type of the value being serialized.
+ This parameter is used when <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> is <see cref="F:Newtonsoft.Json.TypeNameHandling.Auto"/> to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+ </param>
+ <returns>
+ A JSON string representation of the object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Serializes the specified object to a JSON string using formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
+ If this is <c>null</c>, default serialization settings will be used.</param>
+ <returns>
+ A JSON string representation of the object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Serializes the specified object to a JSON string using a type, formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="value">The object to serialize.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
+ If this is <c>null</c>, default serialization settings will be used.</param>
+ <param name="type">
+ The type of the value being serialized.
+ This parameter is used when <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> is <see cref="F:Newtonsoft.Json.TypeNameHandling.Auto"/> to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+ </param>
+ <returns>
+ A JSON string representation of the object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String)">
+ <summary>
+ Deserializes the JSON to a .NET object.
+ </summary>
+ <param name="value">The JSON to deserialize.</param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Deserializes the JSON to a .NET object using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="value">The JSON to deserialize.</param>
+ <param name="settings">
+ The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
+ If this is <c>null</c>, default serialization settings will be used.
+ </param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type)">
+ <summary>
+ Deserializes the JSON to the specified .NET type.
+ </summary>
+ <param name="value">The JSON to deserialize.</param>
+ <param name="type">The <see cref="T:System.Type"/> of object being deserialized.</param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String)">
+ <summary>
+ Deserializes the JSON to the specified .NET type.
+ </summary>
+ <typeparam name="T">The type of the object to deserialize to.</typeparam>
+ <param name="value">The JSON to deserialize.</param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeAnonymousType``1(System.String,``0)">
+ <summary>
+ Deserializes the JSON to the given anonymous type.
+ </summary>
+ <typeparam name="T">
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be inferred from the anonymous type passed
+ as a parameter.
+ </typeparam>
+ <param name="value">The JSON to deserialize.</param>
+ <param name="anonymousTypeObject">The anonymous type object.</param>
+ <returns>The deserialized anonymous type from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeAnonymousType``1(System.String,``0,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Deserializes the JSON to the given anonymous type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <typeparam name="T">
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be inferred from the anonymous type passed
+ as a parameter.
+ </typeparam>
+ <param name="value">The JSON to deserialize.</param>
+ <param name="anonymousTypeObject">The anonymous type object.</param>
+ <param name="settings">
+ The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
+ If this is <c>null</c>, default serialization settings will be used.
+ </param>
+ <returns>The deserialized anonymous type from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Deserializes the JSON to the specified .NET type using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
+ </summary>
+ <typeparam name="T">The type of the object to deserialize to.</typeparam>
+ <param name="value">The JSON to deserialize.</param>
+ <param name="converters">Converters to use while deserializing.</param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Deserializes the JSON to the specified .NET type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <typeparam name="T">The type of the object to deserialize to.</typeparam>
+ <param name="value">The object to deserialize.</param>
+ <param name="settings">
+ The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
+ If this is <c>null</c>, default serialization settings will be used.
+ </param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Deserializes the JSON to the specified .NET type using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
+ </summary>
+ <param name="value">The JSON to deserialize.</param>
+ <param name="type">The type of the object to deserialize.</param>
+ <param name="converters">Converters to use while deserializing.</param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Deserializes the JSON to the specified .NET type using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="value">The JSON to deserialize.</param>
+ <param name="type">The type of the object to deserialize to.</param>
+ <param name="settings">
+ The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
+ If this is <c>null</c>, default serialization settings will be used.
+ </param>
+ <returns>The deserialized object from the JSON string.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.PopulateObject(System.String,System.Object)">
+ <summary>
+ Populates the object with values from the JSON string.
+ </summary>
+ <param name="value">The JSON to populate values from.</param>
+ <param name="target">The target object to populate values onto.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.PopulateObject(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Populates the object with values from the JSON string using <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="value">The JSON to populate values from.</param>
+ <param name="target">The target object to populate values onto.</param>
+ <param name="settings">
+ The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
+ If this is <c>null</c>, default serialization settings will be used.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeXmlNode(System.Xml.XmlNode)">
+ <summary>
+ Serializes the <see cref="T:System.Xml.XmlNode"/> to a JSON string.
+ </summary>
+ <param name="node">The node to serialize.</param>
+ <returns>A JSON string of the <see cref="T:System.Xml.XmlNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeXmlNode(System.Xml.XmlNode,Newtonsoft.Json.Formatting)">
+ <summary>
+ Serializes the <see cref="T:System.Xml.XmlNode"/> to a JSON string using formatting.
+ </summary>
+ <param name="node">The node to serialize.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <returns>A JSON string of the <see cref="T:System.Xml.XmlNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeXmlNode(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean)">
+ <summary>
+ Serializes the <see cref="T:System.Xml.XmlNode"/> to a JSON string using formatting and omits the root object if <paramref name="omitRootObject"/> is <c>true</c>.
+ </summary>
+ <param name="node">The node to serialize.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <param name="omitRootObject">Omits writing the root object.</param>
+ <returns>A JSON string of the <see cref="T:System.Xml.XmlNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String)">
+ <summary>
+ Deserializes the <see cref="T:System.Xml.XmlNode"/> from a JSON string.
+ </summary>
+ <param name="value">The JSON string.</param>
+ <returns>The deserialized <see cref="T:System.Xml.XmlNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String,System.String)">
+ <summary>
+ Deserializes the <see cref="T:System.Xml.XmlNode"/> from a JSON string nested in a root element specified by <paramref name="deserializeRootElementName"/>.
+ </summary>
+ <param name="value">The JSON string.</param>
+ <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+ <returns>The deserialized <see cref="T:System.Xml.XmlNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String,System.String,System.Boolean)">
+ <summary>
+ Deserializes the <see cref="T:System.Xml.XmlNode"/> from a JSON string nested in a root element specified by <paramref name="deserializeRootElementName"/>
+ and writes a Json.NET array attribute for collections.
+ </summary>
+ <param name="value">The JSON string.</param>
+ <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+ <param name="writeArrayAttribute">
+ A flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+ </param>
+ <returns>The deserialized <see cref="T:System.Xml.XmlNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeXNode(System.Xml.Linq.XObject)">
+ <summary>
+ Serializes the <see cref="T:System.Xml.Linq.XNode"/> to a JSON string.
+ </summary>
+ <param name="node">The node to convert to JSON.</param>
+ <returns>A JSON string of the <see cref="T:System.Xml.Linq.XNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeXNode(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting)">
+ <summary>
+ Serializes the <see cref="T:System.Xml.Linq.XNode"/> to a JSON string using formatting.
+ </summary>
+ <param name="node">The node to convert to JSON.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <returns>A JSON string of the <see cref="T:System.Xml.Linq.XNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.SerializeXNode(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean)">
+ <summary>
+ Serializes the <see cref="T:System.Xml.Linq.XNode"/> to a JSON string using formatting and omits the root object if <paramref name="omitRootObject"/> is <c>true</c>.
+ </summary>
+ <param name="node">The node to serialize.</param>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <param name="omitRootObject">Omits writing the root object.</param>
+ <returns>A JSON string of the <see cref="T:System.Xml.Linq.XNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXNode(System.String)">
+ <summary>
+ Deserializes the <see cref="T:System.Xml.Linq.XNode"/> from a JSON string.
+ </summary>
+ <param name="value">The JSON string.</param>
+ <returns>The deserialized <see cref="T:System.Xml.Linq.XNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXNode(System.String,System.String)">
+ <summary>
+ Deserializes the <see cref="T:System.Xml.Linq.XNode"/> from a JSON string nested in a root element specified by <paramref name="deserializeRootElementName"/>.
+ </summary>
+ <param name="value">The JSON string.</param>
+ <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+ <returns>The deserialized <see cref="T:System.Xml.Linq.XNode"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXNode(System.String,System.String,System.Boolean)">
+ <summary>
+ Deserializes the <see cref="T:System.Xml.Linq.XNode"/> from a JSON string nested in a root element specified by <paramref name="deserializeRootElementName"/>
+ and writes a Json.NET array attribute for collections.
+ </summary>
+ <param name="value">The JSON string.</param>
+ <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+ <param name="writeArrayAttribute">
+ A flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+ </param>
+ <returns>The deserialized <see cref="T:System.Xml.Linq.XNode"/>.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonConverter">
+ <summary>
+ Converts an object to and from JSON.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Writes the JSON representation of the object.
+ </summary>
+ <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
+ <param name="value">The value.</param>
+ <param name="serializer">The calling serializer.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Reads the JSON representation of the object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
+ <param name="objectType">Type of the object.</param>
+ <param name="existingValue">The existing value of object being read.</param>
+ <param name="serializer">The calling serializer.</param>
+ <returns>The object value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConverter.CanConvert(System.Type)">
+ <summary>
+ Determines whether this instance can convert the specified object type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>
+ <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonConverter.CanRead">
+ <summary>
+ Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can read JSON.
+ </summary>
+ <value><c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can read JSON; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonConverter.CanWrite">
+ <summary>
+ Gets a value indicating whether this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON.
+ </summary>
+ <value><c>true</c> if this <see cref="T:Newtonsoft.Json.JsonConverter"/> can write JSON; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonConverterAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to use the specified <see cref="T:Newtonsoft.Json.JsonConverter"/> when serializing the member or class.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonConverterAttribute.ConverterType">
+ <summary>
+ Gets the <see cref="T:System.Type"/> of the <see cref="T:Newtonsoft.Json.JsonConverter"/>.
+ </summary>
+ <value>The <see cref="T:System.Type"/> of the <see cref="T:Newtonsoft.Json.JsonConverter"/>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonConverterAttribute.ConverterParameters">
+ <summary>
+ The parameter list to use when constructing the <see cref="T:Newtonsoft.Json.JsonConverter"/> described by <see cref="P:Newtonsoft.Json.JsonConverterAttribute.ConverterType"/>.
+ If <c>null</c>, the default constructor is used.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConverterAttribute.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonConverterAttribute"/> class.
+ </summary>
+ <param name="converterType">Type of the <see cref="T:Newtonsoft.Json.JsonConverter"/>.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonConverterAttribute.#ctor(System.Type,System.Object[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonConverterAttribute"/> class.
+ </summary>
+ <param name="converterType">Type of the <see cref="T:Newtonsoft.Json.JsonConverter"/>.</param>
+ <param name="converterParameters">Parameter list to use when constructing the <see cref="T:Newtonsoft.Json.JsonConverter"/>. Can be <c>null</c>.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonConverterCollection">
+ <summary>
+ Represents a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonDictionaryAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the collection.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonDictionaryAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonDictionaryAttribute"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonDictionaryAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonDictionaryAttribute"/> class with the specified container Id.
+ </summary>
+ <param name="id">The container Id.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonException">
+ <summary>
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonException"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonException"/> class
+ with a specified error message.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonException"/> class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ <param name="innerException">The exception that is the cause of the current exception, or <c>null</c> if no inner exception is specified.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonExtensionDataAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to deserialize properties with no matching class member into the specified collection
+ and write values during serialization.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonExtensionDataAttribute.WriteData">
+ <summary>
+ Gets or sets a value that indicates whether to write extension data when serializing the object.
+ </summary>
+ <value>
+ <c>true</c> to write extension data when serializing the object; otherwise, <c>false</c>. The default is <c>true</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonExtensionDataAttribute.ReadData">
+ <summary>
+ Gets or sets a value that indicates whether to read extension data when deserializing the object.
+ </summary>
+ <value>
+ <c>true</c> to read extension data when deserializing the object; otherwise, <c>false</c>. The default is <c>true</c>.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonExtensionDataAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonExtensionDataAttribute"/> class.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonIgnoreAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> not to serialize the public field or public read/write property value.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonObjectAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the object.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonObjectAttribute.MemberSerialization">
+ <summary>
+ Gets or sets the member serialization.
+ </summary>
+ <value>The member serialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonObjectAttribute.ItemRequired">
+ <summary>
+ Gets or sets a value that indicates whether the object's properties are required.
+ </summary>
+ <value>
+ A value indicating whether the object's properties are required.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor(Newtonsoft.Json.MemberSerialization)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with the specified member serialization.
+ </summary>
+ <param name="memberSerialization">The member serialization.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with the specified container Id.
+ </summary>
+ <param name="id">The container Id.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonPropertyAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to always serialize the member with the specified name.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemConverterType">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.JsonConverter"/> used when serializing the property's collection items.
+ </summary>
+ <value>The collection's items <see cref="T:Newtonsoft.Json.JsonConverter"/>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemConverterParameters">
+ <summary>
+ The parameter list to use when constructing the <see cref="T:Newtonsoft.Json.JsonConverter"/> described by <see cref="P:Newtonsoft.Json.JsonPropertyAttribute.ItemConverterType"/>.
+ If <c>null</c>, the default constructor is used.
+ When non-<c>null</c>, there must be a constructor defined in the <see cref="T:Newtonsoft.Json.JsonConverter"/> that exactly matches the number,
+ order, and type of these parameters.
+ </summary>
+ <example>
+ <code>
+ [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+ </code>
+ </example>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.NamingStrategyType">
+ <summary>
+ Gets or sets the <see cref="T:System.Type"/> of the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/>.
+ </summary>
+ <value>The <see cref="T:System.Type"/> of the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.NamingStrategyParameters">
+ <summary>
+ The parameter list to use when constructing the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/> described by <see cref="P:Newtonsoft.Json.JsonPropertyAttribute.NamingStrategyType"/>.
+ If <c>null</c>, the default constructor is used.
+ When non-<c>null</c>, there must be a constructor defined in the <see cref="T:Newtonsoft.Json.Serialization.NamingStrategy"/> that exactly matches the number,
+ order, and type of these parameters.
+ </summary>
+ <example>
+ <code>
+ [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+ </code>
+ </example>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.NullValueHandling">
+ <summary>
+ Gets or sets the null value handling used when serializing this property.
+ </summary>
+ <value>The null value handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.DefaultValueHandling">
+ <summary>
+ Gets or sets the default value handling used when serializing this property.
+ </summary>
+ <value>The default value handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ReferenceLoopHandling">
+ <summary>
+ Gets or sets the reference loop handling used when serializing this property.
+ </summary>
+ <value>The reference loop handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ObjectCreationHandling">
+ <summary>
+ Gets or sets the object creation handling used when deserializing this property.
+ </summary>
+ <value>The object creation handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.TypeNameHandling">
+ <summary>
+ Gets or sets the type name handling used when serializing this property.
+ </summary>
+ <value>The type name handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.IsReference">
+ <summary>
+ Gets or sets whether this property's value is serialized as a reference.
+ </summary>
+ <value>Whether this property's value is serialized as a reference.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.Order">
+ <summary>
+ Gets or sets the order of serialization of a member.
+ </summary>
+ <value>The numeric order of serialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.Required">
+ <summary>
+ Gets or sets a value indicating whether this property is required.
+ </summary>
+ <value>
+ A value indicating whether this property is required.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.PropertyName">
+ <summary>
+ Gets or sets the name of the property.
+ </summary>
+ <value>The name of the property.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemReferenceLoopHandling">
+ <summary>
+ Gets or sets the reference loop handling used when serializing the property's collection items.
+ </summary>
+ <value>The collection's items reference loop handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemTypeNameHandling">
+ <summary>
+ Gets or sets the type name handling used when serializing the property's collection items.
+ </summary>
+ <value>The collection's items type name handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ItemIsReference">
+ <summary>
+ Gets or sets whether this property's collection items are serialized as a reference.
+ </summary>
+ <value>Whether this property's collection items are serialized as a reference.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonPropertyAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonPropertyAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> class with the specified name.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonReader">
+ <summary>
+ Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns <c>true</c> if the next token was read successfully; <c>false</c> if there are no more tokens to read.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.SkipAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously skips the children of the current token.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsBooleanAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsBytesAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Byte"/>[].
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Byte"/>[]. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDateTimeAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDateTimeOffsetAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDecimalAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDoubleAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsInt32Async(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsStringAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.String"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.String"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonReader.State">
+ <summary>
+ Specifies the state of the reader.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Start">
+ <summary>
+ A <see cref="T:Newtonsoft.Json.JsonReader"/> read method has not been called.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Complete">
+ <summary>
+ The end of the file has been reached successfully.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Property">
+ <summary>
+ Reader is at a property.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.ObjectStart">
+ <summary>
+ Reader is at the start of an object.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Object">
+ <summary>
+ Reader is in an object.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.ArrayStart">
+ <summary>
+ Reader is at the start of an array.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Array">
+ <summary>
+ Reader is in an array.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Closed">
+ <summary>
+ The <see cref="M:Newtonsoft.Json.JsonReader.Close"/> method has been called.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.PostValue">
+ <summary>
+ Reader has just read a value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.ConstructorStart">
+ <summary>
+ Reader is at the start of a constructor.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Constructor">
+ <summary>
+ Reader is in a constructor.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Error">
+ <summary>
+ An error occurred that prevents the read operation from continuing.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonReader.State.Finished">
+ <summary>
+ The end of the file has been reached successfully.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.CurrentState">
+ <summary>
+ Gets the current reader state.
+ </summary>
+ <value>The current reader state.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.CloseInput">
+ <summary>
+ Gets or sets a value indicating whether the source should be closed when this reader is closed.
+ </summary>
+ <value>
+ <c>true</c> to close the source when this reader is closed; otherwise <c>false</c>. The default is <c>true</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.SupportMultipleContent">
+ <summary>
+ Gets or sets a value indicating whether multiple pieces of JSON content can
+ be read from a continuous stream without erroring.
+ </summary>
+ <value>
+ <c>true</c> to support reading multiple pieces of JSON content; otherwise <c>false</c>.
+ The default is <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.QuoteChar">
+ <summary>
+ Gets the quotation mark character used to enclose the value of a string.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.DateTimeZoneHandling">
+ <summary>
+ Gets or sets how <see cref="T:System.DateTime"/> time zones are handled when reading JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.DateParseHandling">
+ <summary>
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.FloatParseHandling">
+ <summary>
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.DateFormatString">
+ <summary>
+ Gets or sets how custom date formatted strings are parsed when reading JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.MaxDepth">
+ <summary>
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.TokenType">
+ <summary>
+ Gets the type of the current JSON token.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.Value">
+ <summary>
+ Gets the text value of the current JSON token.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.ValueType">
+ <summary>
+ Gets the .NET type for the current JSON token.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.Depth">
+ <summary>
+ Gets the depth of the current token in the JSON document.
+ </summary>
+ <value>The depth of the current token in the JSON document.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.Path">
+ <summary>
+ Gets the path of the current JSON token.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReader.Culture">
+ <summary>
+ Gets or sets the culture used when reading JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReader"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.Read">
+ <summary>
+ Reads the next JSON token from the source.
+ </summary>
+ <returns><c>true</c> if the next token was read successfully; <c>false</c> if there are no more tokens to read.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsInt32">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsString">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.String"/>.
+ </summary>
+ <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsBytes">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.Byte"/>[].
+ </summary>
+ <returns>A <see cref="T:System.Byte"/>[] or <c>null</c> if the next JSON token is null. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDouble">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsBoolean">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDecimal">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDateTime">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.ReadAsDateTimeOffset">
+ <summary>
+ Reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.Skip">
+ <summary>
+ Skips the children of the current token.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.SetToken(Newtonsoft.Json.JsonToken)">
+ <summary>
+ Sets the current token.
+ </summary>
+ <param name="newToken">The new token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.SetToken(Newtonsoft.Json.JsonToken,System.Object)">
+ <summary>
+ Sets the current token and value.
+ </summary>
+ <param name="newToken">The new token.</param>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.SetToken(Newtonsoft.Json.JsonToken,System.Object,System.Boolean)">
+ <summary>
+ Sets the current token and value.
+ </summary>
+ <param name="newToken">The new token.</param>
+ <param name="value">The value.</param>
+ <param name="updateIndex">A flag indicating whether the position index inside an array should be updated.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.SetStateBasedOnCurrent">
+ <summary>
+ Sets the state based on current token type.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.Dispose(System.Boolean)">
+ <summary>
+ Releases unmanaged and - optionally - managed resources.
+ </summary>
+ <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReader.Close">
+ <summary>
+ Changes the reader's state to <see cref="F:Newtonsoft.Json.JsonReader.State.Closed"/>.
+ If <see cref="P:Newtonsoft.Json.JsonReader.CloseInput"/> is set to <c>true</c>, the source is also closed.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonReaderException">
+ <summary>
+ The exception thrown when an error occurs while reading JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReaderException.LineNumber">
+ <summary>
+ Gets the line number indicating where the error occurred.
+ </summary>
+ <value>The line number indicating where the error occurred.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReaderException.LinePosition">
+ <summary>
+ Gets the line position indicating where the error occurred.
+ </summary>
+ <value>The line position indicating where the error occurred.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonReaderException.Path">
+ <summary>
+ Gets the path to the JSON where the error occurred.
+ </summary>
+ <value>The path to the JSON where the error occurred.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReaderException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class
+ with a specified error message.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ <param name="innerException">The exception that is the cause of the current exception, or <c>null</c> if no inner exception is specified.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String,System.String,System.Int32,System.Int32,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class
+ with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ <param name="path">The path to the JSON where the error occurred.</param>
+ <param name="lineNumber">The line number indicating where the error occurred.</param>
+ <param name="linePosition">The line position indicating where the error occurred.</param>
+ <param name="innerException">The exception that is the cause of the current exception, or <c>null</c> if no inner exception is specified.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonRequiredAttribute">
+ <summary>
+ Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to always serialize the member, and to require that the member has a value.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonSerializationException">
+ <summary>
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class
+ with a specified error message.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ <param name="innerException">The exception that is the cause of the current exception, or <c>null</c> if no inner exception is specified.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonSerializer">
+ <summary>
+ Serializes and deserializes objects into and from the JSON format.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> enables you to control how objects are encoded into JSON.
+ </summary>
+ </member>
+ <member name="E:Newtonsoft.Json.JsonSerializer.Error">
+ <summary>
+ Occurs when the <see cref="T:Newtonsoft.Json.JsonSerializer"/> errors during serialization and deserialization.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.ReferenceResolver">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.Binder">
+ <summary>
+ Gets or sets the <see cref="P:Newtonsoft.Json.JsonSerializer.SerializationBinder"/> used by the serializer when resolving type names.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.SerializationBinder">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.ISerializationBinder"/> used by the serializer when resolving type names.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.TraceWriter">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.ITraceWriter"/> used by the serializer when writing trace messages.
+ </summary>
+ <value>The trace writer.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.EqualityComparer">
+ <summary>
+ Gets or sets the equality comparer used by the serializer when comparing references.
+ </summary>
+ <value>The equality comparer.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling">
+ <summary>
+ Gets or sets how type name writing and reading is handled by the serializer.
+ </summary>
+ <remarks>
+ <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom <see cref="P:Newtonsoft.Json.JsonSerializer.SerializationBinder"/>
+ when deserializing with a value other than <see cref="F:Newtonsoft.Json.TypeNameHandling.None"/>.
+ </remarks>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.TypeNameAssemblyFormat">
+ <summary>
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ </summary>
+ <value>The type name assembly format.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.TypeNameAssemblyFormatHandling">
+ <summary>
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ </summary>
+ <value>The type name assembly format.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.PreserveReferencesHandling">
+ <summary>
+ Gets or sets how object references are preserved by the serializer.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.ReferenceLoopHandling">
+ <summary>
+ Gets or sets how reference loops (e.g. a class referencing itself) is handled.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.MissingMemberHandling">
+ <summary>
+ Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.NullValueHandling">
+ <summary>
+ Gets or sets how null values are handled during serialization and deserialization.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.DefaultValueHandling">
+ <summary>
+ Gets or sets how default values are handled during serialization and deserialization.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.ObjectCreationHandling">
+ <summary>
+ Gets or sets how objects are created during deserialization.
+ </summary>
+ <value>The object creation handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.ConstructorHandling">
+ <summary>
+ Gets or sets how constructors are used during deserialization.
+ </summary>
+ <value>The constructor handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.MetadataPropertyHandling">
+ <summary>
+ Gets or sets how metadata properties are used during deserialization.
+ </summary>
+ <value>The metadata properties handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.Converters">
+ <summary>
+ Gets a collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization.
+ </summary>
+ <value>Collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.ContractResolver">
+ <summary>
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.Context">
+ <summary>
+ Gets or sets the <see cref="T:System.Runtime.Serialization.StreamingContext"/> used by the serializer when invoking serialization callback methods.
+ </summary>
+ <value>The context.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.Formatting">
+ <summary>
+ Indicates how JSON text output is formatted.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.DateFormatHandling">
+ <summary>
+ Gets or sets how dates are written to JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.DateTimeZoneHandling">
+ <summary>
+ Gets or sets how <see cref="T:System.DateTime"/> time zones are handled during serialization and deserialization.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.DateParseHandling">
+ <summary>
+ Gets or sets how date formatted strings, e.g. <c>"\/Date(1198908717056)\/"</c> and <c>"2012-03-21T05:40Z"</c>, are parsed when reading JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.FloatParseHandling">
+ <summary>
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.FloatFormatHandling">
+ <summary>
+ Gets or sets how special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>,
+ <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/>,
+ are written as JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.StringEscapeHandling">
+ <summary>
+ Gets or sets how strings are escaped when writing JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.DateFormatString">
+ <summary>
+ Gets or sets how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatted when writing JSON text,
+ and the expected date format when reading JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.Culture">
+ <summary>
+ Gets or sets the culture used when reading JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.MaxDepth">
+ <summary>
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializer.CheckAdditionalContent">
+ <summary>
+ Gets a value indicating whether there will be a check for additional JSON content after deserializing an object.
+ </summary>
+ <value>
+ <c>true</c> if there will be a check for additional JSON content after deserializing an object; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializer"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Create">
+ <summary>
+ Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/>.
+ </summary>
+ <returns>
+ A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Create(Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/>.
+ </summary>
+ <param name="settings">The settings to be applied to the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.</param>
+ <returns>
+ A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will not use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.CreateDefault">
+ <summary>
+ Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/>.
+ </summary>
+ <returns>
+ A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.CreateDefault(Newtonsoft.Json.JsonSerializerSettings)">
+ <summary>
+ Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/> as well as the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </summary>
+ <param name="settings">The settings to be applied to the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.</param>
+ <returns>
+ A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ The <see cref="T:Newtonsoft.Json.JsonSerializer"/> will use default settings
+ from <see cref="P:Newtonsoft.Json.JsonConvert.DefaultSettings"/> as well as the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Populate(System.IO.TextReader,System.Object)">
+ <summary>
+ Populates the JSON values onto the target object.
+ </summary>
+ <param name="reader">The <see cref="T:System.IO.TextReader"/> that contains the JSON structure to reader values from.</param>
+ <param name="target">The target object to populate values onto.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Populate(Newtonsoft.Json.JsonReader,System.Object)">
+ <summary>
+ Populates the JSON values onto the target object.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the JSON structure to reader values from.</param>
+ <param name="target">The target object to populate values onto.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Deserializes the JSON structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the JSON structure to deserialize.</param>
+ <returns>The <see cref="T:System.Object"/> being deserialized.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(System.IO.TextReader,System.Type)">
+ <summary>
+ Deserializes the JSON structure contained by the specified <see cref="T:System.IO.StringReader"/>
+ into an instance of the specified type.
+ </summary>
+ <param name="reader">The <see cref="T:System.IO.TextReader"/> containing the object.</param>
+ <param name="objectType">The <see cref="T:System.Type"/> of object being deserialized.</param>
+ <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize``1(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Deserializes the JSON structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
+ into an instance of the specified type.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param>
+ <typeparam name="T">The type of the object to deserialize.</typeparam>
+ <returns>The instance of <typeparamref name="T"/> being deserialized.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader,System.Type)">
+ <summary>
+ Deserializes the JSON structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
+ into an instance of the specified type.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param>
+ <param name="objectType">The <see cref="T:System.Type"/> of object being deserialized.</param>
+ <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object)">
+ <summary>
+ Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
+ using the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the JSON structure.</param>
+ <param name="value">The <see cref="T:System.Object"/> to serialize.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object,System.Type)">
+ <summary>
+ Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
+ using the specified <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the JSON structure.</param>
+ <param name="value">The <see cref="T:System.Object"/> to serialize.</param>
+ <param name="objectType">
+ The type of the value being serialized.
+ This parameter is used when <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> is <see cref="F:Newtonsoft.Json.TypeNameHandling.Auto"/> to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object,System.Type)">
+ <summary>
+ Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
+ using the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the JSON structure.</param>
+ <param name="value">The <see cref="T:System.Object"/> to serialize.</param>
+ <param name="objectType">
+ The type of the value being serialized.
+ This parameter is used when <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> is Auto to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object)">
+ <summary>
+ Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
+ using the specified <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the JSON structure.</param>
+ <param name="value">The <see cref="T:System.Object"/> to serialize.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonSerializerSettings">
+ <summary>
+ Specifies the settings on a <see cref="T:Newtonsoft.Json.JsonSerializer"/> object.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceLoopHandling">
+ <summary>
+ Gets or sets how reference loops (e.g. a class referencing itself) are handled.
+ </summary>
+ <value>Reference loop handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.MissingMemberHandling">
+ <summary>
+ Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+ </summary>
+ <value>Missing member handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.ObjectCreationHandling">
+ <summary>
+ Gets or sets how objects are created during deserialization.
+ </summary>
+ <value>The object creation handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.NullValueHandling">
+ <summary>
+ Gets or sets how null values are handled during serialization and deserialization.
+ </summary>
+ <value>Null value handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.DefaultValueHandling">
+ <summary>
+ Gets or sets how default values are handled during serialization and deserialization.
+ </summary>
+ <value>The default value handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.Converters">
+ <summary>
+ Gets or sets a <see cref="T:Newtonsoft.Json.JsonConverter"/> collection that will be used during serialization.
+ </summary>
+ <value>The converters.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.PreserveReferencesHandling">
+ <summary>
+ Gets or sets how object references are preserved by the serializer.
+ </summary>
+ <value>The preserve references handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.TypeNameHandling">
+ <summary>
+ Gets or sets how type name writing and reading is handled by the serializer.
+ </summary>
+ <remarks>
+ <see cref="P:Newtonsoft.Json.JsonSerializerSettings.TypeNameHandling"/> should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom <see cref="P:Newtonsoft.Json.JsonSerializerSettings.SerializationBinder"/>
+ when deserializing with a value other than <see cref="F:Newtonsoft.Json.TypeNameHandling.None"/>.
+ </remarks>
+ <value>The type name handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.MetadataPropertyHandling">
+ <summary>
+ Gets or sets how metadata properties are used during deserialization.
+ </summary>
+ <value>The metadata properties handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.TypeNameAssemblyFormat">
+ <summary>
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ </summary>
+ <value>The type name assembly format.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.TypeNameAssemblyFormatHandling">
+ <summary>
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ </summary>
+ <value>The type name assembly format.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.ConstructorHandling">
+ <summary>
+ Gets or sets how constructors are used during deserialization.
+ </summary>
+ <value>The constructor handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.ContractResolver">
+ <summary>
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+ </summary>
+ <value>The contract resolver.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.EqualityComparer">
+ <summary>
+ Gets or sets the equality comparer used by the serializer when comparing references.
+ </summary>
+ <value>The equality comparer.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceResolver">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.
+ </summary>
+ <value>The reference resolver.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceResolverProvider">
+ <summary>
+ Gets or sets a function that creates the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.
+ </summary>
+ <value>A function that creates the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.TraceWriter">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.ITraceWriter"/> used by the serializer when writing trace messages.
+ </summary>
+ <value>The trace writer.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.Binder">
+ <summary>
+ Gets or sets the <see cref="P:Newtonsoft.Json.JsonSerializerSettings.SerializationBinder"/> used by the serializer when resolving type names.
+ </summary>
+ <value>The binder.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.SerializationBinder">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.ISerializationBinder"/> used by the serializer when resolving type names.
+ </summary>
+ <value>The binder.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.Error">
+ <summary>
+ Gets or sets the error handler called during serialization and deserialization.
+ </summary>
+ <value>The error handler called during serialization and deserialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.Context">
+ <summary>
+ Gets or sets the <see cref="T:System.Runtime.Serialization.StreamingContext"/> used by the serializer when invoking serialization callback methods.
+ </summary>
+ <value>The context.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateFormatString">
+ <summary>
+ Gets or sets how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatted when writing JSON text,
+ and the expected date format when reading JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.MaxDepth">
+ <summary>
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.Formatting">
+ <summary>
+ Indicates how JSON text output is formatted.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateFormatHandling">
+ <summary>
+ Gets or sets how dates are written to JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateTimeZoneHandling">
+ <summary>
+ Gets or sets how <see cref="T:System.DateTime"/> time zones are handled during serialization and deserialization.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.DateParseHandling">
+ <summary>
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.FloatFormatHandling">
+ <summary>
+ Gets or sets how special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>,
+ <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/>,
+ are written as JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.FloatParseHandling">
+ <summary>
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.StringEscapeHandling">
+ <summary>
+ Gets or sets how strings are escaped when writing JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.Culture">
+ <summary>
+ Gets or sets the culture used when reading JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonSerializerSettings.CheckAdditionalContent">
+ <summary>
+ Gets a value indicating whether there will be a check for additional content after deserializing an object.
+ </summary>
+ <value>
+ <c>true</c> if there will be a check for additional content after deserializing an object; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonSerializerSettings.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> class.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonTextReader">
+ <summary>
+ Represents a reader that provides fast, non-cached, forward-only access to JSON text data.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns <c>true</c> if the next token was read successfully; <c>false</c> if there are no more tokens to read.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsBooleanAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsBytesAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Byte"/>[].
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Byte"/>[]. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDateTimeAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDateTimeOffsetAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDecimalAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDoubleAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsInt32Async(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsStringAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously reads the next JSON token from the source as a <see cref="T:System.String"/>.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous read. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns the <see cref="T:System.String"/>. This result will be <c>null</c> at the end of an array.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.#ctor(System.IO.TextReader)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonTextReader"/> class with the specified <see cref="T:System.IO.TextReader"/>.
+ </summary>
+ <param name="reader">The <see cref="T:System.IO.TextReader"/> containing the JSON data to read.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextReader.ArrayPool">
+ <summary>
+ Gets or sets the reader's character buffer pool.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.Read">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/>.
+ </summary>
+ <returns>
+ <c>true</c> if the next token was read successfully; <c>false</c> if there are no more tokens to read.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsInt32">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDateTime">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsString">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.String"/>.
+ </summary>
+ <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsBytes">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.Byte"/>[].
+ </summary>
+ <returns>A <see cref="T:System.Byte"/>[] or <c>null</c> if the next JSON token is null. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsBoolean">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDateTimeOffset">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDecimal">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsDouble">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:System.IO.TextReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.Close">
+ <summary>
+ Changes the reader's state to <see cref="F:Newtonsoft.Json.JsonReader.State.Closed"/>.
+ If <see cref="P:Newtonsoft.Json.JsonReader.CloseInput"/> is set to <c>true</c>, the underlying <see cref="T:System.IO.TextReader"/> is also closed.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextReader.HasLineInfo">
+ <summary>
+ Gets a value indicating whether the class can return line information.
+ </summary>
+ <returns>
+ <c>true</c> if <see cref="P:Newtonsoft.Json.JsonTextReader.LineNumber"/> and <see cref="P:Newtonsoft.Json.JsonTextReader.LinePosition"/> can be provided; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextReader.LineNumber">
+ <summary>
+ Gets the current line number.
+ </summary>
+ <value>
+ The current line number or 0 if no line information is available (for example, <see cref="M:Newtonsoft.Json.JsonTextReader.HasLineInfo"/> returns <c>false</c>).
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextReader.LinePosition">
+ <summary>
+ Gets the current line position.
+ </summary>
+ <value>
+ The current line position or 0 if no line information is available (for example, <see cref="M:Newtonsoft.Json.JsonTextReader.HasLineInfo"/> returns <c>false</c>).
+ </value>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonTextWriter">
+ <summary>
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.FlushAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueDelimiterAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the JSON value delimiter.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEndAsync(Newtonsoft.Json.JsonToken,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the specified end token.
+ </summary>
+ <param name="token">The end token to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.CloseAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously closes this writer.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.CloseOutput"/> is set to <c>true</c>, the destination is also closed.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEndAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of the current JSON object or array.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndentAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes indent characters.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndentSpaceAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes an indent space.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteRawAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes raw JSON without changing the writer's state.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteNullAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a null value.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyNameAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyNameAsync(System.String,System.Boolean,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="escape">A flag to indicate whether the text should be escaped when it is written as a JSON property name.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartArrayAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the beginning of a JSON array.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartObjectAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the beginning of a JSON object.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartConstructorAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the start of a constructor with the given name.
+ </summary>
+ <param name="name">The name of the constructor.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteUndefinedAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes an undefined value.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteWhitespaceAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the given white space.
+ </summary>
+ <param name="ws">The string of white space characters.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Boolean,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Boolean},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Byte,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Byte},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Byte[],System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Byte"/>[] value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/>[] value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Char,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Char"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Char},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Char"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.DateTime,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.DateTime},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.DateTimeOffset,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.DateTimeOffset},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Decimal,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Decimal},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Double,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Double"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Double},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Single,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Single"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Single},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Guid,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Guid"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Guid},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Int32,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Int32},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Int64,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Int64},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Object,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Object"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Object"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.SByte,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.SByte},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Int16,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.Int16},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.String"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.String"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.TimeSpan,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.TimeSpan},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.UInt32,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.UInt32},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.UInt64,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.UInt64},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Uri,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Uri"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Uri"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.UInt16,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueAsync(System.Nullable{System.UInt16},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteCommentAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a comment <c>/*...*/</c> containing the specified text.
+ </summary>
+ <param name="text">Text to place inside the comment.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEndArrayAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of an array.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEndConstructorAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of a constructor.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEndObjectAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of a JSON object.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteRawValueAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes raw JSON where a value is expected and updates the writer's state.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.</remarks>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextWriter.ArrayPool">
+ <summary>
+ Gets or sets the writer's character array pool.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextWriter.Indentation">
+ <summary>
+ Gets or sets how many <see cref="P:Newtonsoft.Json.JsonTextWriter.IndentChar"/>s to write for each level in the hierarchy when <see cref="P:Newtonsoft.Json.JsonWriter.Formatting"/> is set to <see cref="F:Newtonsoft.Json.Formatting.Indented"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextWriter.QuoteChar">
+ <summary>
+ Gets or sets which character to use to quote attribute values.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextWriter.IndentChar">
+ <summary>
+ Gets or sets which character to use for indenting when <see cref="P:Newtonsoft.Json.JsonWriter.Formatting"/> is set to <see cref="F:Newtonsoft.Json.Formatting.Indented"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonTextWriter.QuoteName">
+ <summary>
+ Gets or sets a value indicating whether object names will be surrounded with quotes.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.#ctor(System.IO.TextWriter)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonTextWriter"/> class using the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="textWriter">The <see cref="T:System.IO.TextWriter"/> to write to.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.Flush">
+ <summary>
+ Flushes whatever is in the buffer to the underlying <see cref="T:System.IO.TextWriter"/> and also flushes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.Close">
+ <summary>
+ Closes this writer.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.CloseOutput"/> is set to <c>true</c>, the underlying <see cref="T:System.IO.TextWriter"/> is also closed.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.AutoCompleteOnClose"/> is set to <c>true</c>, the JSON is auto-completed.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartObject">
+ <summary>
+ Writes the beginning of a JSON object.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartArray">
+ <summary>
+ Writes the beginning of a JSON array.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartConstructor(System.String)">
+ <summary>
+ Writes the start of a constructor with the given name.
+ </summary>
+ <param name="name">The name of the constructor.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
+ <summary>
+ Writes the specified end token.
+ </summary>
+ <param name="token">The end token to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyName(System.String)">
+ <summary>
+ Writes the property name of a name/value pair on a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyName(System.String,System.Boolean)">
+ <summary>
+ Writes the property name of a name/value pair on a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="escape">A flag to indicate whether the text should be escaped when it is written as a JSON property name.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndent">
+ <summary>
+ Writes indent characters.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueDelimiter">
+ <summary>
+ Writes the JSON value delimiter.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndentSpace">
+ <summary>
+ Writes an indent space.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Object)">
+ <summary>
+ Writes a <see cref="T:System.Object"/> value.
+ An error will raised if the value cannot be written as a single JSON token.
+ </summary>
+ <param name="value">The <see cref="T:System.Object"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteNull">
+ <summary>
+ Writes a null value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteUndefined">
+ <summary>
+ Writes an undefined value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteRaw(System.String)">
+ <summary>
+ Writes raw JSON.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.String)">
+ <summary>
+ Writes a <see cref="T:System.String"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.String"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int32)">
+ <summary>
+ Writes a <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt32)">
+ <summary>
+ Writes a <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int64)">
+ <summary>
+ Writes a <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt64)">
+ <summary>
+ Writes a <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Single)">
+ <summary>
+ Writes a <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Single"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Nullable{System.Single})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Double)">
+ <summary>
+ Writes a <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Double"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Nullable{System.Double})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Boolean)">
+ <summary>
+ Writes a <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int16)">
+ <summary>
+ Writes a <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt16)">
+ <summary>
+ Writes a <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Char)">
+ <summary>
+ Writes a <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Char"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Byte)">
+ <summary>
+ Writes a <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.SByte)">
+ <summary>
+ Writes a <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Decimal)">
+ <summary>
+ Writes a <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.DateTime)">
+ <summary>
+ Writes a <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Byte[])">
+ <summary>
+ Writes a <see cref="T:System.Byte"/>[] value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/>[] value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.DateTimeOffset)">
+ <summary>
+ Writes a <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Guid)">
+ <summary>
+ Writes a <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Guid"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.TimeSpan)">
+ <summary>
+ Writes a <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Uri)">
+ <summary>
+ Writes a <see cref="T:System.Uri"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Uri"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteComment(System.String)">
+ <summary>
+ Writes a comment <c>/*...*/</c> containing the specified text.
+ </summary>
+ <param name="text">Text to place inside the comment.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonTextWriter.WriteWhitespace(System.String)">
+ <summary>
+ Writes the given white space.
+ </summary>
+ <param name="ws">The string of white space characters.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonToken">
+ <summary>
+ Specifies the type of JSON token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.None">
+ <summary>
+ This is returned by the <see cref="T:Newtonsoft.Json.JsonReader"/> if a read method has not been called.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.StartObject">
+ <summary>
+ An object start token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.StartArray">
+ <summary>
+ An array start token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.StartConstructor">
+ <summary>
+ A constructor start token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.PropertyName">
+ <summary>
+ An object property name.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Comment">
+ <summary>
+ A comment.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Raw">
+ <summary>
+ Raw JSON.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Integer">
+ <summary>
+ An integer.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Float">
+ <summary>
+ A float.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.String">
+ <summary>
+ A string.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Boolean">
+ <summary>
+ A boolean.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Null">
+ <summary>
+ A null token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Undefined">
+ <summary>
+ An undefined token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.EndObject">
+ <summary>
+ An object end token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.EndArray">
+ <summary>
+ An array end token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.EndConstructor">
+ <summary>
+ A constructor end token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Date">
+ <summary>
+ A Date.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.JsonToken.Bytes">
+ <summary>
+ Byte data.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonValidatingReader">
+ <summary>
+ <para>
+ Represents a reader that provides <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> validation.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="E:Newtonsoft.Json.JsonValidatingReader.ValidationEventHandler">
+ <summary>
+ Sets an event handler for receiving schema validation errors.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.Value">
+ <summary>
+ Gets the text value of the current JSON token.
+ </summary>
+ <value></value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.Depth">
+ <summary>
+ Gets the depth of the current token in the JSON document.
+ </summary>
+ <value>The depth of the current token in the JSON document.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.Path">
+ <summary>
+ Gets the path of the current JSON token.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.QuoteChar">
+ <summary>
+ Gets the quotation mark character used to enclose the value of a string.
+ </summary>
+ <value></value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.TokenType">
+ <summary>
+ Gets the type of the current JSON token.
+ </summary>
+ <value></value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.ValueType">
+ <summary>
+ Gets the .NET type for the current JSON token.
+ </summary>
+ <value></value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.#ctor(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonValidatingReader"/> class that
+ validates the content returned from the given <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from while validating.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.Schema">
+ <summary>
+ Gets or sets the schema.
+ </summary>
+ <value>The schema.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonValidatingReader.Reader">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.JsonReader"/> used to construct this <see cref="T:Newtonsoft.Json.JsonValidatingReader"/>.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.JsonReader"/> specified in the constructor.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.Close">
+ <summary>
+ Changes the reader's state to <see cref="F:Newtonsoft.Json.JsonReader.State.Closed"/>.
+ If <see cref="P:Newtonsoft.Json.JsonReader.CloseInput"/> is set to <c>true</c>, the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> is also closed.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsInt32">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsBytes">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.Byte"/>[].
+ </summary>
+ <returns>
+ A <see cref="T:System.Byte"/>[] or <c>null</c> if the next JSON token is null.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsDecimal">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsDouble">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsBoolean">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsString">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.String"/>.
+ </summary>
+ <returns>A <see cref="T:System.String"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsDateTime">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>. This method will return <c>null</c> at the end of an array.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsDateTimeOffset">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/> as a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>.
+ </summary>
+ <returns>A <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonValidatingReader.Read">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <returns>
+ <c>true</c> if the next token was read successfully; <c>false</c> if there are no more tokens to read.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonWriter">
+ <summary>
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.CloseAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously closes this writer.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.CloseOutput"/> is set to <c>true</c>, the destination is also closed.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.FlushAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndAsync(Newtonsoft.Json.JsonToken,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the specified end token.
+ </summary>
+ <param name="token">The end token to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteIndentAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes indent characters.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueDelimiterAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the JSON value delimiter.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteIndentSpaceAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes an indent space.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteRawAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes raw JSON without changing the writer's state.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of the current JSON object or array.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndArrayAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of an array.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndConstructorAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of a constructor.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndObjectAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the end of a JSON object.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteNullAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a null value.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyNameAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyNameAsync(System.String,System.Boolean,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="escape">A flag to indicate whether the text should be escaped when it is written as a JSON property name.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteStartArrayAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the beginning of a JSON array.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteCommentAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a comment <c>/*...*/</c> containing the specified text.
+ </summary>
+ <param name="text">Text to place inside the comment.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteRawValueAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes raw JSON where a value is expected and updates the writer's state.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteStartConstructorAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the start of a constructor with the given name.
+ </summary>
+ <param name="name">The name of the constructor.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteStartObjectAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the beginning of a JSON object.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteTokenAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the current <see cref="T:Newtonsoft.Json.JsonReader"/> token.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read the token from.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteTokenAsync(Newtonsoft.Json.JsonReader,System.Boolean,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the current <see cref="T:Newtonsoft.Json.JsonReader"/> token.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read the token from.</param>
+ <param name="writeChildren">A flag indicating whether the current token's children should be written.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteTokenAsync(Newtonsoft.Json.JsonToken,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the <see cref="T:Newtonsoft.Json.JsonToken"/> token and its value.
+ </summary>
+ <param name="token">The <see cref="T:Newtonsoft.Json.JsonToken"/> to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteTokenAsync(Newtonsoft.Json.JsonToken,System.Object,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the <see cref="T:Newtonsoft.Json.JsonToken"/> token and its value.
+ </summary>
+ <param name="token">The <see cref="T:Newtonsoft.Json.JsonToken"/> to write.</param>
+ <param name="value">
+ The value to write.
+ A value is only required for tokens that have an associated value, e.g. the <see cref="T:System.String"/> property name for <see cref="F:Newtonsoft.Json.JsonToken.PropertyName"/>.
+ <c>null</c> can be passed to the method for tokens that don't have a value, e.g. <see cref="F:Newtonsoft.Json.JsonToken.StartObject"/>.
+ </param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Boolean,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Boolean},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Byte,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Byte},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Byte[],System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Byte"/>[] value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/>[] value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Char,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Char"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Char},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Char"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.DateTime,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.DateTime},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.DateTimeOffset,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.DateTimeOffset},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Decimal,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Decimal},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Double,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Double"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Double},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Single,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Single"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Single},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Guid,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Guid"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Guid},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Int32,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Int32},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Int64,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Int64},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Object,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Object"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Object"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.SByte,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.SByte},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Int16,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.Int16},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.String"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.String"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.TimeSpan,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.TimeSpan},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.UInt32,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.UInt32},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.UInt64,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.UInt64},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Uri,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Uri"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Uri"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.UInt16,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueAsync(System.Nullable{System.UInt16},System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/> value to write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteUndefinedAsync(System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes an undefined value.
+ </summary>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteWhitespaceAsync(System.String,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously writes the given white space.
+ </summary>
+ <param name="ws">The string of white space characters.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.SetWriteStateAsync(Newtonsoft.Json.JsonToken,System.Object,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously ets the state of the <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="token">The <see cref="T:Newtonsoft.Json.JsonToken"/> being written.</param>
+ <param name="value">The value being written.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation.</returns>
+ <remarks>The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asychronousity.</remarks>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.CloseOutput">
+ <summary>
+ Gets or sets a value indicating whether the destination should be closed when this writer is closed.
+ </summary>
+ <value>
+ <c>true</c> to close the destination when this writer is closed; otherwise <c>false</c>. The default is <c>true</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.AutoCompleteOnClose">
+ <summary>
+ Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed.
+ </summary>
+ <value>
+ <c>true</c> to auto-complete the JSON when this writer is closed; otherwise <c>false</c>. The default is <c>true</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.Top">
+ <summary>
+ Gets the top.
+ </summary>
+ <value>The top.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.WriteState">
+ <summary>
+ Gets the state of the writer.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.Path">
+ <summary>
+ Gets the path of the writer.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.Formatting">
+ <summary>
+ Gets or sets a value indicating how JSON text output should be formatted.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.DateFormatHandling">
+ <summary>
+ Gets or sets how dates are written to JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.DateTimeZoneHandling">
+ <summary>
+ Gets or sets how <see cref="T:System.DateTime"/> time zones are handled when writing JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.StringEscapeHandling">
+ <summary>
+ Gets or sets how strings are escaped when writing JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.FloatFormatHandling">
+ <summary>
+ Gets or sets how special floating point numbers, e.g. <see cref="F:System.Double.NaN"/>,
+ <see cref="F:System.Double.PositiveInfinity"/> and <see cref="F:System.Double.NegativeInfinity"/>,
+ are written to JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.DateFormatString">
+ <summary>
+ Gets or sets how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatted when writing JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriter.Culture">
+ <summary>
+ Gets or sets the culture used when writing JSON. Defaults to <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriter"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.Flush">
+ <summary>
+ Flushes whatever is in the buffer to the destination and also flushes the destination.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.Close">
+ <summary>
+ Closes this writer.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.CloseOutput"/> is set to <c>true</c>, the destination is also closed.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.AutoCompleteOnClose"/> is set to <c>true</c>, the JSON is auto-completed.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteStartObject">
+ <summary>
+ Writes the beginning of a JSON object.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndObject">
+ <summary>
+ Writes the end of a JSON object.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteStartArray">
+ <summary>
+ Writes the beginning of a JSON array.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndArray">
+ <summary>
+ Writes the end of an array.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteStartConstructor(System.String)">
+ <summary>
+ Writes the start of a constructor with the given name.
+ </summary>
+ <param name="name">The name of the constructor.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEndConstructor">
+ <summary>
+ Writes the end constructor.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyName(System.String)">
+ <summary>
+ Writes the property name of a name/value pair of a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyName(System.String,System.Boolean)">
+ <summary>
+ Writes the property name of a name/value pair of a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="escape">A flag to indicate whether the text should be escaped when it is written as a JSON property name.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEnd">
+ <summary>
+ Writes the end of the current JSON object or array.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Writes the current <see cref="T:Newtonsoft.Json.JsonReader"/> token and its children.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read the token from.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonReader,System.Boolean)">
+ <summary>
+ Writes the current <see cref="T:Newtonsoft.Json.JsonReader"/> token.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read the token from.</param>
+ <param name="writeChildren">A flag indicating whether the current token's children should be written.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonToken,System.Object)">
+ <summary>
+ Writes the <see cref="T:Newtonsoft.Json.JsonToken"/> token and its value.
+ </summary>
+ <param name="token">The <see cref="T:Newtonsoft.Json.JsonToken"/> to write.</param>
+ <param name="value">
+ The value to write.
+ A value is only required for tokens that have an associated value, e.g. the <see cref="T:System.String"/> property name for <see cref="F:Newtonsoft.Json.JsonToken.PropertyName"/>.
+ <c>null</c> can be passed to the method for tokens that don't have a value, e.g. <see cref="F:Newtonsoft.Json.JsonToken.StartObject"/>.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonToken)">
+ <summary>
+ Writes the <see cref="T:Newtonsoft.Json.JsonToken"/> token.
+ </summary>
+ <param name="token">The <see cref="T:Newtonsoft.Json.JsonToken"/> to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
+ <summary>
+ Writes the specified end token.
+ </summary>
+ <param name="token">The end token to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteIndent">
+ <summary>
+ Writes indent characters.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValueDelimiter">
+ <summary>
+ Writes the JSON value delimiter.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteIndentSpace">
+ <summary>
+ Writes an indent space.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteNull">
+ <summary>
+ Writes a null value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteUndefined">
+ <summary>
+ Writes an undefined value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteRaw(System.String)">
+ <summary>
+ Writes raw JSON without changing the writer's state.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteRawValue(System.String)">
+ <summary>
+ Writes raw JSON where a value is expected and updates the writer's state.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.String)">
+ <summary>
+ Writes a <see cref="T:System.String"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.String"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int32)">
+ <summary>
+ Writes a <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt32)">
+ <summary>
+ Writes a <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int64)">
+ <summary>
+ Writes a <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt64)">
+ <summary>
+ Writes a <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Single)">
+ <summary>
+ Writes a <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Single"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Double)">
+ <summary>
+ Writes a <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Double"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Boolean)">
+ <summary>
+ Writes a <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int16)">
+ <summary>
+ Writes a <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt16)">
+ <summary>
+ Writes a <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Char)">
+ <summary>
+ Writes a <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Char"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Byte)">
+ <summary>
+ Writes a <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.SByte)">
+ <summary>
+ Writes a <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Decimal)">
+ <summary>
+ Writes a <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.DateTime)">
+ <summary>
+ Writes a <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.DateTimeOffset)">
+ <summary>
+ Writes a <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Guid)">
+ <summary>
+ Writes a <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Guid"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.TimeSpan)">
+ <summary>
+ Writes a <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int32})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt32})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int64})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt64})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Single})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Double})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Boolean})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int16})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt16})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Char})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Char"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Byte})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.SByte})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Decimal})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.DateTime})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.DateTimeOffset})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Guid})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.TimeSpan})">
+ <summary>
+ Writes a <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Byte[])">
+ <summary>
+ Writes a <see cref="T:System.Byte"/>[] value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/>[] value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Uri)">
+ <summary>
+ Writes a <see cref="T:System.Uri"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Uri"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Object)">
+ <summary>
+ Writes a <see cref="T:System.Object"/> value.
+ An error will raised if the value cannot be written as a single JSON token.
+ </summary>
+ <param name="value">The <see cref="T:System.Object"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteComment(System.String)">
+ <summary>
+ Writes a comment <c>/*...*/</c> containing the specified text.
+ </summary>
+ <param name="text">Text to place inside the comment.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.WriteWhitespace(System.String)">
+ <summary>
+ Writes the given white space.
+ </summary>
+ <param name="ws">The string of white space characters.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.Dispose(System.Boolean)">
+ <summary>
+ Releases unmanaged and - optionally - managed resources.
+ </summary>
+ <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriter.SetWriteState(Newtonsoft.Json.JsonToken,System.Object)">
+ <summary>
+ Sets the state of the <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="token">The <see cref="T:Newtonsoft.Json.JsonToken"/> being written.</param>
+ <param name="value">The value being written.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.JsonWriterException">
+ <summary>
+ The exception thrown when an error occurs while writing JSON text.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.JsonWriterException.Path">
+ <summary>
+ Gets the path to the JSON where the error occurred.
+ </summary>
+ <value>The path to the JSON where the error occurred.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriterException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class
+ with a specified error message.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ <param name="innerException">The exception that is the cause of the current exception, or <c>null</c> if no inner exception is specified.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String,System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class
+ with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ <param name="path">The path to the JSON where the error occurred.</param>
+ <param name="innerException">The exception that is the cause of the current exception, or <c>null</c> if no inner exception is specified.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.CommentHandling">
+ <summary>
+ Specifies how JSON comments are handled when loading JSON.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.CommentHandling.Ignore">
+ <summary>
+ Ignore comments.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.CommentHandling.Load">
+ <summary>
+ Load comments as a <see cref="T:Newtonsoft.Json.Linq.JValue"/> with type <see cref="F:Newtonsoft.Json.Linq.JTokenType.Comment"/>.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.LineInfoHandling">
+ <summary>
+ Specifies how line information is handled when loading JSON.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.LineInfoHandling.Ignore">
+ <summary>
+ Ignore line information.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.LineInfoHandling.Load">
+ <summary>
+ Load line information.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.Extensions">
+ <summary>
+ Contains the LINQ to JSON extension methods.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Ancestors``1(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Returns a collection of tokens that contains the ancestors of every token in the source collection.
+ </summary>
+ <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the ancestors of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.AncestorsAndSelf``1(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection.
+ </summary>
+ <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains every token in the source collection, the ancestors of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Descendants``1(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Returns a collection of tokens that contains the descendants of every token in the source collection.
+ </summary>
+ <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JContainer"/>.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the descendants of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.DescendantsAndSelf``1(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection.
+ </summary>
+ <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JContainer"/>.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains every token in the source collection, and the descendants of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Properties(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JObject})">
+ <summary>
+ Returns a collection of child properties of every object in the source collection.
+ </summary>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the properties of every object in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Values(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken},System.Object)">
+ <summary>
+ Returns a collection of child values of every object in the source collection with the given key.
+ </summary>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <param name="key">The token key.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every token in the source collection with the given key.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Values(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
+ <summary>
+ Returns a collection of child values of every object in the source collection.
+ </summary>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Values``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken},System.Object)">
+ <summary>
+ Returns a collection of converted child values of every object in the source collection with the given key.
+ </summary>
+ <typeparam name="U">The type to convert the values to.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <param name="key">The token key.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every token in the source collection with the given key.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Values``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
+ <summary>
+ Returns a collection of converted child values of every object in the source collection.
+ </summary>
+ <typeparam name="U">The type to convert the values to.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Value``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
+ <summary>
+ Converts the value.
+ </summary>
+ <typeparam name="U">The type to convert the value to.</typeparam>
+ <param name="value">A <see cref="T:Newtonsoft.Json.Linq.JToken"/> cast as a <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <returns>A converted value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Value``2(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Converts the value.
+ </summary>
+ <typeparam name="T">The source collection type.</typeparam>
+ <typeparam name="U">The type to convert the value to.</typeparam>
+ <param name="value">A <see cref="T:Newtonsoft.Json.Linq.JToken"/> cast as a <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <returns>A converted value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Children``1(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Returns a collection of child tokens of every array in the source collection.
+ </summary>
+ <typeparam name="T">The source collection type.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.Children``2(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Returns a collection of converted child tokens of every array in the source collection.
+ </summary>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <typeparam name="U">The type to convert the values to.</typeparam>
+ <typeparam name="T">The source collection type.</typeparam>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every token in the source collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.AsJEnumerable(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
+ <summary>
+ Returns the input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.
+ </summary>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>The input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.Extensions.AsJEnumerable``1(System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Returns the input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.
+ </summary>
+ <typeparam name="T">The source collection type.</typeparam>
+ <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
+ <returns>The input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.IJEnumerable`1">
+ <summary>
+ Represents a collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects.
+ </summary>
+ <typeparam name="T">The type of token.</typeparam>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.IJEnumerable`1.Item(System.Object)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
+ </summary>
+ <value></value>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JArray">
+ <summary>
+ Represents a JSON array.
+ </summary>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParseArray" title="Parsing a JSON Array from Text" />
+ </example>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.WriteToAsync(Newtonsoft.Json.JsonWriter,System.Threading.CancellationToken,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.LoadAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous load. The <see cref="P:System.Threading.Tasks.Task`1.Result"/> property contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.LoadAsync(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous load. The <see cref="P:System.Threading.Tasks.Task`1.Result"/> property contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JArray.ChildrenTokens">
+ <summary>
+ Gets the container's children tokens.
+ </summary>
+ <value>The container's children tokens.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JArray.Type">
+ <summary>
+ Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <value>The type.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(Newtonsoft.Json.Linq.JArray)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class from another <see cref="T:Newtonsoft.Json.Linq.JArray"/> object.
+ </summary>
+ <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JArray"/> object to copy from.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(System.Object[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class with the specified content.
+ </summary>
+ <param name="content">The contents of the array.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class with the specified content.
+ </summary>
+ <param name="content">The contents of the array.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Load(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Loads an <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Load(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Loads an <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Parse(System.String)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a string that contains JSON.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> populated from the string that contains JSON.</returns>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParseArray" title="Parsing a JSON Array from Text" />
+ </example>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Parse(System.String,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a string that contains JSON.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> populated from the string that contains JSON.</returns>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParseArray" title="Parsing a JSON Array from Text" />
+ </example>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.FromObject(System.Object)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from an object.
+ </summary>
+ <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> with the values of the specified object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from an object.
+ </summary>
+ <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used to read the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> with the values of the specified object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JArray.Item(System.Object)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JArray.Item(System.Int32)">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> at the specified index.
+ </summary>
+ <value></value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.IndexOf(Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Determines the index of a specific item in the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ </summary>
+ <param name="item">The object to locate in the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <returns>
+ The index of <paramref name="item"/> if found in the list; otherwise, -1.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Insert(System.Int32,Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Inserts an item to the <see cref="T:Newtonsoft.Json.Linq.JArray"/> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The object to insert into the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <paramref name="index"/> is not a valid index in the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ </exception>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.RemoveAt(System.Int32)">
+ <summary>
+ Removes the <see cref="T:Newtonsoft.Json.Linq.JArray"/> item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <paramref name="index"/> is not a valid index in the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ </exception>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.GetEnumerator">
+ <summary>
+ Returns an enumerator that iterates through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:System.Collections.Generic.IEnumerator`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that can be used to iterate through the collection.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Add(Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Adds an item to the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ </summary>
+ <param name="item">The object to add to the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Clear">
+ <summary>
+ Removes all items from the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Contains(Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Determines whether the <see cref="T:Newtonsoft.Json.Linq.JArray"/> contains a specific value.
+ </summary>
+ <param name="item">The object to locate in the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <returns>
+ <c>true</c> if <paramref name="item"/> is found in the <see cref="T:Newtonsoft.Json.Linq.JArray"/>; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.CopyTo(Newtonsoft.Json.Linq.JToken[],System.Int32)">
+ <summary>
+ Copies the elements of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> to an array, starting at a particular array index.
+ </summary>
+ <param name="array">The array.</param>
+ <param name="arrayIndex">Index of the array.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JArray.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the <see cref="T:Newtonsoft.Json.Linq.JArray"/> is read-only.
+ </summary>
+ <returns><c>true</c> if the <see cref="T:Newtonsoft.Json.Linq.JArray"/> is read-only; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JArray.Remove(Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Removes the first occurrence of a specific object from the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ </summary>
+ <param name="item">The object to remove from the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
+ <returns>
+ <c>true</c> if <paramref name="item"/> was successfully removed from the <see cref="T:Newtonsoft.Json.Linq.JArray"/>; otherwise, <c>false</c>. This method also returns <c>false</c> if <paramref name="item"/> is not found in the original <see cref="T:Newtonsoft.Json.Linq.JArray"/>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JConstructor">
+ <summary>
+ Represents a JSON constructor.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.WriteToAsync(Newtonsoft.Json.JsonWriter,System.Threading.CancellationToken,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.LoadAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/>.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous load. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.LoadAsync(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous load. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JConstructor.ChildrenTokens">
+ <summary>
+ Gets the container's children tokens.
+ </summary>
+ <value>The container's children tokens.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JConstructor.Name">
+ <summary>
+ Gets or sets the name of this constructor.
+ </summary>
+ <value>The constructor name.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JConstructor.Type">
+ <summary>
+ Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <value>The type.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(Newtonsoft.Json.Linq.JConstructor)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class from another <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> object.
+ </summary>
+ <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> object to copy from.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String,System.Object[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name and content.
+ </summary>
+ <param name="name">The constructor name.</param>
+ <param name="content">The contents of the constructor.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String,System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name and content.
+ </summary>
+ <param name="name">The constructor name.</param>
+ <param name="content">The contents of the constructor.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name.
+ </summary>
+ <param name="name">The constructor name.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JConstructor.Item(System.Object)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.Load(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Loads a <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/>.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JConstructor.Load(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Loads a <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JContainer">
+ <summary>
+ Represents a token that can contain other tokens.
+ </summary>
+ </member>
+ <member name="E:Newtonsoft.Json.Linq.JContainer.ListChanged">
+ <summary>
+ Occurs when the list changes or an item in the list changes.
+ </summary>
+ </member>
+ <member name="E:Newtonsoft.Json.Linq.JContainer.AddingNew">
+ <summary>
+ Occurs before an item is added to the collection.
+ </summary>
+ </member>
+ <member name="E:Newtonsoft.Json.Linq.JContainer.CollectionChanged">
+ <summary>
+ Occurs when the items list of the collection has changed, or the collection is reset.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JContainer.ChildrenTokens">
+ <summary>
+ Gets the container's children tokens.
+ </summary>
+ <value>The container's children tokens.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.OnAddingNew(System.ComponentModel.AddingNewEventArgs)">
+ <summary>
+ Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.AddingNew"/> event.
+ </summary>
+ <param name="e">The <see cref="T:System.ComponentModel.AddingNewEventArgs"/> instance containing the event data.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.OnListChanged(System.ComponentModel.ListChangedEventArgs)">
+ <summary>
+ Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.ListChanged"/> event.
+ </summary>
+ <param name="e">The <see cref="T:System.ComponentModel.ListChangedEventArgs"/> instance containing the event data.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs)">
+ <summary>
+ Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.CollectionChanged"/> event.
+ </summary>
+ <param name="e">The <see cref="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs"/> instance containing the event data.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JContainer.HasValues">
+ <summary>
+ Gets a value indicating whether this token has child tokens.
+ </summary>
+ <value>
+ <c>true</c> if this token has child values; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JContainer.First">
+ <summary>
+ Get the first child token of this token.
+ </summary>
+ <value>
+ A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the first child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JContainer.Last">
+ <summary>
+ Get the last child token of this token.
+ </summary>
+ <value>
+ A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the last child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.Children">
+ <summary>
+ Returns a collection of the child tokens of this token, in document order.
+ </summary>
+ <returns>
+ An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.Values``1">
+ <summary>
+ Returns a collection of the child values of this token, in document order.
+ </summary>
+ <typeparam name="T">The type to convert the values to.</typeparam>
+ <returns>
+ A <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the child values of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.Descendants">
+ <summary>
+ Returns a collection of the descendant tokens for this token in document order.
+ </summary>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the descendant tokens of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.DescendantsAndSelf">
+ <summary>
+ Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order.
+ </summary>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing this token, and all the descendant tokens of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.Add(System.Object)">
+ <summary>
+ Adds the specified content as children of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="content">The content to be added.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.AddFirst(System.Object)">
+ <summary>
+ Adds the specified content as the first children of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="content">The content to be added.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.CreateWriter">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.JsonWriter"/> that can be used to add tokens to the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <returns>A <see cref="T:Newtonsoft.Json.JsonWriter"/> that is ready to have content written to it.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.ReplaceAll(System.Object)">
+ <summary>
+ Replaces the child nodes of this token with the specified content.
+ </summary>
+ <param name="content">The content.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.RemoveAll">
+ <summary>
+ Removes the child nodes from this token.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.Merge(System.Object)">
+ <summary>
+ Merge the specified content into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="content">The content to be merged.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JContainer.Merge(System.Object,Newtonsoft.Json.Linq.JsonMergeSettings)">
+ <summary>
+ Merge the specified content into this <see cref="T:Newtonsoft.Json.Linq.JToken"/> using <see cref="T:Newtonsoft.Json.Linq.JsonMergeSettings"/>.
+ </summary>
+ <param name="content">The content to be merged.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonMergeSettings"/> used to merge the content.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JContainer.Count">
+ <summary>
+ Gets the count of child JSON tokens.
+ </summary>
+ <value>The count of child JSON tokens.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JEnumerable`1">
+ <summary>
+ Represents a collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects.
+ </summary>
+ <typeparam name="T">The type of token.</typeparam>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JEnumerable`1.Empty">
+ <summary>
+ An empty collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> struct.
+ </summary>
+ <param name="enumerable">The enumerable.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.GetEnumerator">
+ <summary>
+ Returns an enumerator that can be used to iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JEnumerable`1.Item(System.Object)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
+ </summary>
+ <value></value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.Equals(Newtonsoft.Json.Linq.JEnumerable{`0})">
+ <summary>
+ Determines whether the specified <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> is equal to this instance.
+ </summary>
+ <param name="other">The <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> to compare with this instance.</param>
+ <returns>
+ <c>true</c> if the specified <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> is equal to this instance; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.Equals(System.Object)">
+ <summary>
+ Determines whether the specified <see cref="T:System.Object"/> is equal to this instance.
+ </summary>
+ <param name="obj">The <see cref="T:System.Object"/> to compare with this instance.</param>
+ <returns>
+ <c>true</c> if the specified <see cref="T:System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.GetHashCode">
+ <summary>
+ Returns a hash code for this instance.
+ </summary>
+ <returns>
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JObject">
+ <summary>
+ Represents a JSON object.
+ </summary>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParse" title="Parsing a JSON Object from Text" />
+ </example>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.WriteToAsync(Newtonsoft.Json.JsonWriter,System.Threading.CancellationToken,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.LoadAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous load. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.LoadAsync(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous load. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JObject.ChildrenTokens">
+ <summary>
+ Gets the container's children tokens.
+ </summary>
+ <value>The container's children tokens.</value>
+ </member>
+ <member name="E:Newtonsoft.Json.Linq.JObject.PropertyChanged">
+ <summary>
+ Occurs when a property value changes.
+ </summary>
+ </member>
+ <member name="E:Newtonsoft.Json.Linq.JObject.PropertyChanging">
+ <summary>
+ Occurs when a property value is changing.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(Newtonsoft.Json.Linq.JObject)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class from another <see cref="T:Newtonsoft.Json.Linq.JObject"/> object.
+ </summary>
+ <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JObject"/> object to copy from.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(System.Object[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class with the specified content.
+ </summary>
+ <param name="content">The contents of the object.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class with the specified content.
+ </summary>
+ <param name="content">The contents of the object.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JObject.Type">
+ <summary>
+ Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <value>The type.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Properties">
+ <summary>
+ Gets an <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JProperty"/> of this object's properties.
+ </summary>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JProperty"/> of this object's properties.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Property(System.String)">
+ <summary>
+ Gets a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> the specified name.
+ </summary>
+ <param name="name">The property name.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> with the specified name or <c>null</c>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.PropertyValues">
+ <summary>
+ Gets a <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this object's property values.
+ </summary>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this object's property values.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JObject.Item(System.Object)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JObject.Item(System.String)">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.
+ </summary>
+ <value></value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Load(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Loads a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ <exception cref="T:Newtonsoft.Json.JsonReaderException">
+ <paramref name="reader"/> is not valid JSON.
+ </exception>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Load(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Loads a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ <exception cref="T:Newtonsoft.Json.JsonReaderException">
+ <paramref name="reader"/> is not valid JSON.
+ </exception>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Parse(System.String)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a string that contains JSON.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> populated from the string that contains JSON.</returns>
+ <exception cref="T:Newtonsoft.Json.JsonReaderException">
+ <paramref name="json"/> is not valid JSON.
+ </exception>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParse" title="Parsing a JSON Object from Text" />
+ </example>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Parse(System.String,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a string that contains JSON.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> populated from the string that contains JSON.</returns>
+ <exception cref="T:Newtonsoft.Json.JsonReaderException">
+ <paramref name="json"/> is not valid JSON.
+ </exception>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\LinqToJsonTests.cs" region="LinqToJsonCreateParse" title="Parsing a JSON Object from Text" />
+ </example>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.FromObject(System.Object)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from an object.
+ </summary>
+ <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> with the values of the specified object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from an object.
+ </summary>
+ <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
+ <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used to read the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> with the values of the specified object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.GetValue(System.String)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.GetValue(System.String,System.StringComparison)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the <see cref="T:System.StringComparison"/> will be used to match a property.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <param name="comparison">One of the enumeration values that specifies how the strings will be compared.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.TryGetValue(System.String,System.StringComparison,Newtonsoft.Json.Linq.JToken@)">
+ <summary>
+ Tries to get the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the <see cref="T:System.StringComparison"/> will be used to match a property.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <param name="value">The value.</param>
+ <param name="comparison">One of the enumeration values that specifies how the strings will be compared.</param>
+ <returns><c>true</c> if a value was successfully retrieved; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Add(System.String,Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Adds the specified property name.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.Remove(System.String)">
+ <summary>
+ Removes the property with the specified name.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <returns><c>true</c> if item was successfully removed; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.TryGetValue(System.String,Newtonsoft.Json.Linq.JToken@)">
+ <summary>
+ Tries to get the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <param name="value">The value.</param>
+ <returns><c>true</c> if a value was successfully retrieved; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.GetEnumerator">
+ <summary>
+ Returns an enumerator that can be used to iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.OnPropertyChanged(System.String)">
+ <summary>
+ Raises the <see cref="E:Newtonsoft.Json.Linq.JObject.PropertyChanged"/> event with the provided arguments.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.OnPropertyChanging(System.String)">
+ <summary>
+ Raises the <see cref="E:Newtonsoft.Json.Linq.JObject.PropertyChanging"/> event with the provided arguments.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JObject.GetMetaObject(System.Linq.Expressions.Expression)">
+ <summary>
+ Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+ </summary>
+ <param name="parameter">The expression tree representation of the runtime value.</param>
+ <returns>
+ The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JProperty">
+ <summary>
+ Represents a JSON property.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.WriteToAsync(Newtonsoft.Json.JsonWriter,System.Threading.CancellationToken,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.LoadAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous creation. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.LoadAsync(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously loads a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous creation. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JProperty.ChildrenTokens">
+ <summary>
+ Gets the container's children tokens.
+ </summary>
+ <value>The container's children tokens.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JProperty.Name">
+ <summary>
+ Gets the property name.
+ </summary>
+ <value>The property name.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JProperty.Value">
+ <summary>
+ Gets or sets the property value.
+ </summary>
+ <value>The property value.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(Newtonsoft.Json.Linq.JProperty)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class from another <see cref="T:Newtonsoft.Json.Linq.JProperty"/> object.
+ </summary>
+ <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> object to copy from.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JProperty.Type">
+ <summary>
+ Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <value>The type.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(System.String,System.Object[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class.
+ </summary>
+ <param name="name">The property name.</param>
+ <param name="content">The property content.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(System.String,System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class.
+ </summary>
+ <param name="name">The property name.</param>
+ <param name="content">The property content.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.Load(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Loads a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JProperty.Load(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Loads a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JRaw">
+ <summary>
+ Represents a raw JSON string.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JRaw.CreateAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously creates an instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.
+ </summary>
+ <param name="reader">The reader.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous creation. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns an instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JRaw.#ctor(Newtonsoft.Json.Linq.JRaw)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JRaw"/> class from another <see cref="T:Newtonsoft.Json.Linq.JRaw"/> object.
+ </summary>
+ <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JRaw"/> object to copy from.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JRaw.#ctor(System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JRaw"/> class.
+ </summary>
+ <param name="rawJson">The raw json.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JRaw.Create(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Creates an instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.
+ </summary>
+ <param name="reader">The reader.</param>
+ <returns>An instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JsonMergeSettings">
+ <summary>
+ Specifies the settings used when merging JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JsonMergeSettings.MergeArrayHandling">
+ <summary>
+ Gets or sets the method used when merging JSON arrays.
+ </summary>
+ <value>The method used when merging JSON arrays.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JsonMergeSettings.MergeNullValueHandling">
+ <summary>
+ Gets or sets how null value properties are merged.
+ </summary>
+ <value>How null value properties are merged.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JPropertyDescriptor">
+ <summary>
+ Represents a view of a <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JPropertyDescriptor"/> class.
+ </summary>
+ <param name="name">The name.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.CanResetValue(System.Object)">
+ <summary>
+ When overridden in a derived class, returns whether resetting an object changes its value.
+ </summary>
+ <returns>
+ <c>true</c> if resetting the component changes its value; otherwise, <c>false</c>.
+ </returns>
+ <param name="component">The component to test for reset capability.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.GetValue(System.Object)">
+ <summary>
+ When overridden in a derived class, gets the current value of the property on a component.
+ </summary>
+ <returns>
+ The value of a property for a given component.
+ </returns>
+ <param name="component">The component with the property for which to retrieve the value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.ResetValue(System.Object)">
+ <summary>
+ When overridden in a derived class, resets the value for this property of the component to the default value.
+ </summary>
+ <param name="component">The component with the property value that is to be reset to the default value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.SetValue(System.Object,System.Object)">
+ <summary>
+ When overridden in a derived class, sets the value of the component to a different value.
+ </summary>
+ <param name="component">The component with the property value that is to be set.</param>
+ <param name="value">The new value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JPropertyDescriptor.ShouldSerializeValue(System.Object)">
+ <summary>
+ When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted.
+ </summary>
+ <returns>
+ <c>true</c> if the property should be persisted; otherwise, <c>false</c>.
+ </returns>
+ <param name="component">The component with the property to be examined for persistence.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.ComponentType">
+ <summary>
+ When overridden in a derived class, gets the type of the component this property is bound to.
+ </summary>
+ <returns>
+ A <see cref="T:System.Type"/> that represents the type of component this property is bound to.
+ When the <see cref="M:System.ComponentModel.PropertyDescriptor.GetValue(System.Object)"/> or
+ <see cref="M:System.ComponentModel.PropertyDescriptor.SetValue(System.Object,System.Object)"/>
+ methods are invoked, the object specified might be an instance of this type.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.IsReadOnly">
+ <summary>
+ When overridden in a derived class, gets a value indicating whether this property is read-only.
+ </summary>
+ <returns>
+ <c>true</c> if the property is read-only; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.PropertyType">
+ <summary>
+ When overridden in a derived class, gets the type of the property.
+ </summary>
+ <returns>
+ A <see cref="T:System.Type"/> that represents the type of the property.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JPropertyDescriptor.NameHashCode">
+ <summary>
+ Gets the hash code for the name of the member.
+ </summary>
+ <value></value>
+ <returns>
+ The hash code for the name of the member.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Represents an abstract JSON token.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.WriteToAsync(Newtonsoft.Json.JsonWriter,System.Threading.CancellationToken,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.WriteToAsync(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ReadFromAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">An <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous creation. The
+ <see cref="P:System.Threading.Tasks.Task`1.Result"/> property returns a <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains
+ the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ReadFromAsync(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">An <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous creation. The
+ <see cref="P:System.Threading.Tasks.Task`1.Result"/> property returns a <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains
+ the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.LoadAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous creation. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.LoadAsync(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings,System.Threading.CancellationToken)">
+ <summary>
+ Asynchronously creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None"/>.</param>
+ <returns>
+ A <see cref="T:System.Threading.Tasks.Task`1"/> that represents the asynchronous creation. The <see cref="P:System.Threading.Tasks.Task`1.Result"/>
+ property returns a <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.EqualityComparer">
+ <summary>
+ Gets a comparer that can compare two tokens for value equality.
+ </summary>
+ <value>A <see cref="T:Newtonsoft.Json.Linq.JTokenEqualityComparer"/> that can compare two nodes for value equality.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Parent">
+ <summary>
+ Gets or sets the parent.
+ </summary>
+ <value>The parent.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Root">
+ <summary>
+ Gets the root <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <value>The root <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Type">
+ <summary>
+ Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <value>The type.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.HasValues">
+ <summary>
+ Gets a value indicating whether this token has child tokens.
+ </summary>
+ <value>
+ <c>true</c> if this token has child values; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.DeepEquals(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Compares the values of two tokens, including the values of all descendant tokens.
+ </summary>
+ <param name="t1">The first <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param>
+ <param name="t2">The second <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param>
+ <returns><c>true</c> if the tokens are equal; otherwise <c>false</c>.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Next">
+ <summary>
+ Gets the next sibling token of this node.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the next sibling token.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Previous">
+ <summary>
+ Gets the previous sibling token of this node.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the previous sibling token.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Path">
+ <summary>
+ Gets the path of the JSON token.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.AddAfterSelf(System.Object)">
+ <summary>
+ Adds the specified content immediately after this token.
+ </summary>
+ <param name="content">A content object that contains simple content or a collection of content objects to be added after this token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.AddBeforeSelf(System.Object)">
+ <summary>
+ Adds the specified content immediately before this token.
+ </summary>
+ <param name="content">A content object that contains simple content or a collection of content objects to be added before this token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Ancestors">
+ <summary>
+ Returns a collection of the ancestor tokens of this token.
+ </summary>
+ <returns>A collection of the ancestor tokens of this token.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.AncestorsAndSelf">
+ <summary>
+ Returns a collection of tokens that contain this token, and the ancestors of this token.
+ </summary>
+ <returns>A collection of tokens that contain this token, and the ancestors of this token.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.AfterSelf">
+ <summary>
+ Returns a collection of the sibling tokens after this token, in document order.
+ </summary>
+ <returns>A collection of the sibling tokens after this tokens, in document order.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.BeforeSelf">
+ <summary>
+ Returns a collection of the sibling tokens before this token, in document order.
+ </summary>
+ <returns>A collection of the sibling tokens before this token, in document order.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Item(System.Object)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Value``1(System.Object)">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key converted to the specified type.
+ </summary>
+ <typeparam name="T">The type to convert the token to.</typeparam>
+ <param name="key">The token key.</param>
+ <returns>The converted token value.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.First">
+ <summary>
+ Get the first child token of this token.
+ </summary>
+ <value>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the first child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JToken.Last">
+ <summary>
+ Get the last child token of this token.
+ </summary>
+ <value>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the last child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Children">
+ <summary>
+ Returns a collection of the child tokens of this token, in document order.
+ </summary>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Children``1">
+ <summary>
+ Returns a collection of the child tokens of this token, in document order, filtered by the specified type.
+ </summary>
+ <typeparam name="T">The type to filter the child tokens on.</typeparam>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Values``1">
+ <summary>
+ Returns a collection of the child values of this token, in document order.
+ </summary>
+ <typeparam name="T">The type to convert the values to.</typeparam>
+ <returns>A <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the child values of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Remove">
+ <summary>
+ Removes this token from its parent.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Replace(Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Replaces this token with the specified token.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ToString">
+ <summary>
+ Returns the indented JSON for this token.
+ </summary>
+ <returns>
+ The indented JSON for this token.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ToString(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Returns the JSON for this token using the given formatting and converters.
+ </summary>
+ <param name="formatting">Indicates how the output should be formatted.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>s which will be used when writing the token.</param>
+ <returns>The JSON for this token using the given formatting and converters.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Boolean">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Boolean"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.DateTimeOffset">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.DateTimeOffset"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Boolean}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int64">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.DateTime}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.DateTimeOffset}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Decimal}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Double}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Char}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Char"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int32">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Int32"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int16">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Int16"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt16">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt16"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Char">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Char"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Byte">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Byte"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.SByte">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.SByte"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int32}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> .
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int16}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt16}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Byte}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.SByte}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.DateTime">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int64}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Single}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Decimal">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Decimal"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt32}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt64}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Double">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Double"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Single">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Single"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.String">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.String"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt32">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt32"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt64">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt64"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Byte[]">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Byte"/>[].
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Guid">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Guid"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Guid}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> .
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.TimeSpan">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.TimeSpan}">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Uri">
+ <summary>
+ Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Uri"/>.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>The result of the conversion.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Boolean)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Boolean"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.DateTimeOffset)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.DateTimeOffset"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Byte)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Byte"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Byte})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Byte"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.SByte)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.SByte"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.SByte})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.SByte"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Boolean})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Boolean"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int64)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.DateTime})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTime"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.DateTimeOffset})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.DateTimeOffset"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Decimal})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Decimal"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Double})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Double"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int16)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Int16"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt16)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.UInt16"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int32)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Int32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int32})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.DateTime)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.DateTime"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int64})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int64"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Single})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Single"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Decimal)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Decimal"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int16})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Int16"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt16})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt16"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt32})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt64})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.UInt64"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Double)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Double"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Single)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Single"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.String)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.String"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt32)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.UInt32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt64)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.UInt64"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Byte[])~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Byte"/>[] to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Uri)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Uri"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.TimeSpan)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.TimeSpan"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.TimeSpan})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.TimeSpan"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Guid)~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Guid"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Guid})~Newtonsoft.Json.Linq.JToken">
+ <summary>
+ Performs an implicit conversion from <see cref="T:System.Nullable`1"/> of <see cref="T:System.Guid"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.CreateReader">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.JsonReader"/> for this token.
+ </summary>
+ <returns>A <see cref="T:Newtonsoft.Json.JsonReader"/> that can be used to read this token and its descendants.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from an object.
+ </summary>
+ <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the value of the specified object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from an object using the specified <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used when reading the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the value of the specified object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ToObject``1">
+ <summary>
+ Creates an instance of the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <typeparam name="T">The object type that the token will be deserialized to.</typeparam>
+ <returns>The new object created from the JSON value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ToObject(System.Type)">
+ <summary>
+ Creates an instance of the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="objectType">The object type that the token will be deserialized to.</param>
+ <returns>The new object created from the JSON value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ToObject``1(Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Creates an instance of the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/> using the specified <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ <typeparam name="T">The object type that the token will be deserialized to.</typeparam>
+ <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used when creating the object.</param>
+ <returns>The new object created from the JSON value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ToObject(System.Type,Newtonsoft.Json.JsonSerializer)">
+ <summary>
+ Creates an instance of the specified .NET type from the <see cref="T:Newtonsoft.Json.Linq.JToken"/> using the specified <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ <param name="objectType">The object type that the token will be deserialized to.</param>
+ <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used when creating the object.</param>
+ <returns>The new object created from the JSON value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ReadFrom(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <returns>
+ A <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.ReadFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">An <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>
+ A <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Parse(System.String)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a string that contains JSON.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> populated from the string that contains JSON.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Parse(System.String,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a string that contains JSON.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> populated from the string that contains JSON.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Load(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonLoadSettings"/> used to load the JSON.
+ If this is <c>null</c>, default load settings will be used.</param>
+ <returns>
+ A <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Load(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
+ <returns>
+ A <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.SelectToken(System.String)">
+ <summary>
+ Selects a <see cref="T:Newtonsoft.Json.Linq.JToken"/> using a JPath expression. Selects the token that matches the object path.
+ </summary>
+ <param name="path">
+ A <see cref="T:System.String"/> that contains a JPath expression.
+ </param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/>, or <c>null</c>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.SelectToken(System.String,System.Boolean)">
+ <summary>
+ Selects a <see cref="T:Newtonsoft.Json.Linq.JToken"/> using a JPath expression. Selects the token that matches the object path.
+ </summary>
+ <param name="path">
+ A <see cref="T:System.String"/> that contains a JPath expression.
+ </param>
+ <param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.SelectTokens(System.String)">
+ <summary>
+ Selects a collection of elements using a JPath expression.
+ </summary>
+ <param name="path">
+ A <see cref="T:System.String"/> that contains a JPath expression.
+ </param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the selected elements.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.SelectTokens(System.String,System.Boolean)">
+ <summary>
+ Selects a collection of elements using a JPath expression.
+ </summary>
+ <param name="path">
+ A <see cref="T:System.String"/> that contains a JPath expression.
+ </param>
+ <param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the selected elements.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.GetMetaObject(System.Linq.Expressions.Expression)">
+ <summary>
+ Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+ </summary>
+ <param name="parameter">The expression tree representation of the runtime value.</param>
+ <returns>
+ The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.System#Dynamic#IDynamicMetaObjectProvider#GetMetaObject(System.Linq.Expressions.Expression)">
+ <summary>
+ Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+ </summary>
+ <param name="parameter">The expression tree representation of the runtime value.</param>
+ <returns>
+ The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.DeepClone">
+ <summary>
+ Creates a new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. All child tokens are recursively cloned.
+ </summary>
+ <returns>A new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.AddAnnotation(System.Object)">
+ <summary>
+ Adds an object to the annotation list of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="annotation">The annotation to add.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Annotation``1">
+ <summary>
+ Get the first annotation object of the specified type from this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <typeparam name="T">The type of the annotation to retrieve.</typeparam>
+ <returns>The first annotation object that matches the specified type, or <c>null</c> if no annotation is of the specified type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Annotation(System.Type)">
+ <summary>
+ Gets the first annotation object of the specified type from this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="type">The <see cref="P:Newtonsoft.Json.Linq.JToken.Type"/> of the annotation to retrieve.</param>
+ <returns>The first annotation object that matches the specified type, or <c>null</c> if no annotation is of the specified type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Annotations``1">
+ <summary>
+ Gets a collection of annotations of the specified type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <typeparam name="T">The type of the annotations to retrieve.</typeparam>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the annotations for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.Annotations(System.Type)">
+ <summary>
+ Gets a collection of annotations of the specified type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="type">The <see cref="P:Newtonsoft.Json.Linq.JToken.Type"/> of the annotations to retrieve.</param>
+ <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:System.Object"/> that contains the annotations that match the specified type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.RemoveAnnotations``1">
+ <summary>
+ Removes the annotations of the specified type from this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <typeparam name="T">The type of annotations to remove.</typeparam>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JToken.RemoveAnnotations(System.Type)">
+ <summary>
+ Removes the annotations of the specified type from this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <param name="type">The <see cref="P:Newtonsoft.Json.Linq.JToken.Type"/> of annotations to remove.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JTokenEqualityComparer">
+ <summary>
+ Compares tokens to determine whether they are equal.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenEqualityComparer.Equals(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Determines whether the specified objects are equal.
+ </summary>
+ <param name="x">The first object of type <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param>
+ <param name="y">The second object of type <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param>
+ <returns>
+ <c>true</c> if the specified objects are equal; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenEqualityComparer.GetHashCode(Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Returns a hash code for the specified object.
+ </summary>
+ <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
+ <returns>A hash code for the specified object.</returns>
+ <exception cref="T:System.ArgumentNullException">The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is <c>null</c>.</exception>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JTokenReader">
+ <summary>
+ Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JTokenReader.CurrentToken">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> at the reader's current position.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenReader.#ctor(Newtonsoft.Json.Linq.JToken)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenReader"/> class.
+ </summary>
+ <param name="token">The token to read from.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenReader.Read">
+ <summary>
+ Reads the next JSON token from the underlying <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <returns>
+ <c>true</c> if the next token was read successfully; <c>false</c> if there are no more tokens to read.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JTokenReader.Path">
+ <summary>
+ Gets the path of the current JSON token.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JTokenType">
+ <summary>
+ Specifies the type of token.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.None">
+ <summary>
+ No token type has been set.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Object">
+ <summary>
+ A JSON object.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Array">
+ <summary>
+ A JSON array.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Constructor">
+ <summary>
+ A JSON constructor.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Property">
+ <summary>
+ A JSON object property.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Comment">
+ <summary>
+ A comment.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Integer">
+ <summary>
+ An integer value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Float">
+ <summary>
+ A float value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.String">
+ <summary>
+ A string value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Boolean">
+ <summary>
+ A boolean value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Null">
+ <summary>
+ A null value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Undefined">
+ <summary>
+ An undefined value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Date">
+ <summary>
+ A date value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Raw">
+ <summary>
+ A raw JSON value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Bytes">
+ <summary>
+ A collection of bytes value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Guid">
+ <summary>
+ A Guid value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.Uri">
+ <summary>
+ A Uri value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.JTokenType.TimeSpan">
+ <summary>
+ A TimeSpan value.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JTokenWriter">
+ <summary>
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JTokenWriter.CurrentToken">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> at the writer's current position.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JTokenWriter.Token">
+ <summary>
+ Gets the token being written.
+ </summary>
+ <value>The token being written.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.#ctor(Newtonsoft.Json.Linq.JContainer)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenWriter"/> class writing to the given <see cref="T:Newtonsoft.Json.Linq.JContainer"/>.
+ </summary>
+ <param name="container">The container being written to.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenWriter"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.Flush">
+ <summary>
+ Flushes whatever is in the buffer to the underlying <see cref="T:Newtonsoft.Json.Linq.JContainer"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.Close">
+ <summary>
+ Closes this writer.
+ If <see cref="P:Newtonsoft.Json.JsonWriter.AutoCompleteOnClose"/> is set to <c>true</c>, the JSON is auto-completed.
+ </summary>
+ <remarks>
+ Setting <see cref="P:Newtonsoft.Json.JsonWriter.CloseOutput"/> to <c>true</c> has no additional effect, since the underlying <see cref="T:Newtonsoft.Json.Linq.JContainer"/> is a type that cannot be closed.
+ </remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartObject">
+ <summary>
+ Writes the beginning of a JSON object.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartArray">
+ <summary>
+ Writes the beginning of a JSON array.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartConstructor(System.String)">
+ <summary>
+ Writes the start of a constructor with the given name.
+ </summary>
+ <param name="name">The name of the constructor.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
+ <summary>
+ Writes the end.
+ </summary>
+ <param name="token">The token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WritePropertyName(System.String)">
+ <summary>
+ Writes the property name of a name/value pair on a JSON object.
+ </summary>
+ <param name="name">The name of the property.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Object)">
+ <summary>
+ Writes a <see cref="T:System.Object"/> value.
+ An error will be raised if the value cannot be written as a single JSON token.
+ </summary>
+ <param name="value">The <see cref="T:System.Object"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteNull">
+ <summary>
+ Writes a null value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteUndefined">
+ <summary>
+ Writes an undefined value.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteRaw(System.String)">
+ <summary>
+ Writes raw JSON.
+ </summary>
+ <param name="json">The raw JSON to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteComment(System.String)">
+ <summary>
+ Writes a comment <c>/*...*/</c> containing the specified text.
+ </summary>
+ <param name="text">Text to place inside the comment.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.String)">
+ <summary>
+ Writes a <see cref="T:System.String"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.String"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int32)">
+ <summary>
+ Writes a <see cref="T:System.Int32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt32)">
+ <summary>
+ Writes a <see cref="T:System.UInt32"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int64)">
+ <summary>
+ Writes a <see cref="T:System.Int64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt64)">
+ <summary>
+ Writes a <see cref="T:System.UInt64"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Single)">
+ <summary>
+ Writes a <see cref="T:System.Single"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Single"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Double)">
+ <summary>
+ Writes a <see cref="T:System.Double"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Double"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Boolean)">
+ <summary>
+ Writes a <see cref="T:System.Boolean"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int16)">
+ <summary>
+ Writes a <see cref="T:System.Int16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt16)">
+ <summary>
+ Writes a <see cref="T:System.UInt16"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Char)">
+ <summary>
+ Writes a <see cref="T:System.Char"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Char"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Byte)">
+ <summary>
+ Writes a <see cref="T:System.Byte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.SByte)">
+ <summary>
+ Writes a <see cref="T:System.SByte"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Decimal)">
+ <summary>
+ Writes a <see cref="T:System.Decimal"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.DateTime)">
+ <summary>
+ Writes a <see cref="T:System.DateTime"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.DateTimeOffset)">
+ <summary>
+ Writes a <see cref="T:System.DateTimeOffset"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.DateTimeOffset"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Byte[])">
+ <summary>
+ Writes a <see cref="T:System.Byte"/>[] value.
+ </summary>
+ <param name="value">The <see cref="T:System.Byte"/>[] value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.TimeSpan)">
+ <summary>
+ Writes a <see cref="T:System.TimeSpan"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.TimeSpan"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Guid)">
+ <summary>
+ Writes a <see cref="T:System.Guid"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Guid"/> value to write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Uri)">
+ <summary>
+ Writes a <see cref="T:System.Uri"/> value.
+ </summary>
+ <param name="value">The <see cref="T:System.Uri"/> value to write.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JValue">
+ <summary>
+ Represents a value in JSON (string, integer, date, etc).
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.WriteToAsync(Newtonsoft.Json.JsonWriter,System.Threading.CancellationToken,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="cancellationToken">The token to monitor for cancellation requests.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
+ <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(Newtonsoft.Json.Linq.JValue)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class from another <see cref="T:Newtonsoft.Json.Linq.JValue"/> object.
+ </summary>
+ <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JValue"/> object to copy from.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Int64)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Decimal)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Char)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.UInt64)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Double)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Single)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.DateTime)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.DateTimeOffset)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Guid)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Uri)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.TimeSpan)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JValue.HasValues">
+ <summary>
+ Gets a value indicating whether this token has child tokens.
+ </summary>
+ <value>
+ <c>true</c> if this token has child values; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.CreateComment(System.String)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> comment with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> comment with the given value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.CreateString(System.String)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> string with the given value.
+ </summary>
+ <param name="value">The value.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> string with the given value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.CreateNull">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> null value.
+ </summary>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> null value.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.CreateUndefined">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> undefined value.
+ </summary>
+ <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> undefined value.</returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JValue.Type">
+ <summary>
+ Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </summary>
+ <value>The type.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JValue.Value">
+ <summary>
+ Gets or sets the underlying token value.
+ </summary>
+ <value>The underlying token value.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
+ <summary>
+ Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>s which will be used when writing the token.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.Equals(Newtonsoft.Json.Linq.JValue)">
+ <summary>
+ Indicates whether the current object is equal to another object of the same type.
+ </summary>
+ <returns>
+ <c>true</c> if the current object is equal to the <paramref name="other"/> parameter; otherwise, <c>false</c>.
+ </returns>
+ <param name="other">An object to compare with this object.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.Equals(System.Object)">
+ <summary>
+ Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
+ </summary>
+ <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param>
+ <returns>
+ <c>true</c> if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.GetHashCode">
+ <summary>
+ Serves as a hash function for a particular type.
+ </summary>
+ <returns>
+ A hash code for the current <see cref="T:System.Object"/>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.ToString">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents this instance.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that represents this instance.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.ToString(System.String)">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents this instance.
+ </summary>
+ <param name="format">The format.</param>
+ <returns>
+ A <see cref="T:System.String"/> that represents this instance.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.ToString(System.IFormatProvider)">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents this instance.
+ </summary>
+ <param name="formatProvider">The format provider.</param>
+ <returns>
+ A <see cref="T:System.String"/> that represents this instance.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.ToString(System.String,System.IFormatProvider)">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents this instance.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="formatProvider">The format provider.</param>
+ <returns>
+ A <see cref="T:System.String"/> that represents this instance.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.GetMetaObject(System.Linq.Expressions.Expression)">
+ <summary>
+ Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+ </summary>
+ <param name="parameter">The expression tree representation of the runtime value.</param>
+ <returns>
+ The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Linq.JValue.CompareTo(Newtonsoft.Json.Linq.JValue)">
+ <summary>
+ Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
+ </summary>
+ <param name="obj">An object to compare with this instance.</param>
+ <returns>
+ A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
+ Value
+ Meaning
+ Less than zero
+ This instance is less than <paramref name="obj"/>.
+ Zero
+ This instance is equal to <paramref name="obj"/>.
+ Greater than zero
+ This instance is greater than <paramref name="obj"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException">
+ <paramref name="obj"/> is not of the same type as this instance.
+ </exception>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.JsonLoadSettings">
+ <summary>
+ Specifies the settings used when loading JSON.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JsonLoadSettings.CommentHandling">
+ <summary>
+ Gets or sets how JSON comments are handled when loading JSON.
+ </summary>
+ <value>The JSON comment handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Linq.JsonLoadSettings.LineInfoHandling">
+ <summary>
+ Gets or sets how JSON line info is handled when loading JSON.
+ </summary>
+ <value>The JSON line info handling.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.MergeArrayHandling">
+ <summary>
+ Specifies how JSON arrays are merged together.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Concat">
+ <summary>Concatenate arrays.</summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Union">
+ <summary>Union arrays, skipping items that already exist.</summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Replace">
+ <summary>Replace all array items.</summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.MergeArrayHandling.Merge">
+ <summary>Merge array items together, matched by index.</summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Linq.MergeNullValueHandling">
+ <summary>
+ Specifies how null value properties are merged.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.MergeNullValueHandling.Ignore">
+ <summary>
+ The content's null value properties will be ignored during merging.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Linq.MergeNullValueHandling.Merge">
+ <summary>
+ The content's null value properties will be merged.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.MemberSerialization">
+ <summary>
+ Specifies the member serialization options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MemberSerialization.OptOut">
+ <summary>
+ All public members are serialized by default. Members can be excluded using <see cref="T:Newtonsoft.Json.JsonIgnoreAttribute"/> or <see cref="T:System.NonSerializedAttribute"/>.
+ This is the default member serialization mode.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MemberSerialization.OptIn">
+ <summary>
+ Only members marked with <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> or <see cref="T:System.Runtime.Serialization.DataMemberAttribute"/> are serialized.
+ This member serialization mode can also be set by marking the class with <see cref="T:System.Runtime.Serialization.DataContractAttribute"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MemberSerialization.Fields">
+ <summary>
+ All public and private fields are serialized. Members can be excluded using <see cref="T:Newtonsoft.Json.JsonIgnoreAttribute"/> or <see cref="T:System.NonSerializedAttribute"/>.
+ This member serialization mode can also be set by marking the class with <see cref="T:System.SerializableAttribute"/>
+ and setting IgnoreSerializableAttribute on <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> to <c>false</c>.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.MetadataPropertyHandling">
+ <summary>
+ Specifies metadata property handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MetadataPropertyHandling.Default">
+ <summary>
+ Read metadata properties located at the start of a JSON object.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MetadataPropertyHandling.ReadAhead">
+ <summary>
+ Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MetadataPropertyHandling.Ignore">
+ <summary>
+ Do not try to read metadata properties.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.MissingMemberHandling">
+ <summary>
+ Specifies missing member handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MissingMemberHandling.Ignore">
+ <summary>
+ Ignore a missing member and do not attempt to deserialize it.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.MissingMemberHandling.Error">
+ <summary>
+ Throw a <see cref="T:Newtonsoft.Json.JsonSerializationException"/> when a missing member is encountered during deserialization.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.NullValueHandling">
+ <summary>
+ Specifies null value handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeNullValueHandlingObject" title="NullValueHandling Class" />
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeNullValueHandlingExample" title="NullValueHandling Ignore Example" />
+ </example>
+ </member>
+ <member name="F:Newtonsoft.Json.NullValueHandling.Include">
+ <summary>
+ Include null values when serializing and deserializing objects.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.NullValueHandling.Ignore">
+ <summary>
+ Ignore null values when serializing and deserializing objects.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.ObjectCreationHandling">
+ <summary>
+ Specifies how object creation is handled by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ObjectCreationHandling.Auto">
+ <summary>
+ Reuse existing objects, create new objects when needed.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ObjectCreationHandling.Reuse">
+ <summary>
+ Only reuse existing objects.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ObjectCreationHandling.Replace">
+ <summary>
+ Always create new objects.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.PreserveReferencesHandling">
+ <summary>
+ Specifies reference handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement <see cref="T:System.Runtime.Serialization.ISerializable"/>.
+ </summary>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="PreservingObjectReferencesOn" title="Preserve Object References" />
+ </example>
+ </member>
+ <member name="F:Newtonsoft.Json.PreserveReferencesHandling.None">
+ <summary>
+ Do not preserve references when serializing types.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.PreserveReferencesHandling.Objects">
+ <summary>
+ Preserve references when serializing into a JSON object structure.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.PreserveReferencesHandling.Arrays">
+ <summary>
+ Preserve references when serializing into a JSON array structure.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.PreserveReferencesHandling.All">
+ <summary>
+ Preserve references when serializing.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.ReferenceLoopHandling">
+ <summary>
+ Specifies reference loop handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Error">
+ <summary>
+ Throw a <see cref="T:Newtonsoft.Json.JsonSerializationException"/> when a loop is encountered.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Ignore">
+ <summary>
+ Ignore loop references and do not serialize.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Serialize">
+ <summary>
+ Serialize loop references.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Required">
+ <summary>
+ Indicating whether a property is required.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Required.Default">
+ <summary>
+ The property is not required. The default state.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Required.AllowNull">
+ <summary>
+ The property must be defined in JSON but can be a null value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Required.Always">
+ <summary>
+ The property must be defined in JSON and cannot be a null value.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Required.DisallowNull">
+ <summary>
+ The property is not required but it cannot be a null value.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.Extensions">
+ <summary>
+ <para>
+ Contains the JSON schema extension methods.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.Extensions.IsValid(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)">
+ <summary>
+ <para>
+ Determines whether the <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
+ <param name="schema">The schema to test with.</param>
+ <returns>
+ <c>true</c> if the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.Extensions.IsValid(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema,System.Collections.Generic.IList{System.String}@)">
+ <summary>
+ <para>
+ Determines whether the <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
+ <param name="schema">The schema to test with.</param>
+ <param name="errorMessages">When this method returns, contains any error messages generated while validating. </param>
+ <returns>
+ <c>true</c> if the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)">
+ <summary>
+ <para>
+ Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
+ <param name="schema">The schema to test with.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Schema.ValidationEventHandler)">
+ <summary>
+ <para>
+ Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
+ <param name="schema">The schema to test with.</param>
+ <param name="validationEventHandler">The validation event handler.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.JsonSchema">
+ <summary>
+ <para>
+ An in-memory representation of a JSON Schema.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Id">
+ <summary>
+ Gets or sets the id.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Title">
+ <summary>
+ Gets or sets the title.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Required">
+ <summary>
+ Gets or sets whether the object is required.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.ReadOnly">
+ <summary>
+ Gets or sets whether the object is read-only.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Hidden">
+ <summary>
+ Gets or sets whether the object is visible to users.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Transient">
+ <summary>
+ Gets or sets whether the object is transient.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Description">
+ <summary>
+ Gets or sets the description of the object.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Type">
+ <summary>
+ Gets or sets the types of values allowed by the object.
+ </summary>
+ <value>The type.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Pattern">
+ <summary>
+ Gets or sets the pattern.
+ </summary>
+ <value>The pattern.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.MinimumLength">
+ <summary>
+ Gets or sets the minimum length.
+ </summary>
+ <value>The minimum length.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.MaximumLength">
+ <summary>
+ Gets or sets the maximum length.
+ </summary>
+ <value>The maximum length.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.DivisibleBy">
+ <summary>
+ Gets or sets a number that the value should be divisible by.
+ </summary>
+ <value>A number that the value should be divisible by.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Minimum">
+ <summary>
+ Gets or sets the minimum.
+ </summary>
+ <value>The minimum.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Maximum">
+ <summary>
+ Gets or sets the maximum.
+ </summary>
+ <value>The maximum.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.ExclusiveMinimum">
+ <summary>
+ Gets or sets a flag indicating whether the value can not equal the number defined by the <c>minimum</c> attribute (<see cref="P:Newtonsoft.Json.Schema.JsonSchema.Minimum"/>).
+ </summary>
+ <value>A flag indicating whether the value can not equal the number defined by the <c>minimum</c> attribute (<see cref="P:Newtonsoft.Json.Schema.JsonSchema.Minimum"/>).</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.ExclusiveMaximum">
+ <summary>
+ Gets or sets a flag indicating whether the value can not equal the number defined by the <c>maximum</c> attribute (<see cref="P:Newtonsoft.Json.Schema.JsonSchema.Maximum"/>).
+ </summary>
+ <value>A flag indicating whether the value can not equal the number defined by the <c>maximum</c> attribute (<see cref="P:Newtonsoft.Json.Schema.JsonSchema.Maximum"/>).</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.MinimumItems">
+ <summary>
+ Gets or sets the minimum number of items.
+ </summary>
+ <value>The minimum number of items.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.MaximumItems">
+ <summary>
+ Gets or sets the maximum number of items.
+ </summary>
+ <value>The maximum number of items.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Items">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of items.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of items.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.PositionalItemsValidation">
+ <summary>
+ Gets or sets a value indicating whether items in an array are validated using the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> instance at their array position from <see cref="P:Newtonsoft.Json.Schema.JsonSchema.Items"/>.
+ </summary>
+ <value>
+ <c>true</c> if items are validated using their array position; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.AdditionalItems">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional items.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional items.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.AllowAdditionalItems">
+ <summary>
+ Gets or sets a value indicating whether additional items are allowed.
+ </summary>
+ <value>
+ <c>true</c> if additional items are allowed; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.UniqueItems">
+ <summary>
+ Gets or sets whether the array items must be unique.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Properties">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of properties.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of properties.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.AdditionalProperties">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional properties.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional properties.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.PatternProperties">
+ <summary>
+ Gets or sets the pattern properties.
+ </summary>
+ <value>The pattern properties.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.AllowAdditionalProperties">
+ <summary>
+ Gets or sets a value indicating whether additional properties are allowed.
+ </summary>
+ <value>
+ <c>true</c> if additional properties are allowed; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Requires">
+ <summary>
+ Gets or sets the required property if this property is present.
+ </summary>
+ <value>The required property if this property is present.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Enum">
+ <summary>
+ Gets or sets the a collection of valid enum values allowed.
+ </summary>
+ <value>A collection of valid enum values allowed.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Disallow">
+ <summary>
+ Gets or sets disallowed types.
+ </summary>
+ <value>The disallowed types.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Default">
+ <summary>
+ Gets or sets the default value.
+ </summary>
+ <value>The default value.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Extends">
+ <summary>
+ Gets or sets the collection of <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> that this schema extends.
+ </summary>
+ <value>The collection of <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> that this schema extends.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchema.Format">
+ <summary>
+ Gets or sets the format.
+ </summary>
+ <value>The format.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.Read(Newtonsoft.Json.JsonReader)">
+ <summary>
+ Reads a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the JSON Schema to read.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> object representing the JSON Schema.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.Read(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Schema.JsonSchemaResolver)">
+ <summary>
+ Reads a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
+ </summary>
+ <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the JSON Schema to read.</param>
+ <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> to use when resolving schema references.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> object representing the JSON Schema.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.Parse(System.String)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a string that contains JSON Schema.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON Schema.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> populated from the string that contains JSON Schema.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.Parse(System.String,Newtonsoft.Json.Schema.JsonSchemaResolver)">
+ <summary>
+ Load a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a string that contains JSON Schema using the specified <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/>.
+ </summary>
+ <param name="json">A <see cref="T:System.String"/> that contains JSON Schema.</param>
+ <param name="resolver">The resolver.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> populated from the string that contains JSON Schema.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.WriteTo(Newtonsoft.Json.JsonWriter)">
+ <summary>
+ Writes this schema to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.Schema.JsonSchemaResolver)">
+ <summary>
+ Writes this schema to a <see cref="T:Newtonsoft.Json.JsonWriter"/> using the specified <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/>.
+ </summary>
+ <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+ <param name="resolver">The resolver used.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchema.ToString">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.JsonSchemaException">
+ <summary>
+ <para>
+ Returns detailed information about the schema exception.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.LineNumber">
+ <summary>
+ Gets the line number indicating where the error occurred.
+ </summary>
+ <value>The line number indicating where the error occurred.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.LinePosition">
+ <summary>
+ Gets the line position indicating where the error occurred.
+ </summary>
+ <value>The line position indicating where the error occurred.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.Path">
+ <summary>
+ Gets the path to the JSON where the error occurred.
+ </summary>
+ <value>The path to the JSON where the error occurred.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class
+ with a specified error message.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+ </summary>
+ <param name="message">The error message that explains the reason for the exception.</param>
+ <param name="innerException">The exception that is the cause of the current exception, or <c>null</c> if no inner exception is specified.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.JsonSchemaGenerator">
+ <summary>
+ <para>
+ Generates a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a specified <see cref="T:System.Type"/>.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchemaGenerator.UndefinedSchemaIdHandling">
+ <summary>
+ Gets or sets how undefined schemas are handled by the serializer.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchemaGenerator.ContractResolver">
+ <summary>
+ Gets or sets the contract resolver.
+ </summary>
+ <value>The contract resolver.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type)">
+ <summary>
+ Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
+ </summary>
+ <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,Newtonsoft.Json.Schema.JsonSchemaResolver)">
+ <summary>
+ Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
+ </summary>
+ <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
+ <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> used to resolve schema references.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,System.Boolean)">
+ <summary>
+ Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
+ </summary>
+ <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
+ <param name="rootSchemaNullable">Specify whether the generated root <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> will be nullable.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,Newtonsoft.Json.Schema.JsonSchemaResolver,System.Boolean)">
+ <summary>
+ Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
+ </summary>
+ <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
+ <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> used to resolve schema references.</param>
+ <param name="rootSchemaNullable">Specify whether the generated root <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> will be nullable.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.JsonSchemaResolver">
+ <summary>
+ <para>
+ Resolves <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from an id.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.JsonSchemaResolver.LoadedSchemas">
+ <summary>
+ Gets or sets the loaded schemas.
+ </summary>
+ <value>The loaded schemas.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaResolver.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Schema.JsonSchemaResolver.GetSchema(System.String)">
+ <summary>
+ Gets a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> for the specified reference.
+ </summary>
+ <param name="reference">The id.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> for the specified reference.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.JsonSchemaType">
+ <summary>
+ <para>
+ The value types allowed by the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/>.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.None">
+ <summary>
+ No type specified.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.String">
+ <summary>
+ String type.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Float">
+ <summary>
+ Float type.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Integer">
+ <summary>
+ Integer type.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Boolean">
+ <summary>
+ Boolean type.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Object">
+ <summary>
+ Object type.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Array">
+ <summary>
+ Array type.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Null">
+ <summary>
+ Null type.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Any">
+ <summary>
+ Any type.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling">
+ <summary>
+ <para>
+ Specifies undefined schema Id handling options for the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaGenerator"/>.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.None">
+ <summary>
+ Do not infer a schema Id.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.UseTypeName">
+ <summary>
+ Use the .NET type name as the schema Id.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.UseAssemblyQualifiedName">
+ <summary>
+ Use the assembly qualified .NET type name as the schema Id.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.ValidationEventArgs">
+ <summary>
+ <para>
+ Returns detailed information related to the <see cref="T:Newtonsoft.Json.Schema.ValidationEventHandler"/>.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Exception">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> associated with the validation error.
+ </summary>
+ <value>The JsonSchemaException associated with the validation error.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Path">
+ <summary>
+ Gets the path of the JSON location where the validation error occurred.
+ </summary>
+ <value>The path of the JSON location where the validation error occurred.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Message">
+ <summary>
+ Gets the text description corresponding to the validation error.
+ </summary>
+ <value>The text description.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.Schema.ValidationEventHandler">
+ <summary>
+ <para>
+ Represents the callback method that will handle JSON schema validation events and the <see cref="T:Newtonsoft.Json.Schema.ValidationEventArgs"/>.
+ </para>
+ <note type="caution">
+ JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
+ </note>
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ISerializationBinder">
+ <summary>
+ Allows users to control class loading and mandate what class to load.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ISerializationBinder.BindToType(System.String,System.String)">
+ <summary>
+ When implemented, controls the binding of a serialized object to a type.
+ </summary>
+ <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param>
+ <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object</param>
+ <returns>The type of the object the formatter creates a new instance of.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ISerializationBinder.BindToName(System.Type,System.String@,System.String@)">
+ <summary>
+ When implemented, controls the binding of a serialized object to a type.
+ </summary>
+ <param name="serializedType">The type of the object the formatter creates a new instance of.</param>
+ <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param>
+ <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy">
+ <summary>
+ A snake case naming strategy.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy.#ctor(System.Boolean,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy"/> class.
+ </summary>
+ <param name="processDictionaryKeys">
+ A flag indicating whether dictionary keys should be processed.
+ </param>
+ <param name="overrideSpecifiedNames">
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/>.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy.#ctor(System.Boolean,System.Boolean,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy"/> class.
+ </summary>
+ <param name="processDictionaryKeys">
+ A flag indicating whether dictionary keys should be processed.
+ </param>
+ <param name="overrideSpecifiedNames">
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/>.
+ </param>
+ <param name="processExtensionDataNames">
+ A flag indicating whether extension data names should be processed.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy.ResolvePropertyName(System.String)">
+ <summary>
+ Resolves the specified property name.
+ </summary>
+ <param name="name">The property name to resolve.</param>
+ <returns>The resolved property name.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy">
+ <summary>
+ A camel case naming strategy.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy.#ctor(System.Boolean,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy"/> class.
+ </summary>
+ <param name="processDictionaryKeys">
+ A flag indicating whether dictionary keys should be processed.
+ </param>
+ <param name="overrideSpecifiedNames">
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/>.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy.#ctor(System.Boolean,System.Boolean,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy"/> class.
+ </summary>
+ <param name="processDictionaryKeys">
+ A flag indicating whether dictionary keys should be processed.
+ </param>
+ <param name="overrideSpecifiedNames">
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/>.
+ </param>
+ <param name="processExtensionDataNames">
+ A flag indicating whether extension data names should be processed.
+ </param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.CamelCaseNamingStrategy.ResolvePropertyName(System.String)">
+ <summary>
+ Resolves the specified property name.
+ </summary>
+ <param name="name">The property name to resolve.</param>
+ <returns>The resolved property name.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver">
+ <summary>
+ Resolves member mappings for a type, camel casing property names.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver.ResolveContract(System.Type)">
+ <summary>
+ Resolves the contract for a given type.
+ </summary>
+ <param name="type">The type to resolve a contract for.</param>
+ <returns>The contract for a given type.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.DefaultContractResolver">
+ <summary>
+ Used by <see cref="T:Newtonsoft.Json.JsonSerializer"/> to resolve a <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for a given <see cref="T:System.Type"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.DynamicCodeGeneration">
+ <summary>
+ Gets a value indicating whether members are being get and set using dynamic code generation.
+ This value is determined by the runtime permissions available.
+ </summary>
+ <value>
+ <c>true</c> if using dynamic code generation; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.DefaultMembersSearchFlags">
+ <summary>
+ Gets or sets the default members search flags.
+ </summary>
+ <value>The default members search flags.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.SerializeCompilerGeneratedMembers">
+ <summary>
+ Gets or sets a value indicating whether compiler generated members should be serialized.
+ </summary>
+ <value>
+ <c>true</c> if serialized compiler generated members; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.IgnoreSerializableInterface">
+ <summary>
+ Gets or sets a value indicating whether to ignore the <see cref="T:System.Runtime.Serialization.ISerializable"/> interface when serializing and deserializing types.
+ </summary>
+ <value>
+ <c>true</c> if the <see cref="T:System.Runtime.Serialization.ISerializable"/> interface will be ignored when serializing and deserializing types; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.IgnoreSerializableAttribute">
+ <summary>
+ Gets or sets a value indicating whether to ignore the <see cref="T:System.SerializableAttribute"/> attribute when serializing and deserializing types.
+ </summary>
+ <value>
+ <c>true</c> if the <see cref="T:System.SerializableAttribute"/> attribute will be ignored when serializing and deserializing types; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.NamingStrategy">
+ <summary>
+ Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized.
+ </summary>
+ <value>The naming strategy used to resolve how property names and dictionary keys are serialized.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(System.Type)">
+ <summary>
+ Resolves the contract for a given type.
+ </summary>
+ <param name="type">The type to resolve a contract for.</param>
+ <returns>The contract for a given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.GetSerializableMembers(System.Type)">
+ <summary>
+ Gets the serializable members for the type.
+ </summary>
+ <param name="objectType">The type to get serializable members for.</param>
+ <returns>The serializable members for the type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateConstructorParameters(System.Reflection.ConstructorInfo,Newtonsoft.Json.Serialization.JsonPropertyCollection)">
+ <summary>
+ Creates the constructor parameters.
+ </summary>
+ <param name="constructor">The constructor to create properties for.</param>
+ <param name="memberProperties">The type's member properties.</param>
+ <returns>Properties for the given <see cref="T:System.Reflection.ConstructorInfo"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreatePropertyFromConstructorParameter(Newtonsoft.Json.Serialization.JsonProperty,System.Reflection.ParameterInfo)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.ParameterInfo"/>.
+ </summary>
+ <param name="matchingMemberProperty">The matching member property.</param>
+ <param name="parameterInfo">The constructor parameter.</param>
+ <returns>A created <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.ParameterInfo"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContractConverter(System.Type)">
+ <summary>
+ Resolves the default <see cref="T:Newtonsoft.Json.JsonConverter" /> for the contract.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>The contract's default <see cref="T:Newtonsoft.Json.JsonConverter" />.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateDictionaryContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateArrayContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreatePrimitiveContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateLinqContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateISerializableContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonISerializableContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonISerializableContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateDynamicContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonDynamicContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonDynamicContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateStringContract(System.Type)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonStringContract"/> for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonStringContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(System.Type)">
+ <summary>
+ Determines which contract type is created for the given type.
+ </summary>
+ <param name="objectType">Type of the object.</param>
+ <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for the given type.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateProperties(System.Type,Newtonsoft.Json.MemberSerialization)">
+ <summary>
+ Creates properties for the given <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/>.
+ </summary>
+ <param name="type">The type to create properties for.</param>
+ /// <param name="memberSerialization">The member serialization mode for the type.</param>
+ <returns>Properties for the given <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateMemberValueProvider(System.Reflection.MemberInfo)">
+ <summary>
+ Creates the <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> used by the serializer to get and set values from a member.
+ </summary>
+ <param name="member">The member.</param>
+ <returns>The <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> used by the serializer to get and set values from a member.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateProperty(System.Reflection.MemberInfo,Newtonsoft.Json.MemberSerialization)">
+ <summary>
+ Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.MemberInfo"/>.
+ </summary>
+ <param name="memberSerialization">The member's parent <see cref="T:Newtonsoft.Json.MemberSerialization"/>.</param>
+ <param name="member">The member to create a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for.</param>
+ <returns>A created <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.MemberInfo"/>.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolvePropertyName(System.String)">
+ <summary>
+ Resolves the name of the property.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <returns>Resolved name of the property.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveExtensionDataName(System.String)">
+ <summary>
+ Resolves the name of the extension data. By default no changes are made to extension data names.
+ </summary>
+ <param name="extensionDataName">Name of the extension data.</param>
+ <returns>Resolved name of the extension data.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveDictionaryKey(System.String)">
+ <summary>
+ Resolves the key of the dictionary. By default <see cref="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolvePropertyName(System.String)"/> is used to resolve dictionary keys.
+ </summary>
+ <param name="dictionaryKey">Key of the dictionary.</param>
+ <returns>Resolved key of the dictionary.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.GetResolvedPropertyName(System.String)">
+ <summary>
+ Gets the resolved name of the property.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <returns>Name of the property.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.DefaultNamingStrategy">
+ <summary>
+ The default naming strategy. Property names and dictionary keys are unchanged.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultNamingStrategy.ResolvePropertyName(System.String)">
+ <summary>
+ Resolves the specified property name.
+ </summary>
+ <param name="name">The property name to resolve.</param>
+ <returns>The resolved property name.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.DefaultSerializationBinder">
+ <summary>
+ The default serialization binder used when resolving and loading classes from type names.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultSerializationBinder.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DefaultSerializationBinder"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultSerializationBinder.BindToType(System.String,System.String)">
+ <summary>
+ When overridden in a derived class, controls the binding of a serialized object to a type.
+ </summary>
+ <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param>
+ <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object.</param>
+ <returns>
+ The type of the object the formatter creates a new instance of.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DefaultSerializationBinder.BindToName(System.Type,System.String@,System.String@)">
+ <summary>
+ When overridden in a derived class, controls the binding of a serialized object to a type.
+ </summary>
+ <param name="serializedType">The type of the object the formatter creates a new instance of.</param>
+ <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param>
+ <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.DiagnosticsTraceWriter">
+ <summary>
+ Represents a trace writer that writes to the application's <see cref="T:System.Diagnostics.TraceListener"/> instances.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.DiagnosticsTraceWriter.LevelFilter">
+ <summary>
+ Gets the <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer.
+ For example a filter level of <see cref="F:System.Diagnostics.TraceLevel.Info"/> will exclude <see cref="F:System.Diagnostics.TraceLevel.Verbose"/> messages and include <see cref="F:System.Diagnostics.TraceLevel.Info"/>,
+ <see cref="F:System.Diagnostics.TraceLevel.Warning"/> and <see cref="F:System.Diagnostics.TraceLevel.Error"/> messages.
+ </summary>
+ <value>
+ The <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DiagnosticsTraceWriter.Trace(System.Diagnostics.TraceLevel,System.String,System.Exception)">
+ <summary>
+ Writes the specified trace level, message and optional exception.
+ </summary>
+ <param name="level">The <see cref="T:System.Diagnostics.TraceLevel"/> at which to write this trace.</param>
+ <param name="message">The trace message.</param>
+ <param name="ex">The trace exception. This parameter is optional.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.DynamicValueProvider">
+ <summary>
+ Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using dynamic methods.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.#ctor(System.Reflection.MemberInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DynamicValueProvider"/> class.
+ </summary>
+ <param name="memberInfo">The member info.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.SetValue(System.Object,System.Object)">
+ <summary>
+ Sets the value.
+ </summary>
+ <param name="target">The target to set the value on.</param>
+ <param name="value">The value to set on the target.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(System.Object)">
+ <summary>
+ Gets the value.
+ </summary>
+ <param name="target">The target to get the value from.</param>
+ <returns>The value.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ErrorContext">
+ <summary>
+ Provides information surrounding an error.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Error">
+ <summary>
+ Gets the error.
+ </summary>
+ <value>The error.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ErrorContext.OriginalObject">
+ <summary>
+ Gets the original object that caused the error.
+ </summary>
+ <value>The original object that caused the error.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Member">
+ <summary>
+ Gets the member that caused the error.
+ </summary>
+ <value>The member that caused the error.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Path">
+ <summary>
+ Gets the path of the JSON location where the error occurred.
+ </summary>
+ <value>The path of the JSON location where the error occurred.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Handled">
+ <summary>
+ Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.ErrorContext"/> is handled.
+ </summary>
+ <value><c>true</c> if handled; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ErrorEventArgs">
+ <summary>
+ Provides data for the Error event.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ErrorEventArgs.CurrentObject">
+ <summary>
+ Gets the current object the error event is being raised against.
+ </summary>
+ <value>The current object the error event is being raised against.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ErrorEventArgs.ErrorContext">
+ <summary>
+ Gets the error context.
+ </summary>
+ <value>The error context.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ErrorEventArgs.#ctor(System.Object,Newtonsoft.Json.Serialization.ErrorContext)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ErrorEventArgs"/> class.
+ </summary>
+ <param name="currentObject">The current object.</param>
+ <param name="errorContext">The error context.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ExpressionValueProvider">
+ <summary>
+ Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using dynamic methods.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ExpressionValueProvider.#ctor(System.Reflection.MemberInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ExpressionValueProvider"/> class.
+ </summary>
+ <param name="memberInfo">The member info.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ExpressionValueProvider.SetValue(System.Object,System.Object)">
+ <summary>
+ Sets the value.
+ </summary>
+ <param name="target">The target to set the value on.</param>
+ <param name="value">The value to set on the target.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(System.Object)">
+ <summary>
+ Gets the value.
+ </summary>
+ <param name="target">The target to get the value from.</param>
+ <returns>The value.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.IAttributeProvider">
+ <summary>
+ Provides methods to get attributes.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IAttributeProvider.GetAttributes(System.Boolean)">
+ <summary>
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+ </summary>
+ <param name="inherit">When <c>true</c>, look up the hierarchy chain for the inherited custom attribute.</param>
+ <returns>A collection of <see cref="T:System.Attribute"/>s, or an empty collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IAttributeProvider.GetAttributes(System.Type,System.Boolean)">
+ <summary>
+ Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
+ </summary>
+ <param name="attributeType">The type of the attributes.</param>
+ <param name="inherit">When <c>true</c>, look up the hierarchy chain for the inherited custom attribute.</param>
+ <returns>A collection of <see cref="T:System.Attribute"/>s, or an empty collection.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.IContractResolver">
+ <summary>
+ Used by <see cref="T:Newtonsoft.Json.JsonSerializer"/> to resolve a <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for a given <see cref="T:System.Type"/>.
+ </summary>
+ <example>
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeContractResolverObject" title="IContractResolver Class" />
+ <code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="ReducingSerializedJsonSizeContractResolverExample" title="IContractResolver Example" />
+ </example>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IContractResolver.ResolveContract(System.Type)">
+ <summary>
+ Resolves the contract for a given type.
+ </summary>
+ <param name="type">The type to resolve a contract for.</param>
+ <returns>The contract for a given type.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.NamingStrategy">
+ <summary>
+ A base class for resolving how property names and dictionary keys are serialized.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.NamingStrategy.ProcessDictionaryKeys">
+ <summary>
+ A flag indicating whether dictionary keys should be processed.
+ Defaults to <c>false</c>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.NamingStrategy.ProcessExtensionDataNames">
+ <summary>
+ A flag indicating whether extension data names should be processed.
+ Defaults to <c>false</c>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.NamingStrategy.OverrideSpecifiedNames">
+ <summary>
+ A flag indicating whether explicitly specified property names,
+ e.g. a property name customized with a <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/>, should be processed.
+ Defaults to <c>false</c>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.NamingStrategy.GetPropertyName(System.String,System.Boolean)">
+ <summary>
+ Gets the serialized name for a given property name.
+ </summary>
+ <param name="name">The initial property name.</param>
+ <param name="hasSpecifiedName">A flag indicating whether the property has had a name explicitly specified.</param>
+ <returns>The serialized property name.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.NamingStrategy.GetExtensionDataName(System.String)">
+ <summary>
+ Gets the serialized name for a given extension data name.
+ </summary>
+ <param name="name">The initial extension data name.</param>
+ <returns>The serialized extension data name.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.NamingStrategy.GetDictionaryKey(System.String)">
+ <summary>
+ Gets the serialized key for a given dictionary key.
+ </summary>
+ <param name="key">The initial dictionary key.</param>
+ <returns>The serialized dictionary key.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.NamingStrategy.ResolvePropertyName(System.String)">
+ <summary>
+ Resolves the specified property name.
+ </summary>
+ <param name="name">The property name to resolve.</param>
+ <returns>The resolved property name.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.IReferenceResolver">
+ <summary>
+ Used to resolve references when serializing and deserializing JSON by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.ResolveReference(System.Object,System.String)">
+ <summary>
+ Resolves a reference to its object.
+ </summary>
+ <param name="context">The serialization context.</param>
+ <param name="reference">The reference to resolve.</param>
+ <returns>The object that was resolved from the reference.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.GetReference(System.Object,System.Object)">
+ <summary>
+ Gets the reference for the specified object.
+ </summary>
+ <param name="context">The serialization context.</param>
+ <param name="value">The object to get a reference for.</param>
+ <returns>The reference to the object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.IsReferenced(System.Object,System.Object)">
+ <summary>
+ Determines whether the specified object is referenced.
+ </summary>
+ <param name="context">The serialization context.</param>
+ <param name="value">The object to test for a reference.</param>
+ <returns>
+ <c>true</c> if the specified object is referenced; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.AddReference(System.Object,System.String,System.Object)">
+ <summary>
+ Adds a reference to the specified object.
+ </summary>
+ <param name="context">The serialization context.</param>
+ <param name="reference">The reference.</param>
+ <param name="value">The object to reference.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ITraceWriter">
+ <summary>
+ Represents a trace writer.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.ITraceWriter.LevelFilter">
+ <summary>
+ Gets the <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer.
+ For example a filter level of <see cref="F:System.Diagnostics.TraceLevel.Info"/> will exclude <see cref="F:System.Diagnostics.TraceLevel.Verbose"/> messages and include <see cref="F:System.Diagnostics.TraceLevel.Info"/>,
+ <see cref="F:System.Diagnostics.TraceLevel.Warning"/> and <see cref="F:System.Diagnostics.TraceLevel.Error"/> messages.
+ </summary>
+ <value>The <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ITraceWriter.Trace(System.Diagnostics.TraceLevel,System.String,System.Exception)">
+ <summary>
+ Writes the specified trace level, message and optional exception.
+ </summary>
+ <param name="level">The <see cref="T:System.Diagnostics.TraceLevel"/> at which to write this trace.</param>
+ <param name="message">The trace message.</param>
+ <param name="ex">The trace exception. This parameter is optional.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.IValueProvider">
+ <summary>
+ Provides methods to get and set values.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IValueProvider.SetValue(System.Object,System.Object)">
+ <summary>
+ Sets the value.
+ </summary>
+ <param name="target">The target to set the value on.</param>
+ <param name="value">The value to set on the target.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.IValueProvider.GetValue(System.Object)">
+ <summary>
+ Gets the value.
+ </summary>
+ <param name="target">The target to get the value from.</param>
+ <returns>The value.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonArrayContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonArrayContract.CollectionItemType">
+ <summary>
+ Gets the <see cref="T:System.Type"/> of the collection items.
+ </summary>
+ <value>The <see cref="T:System.Type"/> of the collection items.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonArrayContract.IsMultidimensionalArray">
+ <summary>
+ Gets a value indicating whether the collection type is a multidimensional array.
+ </summary>
+ <value><c>true</c> if the collection type is a multidimensional array; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonArrayContract.OverrideCreator">
+ <summary>
+ Gets or sets the function used to create the object. When set this function will override <see cref="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreator"/>.
+ </summary>
+ <value>The function used to create the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonArrayContract.HasParameterizedCreator">
+ <summary>
+ Gets a value indicating whether the creator has a parameter with the collection values.
+ </summary>
+ <value><c>true</c> if the creator has a parameter with the collection values; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonArrayContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonContainerContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemConverter">
+ <summary>
+ Gets or sets the default collection items <see cref="T:Newtonsoft.Json.JsonConverter" />.
+ </summary>
+ <value>The converter.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemIsReference">
+ <summary>
+ Gets or sets a value indicating whether the collection items preserve object references.
+ </summary>
+ <value><c>true</c> if collection items preserve object references; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemReferenceLoopHandling">
+ <summary>
+ Gets or sets the collection item reference loop handling.
+ </summary>
+ <value>The reference loop handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContainerContract.ItemTypeNameHandling">
+ <summary>
+ Gets or sets the collection item type name handling.
+ </summary>
+ <value>The type name handling.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonContainerContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonContainerContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.SerializationCallback">
+ <summary>
+ Handles <see cref="T:Newtonsoft.Json.JsonSerializer"/> serialization callback events.
+ </summary>
+ <param name="o">The object that raised the callback event.</param>
+ <param name="context">The streaming context.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.SerializationErrorCallback">
+ <summary>
+ Handles <see cref="T:Newtonsoft.Json.JsonSerializer"/> serialization error callback events.
+ </summary>
+ <param name="o">The object that raised the callback event.</param>
+ <param name="context">The streaming context.</param>
+ <param name="errorContext">The error context.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ExtensionDataSetter">
+ <summary>
+ Sets extension data for an object during deserialization.
+ </summary>
+ <param name="o">The object to set extension data on.</param>
+ <param name="key">The extension data key.</param>
+ <param name="value">The extension data value.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ExtensionDataGetter">
+ <summary>
+ Gets extension data for an object during serialization.
+ </summary>
+ <param name="o">The object to set extension data on.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.UnderlyingType">
+ <summary>
+ Gets the underlying type for the contract.
+ </summary>
+ <value>The underlying type for the contract.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.CreatedType">
+ <summary>
+ Gets or sets the type created during deserialization.
+ </summary>
+ <value>The type created during deserialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.IsReference">
+ <summary>
+ Gets or sets whether this type contract is serialized as a reference.
+ </summary>
+ <value>Whether this type contract is serialized as a reference.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.Converter">
+ <summary>
+ Gets or sets the default <see cref="T:Newtonsoft.Json.JsonConverter" /> for this contract.
+ </summary>
+ <value>The converter.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserializedCallbacks">
+ <summary>
+ Gets or sets all methods called immediately after deserialization of the object.
+ </summary>
+ <value>The methods called immediately after deserialization of the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserializingCallbacks">
+ <summary>
+ Gets or sets all methods called during deserialization of the object.
+ </summary>
+ <value>The methods called during deserialization of the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerializedCallbacks">
+ <summary>
+ Gets or sets all methods called after serialization of the object graph.
+ </summary>
+ <value>The methods called after serialization of the object graph.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerializingCallbacks">
+ <summary>
+ Gets or sets all methods called before serialization of the object.
+ </summary>
+ <value>The methods called before serialization of the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnErrorCallbacks">
+ <summary>
+ Gets or sets all method called when an error is thrown during the serialization of the object.
+ </summary>
+ <value>The methods called when an error is thrown during the serialization of the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreator">
+ <summary>
+ Gets or sets the default creator method used to create the object.
+ </summary>
+ <value>The default creator method used to create the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreatorNonPublic">
+ <summary>
+ Gets or sets a value indicating whether the default creator is non-public.
+ </summary>
+ <value><c>true</c> if the default object creator is non-public; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonDictionaryContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.DictionaryKeyResolver">
+ <summary>
+ Gets or sets the dictionary key resolver.
+ </summary>
+ <value>The dictionary key resolver.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.DictionaryKeyType">
+ <summary>
+ Gets the <see cref="T:System.Type"/> of the dictionary keys.
+ </summary>
+ <value>The <see cref="T:System.Type"/> of the dictionary keys.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.DictionaryValueType">
+ <summary>
+ Gets the <see cref="T:System.Type"/> of the dictionary values.
+ </summary>
+ <value>The <see cref="T:System.Type"/> of the dictionary values.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.OverrideCreator">
+ <summary>
+ Gets or sets the function used to create the object. When set this function will override <see cref="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreator"/>.
+ </summary>
+ <value>The function used to create the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.HasParameterizedCreator">
+ <summary>
+ Gets a value indicating whether the creator has a parameter with the dictionary values.
+ </summary>
+ <value><c>true</c> if the creator has a parameter with the dictionary values; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonDictionaryContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonDynamicContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonDynamicContract.Properties">
+ <summary>
+ Gets the object's properties.
+ </summary>
+ <value>The object's properties.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonDynamicContract.PropertyNameResolver">
+ <summary>
+ Gets or sets the property name resolver.
+ </summary>
+ <value>The property name resolver.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonDynamicContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonDynamicContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonISerializableContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonISerializableContract.ISerializableCreator">
+ <summary>
+ Gets or sets the <see cref="T:System.Runtime.Serialization.ISerializable"/> object constructor.
+ </summary>
+ <value>The <see cref="T:System.Runtime.Serialization.ISerializable"/> object constructor.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonISerializableContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonISerializableContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonLinqContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonLinqContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonObjectContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.MemberSerialization">
+ <summary>
+ Gets or sets the object member serialization.
+ </summary>
+ <value>The member object serialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ItemRequired">
+ <summary>
+ Gets or sets a value that indicates whether the object's properties are required.
+ </summary>
+ <value>
+ A value indicating whether the object's properties are required.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.Properties">
+ <summary>
+ Gets the object's properties.
+ </summary>
+ <value>The object's properties.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.CreatorParameters">
+ <summary>
+ Gets a collection of <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> instances that define the parameters used with <see cref="P:Newtonsoft.Json.Serialization.JsonObjectContract.OverrideCreator"/>.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.OverrideCreator">
+ <summary>
+ Gets or sets the function used to create the object. When set this function will override <see cref="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreator"/>.
+ This function is called with a collection of arguments which are defined by the <see cref="P:Newtonsoft.Json.Serialization.JsonObjectContract.CreatorParameters"/> collection.
+ </summary>
+ <value>The function used to create the object.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ExtensionDataSetter">
+ <summary>
+ Gets or sets the extension data setter.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ExtensionDataGetter">
+ <summary>
+ Gets or sets the extension data getter.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ExtensionDataValueType">
+ <summary>
+ Gets or sets the extension data value type.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ExtensionDataNameResolver">
+ <summary>
+ Gets or sets the extension data name resolver.
+ </summary>
+ <value>The extension data name resolver.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonObjectContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonPrimitiveContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonProperty">
+ <summary>
+ Maps a JSON property to a .NET member or constructor parameter.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.PropertyName">
+ <summary>
+ Gets or sets the name of the property.
+ </summary>
+ <value>The name of the property.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DeclaringType">
+ <summary>
+ Gets or sets the type that declared this property.
+ </summary>
+ <value>The type that declared this property.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Order">
+ <summary>
+ Gets or sets the order of serialization of a member.
+ </summary>
+ <value>The numeric order of serialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.UnderlyingName">
+ <summary>
+ Gets or sets the name of the underlying member or parameter.
+ </summary>
+ <value>The name of the underlying member or parameter.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ValueProvider">
+ <summary>
+ Gets the <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> that will get and set the <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> during serialization.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> that will get and set the <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> during serialization.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.AttributeProvider">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IAttributeProvider"/> for this property.
+ </summary>
+ <value>The <see cref="T:Newtonsoft.Json.Serialization.IAttributeProvider"/> for this property.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.PropertyType">
+ <summary>
+ Gets or sets the type of the property.
+ </summary>
+ <value>The type of the property.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Converter">
+ <summary>
+ Gets or sets the <see cref="T:Newtonsoft.Json.JsonConverter" /> for the property.
+ If set this converter takes precedence over the contract converter for the property type.
+ </summary>
+ <value>The converter.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.MemberConverter">
+ <summary>
+ Gets or sets the member converter.
+ </summary>
+ <value>The member converter.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Ignored">
+ <summary>
+ Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is ignored.
+ </summary>
+ <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Readable">
+ <summary>
+ Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is readable.
+ </summary>
+ <value><c>true</c> if readable; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Writable">
+ <summary>
+ Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is writable.
+ </summary>
+ <value><c>true</c> if writable; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.HasMemberAttribute">
+ <summary>
+ Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> has a member attribute.
+ </summary>
+ <value><c>true</c> if has a member attribute; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DefaultValue">
+ <summary>
+ Gets the default value.
+ </summary>
+ <value>The default value.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Required">
+ <summary>
+ Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is required.
+ </summary>
+ <value>A value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is required.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.IsReference">
+ <summary>
+ Gets or sets a value indicating whether this property preserves object references.
+ </summary>
+ <value>
+ <c>true</c> if this instance is reference; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.NullValueHandling">
+ <summary>
+ Gets or sets the property null value handling.
+ </summary>
+ <value>The null value handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DefaultValueHandling">
+ <summary>
+ Gets or sets the property default value handling.
+ </summary>
+ <value>The default value handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ReferenceLoopHandling">
+ <summary>
+ Gets or sets the property reference loop handling.
+ </summary>
+ <value>The reference loop handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ObjectCreationHandling">
+ <summary>
+ Gets or sets the property object creation handling.
+ </summary>
+ <value>The object creation handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.TypeNameHandling">
+ <summary>
+ Gets or sets or sets the type name handling.
+ </summary>
+ <value>The type name handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ShouldSerialize">
+ <summary>
+ Gets or sets a predicate used to determine whether the property should be serialized.
+ </summary>
+ <value>A predicate used to determine whether the property should be serialized.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ShouldDeserialize">
+ <summary>
+ Gets or sets a predicate used to determine whether the property should be deserialized.
+ </summary>
+ <value>A predicate used to determine whether the property should be deserialized.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.GetIsSpecified">
+ <summary>
+ Gets or sets a predicate used to determine whether the property should be serialized.
+ </summary>
+ <value>A predicate used to determine whether the property should be serialized.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.SetIsSpecified">
+ <summary>
+ Gets or sets an action used to set whether the property has been deserialized.
+ </summary>
+ <value>An action used to set whether the property has been deserialized.</value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonProperty.ToString">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents this instance.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that represents this instance.
+ </returns>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemConverter">
+ <summary>
+ Gets or sets the converter used when serializing the property's collection items.
+ </summary>
+ <value>The collection's items converter.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemIsReference">
+ <summary>
+ Gets or sets whether this property's collection items are serialized as a reference.
+ </summary>
+ <value>Whether this property's collection items are serialized as a reference.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemTypeNameHandling">
+ <summary>
+ Gets or sets the type name handling used when serializing the property's collection items.
+ </summary>
+ <value>The collection's items type name handling.</value>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ItemReferenceLoopHandling">
+ <summary>
+ Gets or sets the reference loop handling used when serializing the property's collection items.
+ </summary>
+ <value>The collection's items reference loop handling.</value>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonPropertyCollection">
+ <summary>
+ A collection of <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> objects.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonPropertyCollection"/> class.
+ </summary>
+ <param name="type">The type.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetKeyForItem(Newtonsoft.Json.Serialization.JsonProperty)">
+ <summary>
+ When implemented in a derived class, extracts the key from the specified element.
+ </summary>
+ <param name="item">The element from which to extract the key.</param>
+ <returns>The key for the specified element.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.AddProperty(Newtonsoft.Json.Serialization.JsonProperty)">
+ <summary>
+ Adds a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> object.
+ </summary>
+ <param name="property">The property to add to the collection.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetClosestMatchProperty(System.String)">
+ <summary>
+ Gets the closest matching <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> object.
+ First attempts to get an exact case match of <paramref name="propertyName"/> and then
+ a case insensitive match.
+ </summary>
+ <param name="propertyName">Name of the property.</param>
+ <returns>A matching property if found.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetProperty(System.String,System.StringComparison)">
+ <summary>
+ Gets a property by property name.
+ </summary>
+ <param name="propertyName">The name of the property to get.</param>
+ <param name="comparisonType">Type property name string comparison.</param>
+ <returns>A matching property if found.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.JsonStringContract">
+ <summary>
+ Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonStringContract.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonStringContract"/> class.
+ </summary>
+ <param name="underlyingType">The underlying type for the contract.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.JsonTypeReflector.CreateJsonConverterInstance(System.Type,System.Object[])">
+ <summary>
+ Lookup and create an instance of the <see cref="T:Newtonsoft.Json.JsonConverter"/> type described by the argument.
+ </summary>
+ <param name="converterType">The <see cref="T:Newtonsoft.Json.JsonConverter"/> type to create.</param>
+ <param name="converterArgs">Optional arguments to pass to an initializing constructor of the JsonConverter.
+ If <c>null</c>, the default constructor is used.</param>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.MemoryTraceWriter">
+ <summary>
+ Represents a trace writer that writes to memory. When the trace message limit is
+ reached then old trace messages will be removed as new messages are added.
+ </summary>
+ </member>
+ <member name="P:Newtonsoft.Json.Serialization.MemoryTraceWriter.LevelFilter">
+ <summary>
+ Gets the <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer.
+ For example a filter level of <see cref="F:System.Diagnostics.TraceLevel.Info"/> will exclude <see cref="F:System.Diagnostics.TraceLevel.Verbose"/> messages and include <see cref="F:System.Diagnostics.TraceLevel.Info"/>,
+ <see cref="F:System.Diagnostics.TraceLevel.Warning"/> and <see cref="F:System.Diagnostics.TraceLevel.Error"/> messages.
+ </summary>
+ <value>
+ The <see cref="T:System.Diagnostics.TraceLevel"/> that will be used to filter the trace messages passed to the writer.
+ </value>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.MemoryTraceWriter"/> class.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.Trace(System.Diagnostics.TraceLevel,System.String,System.Exception)">
+ <summary>
+ Writes the specified trace level, message and optional exception.
+ </summary>
+ <param name="level">The <see cref="T:System.Diagnostics.TraceLevel"/> at which to write this trace.</param>
+ <param name="message">The trace message.</param>
+ <param name="ex">The trace exception. This parameter is optional.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.GetTraceMessages">
+ <summary>
+ Returns an enumeration of the most recent trace messages.
+ </summary>
+ <returns>An enumeration of the most recent trace messages.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.MemoryTraceWriter.ToString">
+ <summary>
+ Returns a <see cref="T:System.String"/> of the most recent trace messages.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> of the most recent trace messages.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ObjectConstructor`1">
+ <summary>
+ Represents a method that constructs an object.
+ </summary>
+ <typeparam name="T">The object type to create.</typeparam>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.OnErrorAttribute">
+ <summary>
+ When applied to a method, specifies that the method is called when an error occurs serializing an object.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ReflectionAttributeProvider">
+ <summary>
+ Provides methods to get attributes from a <see cref="T:System.Type"/>, <see cref="T:System.Reflection.MemberInfo"/>, <see cref="T:System.Reflection.ParameterInfo"/> or <see cref="T:System.Reflection.Assembly"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ReflectionAttributeProvider.#ctor(System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ReflectionAttributeProvider"/> class.
+ </summary>
+ <param name="attributeProvider">The instance to get attributes for. This parameter should be a <see cref="T:System.Type"/>, <see cref="T:System.Reflection.MemberInfo"/>, <see cref="T:System.Reflection.ParameterInfo"/> or <see cref="T:System.Reflection.Assembly"/>.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ReflectionAttributeProvider.GetAttributes(System.Boolean)">
+ <summary>
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+ </summary>
+ <param name="inherit">When <c>true</c>, look up the hierarchy chain for the inherited custom attribute.</param>
+ <returns>A collection of <see cref="T:System.Attribute"/>s, or an empty collection.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ReflectionAttributeProvider.GetAttributes(System.Type,System.Boolean)">
+ <summary>
+ Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
+ </summary>
+ <param name="attributeType">The type of the attributes.</param>
+ <param name="inherit">When <c>true</c>, look up the hierarchy chain for the inherited custom attribute.</param>
+ <returns>A collection of <see cref="T:System.Attribute"/>s, or an empty collection.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Serialization.ReflectionValueProvider">
+ <summary>
+ Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using reflection.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.#ctor(System.Reflection.MemberInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ReflectionValueProvider"/> class.
+ </summary>
+ <param name="memberInfo">The member info.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.SetValue(System.Object,System.Object)">
+ <summary>
+ Sets the value.
+ </summary>
+ <param name="target">The target to set the value on.</param>
+ <param name="value">The value to set on the target.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.GetValue(System.Object)">
+ <summary>
+ Gets the value.
+ </summary>
+ <param name="target">The target to get the value from.</param>
+ <returns>The value.</returns>
+ </member>
+ <member name="T:Newtonsoft.Json.TypeNameAssemblyFormatHandling">
+ <summary>
+ Indicates the method that will be used during deserialization for locating and loading assemblies.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.TypeNameAssemblyFormatHandling.Simple">
+ <summary>
+ In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the <c>LoadWithPartialName</c> method of the <see cref="T:System.Reflection.Assembly"/> class is used to load the assembly.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.TypeNameAssemblyFormatHandling.Full">
+ <summary>
+ In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The <c>Load</c> method of the <see cref="T:System.Reflection.Assembly"/> class is used to load the assembly.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.StringEscapeHandling">
+ <summary>
+ Specifies how strings are escaped when writing JSON text.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.StringEscapeHandling.Default">
+ <summary>
+ Only control characters (e.g. newline) are escaped.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii">
+ <summary>
+ All non-ASCII and control characters (e.g. newline) are escaped.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.StringEscapeHandling.EscapeHtml">
+ <summary>
+ HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped.
+ </summary>
+ </member>
+ <member name="T:Newtonsoft.Json.TypeNameHandling">
+ <summary>
+ Specifies type name handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
+ </summary>
+ <remarks>
+ <see cref="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling"/> should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom <see cref="P:Newtonsoft.Json.JsonSerializer.SerializationBinder"/>
+ when deserializing with a value other than <see cref="F:Newtonsoft.Json.TypeNameHandling.None"/>.
+ </remarks>
+ </member>
+ <member name="F:Newtonsoft.Json.TypeNameHandling.None">
+ <summary>
+ Do not include the .NET type name when serializing types.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.TypeNameHandling.Objects">
+ <summary>
+ Include the .NET type name when serializing into a JSON object structure.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.TypeNameHandling.Arrays">
+ <summary>
+ Include the .NET type name when serializing into a JSON array structure.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.TypeNameHandling.All">
+ <summary>
+ Always include the .NET type name when serializing.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.TypeNameHandling.Auto">
+ <summary>
+ Include the .NET type name when the type of the object being serialized is not the same as its declared type.
+ Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON
+ you must specify a root type object with <see cref="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings)"/>
+ or <see cref="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object,System.Type)"/>.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmpty``1(System.Collections.Generic.ICollection{``0})">
+ <summary>
+ Determines whether the collection is <c>null</c> or empty.
+ </summary>
+ <param name="collection">The collection.</param>
+ <returns>
+ <c>true</c> if the collection is <c>null</c> or empty; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.AddRange``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IEnumerable{``0})">
+ <summary>
+ Adds the elements of the specified collection to the specified generic <see cref="T:System.Collections.Generic.IList`1"/>.
+ </summary>
+ <param name="initial">The list to add to.</param>
+ <param name="collection">The collection of elements to add.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(System.Object,System.Globalization.CultureInfo,System.Type)">
+ <summary>
+ Converts the value to the specified type. If the value is unable to be converted, the
+ value is checked whether it assignable to the specified type.
+ </summary>
+ <param name="initialValue">The value to convert.</param>
+ <param name="culture">The culture to use when converting.</param>
+ <param name="targetType">The type to convert or cast the value to.</param>
+ <returns>
+ The converted type. If conversion was unsuccessful, the initial value
+ is returned if assignable to the target type.
+ </returns>
+ </member>
+ <member name="F:Newtonsoft.Json.Utilities.ConvertUtils.IEEE754.MultExp64Power10">
+ <summary>
+ Exponents for both powers of 10 and 0.1
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Utilities.ConvertUtils.IEEE754.MultVal64Power10">
+ <summary>
+ Normalized powers of 10
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Utilities.ConvertUtils.IEEE754.MultVal64Power10Inv">
+ <summary>
+ Normalized powers of 0.1
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Utilities.ConvertUtils.IEEE754.MultExp64Power10By16">
+ <summary>
+ Exponents for both powers of 10^16 and 0.1^16
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Utilities.ConvertUtils.IEEE754.MultVal64Power10By16">
+ <summary>
+ Normalized powers of 10^16
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.Utilities.ConvertUtils.IEEE754.MultVal64Power10By16Inv">
+ <summary>
+ Normalized powers of 0.1^16
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.IEEE754.PackDouble(System.Boolean,System.UInt64,System.Int32)">
+ <summary>
+ Packs <paramref name="val"/>*10^<paramref name="scale"/> as 64-bit floating point value according to IEEE 754 standard
+ </summary>
+ <param name="negative">Sign</param>
+ <param name="val">Mantissa</param>
+ <param name="scale">Exponent</param>
+ <remarks>
+ Adoption of native function NumberToDouble() from coreclr sources,
+ see https://github.com/dotnet/coreclr/blob/master/src/classlibnative/bcltype/number.cpp#L451
+ </remarks>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.CallMethodWithResult(System.String,System.Dynamic.DynamicMetaObjectBinder,System.Collections.Generic.IEnumerable{System.Linq.Expressions.Expression},Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback,Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback)">
+ <summary>
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic that returns a result
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.CallMethodReturnLast(System.String,System.Dynamic.DynamicMetaObjectBinder,System.Collections.Generic.IEnumerable{System.Linq.Expressions.Expression},Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback)">
+ <summary>
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.CallMethodNoResult(System.String,System.Dynamic.DynamicMetaObjectBinder,System.Linq.Expressions.Expression[],Newtonsoft.Json.Utilities.DynamicProxyMetaObject{`0}.Fallback)">
+ <summary>
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.DynamicProxyMetaObject`1.GetRestrictions">
+ <summary>
+ Returns a Restrictions object which includes our current restrictions merged
+ with a restriction limiting our type
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetNamesAndValues``1">
+ <summary>
+ Gets a dictionary of the names and values of an <see cref="T:System.Enum"/> type.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetNamesAndValues``1(System.Type)">
+ <summary>
+ Gets a dictionary of the names and values of an Enum type.
+ </summary>
+ <param name="enumType">The enum type to get names and values for.</param>
+ <returns></returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetCollectionItemType(System.Type)">
+ <summary>
+ Gets the type of the typed collection's items.
+ </summary>
+ <param name="type">The type.</param>
+ <returns>The type of the typed collection's items.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberUnderlyingType(System.Reflection.MemberInfo)">
+ <summary>
+ Gets the member's underlying type.
+ </summary>
+ <param name="member">The member.</param>
+ <returns>The underlying type of the member.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.MemberInfo)">
+ <summary>
+ Determines whether the member is an indexed property.
+ </summary>
+ <param name="member">The member.</param>
+ <returns>
+ <c>true</c> if the member is an indexed property; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.PropertyInfo)">
+ <summary>
+ Determines whether the property is an indexed property.
+ </summary>
+ <param name="property">The property.</param>
+ <returns>
+ <c>true</c> if the property is an indexed property; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberValue(System.Reflection.MemberInfo,System.Object)">
+ <summary>
+ Gets the member's value on the object.
+ </summary>
+ <param name="member">The member.</param>
+ <param name="target">The target object.</param>
+ <returns>The member's value on the object.</returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.SetMemberValue(System.Reflection.MemberInfo,System.Object,System.Object)">
+ <summary>
+ Sets the member's value on the target object.
+ </summary>
+ <param name="member">The member.</param>
+ <param name="target">The target.</param>
+ <param name="value">The value.</param>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanReadMemberValue(System.Reflection.MemberInfo,System.Boolean)">
+ <summary>
+ Determines whether the specified MemberInfo can be read.
+ </summary>
+ <param name="member">The MemberInfo to determine whether can be read.</param>
+ /// <param name="nonPublic">if set to <c>true</c> then allow the member to be gotten non-publicly.</param>
+ <returns>
+ <c>true</c> if the specified MemberInfo can be read; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanSetMemberValue(System.Reflection.MemberInfo,System.Boolean,System.Boolean)">
+ <summary>
+ Determines whether the specified MemberInfo can be set.
+ </summary>
+ <param name="member">The MemberInfo to determine whether can be set.</param>
+ <param name="nonPublic">if set to <c>true</c> then allow the member to be set non-publicly.</param>
+ <param name="canSetReadOnly">if set to <c>true</c> then allow the member to be set if read-only.</param>
+ <returns>
+ <c>true</c> if the specified MemberInfo can be set; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.Utilities.StringBuffer">
+ <summary>
+ Builds a string. Unlike <see cref="T:System.Text.StringBuilder"/> this class lets you reuse its internal buffer.
+ </summary>
+ </member>
+ <member name="M:Newtonsoft.Json.Utilities.StringUtils.IsWhiteSpace(System.String)">
+ <summary>
+ Determines whether the string is all white space. Empty string will return <c>false</c>.
+ </summary>
+ <param name="s">The string to test whether it is all white space.</param>
+ <returns>
+ <c>true</c> if the string is all white space; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="T:Newtonsoft.Json.WriteState">
+ <summary>
+ Specifies the state of the <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.WriteState.Error">
+ <summary>
+ An exception has been thrown, which has left the <see cref="T:Newtonsoft.Json.JsonWriter"/> in an invalid state.
+ You may call the <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method to put the <see cref="T:Newtonsoft.Json.JsonWriter"/> in the <c>Closed</c> state.
+ Any other <see cref="T:Newtonsoft.Json.JsonWriter"/> method calls result in an <see cref="T:System.InvalidOperationException"/> being thrown.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.WriteState.Closed">
+ <summary>
+ The <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method has been called.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.WriteState.Object">
+ <summary>
+ An object is being written.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.WriteState.Array">
+ <summary>
+ An array is being written.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.WriteState.Constructor">
+ <summary>
+ A constructor is being written.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.WriteState.Property">
+ <summary>
+ A property is being written.
+ </summary>
+ </member>
+ <member name="F:Newtonsoft.Json.WriteState.Start">
+ <summary>
+ A <see cref="T:Newtonsoft.Json.JsonWriter"/> write method has not been called.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/OpcAccess.dll b/qqjf-Background/iWareSda_QQJF/DLL/OpcAccess.dll
new file mode 100644
index 0000000..75a1b69
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/OpcAccess.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/S7.Net.dll b/qqjf-Background/iWareSda_QQJF/DLL/S7.Net.dll
new file mode 100644
index 0000000..b4aa82b
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/S7.Net.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/WZ.Useful.Commons.dll b/qqjf-Background/iWareSda_QQJF/DLL/WZ.Useful.Commons.dll
new file mode 100644
index 0000000..6ab19a1
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/WZ.Useful.Commons.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/log4net.dll b/qqjf-Background/iWareSda_QQJF/DLL/log4net.dll
new file mode 100644
index 0000000..47cd9ad
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/log4net.dll
Binary files differ
diff --git a/qqjf-Background/iWareSda_QQJF/DLL/log4net.xml b/qqjf-Background/iWareSda_QQJF/DLL/log4net.xml
new file mode 100644
index 0000000..55a19f2
--- /dev/null
+++ b/qqjf-Background/iWareSda_QQJF/DLL/log4net.xml
@@ -0,0 +1,31814 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>log4net</name>
+ </assembly>
+ <members>
+ <member name="T:log4net.Appender.AdoNetAppender">
+ <summary>
+ Appender that logs to a database.
+ </summary>
+ <remarks>
+ <para>
+ <see cref="T:log4net.Appender.AdoNetAppender"/> appends logging events to a table within a
+ database. The appender can be configured to specify the connection
+ string by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionString"/> property.
+ The connection type (provider) can be specified by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/>
+ property. For more information on database connection strings for
+ your specific database see <a href="http://www.connectionstrings.com/">http://www.connectionstrings.com/</a>.
+ </para>
+ <para>
+ Records are written into the database either using a prepared
+ statement or a stored procedure. The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property
+ is set to <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement
+ or to <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored
+ procedure.
+ </para>
+ <para>
+ The prepared statement text or the name of the stored procedure
+ must be set in the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property.
+ </para>
+ <para>
+ The prepared statement or stored procedure can take a number
+ of parameters. Parameters are added using the <see cref="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)"/>
+ method. This adds a single <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> to the
+ ordered list of parameters. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/>
+ type may be subclassed if required to provide database specific
+ functionality. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> specifies
+ the parameter name, database type, size, and how the value should
+ be generated using a <see cref="T:log4net.Layout.ILayout"/>.
+ </para>
+ </remarks>
+ <example>
+ An example of a SQL Server table that could be logged to:
+ <code lang="SQL">
+ CREATE TABLE [dbo].[Log] (
+ [ID] [int] IDENTITY (1, 1) NOT NULL ,
+ [Date] [datetime] NOT NULL ,
+ [Thread] [varchar] (255) NOT NULL ,
+ [Level] [varchar] (20) NOT NULL ,
+ [Logger] [varchar] (255) NOT NULL ,
+ [Message] [varchar] (4000) NOT NULL
+ ) ON [PRIMARY]
+ </code>
+ </example>
+ <example>
+ An example configuration to log to the above table:
+ <code lang="XML" escaped="true">
+ <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
+ <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+ <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa"/>
+ <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
+ <parameter>
+ <parameterName value="@log_date"/>
+ <dbType value="DateTime"/>
+ <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@thread"/>
+ <dbType value="String"/>
+ <size value="255"/>
+ <layout type="log4net.Layout.PatternLayout" value="%thread"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@log_level"/>
+ <dbType value="String"/>
+ <size value="50"/>
+ <layout type="log4net.Layout.PatternLayout" value="%level"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@logger"/>
+ <dbType value="String"/>
+ <size value="255"/>
+ <layout type="log4net.Layout.PatternLayout" value="%logger"/>
+ </parameter>
+ <parameter>
+ <parameterName value="@message"/>
+ <dbType value="String"/>
+ <size value="4000"/>
+ <layout type="log4net.Layout.PatternLayout" value="%message"/>
+ </parameter>
+ </appender>
+ </code>
+ </example>
+ <author>Julian Biddle</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Lance Nehring</author>
+ </member>
+ <member name="T:log4net.Appender.BufferingAppenderSkeleton">
+ <summary>
+ Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/> that
+ buffers events in a fixed size buffer.
+ </summary>
+ <remarks>
+ <para>
+ This base class should be used by appenders that need to buffer a
+ number of events before logging them. For example the <see cref="T:log4net.Appender.AdoNetAppender"/>
+ buffers events and then submits the entire contents of the buffer to
+ the underlying database in one go.
+ </para>
+ <para>
+ Subclasses should override the <see cref="M:SendBuffer(LoggingEvent[])"/>
+ method to deliver the buffered events.
+ </para>
+ <para>The BufferingAppenderSkeleton maintains a fixed size cyclic
+ buffer of events. The size of the buffer is set using
+ the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> property.
+ </para>
+ <para>A <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> is used to inspect
+ each event as it arrives in the appender. If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/>
+ triggers, then the current buffer is sent immediately
+ (see <see cref="M:SendBuffer(LoggingEvent[])"/>). Otherwise the event
+ is stored in the buffer. For example, an evaluator can be used to
+ deliver the events immediately when an ERROR event arrives.
+ </para>
+ <para>
+ The buffering appender can be configured in a <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode.
+ By default the appender is NOT lossy. When the buffer is full all
+ the buffered events are sent with <see cref="M:SendBuffer(LoggingEvent[])"/>.
+ If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property is set to <c>true</c> then the
+ buffer will not be sent when it is full, and new events arriving
+ in the appender will overwrite the oldest event in the buffer.
+ In lossy mode the buffer will only be sent when the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/>
+ triggers. This can be useful behavior when you need to know about
+ ERROR events but not about events with a lower level, configure an
+ evaluator that will trigger when an ERROR event arrives, the whole
+ buffer will be sent which gives a history of events leading up to
+ the ERROR event.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Appender.AppenderSkeleton">
+ <summary>
+ Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ This class provides the code for common functionality, such
+ as support for threshold filtering and support for general filters.
+ </para>
+ <para>
+ Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
+ they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method
+ be called after the appenders properties have been configured.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Appender.IAppender">
+ <summary>
+ Implement this interface for your own strategies for printing log statements.
+ </summary>
+ <remarks>
+ <para>
+ Implementors should consider extending the <see cref="T:log4net.Appender.AppenderSkeleton"/>
+ class which provides a default implementation of this interface.
+ </para>
+ <para>
+ Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
+ they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method
+ be called after the appenders properties have been configured.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.IAppender.Close">
+ <summary>
+ Closes the appender and releases resources.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)">
+ <summary>
+ Log the logging event in Appender specific way.
+ </summary>
+ <param name="loggingEvent">The event to log</param>
+ <remarks>
+ <para>
+ This method is called to log a message into this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.IAppender.Name">
+ <summary>
+ Gets or sets the name of this appender.
+ </summary>
+ <value>The name of the appender.</value>
+ <remarks>
+ <para>The name uniquely identifies the appender.</para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.IBulkAppender">
+ <summary>
+ Interface for appenders that support bulk logging.
+ </summary>
+ <remarks>
+ <para>
+ This interface extends the <see cref="T:log4net.Appender.IAppender"/> interface to
+ support bulk logging of <see cref="T:log4net.Core.LoggingEvent"/> objects. Appenders
+ should only implement this interface if they can bulk log efficiently.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])">
+ <summary>
+ Log the array of logging events in Appender specific way.
+ </summary>
+ <param name="loggingEvents">The events to log</param>
+ <remarks>
+ <para>
+ This method is called to log an array of events into this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.IOptionHandler">
+ <summary>
+ Interface used to delay activate a configured object.
+ </summary>
+ <remarks>
+ <para>
+ This allows an object to defer activation of its options until all
+ options have been set. This is required for components which have
+ related options that remain ambiguous until all are set.
+ </para>
+ <para>
+ If a component implements this interface then the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method
+ must be called by the container after its all the configured properties have been set
+ and before the component can be used.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.IOptionHandler.ActivateOptions">
+ <summary>
+ Activate the options that were previously set with calls to properties.
+ </summary>
+ <remarks>
+ <para>
+ This allows an object to defer activation of its options until all
+ options have been set. This is required for components which have
+ related options that remain ambiguous until all are set.
+ </para>
+ <para>
+ If a component implements this interface then this method must be called
+ after its properties have been set before the component can be used.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferSize">
+ <summary>
+ Initial buffer size
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity">
+ <summary>
+ Maximum buffer size before it is recycled
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>Empty default constructor</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Finalize">
+ <summary>
+ Finalizes this appender by calling the implementation's
+ <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> method.
+ </summary>
+ <remarks>
+ <para>
+ If this appender has not been closed then the <c>Finalize</c> method
+ will call <see cref="M:log4net.Appender.AppenderSkeleton.Close"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Close">
+ <summary>
+ Closes the appender and release resources.
+ </summary>
+ <remarks>
+ <para>
+ Release any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ <para>
+ This method cannot be overridden by subclasses. This method
+ delegates the closing of the appender to the <see cref="M:log4net.Appender.AppenderSkeleton.OnClose"/>
+ method which must be overridden in the subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)">
+ <summary>
+ Performs threshold checks and invokes filters before
+ delegating actual logging to the subclasses specific
+ <see cref="M:Append(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ This method cannot be overridden by derived classes. A
+ derived class should override the <see cref="M:Append(LoggingEvent)"/> method
+ which is called by this method.
+ </para>
+ <para>
+ The implementation of this method is as follows:
+ </para>
+ <para>
+ <list type="bullet">
+ <item>
+ <description>
+ Checks that the severity of the <paramref name="loggingEvent"/>
+ is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
+ appender.</description>
+ </item>
+ <item>
+ <description>
+ Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the
+ <paramref name="loggingEvent"/>.
+ </description>
+ </item>
+ <item>
+ <description>
+ Calls <see cref="M:PreAppendCheck()"/> and checks that
+ it returns <c>true</c>.</description>
+ </item>
+ </list>
+ </para>
+ <para>
+ If all of the above steps succeed then the <paramref name="loggingEvent"/>
+ will be passed to the abstract <see cref="M:Append(LoggingEvent)"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])">
+ <summary>
+ Performs threshold checks and invokes filters before
+ delegating actual logging to the subclasses specific
+ <see cref="M:Append(LoggingEvent[])"/> method.
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ This method cannot be overridden by derived classes. A
+ derived class should override the <see cref="M:Append(LoggingEvent[])"/> method
+ which is called by this method.
+ </para>
+ <para>
+ The implementation of this method is as follows:
+ </para>
+ <para>
+ <list type="bullet">
+ <item>
+ <description>
+ Checks that the severity of the <paramref name="loggingEvents"/>
+ is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
+ appender.</description>
+ </item>
+ <item>
+ <description>
+ Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the
+ <paramref name="loggingEvents"/>.
+ </description>
+ </item>
+ <item>
+ <description>
+ Calls <see cref="M:PreAppendCheck()"/> and checks that
+ it returns <c>true</c>.</description>
+ </item>
+ </list>
+ </para>
+ <para>
+ If all of the above steps succeed then the <paramref name="loggingEvents"/>
+ will be passed to the <see cref="M:Append(LoggingEvent[])"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Test if the logging event should we output by this appender
+ </summary>
+ <param name="loggingEvent">the event to test</param>
+ <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>
+ <remarks>
+ <para>
+ This method checks the logging event against the threshold level set
+ on this appender and also against the filters specified on this
+ appender.
+ </para>
+ <para>
+ The implementation of this method is as follows:
+ </para>
+ <para>
+ <list type="bullet">
+ <item>
+ <description>
+ Checks that the severity of the <paramref name="loggingEvent"/>
+ is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
+ appender.</description>
+ </item>
+ <item>
+ <description>
+ Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the
+ <paramref name="loggingEvent"/>.
+ </description>
+ </item>
+ </list>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)">
+ <summary>
+ Adds a filter to the end of the filter chain.
+ </summary>
+ <param name="filter">the filter to add to this appender</param>
+ <remarks>
+ <para>
+ The Filters are organized in a linked list.
+ </para>
+ <para>
+ Setting this property causes the new filter to be pushed onto the
+ back of the filter chain.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.ClearFilters">
+ <summary>
+ Clears the filter list for this appender.
+ </summary>
+ <remarks>
+ <para>
+ Clears the filter list for this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)">
+ <summary>
+ Checks if the message level is below this appender's threshold.
+ </summary>
+ <param name="level"><see cref="T:log4net.Core.Level"/> to test against.</param>
+ <remarks>
+ <para>
+ If there is no threshold set, then the return value is always <c>true</c>.
+ </para>
+ </remarks>
+ <returns>
+ <c>true</c> if the <paramref name="level"/> meets the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/>
+ requirements of this appender.
+ </returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.OnClose">
+ <summary>
+ Is called when the appender is closed. Derived classes should override
+ this method if resources need to be released.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Subclasses of <see cref="T:log4net.Appender.AppenderSkeleton"/> should implement this method
+ to perform actual logging.
+ </summary>
+ <param name="loggingEvent">The event to append.</param>
+ <remarks>
+ <para>
+ A subclass must implement this method to perform
+ logging of the <paramref name="loggingEvent"/>.
+ </para>
+ <para>This method will be called by <see cref="M:DoAppend(LoggingEvent)"/>
+ if all the conditions listed for that method are met.
+ </para>
+ <para>
+ To restrict the logging of events in the appender
+ override the <see cref="M:PreAppendCheck()"/> method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ Append a bulk array of logging events.
+ </summary>
+ <param name="loggingEvents">the array of logging events</param>
+ <remarks>
+ <para>
+ This base class implementation calls the <see cref="M:Append(LoggingEvent)"/>
+ method for each element in the bulk array.
+ </para>
+ <para>
+ A sub class that can better process a bulk array of events should
+ override this method in addition to <see cref="M:Append(LoggingEvent)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.PreAppendCheck">
+ <summary>
+ Called before <see cref="M:Append(LoggingEvent)"/> as a precondition.
+ </summary>
+ <remarks>
+ <para>
+ This method is called by <see cref="M:DoAppend(LoggingEvent)"/>
+ before the call to the abstract <see cref="M:Append(LoggingEvent)"/> method.
+ </para>
+ <para>
+ This method can be overridden in a subclass to extend the checks
+ made before the event is passed to the <see cref="M:Append(LoggingEvent)"/> method.
+ </para>
+ <para>
+ A subclass should ensure that they delegate this call to
+ this base class if it is overridden.
+ </para>
+ </remarks>
+ <returns><c>true</c> if the call to <see cref="M:Append(LoggingEvent)"/> should proceed.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string.
+ </summary>
+ <param name="loggingEvent">The event to render.</param>
+ <returns>The event rendered as a string.</returns>
+ <remarks>
+ <para>
+ Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to
+ a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/>
+ set to render the <paramref name="loggingEvent"/> to
+ a string.
+ </para>
+ <para>If there is exception data in the logging event and
+ the layout does not process the exception, this method
+ will append the exception text to the rendered string.
+ </para>
+ <para>
+ Where possible use the alternative version of this method
+ <see cref="M:RenderLoggingEvent(TextWriter,LoggingEvent)"/>.
+ That method streams the rendering onto an existing Writer
+ which can give better performance if the caller already has
+ a <see cref="T:System.IO.TextWriter"/> open and ready for writing.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)">
+ <summary>
+ Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string.
+ </summary>
+ <param name="loggingEvent">The event to render.</param>
+ <param name="writer">The TextWriter to write the formatted event to</param>
+ <remarks>
+ <para>
+ Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to
+ a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/>
+ set to render the <paramref name="loggingEvent"/> to
+ a string.
+ </para>
+ <para>If there is exception data in the logging event and
+ the layout does not process the exception, this method
+ will append the exception text to the rendered string.
+ </para>
+ <para>
+ Use this method in preference to <see cref="M:RenderLoggingEvent(LoggingEvent)"/>
+ where possible. If, however, the caller needs to render the event
+ to a string then <see cref="M:RenderLoggingEvent(LoggingEvent)"/> does
+ provide an efficient mechanism for doing so.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_layout">
+ <summary>
+ The layout of this appender.
+ </summary>
+ <remarks>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_name">
+ <summary>
+ The name of this appender.
+ </summary>
+ <remarks>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.Name"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_threshold">
+ <summary>
+ The level threshold of this appender.
+ </summary>
+ <remarks>
+ <para>
+ There is no level threshold filtering by default.
+ </para>
+ <para>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_errorHandler">
+ <summary>
+ It is assumed and enforced that errorHandler is never null.
+ </summary>
+ <remarks>
+ <para>
+ It is assumed and enforced that errorHandler is never null.
+ </para>
+ <para>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_headFilter">
+ <summary>
+ The first filter in the filter chain.
+ </summary>
+ <remarks>
+ <para>
+ Set to <c>null</c> initially.
+ </para>
+ <para>
+ See <see cref="T:log4net.Filter.IFilter"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_tailFilter">
+ <summary>
+ The last filter in the filter chain.
+ </summary>
+ <remarks>
+ See <see cref="T:log4net.Filter.IFilter"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_closed">
+ <summary>
+ Flag indicating if this appender is closed.
+ </summary>
+ <remarks>
+ See <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> for more information.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_recursiveGuard">
+ <summary>
+ The guard prevents an appender from repeatedly calling its own DoAppend method
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.m_renderWriter">
+ <summary>
+ StringWriter used to render events
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AppenderSkeleton.declaringType">
+ <summary>
+ The fully qualified type of the AppenderSkeleton class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.Threshold">
+ <summary>
+ Gets or sets the threshold <see cref="T:log4net.Core.Level"/> of this appender.
+ </summary>
+ <value>
+ The threshold <see cref="T:log4net.Core.Level"/> of the appender.
+ </value>
+ <remarks>
+ <para>
+ All log events with lower level than the threshold level are ignored
+ by the appender.
+ </para>
+ <para>
+ In configuration files this option is specified by setting the
+ value of the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> option to a level
+ string, such as "DEBUG", "INFO" and so on.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.ErrorHandler">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Core.IErrorHandler"/> for this appender.
+ </summary>
+ <value>The <see cref="T:log4net.Core.IErrorHandler"/> of the appender</value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Appender.AppenderSkeleton"/> provides a default
+ implementation for the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.FilterHead">
+ <summary>
+ The filter chain.
+ </summary>
+ <value>The head of the filter chain filter chain.</value>
+ <remarks>
+ <para>
+ Returns the head Filter. The Filters are organized in a linked list
+ and so all Filters on this Appender are available through the result.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.Layout">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Layout.ILayout"/> for this appender.
+ </summary>
+ <value>The layout of the appender.</value>
+ <remarks>
+ <para>
+ See <see cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/> for more information.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.Name">
+ <summary>
+ Gets or sets the name of this appender.
+ </summary>
+ <value>The name of the appender.</value>
+ <remarks>
+ <para>
+ The name uniquely identifies the appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AppenderSkeleton.RequiresLayout">
+ <summary>
+ Tests if this appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
+ </summary>
+ <remarks>
+ <para>
+ In the rather exceptional case, where the appender
+ implementation admits a layout but can also work without it,
+ then the appender should return <c>true</c>.
+ </para>
+ <para>
+ This default implementation always returns <c>false</c>.
+ </para>
+ </remarks>
+ <returns>
+ <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.
+ </returns>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE">
+ <summary>
+ The default buffer size.
+ </summary>
+ <remarks>
+ The default size of the cyclic buffer used to store events.
+ This is set to 512 by default.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Protected default constructor to allow subclassing.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class.
+ </summary>
+ <param name="eventMustBeFixed">the events passed through this appender must be
+ fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>
+ <remarks>
+ <para>
+ Protected constructor to allow subclassing.
+ </para>
+ <para>
+ The <paramref name="eventMustBeFixed"/> should be set if the subclass
+ expects the events delivered to be fixed even if the
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to zero, i.e. when no buffering occurs.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush">
+ <summary>
+ Flush the currently buffered events
+ </summary>
+ <remarks>
+ <para>
+ Flushes any events that have been buffered.
+ </para>
+ <para>
+ If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents
+ of the buffer will NOT be flushed to the appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)">
+ <summary>
+ Flush the currently buffered events
+ </summary>
+ <param name="flushLossyBuffer">set to <c>true</c> to flush the buffer of lossy events</param>
+ <remarks>
+ <para>
+ Flushes events that have been buffered. If <paramref name="flushLossyBuffer"/> is
+ <c>false</c> then events will only be flushed if this buffer is non-lossy mode.
+ </para>
+ <para>
+ If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents
+ of the buffer will only be flushed if <paramref name="flushLossyBuffer"/> is <c>true</c>.
+ In this case the contents of the buffer will be tested against the
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator"/> and if triggering will be output. All other buffered
+ events will be discarded.
+ </para>
+ <para>
+ If <paramref name="flushLossyBuffer"/> is <c>true</c> then the buffer will always
+ be emptied by calling this method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.OnClose">
+ <summary>
+ Close this appender instance.
+ </summary>
+ <remarks>
+ <para>
+ Close this appender instance. If this appender is marked
+ as not <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> then the remaining events in
+ the buffer must be sent when the appender is closed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>
+ Stores the <paramref name="loggingEvent"/> in the cyclic buffer.
+ </para>
+ <para>
+ The buffer will be sent (i.e. passed to the <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/>
+ method) if one of the following conditions is met:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>The cyclic buffer is full and this appender is
+ marked as not lossy (see <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/>)</description>
+ </item>
+ <item>
+ <description>An <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> is set and
+ it is triggered for the <paramref name="loggingEvent"/>
+ specified.</description>
+ </item>
+ </list>
+ <para>
+ Before the event is stored in the buffer it is fixed
+ (see <see cref="M:LoggingEvent.FixVolatileData(FixFlags)"/>) to ensure that
+ any data referenced by the event will be valid when the buffer
+ is processed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)">
+ <summary>
+ Sends the contents of the buffer.
+ </summary>
+ <param name="firstLoggingEvent">The first logging event.</param>
+ <param name="buffer">The buffer containing the events that need to be send.</param>
+ <remarks>
+ <para>
+ The subclass must override <see cref="M:SendBuffer(LoggingEvent[])"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Sends the events.
+ </summary>
+ <param name="events">The events that need to be send.</param>
+ <remarks>
+ <para>
+ The subclass must override this method to process the buffered events.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize">
+ <summary>
+ The size of the cyclic buffer used to hold the logging events.
+ </summary>
+ <remarks>
+ Set to <see cref="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE"/> by default.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_cb">
+ <summary>
+ The cyclic buffer used to store the logging events.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator">
+ <summary>
+ The triggering event evaluator that causes the buffer to be sent immediately.
+ </summary>
+ <remarks>
+ The object that is used to determine if an event causes the entire
+ buffer to be sent immediately. This field can be <c>null</c>, which
+ indicates that event triggering is not to be done. The evaluator
+ can be set using the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> property. If this appender
+ has the <see cref="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy"/> (<see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property) set to
+ <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be set.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy">
+ <summary>
+ Indicates if the appender should overwrite events in the cyclic buffer
+ when it becomes full, or if the buffer should be flushed when the
+ buffer is full.
+ </summary>
+ <remarks>
+ If this field is set to <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must
+ be set.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator">
+ <summary>
+ The triggering event evaluator filters discarded events.
+ </summary>
+ <remarks>
+ The object that is used to determine if an event that is discarded should
+ really be discarded or if it should be sent to the appenders.
+ This field can be <c>null</c>, which indicates that all discarded events will
+ be discarded.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags">
+ <summary>
+ Value indicating which fields in the event should be fixed
+ </summary>
+ <remarks>
+ By default all fields are fixed
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed">
+ <summary>
+ The events delivered to the subclass must be fixed.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.Lossy">
+ <summary>
+ Gets or sets a value that indicates whether the appender is lossy.
+ </summary>
+ <value>
+ <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ This appender uses a buffer to store logging events before
+ delivering them. A triggering event causes the whole buffer
+ to be send to the remote sink. If the buffer overruns before
+ a triggering event then logging events could be lost. Set
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> to <c>false</c> to prevent logging events
+ from being lost.
+ </para>
+ <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize">
+ <summary>
+ Gets or sets the size of the cyclic buffer used to hold the
+ logging events.
+ </summary>
+ <value>
+ The size of the cyclic buffer used to hold the logging events.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option takes a positive integer
+ representing the maximum number of logging events to collect in
+ a cyclic buffer. When the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is reached,
+ oldest events are deleted as new events are added to the
+ buffer. By default the size of the cyclic buffer is 512 events.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to a value less than
+ or equal to 1 then no buffering will occur. The logging event
+ will be delivered synchronously (depending on the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/>
+ and <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> properties). Otherwise the event will
+ be buffered.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the
+ buffer to be sent immediately.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the buffer to be
+ sent immediately.
+ </value>
+ <remarks>
+ <para>
+ The evaluator will be called for each event that is appended to this
+ appender. If the evaluator triggers then the current buffer will
+ immediately be sent (see <see cref="M:SendBuffer(LoggingEvent[])"/>).
+ </para>
+ <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator">
+ <summary>
+ Gets or sets the value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use.
+ </summary>
+ <value>
+ The value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use.
+ </value>
+ <remarks>
+ <para>
+ The evaluator will be called for each event that is discarded from this
+ appender. If the evaluator triggers then the current buffer will immediately
+ be sent (see <see cref="M:SendBuffer(LoggingEvent[])"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData">
+ <summary>
+ Gets or sets a value indicating if only part of the logging event data
+ should be fixed.
+ </summary>
+ <value>
+ <c>true</c> if the appender should only fix part of the logging event
+ data, otherwise <c>false</c>. The default is <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ Setting this property to <c>true</c> will cause only part of the
+ event data to be fixed and serialized. This will improve performance.
+ </para>
+ <para>
+ See <see cref="M:LoggingEvent.FixVolatileData(FixFlags)"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.BufferingAppenderSkeleton.Fix">
+ <summary>
+ Gets or sets a the fields that will be fixed in the event
+ </summary>
+ <value>
+ The event fields that will be fixed before the event is buffered
+ </value>
+ <remarks>
+ <para>
+ The logging event needs to have certain thread specific values
+ captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/>
+ for details.
+ </para>
+ </remarks>
+ <seealso cref="P:log4net.Core.LoggingEvent.Fix"/>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppender"/> class.
+ </summary>
+ <remarks>
+ Public default constructor to initialize a new instance of this class.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.OnClose">
+ <summary>
+ Override the parent method to close the database
+ </summary>
+ <remarks>
+ <para>
+ Closes the database command and database connection.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Inserts the events into the database.
+ </summary>
+ <param name="events">The events to insert into the database.</param>
+ <remarks>
+ <para>
+ Insert all the events specified in the <paramref name="events"/>
+ array into the database.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)">
+ <summary>
+ Adds a parameter to the command.
+ </summary>
+ <param name="parameter">The parameter to add to the command.</param>
+ <remarks>
+ <para>
+ Adds a parameter to the ordered list of command parameters.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])">
+ <summary>
+ Writes the events to the database using the transaction specified.
+ </summary>
+ <param name="dbTran">The transaction that the events will be executed under.</param>
+ <param name="events">The array of events to insert into the database.</param>
+ <remarks>
+ <para>
+ The transaction argument can be <c>null</c> if the appender has been
+ configured not to use transactions. See <see cref="P:log4net.Appender.AdoNetAppender.UseTransactions"/>
+ property for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)">
+ <summary>
+ Formats the log message into database statement text.
+ </summary>
+ <param name="logEvent">The event being logged.</param>
+ <remarks>
+ This method can be overridden by subclasses to provide
+ more control over the format of the database statement.
+ </remarks>
+ <returns>
+ Text that can be passed to a <see cref="T:System.Data.IDbCommand"/>.
+ </returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)">
+ <summary>
+ Creates an <see cref="T:System.Data.IDbConnection"/> instance used to connect to the database.
+ </summary>
+ <remarks>
+ This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).
+ </remarks>
+ <param name="connectionType">The <see cref="T:System.Type"/> of the <see cref="T:System.Data.IDbConnection"/> object.</param>
+ <param name="connectionString">The connectionString output from the ResolveConnectionString method.</param>
+ <returns>An <see cref="T:System.Data.IDbConnection"/> instance with a valid connection string.</returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.ResolveConnectionString(System.String@)">
+ <summary>
+ Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey
+ property.
+ </summary>
+ <remarks>
+ ConnectiongStringName is only supported on .NET 2.0 and higher.
+ </remarks>
+ <param name="connectionStringContext">Additional information describing the connection string.</param>
+ <returns>A connection string used to connect to the database.</returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.ResolveConnectionType">
+ <summary>
+ Retrieves the class type of the ADO.NET provider.
+ </summary>
+ <remarks>
+ <para>
+ Gets the Type of the ADO.NET provider to use to connect to the
+ database. This method resolves the type specified in the
+ <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> property.
+ </para>
+ <para>
+ Subclasses can override this method to return a different type
+ if necessary.
+ </para>
+ </remarks>
+ <returns>The <see cref="T:System.Type"/> of the ADO.NET provider</returns>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand">
+ <summary>
+ Prepares the database command and initialize the parameters.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection">
+ <summary>
+ Connects to the database.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)">
+ <summary>
+ Cleanup the existing command.
+ </summary>
+ <param name="ignoreException">
+ If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.
+ </param>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppender.DiposeConnection">
+ <summary>
+ Cleanup the existing connection.
+ </summary>
+ <remarks>
+ Calls the IDbConnection's <see cref="M:System.Data.IDbConnection.Close"/> method.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_usePreparedCommand">
+ <summary>
+ Flag to indicate if we are using a command object
+ </summary>
+ <remarks>
+ <para>
+ Set to <c>true</c> when the appender is to use a prepared
+ statement or stored procedure to insert into the database.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_parameters">
+ <summary>
+ The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects.
+ </summary>
+ <remarks>
+ <para>
+ The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_dbConnection">
+ <summary>
+ The <see cref="T:System.Data.IDbConnection"/> that will be used
+ to insert logging events into a database.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_dbCommand">
+ <summary>
+ The database command.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_connectionString">
+ <summary>
+ Database connection string.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_appSettingsKey">
+ <summary>
+ The appSettings key from App.Config that contains the connection string.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_connectionStringName">
+ <summary>
+ The connectionStrings key from App.Config that contains the connection string.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_connectionType">
+ <summary>
+ String type name of the <see cref="T:System.Data.IDbConnection"/> type name.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_commandText">
+ <summary>
+ The text of the command.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_commandType">
+ <summary>
+ The command type.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_useTransactions">
+ <summary>
+ Indicates whether to use transactions when writing to the database.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.m_reconnectOnError">
+ <summary>
+ Indicates whether to use transactions when writing to the database.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppender.declaringType">
+ <summary>
+ The fully qualified type of the AdoNetAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ConnectionString">
+ <summary>
+ Gets or sets the database connection string that is used to connect to
+ the database.
+ </summary>
+ <value>
+ The database connection string used to connect to the database.
+ </value>
+ <remarks>
+ <para>
+ The connections string is specific to the connection type.
+ See <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> for more information.
+ </para>
+ </remarks>
+ <example>Connection string for MS Access via ODBC:
+ <code>"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb"</code>
+ </example>
+ <example>Another connection string for MS Access via ODBC:
+ <code>"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;"</code>
+ </example>
+ <example>Connection string for MS Access via OLE DB:
+ <code>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;"</code>
+ </example>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.AppSettingsKey">
+ <summary>
+ The appSettings key from App.Config that contains the connection string.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ConnectionStringName">
+ <summary>
+ The connectionStrings key from App.Config that contains the connection string.
+ </summary>
+ <remarks>
+ This property requires at least .NET 2.0.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ConnectionType">
+ <summary>
+ Gets or sets the type name of the <see cref="T:System.Data.IDbConnection"/> connection
+ that should be created.
+ </summary>
+ <value>
+ The type name of the <see cref="T:System.Data.IDbConnection"/> connection.
+ </value>
+ <remarks>
+ <para>
+ The type name of the ADO.NET provider to use.
+ </para>
+ <para>
+ The default is to use the OLE DB provider.
+ </para>
+ </remarks>
+ <example>Use the OLE DB Provider. This is the default value.
+ <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
+ </example>
+ <example>Use the MS SQL Server Provider.
+ <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
+ </example>
+ <example>Use the ODBC Provider.
+ <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>
+ This is an optional package that you can download from
+ <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a>
+ search for <b>ODBC .NET Data Provider</b>.
+ </example>
+ <example>Use the Oracle Provider.
+ <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
+ This is an optional package that you can download from
+ <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a>
+ search for <b>.NET Managed Provider for Oracle</b>.
+ </example>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.CommandText">
+ <summary>
+ Gets or sets the command text that is used to insert logging events
+ into the database.
+ </summary>
+ <value>
+ The command text used to insert logging events into the database.
+ </value>
+ <remarks>
+ <para>
+ Either the text of the prepared statement or the
+ name of the stored procedure to execute to write into
+ the database.
+ </para>
+ <para>
+ The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property determines if
+ this text is a prepared statement or a stored procedure.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.CommandType">
+ <summary>
+ Gets or sets the command type to execute.
+ </summary>
+ <value>
+ The command type to execute.
+ </value>
+ <remarks>
+ <para>
+ This value may be either <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify
+ that the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> is a prepared statement to execute,
+ or <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the
+ <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property is the name of a stored procedure
+ to execute.
+ </para>
+ <para>
+ The default value is <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.UseTransactions">
+ <summary>
+ Should transactions be used to insert logging events in the database.
+ </summary>
+ <value>
+ <c>true</c> if transactions should be used to insert logging events in
+ the database, otherwise <c>false</c>. The default value is <c>true</c>.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets a value that indicates whether transactions should be used
+ to insert logging events in the database.
+ </para>
+ <para>
+ When set a single transaction will be used to insert the buffered events
+ into the database. Otherwise each event will be inserted without using
+ an explicit transaction.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.ReconnectOnError">
+ <summary>
+ Should this appender try to reconnect to the database on error.
+ </summary>
+ <value>
+ <c>true</c> if the appender should try to reconnect to the database after an
+ error has occurred, otherwise <c>false</c>. The default value is <c>false</c>,
+ i.e. not to try to reconnect.
+ </value>
+ <remarks>
+ <para>
+ The default behaviour is for the appender not to try to reconnect to the
+ database if an error occurs. Subsequent logging events are discarded.
+ </para>
+ <para>
+ To force the appender to attempt to reconnect to the database set this
+ property to <c>true</c>.
+ </para>
+ <note>
+ When the appender attempts to connect to the database there may be a
+ delay of up to the connection timeout specified in the connection string.
+ This delay will block the calling application's thread.
+ Until the connection can be reestablished this potential delay may occur multiple times.
+ </note>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppender.Connection">
+ <summary>
+ Gets or sets the underlying <see cref="T:System.Data.IDbConnection"/>.
+ </summary>
+ <value>
+ The underlying <see cref="T:System.Data.IDbConnection"/>.
+ </value>
+ <remarks>
+ <see cref="T:log4net.Appender.AdoNetAppender"/> creates a <see cref="T:System.Data.IDbConnection"/> to insert
+ logging events into a database. Classes deriving from <see cref="T:log4net.Appender.AdoNetAppender"/>
+ can use this property to get or set this <see cref="T:System.Data.IDbConnection"/>. Use the
+ underlying <see cref="T:System.Data.IDbConnection"/> returned from <see cref="P:log4net.Appender.AdoNetAppender.Connection"/> if
+ you require access beyond that which <see cref="T:log4net.Appender.AdoNetAppender"/> provides.
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.AdoNetAppenderParameter">
+ <summary>
+ Parameter type used by the <see cref="T:log4net.Appender.AdoNetAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ This class provides the basic database parameter properties
+ as defined by the <see cref="T:System.Data.IDbDataParameter"/> interface.
+ </para>
+ <para>This type can be subclassed to provide database specific
+ functionality. The two methods that are called externally are
+ <see cref="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)"/> and <see cref="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppenderParameter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> class.
+ </summary>
+ <remarks>
+ Default constructor for the AdoNetAppenderParameter class.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)">
+ <summary>
+ Prepare the specified database command object.
+ </summary>
+ <param name="command">The command to prepare.</param>
+ <remarks>
+ <para>
+ Prepares the database command object by adding
+ this parameter to its collection of parameters.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)">
+ <summary>
+ Renders the logging event and set the parameter value in the command.
+ </summary>
+ <param name="command">The command containing the parameter.</param>
+ <param name="loggingEvent">The event to be rendered.</param>
+ <remarks>
+ <para>
+ Renders the logging event using this parameters layout
+ object. Sets the value of the parameter on the command object.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_parameterName">
+ <summary>
+ The name of this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_dbType">
+ <summary>
+ The database type for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_inferType">
+ <summary>
+ Flag to infer type rather than use the DbType
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_precision">
+ <summary>
+ The precision for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_scale">
+ <summary>
+ The scale for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_size">
+ <summary>
+ The size for this parameter.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AdoNetAppenderParameter.m_layout">
+ <summary>
+ The <see cref="T:log4net.Layout.IRawLayout"/> to use to render the
+ logging event into an object for this parameter.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.ParameterName">
+ <summary>
+ Gets or sets the name of this parameter.
+ </summary>
+ <value>
+ The name of this parameter.
+ </value>
+ <remarks>
+ <para>
+ The name of this parameter. The parameter name
+ must match up to a named parameter to the SQL stored procedure
+ or prepared statement.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.DbType">
+ <summary>
+ Gets or sets the database type for this parameter.
+ </summary>
+ <value>
+ The database type for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The database type for this parameter. This property should
+ be set to the database type from the <see cref="P:log4net.Appender.AdoNetAppenderParameter.DbType"/>
+ enumeration. See <see cref="P:System.Data.IDataParameter.DbType"/>.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the type from the value.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDataParameter.DbType"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Precision">
+ <summary>
+ Gets or sets the precision for this parameter.
+ </summary>
+ <value>
+ The precision for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The maximum number of digits used to represent the Value.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the precision from the value.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDbDataParameter.Precision"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Scale">
+ <summary>
+ Gets or sets the scale for this parameter.
+ </summary>
+ <value>
+ The scale for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The number of decimal places to which Value is resolved.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the scale from the value.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDbDataParameter.Scale"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Size">
+ <summary>
+ Gets or sets the size for this parameter.
+ </summary>
+ <value>
+ The size for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The maximum size, in bytes, of the data within the column.
+ </para>
+ <para>
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the size from the value.
+ </para>
+ <para>
+ For BLOB data types like VARCHAR(max) it may be impossible to infer the value automatically, use -1 as the size in this case.
+ </para>
+ </remarks>
+ <seealso cref="P:System.Data.IDbDataParameter.Size"/>
+ </member>
+ <member name="P:log4net.Appender.AdoNetAppenderParameter.Layout">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Layout.IRawLayout"/> to use to
+ render the logging event into an object for this
+ parameter.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Layout.IRawLayout"/> used to render the
+ logging event into an object for this parameter.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Layout.IRawLayout"/> that renders the value for this
+ parameter.
+ </para>
+ <para>
+ The <see cref="T:log4net.Layout.RawLayoutConverter"/> can be used to adapt
+ any <see cref="T:log4net.Layout.ILayout"/> into a <see cref="T:log4net.Layout.IRawLayout"/>
+ for use in the property.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender">
+ <summary>
+ Appends logging events to the terminal using ANSI color escape sequences.
+ </summary>
+ <remarks>
+ <para>
+ AnsiColorTerminalAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific level of message to be set.
+ </para>
+ <note>
+ This appender expects the terminal to understand the VT100 control set
+ in order to interpret the color codes. If the terminal or console does not
+ understand the control codes the behavior is not defined.
+ </note>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ NOTE: This appender writes each message to the <c>System.Console.Out</c> or
+ <c>System.Console.Error</c> that is set at the time the event is appended.
+ Therefore it is possible to programmatically redirect the output of this appender
+ (for example NUnit does this to capture program output). While this is the desired
+ behavior of this appender it may have security implications in your application.
+ </para>
+ <para>
+ When configuring the ANSI colored terminal appender, a mapping should be
+ specified to map a logging level to a color. For example:
+ </para>
+ <code lang="XML" escaped="true">
+ <mapping>
+ <level value="ERROR"/>
+ <foreColor value="White"/>
+ <backColor value="Red"/>
+ <attributes value="Bright,Underscore"/>
+ </mapping>
+ <mapping>
+ <level value="DEBUG"/>
+ <backColor value="Green"/>
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level and ForeColor and BackColor can be any
+ of the following values:
+ <list type="bullet">
+ <item><term>Blue</term><description></description></item>
+ <item><term>Green</term><description></description></item>
+ <item><term>Red</term><description></description></item>
+ <item><term>White</term><description></description></item>
+ <item><term>Yellow</term><description></description></item>
+ <item><term>Purple</term><description></description></item>
+ <item><term>Cyan</term><description></description></item>
+ </list>
+ These color values cannot be combined together to make new colors.
+ </para>
+ <para>
+ The attributes can be any combination of the following:
+ <list type="bullet">
+ <item><term>Bright</term><description>foreground is brighter</description></item>
+ <item><term>Dim</term><description>foreground is dimmer</description></item>
+ <item><term>Underscore</term><description>message is underlined</description></item>
+ <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>
+ <item><term>Reverse</term><description>foreground and background are reversed</description></item>
+ <item><term>Hidden</term><description>output is hidden</description></item>
+ <item><term>Strikethrough</term><description>message has a line through it</description></item>
+ </list>
+ While any of these attributes may be combined together not all combinations
+ work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes
+ no sense.
+ </para>
+ </remarks>
+ <author>Patrick Wagstrom</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes">
+ <summary>
+ Ansi code to reset terminal
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)">
+ <summary>
+ Add a mapping of level to color
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors"/> mapping to this appender.
+ Each mapping defines the foreground and background colours
+ for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to color mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream">
+ <summary>
+ Flag to write output to the error stream rather than the standard output stream
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to color value
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes">
+ <summary>
+ The enum of possible display attributes
+ </summary>
+ <remarks>
+ <para>
+ The following flags can be combined together to
+ form the ANSI color attributes.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright">
+ <summary>
+ text is bright
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim">
+ <summary>
+ text is dim
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore">
+ <summary>
+ text is underlined
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink">
+ <summary>
+ text is blinking
+ </summary>
+ <remarks>
+ Not all terminals support this attribute
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse">
+ <summary>
+ text and background colors are reversed
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden">
+ <summary>
+ text is hidden
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough">
+ <summary>
+ text is displayed with a strikethrough
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Light">
+ <summary>
+ text color is light
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor">
+ <summary>
+ The enum of possible foreground or background color values for
+ use with the color mapping method
+ </summary>
+ <remarks>
+ <para>
+ The output can be in one for the following ANSI colors.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black">
+ <summary>
+ color is black
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red">
+ <summary>
+ color is red
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green">
+ <summary>
+ color is green
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow">
+ <summary>
+ color is yellow
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue">
+ <summary>
+ color is blue
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta">
+ <summary>
+ color is magenta
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan">
+ <summary>
+ color is cyan
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White">
+ <summary>
+ color is white
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and the color it should be displayed in.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Util.LevelMappingEntry">
+ <summary>
+ An entry in the <see cref="T:log4net.Util.LevelMapping"/>
+ </summary>
+ <remarks>
+ <para>
+ This is an abstract base class for types that are stored in the
+ <see cref="T:log4net.Util.LevelMapping"/> object.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Util.LevelMappingEntry.#ctor">
+ <summary>
+ Default protected constructor
+ </summary>
+ <remarks>
+ <para>
+ Default protected constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Util.LevelMappingEntry.ActivateOptions">
+ <summary>
+ Initialize any options defined on this entry
+ </summary>
+ <remarks>
+ <para>
+ Should be overridden by any classes that need to initialise based on their options
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Util.LevelMappingEntry.Level">
+ <summary>
+ The level that is the key for this mapping
+ </summary>
+ <value>
+ The <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this mapping
+ </value>
+ <remarks>
+ <para>
+ Get or set the <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this
+ mapping subclass.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions">
+ <summary>
+ Initialize the options for the object
+ </summary>
+ <remarks>
+ <para>
+ Combine the <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> together
+ and append the attributes.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor">
+ <summary>
+ The mapped foreground color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped foreground color for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor">
+ <summary>
+ The mapped background color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped background color for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes">
+ <summary>
+ The color attributes for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The color attributes for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor">
+ <summary>
+ The combined <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/>, <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> and
+ <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes"/> suitable for setting the ansi terminal color.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection">
+ <summary>
+ A strongly-typed collection of <see cref="T:log4net.Appender.IAppender"/> objects.
+ </summary>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)">
+ <summary>
+ Creates a read-only wrapper for a <c>AppenderCollection</c> instance.
+ </summary>
+ <param name="list">list to create a readonly wrapper arround</param>
+ <returns>
+ An <c>AppenderCollection</c> wrapper that is read-only.
+ </returns>
+ </member>
+ <member name="F:log4net.Appender.AppenderCollection.EmptyCollection">
+ <summary>
+ An empty readonly static AppenderCollection
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that is empty and has the default initial capacity.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that has the specified initial capacity.
+ </summary>
+ <param name="capacity">
+ The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.
+ </param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that contains elements copied from the specified <c>AppenderCollection</c>.
+ </summary>
+ <param name="c">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> array.
+ </summary>
+ <param name="a">The <see cref="T:log4net.Appender.IAppender"/> array whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)">
+ <summary>
+ Initializes a new instance of the <c>AppenderCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> collection.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)">
+ <summary>
+ Allow subclasses to avoid our default constructors
+ </summary>
+ <param name="tag"></param>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])">
+ <summary>
+ Copies the entire <c>AppenderCollection</c> to a one-dimensional
+ <see cref="T:log4net.Appender.IAppender"/> array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)">
+ <summary>
+ Copies the entire <c>AppenderCollection</c> to a one-dimensional
+ <see cref="T:log4net.Appender.IAppender"/> array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param>
+ <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)">
+ <summary>
+ Adds a <see cref="T:log4net.Appender.IAppender"/> to the end of the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to be added to the end of the <c>AppenderCollection</c>.</param>
+ <returns>The index at which the value has been added.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Clear">
+ <summary>
+ Removes all elements from the <c>AppenderCollection</c>.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:log4net.Appender.AppenderCollection"/>.
+ </summary>
+ <returns>A new <see cref="T:log4net.Appender.AppenderCollection"/> with a shallow copy of the collection data.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)">
+ <summary>
+ Determines whether a given <see cref="T:log4net.Appender.IAppender"/> is in the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to check for.</param>
+ <returns><c>true</c> if <paramref name="item"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)">
+ <summary>
+ Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Appender.IAppender"/>
+ in the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to locate in the <c>AppenderCollection</c>.</param>
+ <returns>
+ The zero-based index of the first occurrence of <paramref name="item"/>
+ in the entire <c>AppenderCollection</c>, if found; otherwise, -1.
+ </returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)">
+ <summary>
+ Inserts an element into the <c>AppenderCollection</c> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to insert.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)">
+ <summary>
+ Removes the first occurrence of a specific <see cref="T:log4net.Appender.IAppender"/> from the <c>AppenderCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to remove from the <c>AppenderCollection</c>.</param>
+ <exception cref="T:System.ArgumentException">
+ The specified <see cref="T:log4net.Appender.IAppender"/> was not found in the <c>AppenderCollection</c>.
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)">
+ <summary>
+ Removes the element at the specified index of the <c>AppenderCollection</c>.
+ </summary>
+ <param name="index">The zero-based index of the element to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the <c>AppenderCollection</c>.
+ </summary>
+ <returns>An <see cref="T:log4net.Appender.AppenderCollection.Enumerator"/> for the entire <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)">
+ <summary>
+ Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.
+ </summary>
+ <param name="x">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> array to the current <c>AppenderCollection</c>.
+ </summary>
+ <param name="x">The <see cref="T:log4net.Appender.IAppender"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> collection to the current <c>AppenderCollection</c>.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.TrimToSize">
+ <summary>
+ Sets the capacity to the actual number of elements.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ToArray">
+ <summary>
+ Return the collection elements as an array
+ </summary>
+ <returns>the array</returns>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Count">
+ <summary>
+ Gets the number of elements actually contained in the <c>AppenderCollection</c>.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IsSynchronized">
+ <summary>
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+ </summary>
+ <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Appender.IAppender"/> at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>true if the collection has a fixed size; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the IList is read-only.
+ </summary>
+ <value>true if the collection is read-only; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Capacity">
+ <summary>
+ Gets or sets the number of elements the <c>AppenderCollection</c> can contain.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator">
+ <summary>
+ Supports type-safe iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>.
+ </summary>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.Tag">
+ <summary>
+ Type visible only to our subclasses
+ Used to access protected constructor
+ </summary>
+ <exclude/>
+ </member>
+ <member name="F:log4net.Appender.AppenderCollection.Tag.Default">
+ <summary>
+ A value
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.Enumerator">
+ <summary>
+ Supports simple iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>.
+ </summary>
+ <exclude/>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)">
+ <summary>
+ Initializes a new instance of the <c>Enumerator</c> class.
+ </summary>
+ <param name="tc"></param>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Enumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Appender.AppenderCollection.Enumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AppenderCollection.Enumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection">
+ <exclude/>
+ </member>
+ <member name="T:log4net.Appender.AspNetTraceAppender">
+ <summary>
+ <para>
+ Appends log events to the ASP.NET <see cref="T:System.Web.TraceContext"/> system.
+ </para>
+ </summary>
+ <remarks>
+ <para>
+ Diagnostic information and tracing messages that you specify are appended to the output
+ of the page that is sent to the requesting browser. Optionally, you can view this information
+ from a separate trace viewer (Trace.axd) that displays trace information for every page in a
+ given application.
+ </para>
+ <para>
+ Trace statements are processed and displayed only when tracing is enabled. You can control
+ whether tracing is displayed to a page, to the trace viewer, or both.
+ </para>
+ <para>
+ The logging event is passed to the <see cref="M:TraceContext.Write(string)"/> or
+ <see cref="M:TraceContext.Warn(string)"/> method depending on the level of the logging event.
+ The event's logger name is the default value for the category parameter of the Write/Warn method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Appender.AspNetTraceAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.AspNetTraceAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Write the logging event to the ASP.NET trace
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>
+ Write the logging event to the ASP.NET trace
+ <c>HttpContext.Current.Trace</c>
+ (<see cref="T:System.Web.TraceContext"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.AspNetTraceAppender.m_category">
+ <summary>
+ Defaults to %logger
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.AspNetTraceAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.AspNetTraceAppender.Category">
+ <summary>
+ The category parameter sent to the Trace method.
+ </summary>
+ <remarks>
+ <para>
+ Defaults to %logger which will use the logger name of the current
+ <see cref="T:log4net.Core.LoggingEvent"/> as the category parameter.
+ </para>
+ <para>
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.BufferingForwardingAppender">
+ <summary>
+ Buffers events and then forwards them to attached appenders.
+ </summary>
+ <remarks>
+ <para>
+ The events are buffered in this appender until conditions are
+ met to allow the appender to deliver the events to the attached
+ appenders. See <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> for the
+ conditions that cause the buffer to be sent.
+ </para>
+ <para>The forwarding appender can be used to specify different
+ thresholds and filters for the same appender at different locations
+ within the hierarchy.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Core.IAppenderAttachable">
+ <summary>
+ Interface for attaching appenders to objects.
+ </summary>
+ <remarks>
+ <para>
+ Interface for attaching, removing and retrieving appenders.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Attaches an appender.
+ </summary>
+ <param name="appender">The appender to add.</param>
+ <remarks>
+ <para>
+ Add the specified appender. The implementation may
+ choose to allow or deny duplicate appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.GetAppender(System.String)">
+ <summary>
+ Gets an attached appender with the specified name.
+ </summary>
+ <param name="name">The name of the appender to get.</param>
+ <returns>
+ The appender with the name specified, or <c>null</c> if no appender with the
+ specified name is found.
+ </returns>
+ <remarks>
+ <para>
+ Returns an attached appender with the <paramref name="name"/> specified.
+ If no appender with the specified name is found <c>null</c> will be
+ returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.RemoveAllAppenders">
+ <summary>
+ Removes all attached appenders.
+ </summary>
+ <remarks>
+ <para>
+ Removes and closes all attached appenders
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Removes the specified appender from the list of attached appenders.
+ </summary>
+ <param name="appender">The appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)">
+ <summary>
+ Removes the appender with the specified name from the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ <para>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.IAppenderAttachable.Appenders">
+ <summary>
+ Gets all attached appenders.
+ </summary>
+ <value>
+ A collection of attached appenders.
+ </value>
+ <remarks>
+ <para>
+ Gets a collection of attached appenders.
+ If there are no attached appenders the
+ implementation should return an empty
+ collection rather than <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.BufferingForwardingAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.OnClose">
+ <summary>
+ Closes the appender and releases resources.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Send the events.
+ </summary>
+ <param name="events">The events that need to be send.</param>
+ <remarks>
+ <para>
+ Forwards the events to the attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this
+ instance.
+ </summary>
+ <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param>
+ <remarks>
+ <para>
+ If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of
+ appenders, then it won't be added again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)">
+ <summary>
+ Looks for the appender with the specified name.
+ </summary>
+ <param name="name">The name of the appender to lookup.</param>
+ <returns>
+ The appender with the specified name, or <c>null</c>.
+ </returns>
+ <remarks>
+ <para>
+ Get the named appender attached to this buffering appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders">
+ <summary>
+ Removes all previously added appenders from this appender.
+ </summary>
+ <remarks>
+ <para>
+ This is useful when re-reading configuration information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Removes the specified appender from the list of appenders.
+ </summary>
+ <param name="appender">The appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)">
+ <summary>
+ Removes the appender with the specified name from the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl">
+ <summary>
+ Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.BufferingForwardingAppender.Appenders">
+ <summary>
+ Gets the appenders contained in this appender as an
+ <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <remarks>
+ If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/>
+ is returned.
+ </remarks>
+ <returns>
+ A collection of the appenders in this appender.
+ </returns>
+ </member>
+ <member name="T:log4net.Appender.ColoredConsoleAppender">
+ <summary>
+ Appends logging events to the console.
+ </summary>
+ <remarks>
+ <para>
+ ColoredConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific type of message to be set.
+ </para>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ NOTE: This appender writes directly to the application's attached console
+ not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.
+ The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be
+ programmatically redirected (for example NUnit does this to capture program output).
+ This appender will ignore these redirections because it needs to use Win32
+ API calls to colorize the output. To respect these redirections the <see cref="T:log4net.Appender.ConsoleAppender"/>
+ must be used.
+ </para>
+ <para>
+ When configuring the colored console appender, mapping should be
+ specified to map a logging level to a color. For example:
+ </para>
+ <code lang="XML" escaped="true">
+ <mapping>
+ <level value="ERROR"/>
+ <foreColor value="White"/>
+ <backColor value="Red, HighIntensity"/>
+ </mapping>
+ <mapping>
+ <level value="DEBUG"/>
+ <backColor value="Green"/>
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level and ForeColor and BackColor can be any
+ combination of the following values:
+ <list type="bullet">
+ <item><term>Blue</term><description></description></item>
+ <item><term>Green</term><description></description></item>
+ <item><term>Red</term><description></description></item>
+ <item><term>White</term><description></description></item>
+ <item><term>Yellow</term><description></description></item>
+ <item><term>Purple</term><description></description></item>
+ <item><term>Cyan</term><description></description></item>
+ <item><term>HighIntensity</term><description></description></item>
+ </list>
+ </para>
+ </remarks>
+ <author>Rick Hobbs</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <param name="writeToErrorStream">flag set to <c>true</c> to write to the console error stream</param>
+ <remarks>
+ When <paramref name="writeToErrorStream"/> is set to <c>true</c>, output is written to
+ the standard error output stream. Otherwise, output is written to the standard
+ output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)">
+ <summary>
+ Add a mapping of level to color - done by the config file
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.ColoredConsoleAppender.LevelColors"/> mapping to this appender.
+ Each mapping defines the foreground and background colors
+ for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to color mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream">
+ <summary>
+ Flag to write output to the error stream rather than the standard output stream
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to color value
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter">
+ <summary>
+ The console output stream writer to write to
+ </summary>
+ <remarks>
+ <para>
+ This writer is not thread safe.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.ColoredConsoleAppender.Colors">
+ <summary>
+ The enum of possible color values for use with the color mapping method
+ </summary>
+ <remarks>
+ <para>
+ The following flags can be combined together to
+ form the colors.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.ColoredConsoleAppender"/>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Blue">
+ <summary>
+ color is blue
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Green">
+ <summary>
+ color is green
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Red">
+ <summary>
+ color is red
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.White">
+ <summary>
+ color is white
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow">
+ <summary>
+ color is yellow
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Purple">
+ <summary>
+ color is purple
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan">
+ <summary>
+ color is cyan
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity">
+ <summary>
+ color is intensified
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.ColoredConsoleAppender.LevelColors">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and the color it should be displayed in.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions">
+ <summary>
+ Initialize the options for the object
+ </summary>
+ <remarks>
+ <para>
+ Combine the <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor"/> together.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor">
+ <summary>
+ The mapped foreground color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped foreground color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor">
+ <summary>
+ The mapped background color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped background color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor">
+ <summary>
+ The combined <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor"/> suitable for
+ setting the console color.
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.ConsoleAppender">
+ <summary>
+ Appends logging events to the console.
+ </summary>
+ <remarks>
+ <para>
+ ConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user.
+ </para>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ NOTE: This appender writes each message to the <c>System.Console.Out</c> or
+ <c>System.Console.Error</c> that is set at the time the event is appended.
+ Therefore it is possible to programmatically redirect the output of this appender
+ (for example NUnit does this to capture program output). While this is the desired
+ behavior of this appender it may have security implications in your application.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Appender.ConsoleAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ConsoleAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class
+ with the specified layout.
+ </summary>
+ <param name="layout">the layout to use for this appender</param>
+ <param name="writeToErrorStream">flag set to <c>true</c> to write to the console error stream</param>
+ <remarks>
+ When <paramref name="writeToErrorStream"/> is set to <c>true</c>, output is written to
+ the standard error output stream. Otherwise, output is written to the standard
+ output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ConsoleAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ConsoleAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.DebugAppender">
+ <summary>
+ Appends log events to the <see cref="T:System.Diagnostics.Debug"/> system.
+ </summary>
+ <remarks>
+ <para>
+ The application configuration file can be used to control what listeners
+ are actually used. See the MSDN documentation for the
+ <see cref="T:System.Diagnostics.Debug"/> class for details on configuring the
+ debug system.
+ </para>
+ <para>
+ Events are written using the <see cref="M:System.Diagnostics.Debug.Write(string,string)"/>
+ method. The event's logger name is passed as the value for the category name to the Write method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.DebugAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/>
+ with a specified layout.
+ </summary>
+ <param name="layout">The layout to use with this appender.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system.
+ If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is <c>true</c> then the <see cref="M:System.Diagnostics.Debug.Flush"/>
+ is called.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.DebugAppender.m_immediateFlush">
+ <summary>
+ Immediate flush means that the underlying writer or output stream
+ will be flushed at the end of each append operation.
+ </summary>
+ <remarks>
+ <para>
+ Immediate flush is slower but ensures that each append request is
+ actually written. If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is set to
+ <c>false</c>, then there is a good chance that the last few
+ logs events are not actually written to persistent media if and
+ when the application crashes.
+ </para>
+ <para>
+ The default value is <c>true</c>.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.DebugAppender.ImmediateFlush">
+ <summary>
+ Gets or sets a value that indicates whether the appender will
+ flush at the end of each write.
+ </summary>
+ <remarks>
+ <para>The default behavior is to flush at the end of each
+ write. If the option is set to<c>false</c>, then the underlying
+ stream can defer writing to physical medium to a later time.
+ </para>
+ <para>
+ Avoiding the flush operation at the end of each append results
+ in a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.DebugAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.EventLogAppender">
+ <summary>
+ Writes events to the system event log.
+ </summary>
+ <remarks>
+ <para>
+ The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.
+ See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog
+ </para>
+ <para>
+ The <c>EventID</c> of the event log entry can be
+ set using the <c>EventID</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ </para>
+ <para>
+ The <c>Category</c> of the event log entry can be
+ set using the <c>Category</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ </para>
+ <para>
+ There is a limit of 32K characters for an event log message
+ </para>
+ <para>
+ When configuring the EventLogAppender a mapping can be
+ specified to map a logging level to an event log entry type. For example:
+ </para>
+ <code lang="XML">
+ <mapping>
+ <level value="ERROR" />
+ <eventLogEntryType value="Error" />
+ </mapping>
+ <mapping>
+ <level value="DEBUG" />
+ <eventLogEntryType value="Information" />
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level and eventLogEntryType can be any value
+ from the <see cref="T:System.Diagnostics.EventLogEntryType"/> enum, i.e.:
+ <list type="bullet">
+ <item><term>Error</term><description>an error event</description></item>
+ <item><term>Warning</term><description>a warning event</description></item>
+ <item><term>Information</term><description>an informational event</description></item>
+ </list>
+ </para>
+ </remarks>
+ <author>Aspi Havewala</author>
+ <author>Douglas de la Torre</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Thomas Voss</author>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class
+ with the specified <see cref="T:log4net.Layout.ILayout"/>.
+ </summary>
+ <param name="layout">The <see cref="T:log4net.Layout.ILayout"/> to use with this appender.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)">
+ <summary>
+ Add a mapping of level to <see cref="T:System.Diagnostics.EventLogEntryType"/> - done by the config file
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType"/> mapping to this appender.
+ Each mapping defines the event log entry type for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)">
+ <summary>
+ Create an event log source
+ </summary>
+ <remarks>
+ Uses different API calls under NET_2_0
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
+ method.
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>Writes the event to the system event log using the
+ <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/>.</para>
+
+ <para>If the event has an <c>EventID</c> property (see <see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ set then this integer will be used as the event log event id.</para>
+
+ <para>
+ There is a limit of 32K characters for an event log message
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)">
+ <summary>
+ Get the equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="level"/>
+ </summary>
+ <param name="level">the Level to convert to an EventLogEntryType</param>
+ <returns>The equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="level"/></returns>
+ <remarks>
+ Because there are fewer applicable <see cref="T:System.Diagnostics.EventLogEntryType"/>
+ values to use in logging levels than there are in the
+ <see cref="T:log4net.Core.Level"/> this is a one way mapping. There is
+ a loss of information during the conversion.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_logName">
+ <summary>
+ The log name is the section in the event logs where the messages
+ are stored.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_applicationName">
+ <summary>
+ Name of the application to use when logging. This appears in the
+ application column of the event log named by <see cref="F:log4net.Appender.EventLogAppender.m_logName"/>.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_machineName">
+ <summary>
+ The name of the machine which holds the event log. This is
+ currently only allowed to be '.' i.e. the current machine.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to EventLogEntryType
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_eventId">
+ <summary>
+ The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.m_category">
+ <summary>
+ The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.declaringType">
+ <summary>
+ The fully qualified type of the EventLogAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE_DEFAULT">
+ <summary>
+ The maximum size supported by default.
+ </summary>
+ <remarks>
+ http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx
+ The 32766 documented max size is two bytes shy of 32K (I'm assuming 32766
+ may leave space for a two byte null terminator of #0#0). The 32766 max
+ length is what the .NET 4.0 source code checks for, but this is WRONG!
+ Strings with a length > 31839 on Windows Vista or higher can CORRUPT
+ the event log! See: System.Diagnostics.EventLogInternal.InternalWriteEvent()
+ for the use of the 32766 max size.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE_VISTA_OR_NEWER">
+ <summary>
+ The maximum size supported by a windows operating system that is vista
+ or newer.
+ </summary>
+ <remarks>
+ See ReportEvent API:
+ http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx
+ ReportEvent's lpStrings parameter:
+ "A pointer to a buffer containing an array of
+ null-terminated strings that are merged into the message before Event Viewer
+ displays the string to the user. This parameter must be a valid pointer
+ (or NULL), even if wNumStrings is zero. Each string is limited to 31,839 characters."
+
+ Going beyond the size of 31839 will (at some point) corrupt the event log on Windows
+ Vista or higher! It may succeed for a while...but you will eventually run into the
+ error: "System.ComponentModel.Win32Exception : A device attached to the system is
+ not functioning", and the event log will then be corrupt (I was able to corrupt
+ an event log using a length of 31877 on Windows 7).
+
+ The max size for Windows Vista or higher is documented here:
+ http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx.
+ Going over this size may succeed a few times but the buffer will overrun and
+ eventually corrupt the log (based on testing).
+
+ The maxEventMsgSize size is based on the max buffer size of the lpStrings parameter of the ReportEvent API.
+ The documented max size for EventLog.WriteEntry for Windows Vista and higher is 31839, but I'm leaving room for a
+ terminator of #0#0, as we cannot see the source of ReportEvent (though we could use an API monitor to examine the
+ buffer, given enough time).
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE">
+ <summary>
+ The maximum size that the operating system supports for
+ a event log message.
+ </summary>
+ <remarks>
+ Used to determine the maximum string length that can be written
+ to the operating system event log and eventually truncate a string
+ that exceeds the limits.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.EventLogAppender.GetMaxEventLogMessageSize">
+ <summary>
+ This method determines the maximum event log message size allowed for
+ the current environment.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.LogName">
+ <summary>
+ The name of the log where messages will be stored.
+ </summary>
+ <value>
+ The string name of the log where messages will be stored.
+ </value>
+ <remarks>
+ <para>This is the name of the log as it appears in the Event Viewer
+ tree. The default value is to log into the <c>Application</c>
+ log, this is where most applications write their events. However
+ if you need a separate log for your application (or applications)
+ then you should set the <see cref="P:log4net.Appender.EventLogAppender.LogName"/> appropriately.</para>
+ <para>This should not be used to distinguish your event log messages
+ from those of other applications, the <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/>
+ property should be used to distinguish events. This property should be
+ used to group together events into a single log.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.ApplicationName">
+ <summary>
+ Property used to set the Application name. This appears in the
+ event logs when logging.
+ </summary>
+ <value>
+ The string used to distinguish events from different sources.
+ </value>
+ <remarks>
+ Sets the event log source property.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.MachineName">
+ <summary>
+ This property is used to return the name of the computer to use
+ when accessing the event logs. Currently, this is the current
+ computer, denoted by a dot "."
+ </summary>
+ <value>
+ The string name of the machine holding the event log that
+ will be logged into.
+ </value>
+ <remarks>
+ This property cannot be changed. It is currently set to '.'
+ i.e. the local machine. This may be changed in future.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog.
+ </value>
+ <remarks>
+ <para>
+ The system security context used to write to the EventLog.
+ </para>
+ <para>
+ Unless a <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.EventId">
+ <summary>
+ Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ <remarks>
+ <para>
+ The <c>EventID</c> of the event log entry will normally be
+ set using the <c>EventID</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ This property provides the fallback value which defaults to 0.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.Category">
+ <summary>
+ Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
+ </summary>
+ <remarks>
+ <para>
+ The <c>Category</c> of the event log entry will normally be
+ set using the <c>Category</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
+ on the <see cref="T:log4net.Core.LoggingEvent"/>.
+ This property provides the fallback value which defaults to 0.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and its event log entry type.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType">
+ <summary>
+ The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender">
+ <summary>
+ Appends logging events to a file.
+ </summary>
+ <remarks>
+ <para>
+ Logging events are sent to the file specified by
+ the <see cref="P:log4net.Appender.FileAppender.File"/> property.
+ </para>
+ <para>
+ The file can be opened in either append or overwrite mode
+ by specifying the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property.
+ If the file path is relative it is taken as relative from
+ the application base directory. The file encoding can be
+ specified by setting the <see cref="P:log4net.Appender.FileAppender.Encoding"/> property.
+ </para>
+ <para>
+ The layout's <see cref="P:log4net.Layout.ILayout.Header"/> and <see cref="P:log4net.Layout.ILayout.Footer"/>
+ values will be written each time the file is opened and closed
+ respectively. If the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is <see langword="true"/>
+ then the file may contain multiple copies of the header and footer.
+ </para>
+ <para>
+ This appender will first try to open the file for writing when <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/>
+ is called. This will typically be during configuration.
+ If the file cannot be opened for writing the appender will attempt
+ to open the file again each time a message is logged to the appender.
+ If the file cannot be opened for writing when a message is logged then
+ the message will be discarded by this appender.
+ </para>
+ <para>
+ The <see cref="T:log4net.Appender.FileAppender"/> supports pluggable file locking models via
+ the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> property.
+ The default behavior, implemented by <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>
+ is to obtain an exclusive write lock on the file until this appender is closed.
+ The alternative models only hold a
+ write lock while the appender is writing a logging event (<see cref="T:log4net.Appender.FileAppender.MinimalLock"/>)
+ or synchronize by using a named system wide Mutex (<see cref="T:log4net.Appender.FileAppender.InterProcessLock"/>).
+ </para>
+ <para>
+ All locking strategies have issues and you should seriously consider using a different strategy that
+ avoids having multiple processes logging to the same file.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Rodrigo B. de Oliveira</author>
+ <author>Douglas de la Torre</author>
+ <author>Niall Daley</author>
+ </member>
+ <member name="T:log4net.Appender.TextWriterAppender">
+ <summary>
+ Sends logging events to a <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ An Appender that writes to a <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ <para>
+ This appender may be used stand alone if initialized with an appropriate
+ writer, however it is typically used as a base class for an appender that
+ can open a <see cref="T:System.IO.TextWriter"/> to write to.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Douglas de la Torre</author>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and
+ sets the output destination to a new <see cref="T:System.IO.StreamWriter"/> initialized
+ with the specified <see cref="T:System.IO.Stream"/>.
+ </summary>
+ <param name="layout">The layout to use with this appender.</param>
+ <param name="os">The <see cref="T:System.IO.Stream"/> to output to.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and sets
+ the output destination to the specified <see cref="T:System.IO.StreamWriter"/>.
+ </summary>
+ <param name="layout">The layout to use with this appender</param>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to output to</param>
+ <remarks>
+ The <see cref="T:System.IO.TextWriter"/> must have been previously opened.
+ </remarks>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.PreAppendCheck">
+ <summary>
+ This method determines if there is a sense in attempting to append.
+ </summary>
+ <remarks>
+ <para>
+ This method checks if an output target has been set and if a
+ layout has been set.
+ </para>
+ </remarks>
+ <returns><c>false</c> if any of the preconditions fail.</returns>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
+ method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes a log statement to the output stream if the output stream exists
+ and is writable.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent[])"/>
+ method.
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ This method writes all the bulk logged events to the output writer
+ before flushing the stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.OnClose">
+ <summary>
+ Close this appender instance. The underlying stream or writer is also closed.
+ </summary>
+ <remarks>
+ Closed appenders cannot be reused.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter">
+ <summary>
+ Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.CloseWriter">
+ <summary>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.Reset">
+ <summary>
+ Clears internal references to the underlying <see cref="T:System.IO.TextWriter"/>
+ and other variables.
+ </summary>
+ <remarks>
+ <para>
+ Subclasses can override this method for an alternate closing behavior.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.WriteFooter">
+ <summary>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.WriteHeader">
+ <summary>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TextWriterAppender.PrepareWriter">
+ <summary>
+ Called to allow a subclass to lazily initialize the writer
+ </summary>
+ <remarks>
+ <para>
+ This method is called when an event is logged and the <see cref="P:log4net.Appender.TextWriterAppender.Writer"/> or
+ <see cref="P:log4net.Appender.TextWriterAppender.QuietWriter"/> have not been set. This allows a subclass to
+ attempt to initialize the writer multiple times.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TextWriterAppender.m_qtw">
+ <summary>
+ This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
+ will be written to.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.TextWriterAppender.m_immediateFlush">
+ <summary>
+ Immediate flush means that the underlying <see cref="T:System.IO.TextWriter"/>
+ or output stream will be flushed at the end of each append operation.
+ </summary>
+ <remarks>
+ <para>
+ Immediate flush is slower but ensures that each append request is
+ actually written. If <see cref="P:log4net.Appender.TextWriterAppender.ImmediateFlush"/> is set to
+ <c>false</c>, then there is a good chance that the last few
+ logging events are not actually persisted if and when the application
+ crashes.
+ </para>
+ <para>
+ The default value is <c>true</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TextWriterAppender.declaringType">
+ <summary>
+ The fully qualified type of the TextWriterAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.ImmediateFlush">
+ <summary>
+ Gets or set whether the appender will flush at the end
+ of each append operation.
+ </summary>
+ <value>
+ <para>
+ The default behavior is to flush at the end of each
+ append operation.
+ </para>
+ <para>
+ If this option is set to <c>false</c>, then the underlying
+ stream can defer persisting the logging event to a later
+ time.
+ </para>
+ </value>
+ <remarks>
+ Avoiding the flush operation at the end of each append results in
+ a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.Writer">
+ <summary>
+ Sets the <see cref="T:System.IO.TextWriter"/> where the log output will go.
+ </summary>
+ <remarks>
+ <para>
+ The specified <see cref="T:System.IO.TextWriter"/> must be open and writable.
+ </para>
+ <para>
+ The <see cref="T:System.IO.TextWriter"/> will be closed when the appender
+ instance is closed.
+ </para>
+ <para>
+ <b>Note:</b> Logging to an unopened <see cref="T:System.IO.TextWriter"/> will fail.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.ErrorHandler">
+ <summary>
+ Gets or set the <see cref="T:log4net.Core.IErrorHandler"/> and the underlying
+ <see cref="T:log4net.Util.QuietTextWriter"/>, if any, for this appender.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.IErrorHandler"/> for this appender.
+ </value>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TextWriterAppender.QuietWriter">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
+ will be written to.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Util.QuietTextWriter"/> where logging events are written.
+ </value>
+ <remarks>
+ <para>
+ This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
+ will be written to.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)">
+ <summary>
+ Construct a new appender using the layout, file and append mode.
+ </summary>
+ <param name="layout">the layout to use with this appender</param>
+ <param name="filename">the full path to the file to write to</param>
+ <param name="append">flag to indicate if the file should be appended to</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)">
+ <summary>
+ Construct a new appender using the layout and file specified.
+ The file will be appended to.
+ </summary>
+ <param name="layout">the layout to use with this appender</param>
+ <param name="filename">the full path to the file to write to</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ActivateOptions">
+ <summary>
+ Activate the options on the file appender.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ This will cause the file to be opened.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.Reset">
+ <summary>
+ Closes any previously opened file and calls the parent's <see cref="M:log4net.Appender.TextWriterAppender.Reset"/>.
+ </summary>
+ <remarks>
+ <para>
+ Resets the filename and the file stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.PrepareWriter">
+ <summary>
+ Called to initialize the file writer
+ </summary>
+ <remarks>
+ <para>
+ Will be called for each logged message until the file is
+ successfully opened.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
+ method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes a log statement to the output stream if the output stream exists
+ and is writable.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent[])"/>
+ method.
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ Acquires the output file locks once before writing all the events to
+ the stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.WriteFooter">
+ <summary>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.WriteHeader">
+ <summary>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </summary>
+ <remarks>
+ <para>
+ Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.CloseWriter">
+ <summary>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <remarks>
+ <para>
+ Closes the underlying <see cref="T:System.IO.TextWriter"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.CloseFile">
+ <summary>
+ Closes the previously opened file.
+ </summary>
+ <remarks>
+ <para>
+ Writes the <see cref="P:log4net.Layout.ILayout.Footer"/> to the file and then
+ closes the file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)">
+ <summary>
+ Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.
+ </summary>
+ <param name="fileName">The path to the log file. Must be a fully qualified path.</param>
+ <param name="append">If true will append to fileName. Otherwise will truncate fileName</param>
+ <remarks>
+ <para>
+ Calls <see cref="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)"/> but guarantees not to throw an exception.
+ Errors are passed to the <see cref="P:log4net.Appender.TextWriterAppender.ErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)">
+ <summary>
+ Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.
+ </summary>
+ <param name="fileName">The path to the log file. Must be a fully qualified path.</param>
+ <param name="append">If true will append to fileName. Otherwise will truncate fileName</param>
+ <remarks>
+ <para>
+ If there was already an opened file, then the previous file
+ is closed first.
+ </para>
+ <para>
+ This method will ensure that the directory structure
+ for the <paramref name="fileName"/> specified exists.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)">
+ <summary>
+ Sets the quiet writer used for file output
+ </summary>
+ <param name="fileStream">the file stream that has been opened for writing</param>
+ <remarks>
+ <para>
+ This implementation of <see cref="M:SetQWForFiles(Stream)"/> creates a <see cref="T:System.IO.StreamWriter"/>
+ over the <paramref name="fileStream"/> and passes it to the
+ <see cref="M:SetQWForFiles(TextWriter)"/> method.
+ </para>
+ <para>
+ This method can be overridden by sub classes that want to wrap the
+ <see cref="T:System.IO.Stream"/> in some way, for example to encrypt the output
+ data using a <c>System.Security.Cryptography.CryptoStream</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)">
+ <summary>
+ Sets the quiet writer being used.
+ </summary>
+ <param name="writer">the writer over the file stream that has been opened for writing</param>
+ <remarks>
+ <para>
+ This method can be overridden by sub classes that want to
+ wrap the <see cref="T:System.IO.TextWriter"/> in some way.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)">
+ <summary>
+ Convert a path into a fully qualified path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>The fully qualified path.</returns>
+ <remarks>
+ <para>
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_appendToFile">
+ <summary>
+ Flag to indicate if we should append to the file
+ or overwrite the file. The default is to append.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_fileName">
+ <summary>
+ The name of the log file.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_encoding">
+ <summary>
+ The encoding to use for the file stream.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_stream">
+ <summary>
+ The stream to log to. Has added locking semantics
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.m_lockingModel">
+ <summary>
+ The locking model to use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.FileAppender.declaringType">
+ <summary>
+ The fully qualified type of the FileAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.File">
+ <summary>
+ Gets or sets the path to the file that logging will be written to.
+ </summary>
+ <value>
+ The path to the file that logging will be written to.
+ </value>
+ <remarks>
+ <para>
+ If the path is relative it is taken as relative from
+ the application base directory.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.AppendToFile">
+ <summary>
+ Gets or sets a flag that indicates whether the file should be
+ appended to or overwritten.
+ </summary>
+ <value>
+ Indicates whether the file should be appended to or overwritten.
+ </value>
+ <remarks>
+ <para>
+ If the value is set to false then the file will be overwritten, if
+ it is set to true then the file will be appended to.
+ </para>
+ The default value is true.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.Encoding">
+ <summary>
+ Gets or sets <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file.
+ </value>
+ <remarks>
+ <para>
+ The default encoding set is <see cref="P:System.Text.Encoding.Default"/>
+ which is the encoding for the system's current ANSI code page.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.LockingModel">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to lock the file.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file.
+ </para>
+ <para>
+ There are three built in locking models, <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>, <see cref="T:log4net.Appender.FileAppender.MinimalLock"/> and <see cref="T:log4net.Appender.FileAppender.InterProcessLock"/> .
+ The first locks the file from the start of logging to the end, the
+ second locks only for the minimal amount of time when logging each message
+ and the last synchronizes processes using a named system wide Mutex.
+ </para>
+ <para>
+ The default locking model is the <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.LockingStream">
+ <summary>
+ Write only <see cref="T:System.IO.Stream"/> that uses the <see cref="T:log4net.Appender.FileAppender.LockingModelBase"/>
+ to manage access to an underlying resource.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)">
+ <summary>
+ True asynchronous writes are not supported, the implementation forces a synchronous write.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LogException">
+ <summary>
+ Exception base type for log4net.
+ </summary>
+ <remarks>
+ <para>
+ This type extends <see cref="T:System.ApplicationException"/>. It
+ does not add any new functionality but does differentiate the
+ type of exception being thrown.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor">
+ <summary>
+ Constructor
+ </summary>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor(System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="message">A message to include with the exception.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class with
+ the specified message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor(System.String,System.Exception)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="message">A message to include with the exception.</param>
+ <param name="innerException">A nested exception to include.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class
+ with the specified message and inner exception.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serialization constructor
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class
+ with serialized data.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.LockingModelBase">
+ <summary>
+ Locking model base class
+ </summary>
+ <remarks>
+ <para>
+ Base class for the locking models available to the <see cref="T:log4net.Appender.FileAppender"/> derived loggers.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Open the output file
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/>,
+ <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Acquire the lock on the file in preparation for writing to it.
+ Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/>
+ must be called to release the lock on the output file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock">
+ <summary>
+ Release the lock on the file
+ </summary>
+ <remarks>
+ <para>
+ Release the lock on the file. No further writes will be made to the
+ stream until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)">
+ <summary>
+ Helper method that creates a FileStream under CurrentAppender's SecurityContext.
+ </summary>
+ <remarks>
+ <para>
+ Typically called during OpenFile or AcquireLock.
+ </para>
+ <para>
+ If the directory portion of the <paramref name="filename"/> does not exist, it is created
+ via Directory.CreateDirecctory.
+ </para>
+ </remarks>
+ <param name="filename"></param>
+ <param name="append"></param>
+ <param name="fileShare"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)">
+ <summary>
+ Helper method to close <paramref name="stream"/> under CurrentAppender's SecurityContext.
+ </summary>
+ <remarks>
+ Does not set <paramref name="stream"/> to null.
+ </remarks>
+ <param name="stream"></param>
+ </member>
+ <member name="P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel
+ </summary>
+ <value>
+ The <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel
+ </value>
+ <remarks>
+ <para>
+ The file appender this locking model is attached to and working on
+ behalf of.
+ </para>
+ <para>
+ The file appender is used to locate the security context and the error handler to use.
+ </para>
+ <para>
+ The value of this property will be set before <see cref="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)"/> is
+ called.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.ExclusiveLock">
+ <summary>
+ Hold an exclusive lock on the output file
+ </summary>
+ <remarks>
+ <para>
+ Open the file once for writing and hold it open until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/> is called.
+ Maintains an exclusive lock on the file during this time.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Open the file specified and prepare for logging.
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/>,
+ <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Does nothing. The lock is already taken
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock">
+ <summary>
+ Release the lock on the file
+ </summary>
+ <remarks>
+ <para>
+ Does nothing. The lock will be released when the file is closed.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.MinimalLock">
+ <summary>
+ Acquires the file lock for each write
+ </summary>
+ <remarks>
+ <para>
+ Opens the file once for each <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>/<see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> cycle,
+ thus holding the lock for the minimal amount of time. This method of locking
+ is considerably slower than <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/> but allows
+ other processes to move/delete the log file whilst logging continues.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Prepares to open the file when the first message is logged.
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>,
+ <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.MinimalLock.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Acquire the lock on the file in preparation for writing to it.
+ Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/>
+ must be called to release the lock on the output file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock">
+ <summary>
+ Release the lock on the file
+ </summary>
+ <remarks>
+ <para>
+ Release the lock on the file. No further writes will be made to the
+ stream until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.FileAppender.InterProcessLock">
+ <summary>
+ Provides cross-process file locking.
+ </summary>
+ <author>Ron Grabowski</author>
+ <author>Steve Wranovsky</author>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
+ <summary>
+ Open the file specified and prepare for logging.
+ </summary>
+ <param name="filename">The filename to use</param>
+ <param name="append">Whether to append to the file, or overwrite</param>
+ <param name="encoding">The encoding to use</param>
+ <remarks>
+ <para>
+ Open the file specified and prepare for logging.
+ No writes will be made until <see cref="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock"/> is called.
+ Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock"/>,
+ -<see cref="M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.InterProcessLock.CloseFile"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.CloseFile">
+ <summary>
+ Close the file
+ </summary>
+ <remarks>
+ <para>
+ Close the file. No further writes will be made.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock">
+ <summary>
+ Acquire the lock on the file
+ </summary>
+ <returns>A stream that is ready to be written to.</returns>
+ <remarks>
+ <para>
+ Does nothing. The lock is already taken
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.ForwardingAppender">
+ <summary>
+ This appender forwards logging events to attached appenders.
+ </summary>
+ <remarks>
+ <para>
+ The forwarding appender can be used to specify different thresholds
+ and filters for the same appender at different locations within the hierarchy.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ForwardingAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.OnClose">
+ <summary>
+ Closes the appender and releases resources.
+ </summary>
+ <remarks>
+ <para>
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+ </para>
+ <para>
+ It is a programming error to append to a closed appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Forward the logging event to the attached appenders
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Delivers the logging event to all the attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ Forward the logging events to the attached appenders
+ </summary>
+ <param name="loggingEvents">The array of events to log.</param>
+ <remarks>
+ <para>
+ Delivers the logging events to all the attached appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)">
+ <summary>
+ Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this
+ instance.
+ </summary>
+ <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param>
+ <remarks>
+ <para>
+ If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of
+ appenders, then it won't be added again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.GetAppender(System.String)">
+ <summary>
+ Looks for the appender with the specified name.
+ </summary>
+ <param name="name">The name of the appender to lookup.</param>
+ <returns>
+ The appender with the specified name, or <c>null</c>.
+ </returns>
+ <remarks>
+ <para>
+ Get the named appender attached to this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.RemoveAllAppenders">
+ <summary>
+ Removes all previously added appenders from this appender.
+ </summary>
+ <remarks>
+ <para>
+ This is useful when re-reading configuration information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)">
+ <summary>
+ Removes the specified appender from the list of appenders.
+ </summary>
+ <param name="appender">The appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)">
+ <summary>
+ Removes the appender with the specified name from the list of appenders.
+ </summary>
+ <param name="name">The name of the appender to remove.</param>
+ <returns>The appender removed from the list</returns>
+ <remarks>
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl">
+ <summary>
+ Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.ForwardingAppender.Appenders">
+ <summary>
+ Gets the appenders contained in this appender as an
+ <see cref="T:System.Collections.ICollection"/>.
+ </summary>
+ <remarks>
+ If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/>
+ is returned.
+ </remarks>
+ <returns>
+ A collection of the appenders in this appender.
+ </returns>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender">
+ <summary>
+ Logs events to a local syslog service.
+ </summary>
+ <remarks>
+ <note>
+ This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.
+ If these functions are not available on the local system then this appender will not work!
+ </note>
+ <para>
+ The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and
+ POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.
+ </para>
+ <para>
+ This appender talks to a local syslog service. If you need to log to a remote syslog
+ daemon and you cannot configure your local syslog service to do this you may be
+ able to use the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> to log via UDP.
+ </para>
+ <para>
+ Syslog messages must have a facility and and a severity. The severity
+ is derived from the Level of the logging event.
+ The facility must be chosen from the set of defined syslog
+ <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The facilities list is predefined
+ and cannot be extended.
+ </para>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>).
+ </para>
+ </remarks>
+ <author>Rob Lyon</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class.
+ </summary>
+ <remarks>
+ This instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class is set up to write
+ to a local syslog service.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)">
+ <summary>
+ Add a mapping of level to severity
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Adds a <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/> to this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to a remote syslog daemon.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.OnClose">
+ <summary>
+ Close the syslog when the appender is closed
+ </summary>
+ <remarks>
+ <para>
+ Close the syslog when the appender is closed
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)">
+ <summary>
+ Translates a log4net level to a syslog severity.
+ </summary>
+ <param name="level">A log4net level.</param>
+ <returns>A syslog severity.</returns>
+ <remarks>
+ <para>
+ Translates a log4net level to a syslog severity.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)">
+ <summary>
+ Generate a syslog priority.
+ </summary>
+ <param name="facility">The syslog facility.</param>
+ <param name="severity">The syslog severity.</param>
+ <returns>A syslog priority.</returns>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_facility">
+ <summary>
+ The facility. The default facility is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_identity">
+ <summary>
+ The message identity
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity">
+ <summary>
+ Marshaled handle to the identity string. We have to hold on to the
+ string as the <c>openlog</c> and <c>syslog</c> APIs just hold the
+ pointer to the ident and dereference it for each log message.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to syslog severity
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)">
+ <summary>
+ Open connection to system logger.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)">
+ <summary>
+ Generate a log message.
+ </summary>
+ <remarks>
+ <para>
+ The libc syslog method takes a format string and a variable argument list similar
+ to the classic printf function. As this type of vararg list is not supported
+ by C# we need to specify the arguments explicitly. Here we have specified the
+ format string with a single message argument. The caller must set the format
+ string to <c>"%s"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.LocalSyslogAppender.closelog">
+ <summary>
+ Close descriptor used to write to system logger.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.Identity">
+ <summary>
+ Message identity
+ </summary>
+ <remarks>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.Facility">
+ <summary>
+ Syslog facility
+ </summary>
+ <remarks>
+ Set to one of the <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The list of
+ facilities is predefined and cannot be extended. The default value
+ is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender.SyslogSeverity">
+ <summary>
+ syslog severities
+ </summary>
+ <remarks>
+ <para>
+ The log4net Level maps to a syslog severity using the
+ <see cref="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)"/> method and the <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/>
+ class. The severity is set on <see cref="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency">
+ <summary>
+ system is unusable
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert">
+ <summary>
+ action must be taken immediately
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical">
+ <summary>
+ critical conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error">
+ <summary>
+ error conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning">
+ <summary>
+ warning conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice">
+ <summary>
+ normal but significant condition
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational">
+ <summary>
+ informational
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug">
+ <summary>
+ debug-level messages
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender.SyslogFacility">
+ <summary>
+ syslog facilities
+ </summary>
+ <remarks>
+ <para>
+ The syslog facility defines which subsystem the logging comes from.
+ This is set on the <see cref="P:log4net.Appender.LocalSyslogAppender.Facility"/> property.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel">
+ <summary>
+ kernel messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User">
+ <summary>
+ random user-level messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail">
+ <summary>
+ mail system
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons">
+ <summary>
+ system daemons
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization">
+ <summary>
+ security/authorization messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog">
+ <summary>
+ messages generated internally by syslogd
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer">
+ <summary>
+ line printer subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News">
+ <summary>
+ network news subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp">
+ <summary>
+ UUCP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock">
+ <summary>
+ clock (cron/at) daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2">
+ <summary>
+ security/authorization messages (private)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp">
+ <summary>
+ ftp daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp">
+ <summary>
+ NTP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit">
+ <summary>
+ log audit
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert">
+ <summary>
+ log alert
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2">
+ <summary>
+ clock daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.LocalSyslogAppender.LevelSeverity">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </summary>
+ <remarks>
+ <para>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity">
+ <summary>
+ The mapped syslog severity for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped syslog severity for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.ManagedColoredConsoleAppender">
+ <summary>
+ Appends colorful logging events to the console, using the .NET 2
+ built-in capabilities.
+ </summary>
+ <remarks>
+ <para>
+ ManagedColoredConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific type of message to be set.
+ </para>
+ <para>
+ By default, all output is written to the console's standard output stream.
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> property can be set to direct the output to the
+ error stream.
+ </para>
+ <para>
+ When configuring the colored console appender, mappings should be
+ specified to map logging levels to colors. For example:
+ </para>
+ <code lang="XML" escaped="true">
+ <mapping>
+ <level value="ERROR"/>
+ <foreColor value="DarkRed"/>
+ <backColor value="White"/>
+ </mapping>
+ <mapping>
+ <level value="WARN"/>
+ <foreColor value="Yellow"/>
+ </mapping>
+ <mapping>
+ <level value="INFO"/>
+ <foreColor value="White"/>
+ </mapping>
+ <mapping>
+ <level value="DEBUG"/>
+ <foreColor value="Blue"/>
+ </mapping>
+ </code>
+ <para>
+ The Level is the standard log4net logging level while
+ ForeColor and BackColor are the values of <see cref="T:System.ConsoleColor"/>
+ enumeration.
+ </para>
+ <para>
+ Based on the ColoredConsoleAppender
+ </para>
+ </remarks>
+ <author>Rick Hobbs</author>
+ <author>Nicko Cadell</author>
+ <author>Pavlos Touboulidis</author>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.ConsoleOut">
+ <summary>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.ConsoleError">
+ <summary>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console
+ standard error output stream.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.ManagedColoredConsoleAppender"/> class.
+ </summary>
+ <remarks>
+ The instance of the <see cref="T:log4net.Appender.ManagedColoredConsoleAppender"/> class is set up to write
+ to the standard output stream.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.AddMapping(log4net.Appender.ManagedColoredConsoleAppender.LevelColors)">
+ <summary>
+ Add a mapping of level to color - done by the config file
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.ManagedColoredConsoleAppender.LevelColors"/> mapping to this appender.
+ Each mapping defines the foreground and background colors
+ for a level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to the console.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.ManagedColoredConsoleAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to color mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.m_writeToErrorStream">
+ <summary>
+ Flag to write output to the error stream rather than the standard output stream
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.ManagedColoredConsoleAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to color value
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.Target">
+ <summary>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </summary>
+ <value>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </value>
+ <remarks>
+ <para>
+ Target is the value of the console output stream.
+ This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.ManagedColoredConsoleAppender.LevelColors">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+ </summary>
+ <remarks>
+ <para>
+ Defines the mapping between a level and the color it should be displayed in.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.LevelColors.ForeColor">
+ <summary>
+ The mapped foreground color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped foreground color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.ManagedColoredConsoleAppender.LevelColors.BackColor">
+ <summary>
+ The mapped background color for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped background color for the specified level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.MemoryAppender">
+ <summary>
+ Stores logging events in an array.
+ </summary>
+ <remarks>
+ <para>
+ The memory appender stores all the logging events
+ that are appended in an in-memory array.
+ </para>
+ <para>
+ Use the <see cref="M:log4net.Appender.MemoryAppender.GetEvents"/> method to get
+ the current list of events that have been appended.
+ </para>
+ <para>
+ Use the <see cref="M:Clear()"/> method to clear the
+ current list of events.
+ </para>
+ </remarks>
+ <author>Julian Biddle</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.MemoryAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.GetEvents">
+ <summary>
+ Gets the events that have been logged.
+ </summary>
+ <returns>The events that have been logged</returns>
+ <remarks>
+ <para>
+ Gets the events that have been logged.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>Stores the <paramref name="loggingEvent"/> in the events list.</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.MemoryAppender.Clear">
+ <summary>
+ Clear the list of events
+ </summary>
+ <remarks>
+ Clear the list of events
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.MemoryAppender.m_eventsList">
+ <summary>
+ The list of events that have been appended.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.MemoryAppender.m_fixFlags">
+ <summary>
+ Value indicating which fields in the event should be fixed
+ </summary>
+ <remarks>
+ By default all fields are fixed
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData">
+ <summary>
+ Gets or sets a value indicating whether only part of the logging event
+ data should be fixed.
+ </summary>
+ <value>
+ <c>true</c> if the appender should only fix part of the logging event
+ data, otherwise <c>false</c>. The default is <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ Setting this property to <c>true</c> will cause only part of the event
+ data to be fixed and stored in the appender, hereby improving performance.
+ </para>
+ <para>
+ See <see cref="M:LoggingEvent.FixVolatileData(bool)"/> for more information.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.MemoryAppender.Fix">
+ <summary>
+ Gets or sets the fields that will be fixed in the event
+ </summary>
+ <remarks>
+ <para>
+ The logging event needs to have certain thread specific values
+ captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/>
+ for details.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.NetSendAppender">
+ <summary>
+ Logs entries by sending network messages using the
+ <see cref="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)"/> native function.
+ </summary>
+ <remarks>
+ <para>
+ You can send messages only to names that are active
+ on the network. If you send the message to a user name,
+ that user must be logged on and running the Messenger
+ service to receive the message.
+ </para>
+ <para>
+ The receiver will get a top most window displaying the
+ messages one at a time, therefore this appender should
+ not be used to deliver a high volume of messages.
+ </para>
+ <para>
+ The following table lists some possible uses for this appender :
+ </para>
+ <para>
+ <list type="table">
+ <listheader>
+ <term>Action</term>
+ <description>Property Value(s)</description>
+ </listheader>
+ <item>
+ <term>Send a message to a user account on the local machine</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of the local machine>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <user name>
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message to a user account on a remote machine</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of the remote machine>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <user name>
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message to a domain user account</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of a domain controller | uninitialized>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <user name>
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message to all the names in a workgroup or domain</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <workgroup name | domain name>*
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Send a message from the local machine to a remote machine</term>
+ <description>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Server"/> = <name of the local machine | uninitialized>
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = <name of the remote machine>
+ </para>
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ <b>Note :</b> security restrictions apply for sending
+ network messages, see <see cref="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)"/>
+ for more information.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ An example configuration section to log information
+ using this appender from the local machine, named
+ LOCAL_PC, to machine OPERATOR_PC :
+ </para>
+ <code lang="XML" escaped="true">
+ <appender name="NetSendAppender_Operator" type="log4net.Appender.NetSendAppender">
+ <server value="LOCAL_PC"/>
+ <recipient value="OPERATOR_PC"/>
+ <layout type="log4net.Layout.PatternLayout" value="%-5p %c [%x] - %m%n"/>
+ </appender>
+ </code>
+ </example>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_server">
+ <summary>
+ The DNS or NetBIOS name of the server on which the function is to execute.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_sender">
+ <summary>
+ The sender of the network message.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_recipient">
+ <summary>
+ The message alias to which the message should be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.NetSendAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.#ctor">
+ <summary>
+ Initializes the appender.
+ </summary>
+ <remarks>
+ The default constructor initializes all fields to their default values.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ The appender will be ignored if no <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> was specified.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">The required property <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> was not specified.</exception>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Sends the event using a network message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)">
+ <summary>
+ Sends a buffer of information to a registered message alias.
+ </summary>
+ <param name="serverName">The DNS or NetBIOS name of the server on which the function is to execute.</param>
+ <param name="msgName">The message alias to which the message buffer should be sent</param>
+ <param name="fromName">The originator of the message.</param>
+ <param name="buffer">The message text.</param>
+ <param name="bufferSize">The length, in bytes, of the message text.</param>
+ <remarks>
+ <para>
+ The following restrictions apply for sending network messages:
+ </para>
+ <para>
+ <list type="table">
+ <listheader>
+ <term>Platform</term>
+ <description>Requirements</description>
+ </listheader>
+ <item>
+ <term>Windows NT</term>
+ <description>
+ <para>
+ No special group membership is required to send a network message.
+ </para>
+ <para>
+ Admin, Accounts, Print, or Server Operator group membership is required to
+ successfully send a network message on a remote server.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>Windows 2000 or later</term>
+ <description>
+ <para>
+ If you send a message on a domain controller that is running Active Directory,
+ access is allowed or denied based on the access control list (ACL) for the securable
+ object. The default ACL permits only Domain Admins and Account Operators to send a network message.
+ </para>
+ <para>
+ On a member server or workstation, only Administrators and Server Operators can send a network message.
+ </para>
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ For more information see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp">Security Requirements for the Network Management Functions</a>.
+ </para>
+ </remarks>
+ <returns>
+ <para>
+ If the function succeeds, the return value is zero.
+ </para>
+ </returns>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.Sender">
+ <summary>
+ Gets or sets the sender of the message.
+ </summary>
+ <value>
+ The sender of the message.
+ </value>
+ <remarks>
+ If this property is not specified, the message is sent from the local computer.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.Recipient">
+ <summary>
+ Gets or sets the message alias to which the message should be sent.
+ </summary>
+ <value>
+ The recipient of the message.
+ </value>
+ <remarks>
+ This property should always be specified in order to send a message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.Server">
+ <summary>
+ Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.
+ </summary>
+ <value>
+ DNS or NetBIOS name of the remote server on which the function is to execute.
+ </value>
+ <remarks>
+ <para>
+ For Windows NT 4.0 and earlier, the string should begin with \\.
+ </para>
+ <para>
+ If this property is not specified, the local computer is used.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> used to call the NetSend method.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> used to call the NetSend method.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.NetSendAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.OutputDebugStringAppender">
+ <summary>
+ Appends log events to the OutputDebugString system.
+ </summary>
+ <remarks>
+ <para>
+ OutputDebugStringAppender appends log events to the
+ OutputDebugString system.
+ </para>
+ <para>
+ The string is passed to the native <c>OutputDebugString</c>
+ function.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.OutputDebugStringAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.OutputDebugStringAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Write the logging event to the output debug string API
+ </summary>
+ <param name="loggingEvent">the event to log</param>
+ <remarks>
+ <para>
+ Write the logging event to the output debug string API
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)">
+ <summary>
+ Stub for OutputDebugString native method
+ </summary>
+ <param name="message">the string to output</param>
+ <remarks>
+ <para>
+ Stub for OutputDebugString native method
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.OutputDebugStringAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender">
+ <summary>
+ Logs events to a remote syslog daemon.
+ </summary>
+ <remarks>
+ <para>
+ The BSD syslog protocol is used to remotely log to
+ a syslog daemon. The syslogd listens for for messages
+ on UDP port 514.
+ </para>
+ <para>
+ The syslog UDP protocol is not authenticated. Most syslog daemons
+ do not accept remote log messages because of the security implications.
+ You may be able to use the LocalSyslogAppender to talk to a local
+ syslog service.
+ </para>
+ <para>
+ There is an RFC 3164 that claims to document the BSD Syslog Protocol.
+ This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.
+ This appender generates what the RFC calls an "Original Device Message",
+ i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation
+ this format of message will be accepted by all current syslog daemon
+ implementations. The daemon will attach the current time and the source
+ hostname or IP address to any messages received.
+ </para>
+ <para>
+ Syslog messages must have a facility and and a severity. The severity
+ is derived from the Level of the logging event.
+ The facility must be chosen from the set of defined syslog
+ <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The facilities list is predefined
+ and cannot be extended.
+ </para>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>).
+ </para>
+ </remarks>
+ <author>Rob Lyon</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Appender.UdpAppender">
+ <summary>
+ Sends logging events as connectionless UDP datagrams to a remote host or a
+ multicast group using an <see cref="T:System.Net.Sockets.UdpClient"/>.
+ </summary>
+ <remarks>
+ <para>
+ UDP guarantees neither that messages arrive, nor that they arrive in the correct order.
+ </para>
+ <para>
+ To view the logging results, a custom application can be developed that listens for logging
+ events.
+ </para>
+ <para>
+ When decoding events send via this appender remember to use the same encoding
+ to decode the events as was used to send the events. See the <see cref="P:log4net.Appender.UdpAppender.Encoding"/>
+ property to specify the encoding to use.
+ </para>
+ </remarks>
+ <example>
+ This example shows how to log receive logging events that are sent
+ on IP address 244.0.0.1 and port 8080 to the console. The event is
+ encoded in the packet as a unicode string and it is decoded as such.
+ <code lang="C#">
+ IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
+ UdpClient udpClient;
+ byte[] buffer;
+ string loggingEvent;
+
+ try
+ {
+ udpClient = new UdpClient(8080);
+
+ while(true)
+ {
+ buffer = udpClient.Receive(ref remoteEndPoint);
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);
+ Console.WriteLine(loggingEvent);
+ }
+ }
+ catch(Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+ </code>
+ <code lang="Visual Basic">
+ Dim remoteEndPoint as IPEndPoint
+ Dim udpClient as UdpClient
+ Dim buffer as Byte()
+ Dim loggingEvent as String
+
+ Try
+ remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)
+ udpClient = new UdpClient(8080)
+
+ While True
+ buffer = udpClient.Receive(ByRef remoteEndPoint)
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)
+ Console.WriteLine(loggingEvent)
+ Wend
+ Catch e As Exception
+ Console.WriteLine(e.ToString())
+ End Try
+ </code>
+ <para>
+ An example configuration section to log information using this appender to the
+ IP 224.0.0.1 on port 8080:
+ </para>
+ <code lang="XML" escaped="true">
+ <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
+ <remoteAddress value="224.0.0.1"/>
+ <remotePort value="8080"/>
+ <layout type="log4net.Layout.PatternLayout" value="%-5level %logger [%ndc] - %message%newline"/>
+ </appender>
+ </code>
+ </example>
+ <author>Gert Driesen</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.UdpAppender"/> class.
+ </summary>
+ <remarks>
+ The default constructor initializes all fields to their default values.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ The appender will be ignored if no <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was specified or
+ an invalid remote or local TCP port number was specified.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">The required property <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was not specified.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException">The TCP port number assigned to <see cref="P:log4net.Appender.UdpAppender.LocalPort"/> or <see cref="P:log4net.Appender.UdpAppender.RemotePort"/> is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Sends the event using an UDP datagram.
+ </para>
+ <para>
+ Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.OnClose">
+ <summary>
+ Closes the UDP connection and releases all resources associated with
+ this <see cref="T:log4net.Appender.UdpAppender"/> instance.
+ </summary>
+ <remarks>
+ <para>
+ Disables the underlying <see cref="T:System.Net.Sockets.UdpClient"/> and releases all managed
+ and unmanaged resources associated with the <see cref="T:log4net.Appender.UdpAppender"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.UdpAppender.InitializeClientConnection">
+ <summary>
+ Initializes the underlying <see cref="T:System.Net.Sockets.UdpClient"/> connection.
+ </summary>
+ <remarks>
+ <para>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/> is initialized and binds to the
+ port number from which you intend to communicate.
+ </para>
+ <para>
+ Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_remoteAddress">
+ <summary>
+ The IP address of the remote host or multicast group to which
+ the logging event will be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_remotePort">
+ <summary>
+ The TCP port number of the remote host or multicast group to
+ which the logging event will be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_remoteEndPoint">
+ <summary>
+ The cached remote endpoint to which the logging events will be sent.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_localPort">
+ <summary>
+ The TCP port number from which the <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_client">
+ <summary>
+ The <see cref="T:System.Net.Sockets.UdpClient"/> instance that will be used for sending the
+ logging events.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.UdpAppender.m_encoding">
+ <summary>
+ The encoding to use for the packet.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RemoteAddress">
+ <summary>
+ Gets or sets the IP address of the remote host or multicast group to which
+ the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event.
+ </summary>
+ <value>
+ The IP address of the remote host or multicast group to which the logging event
+ will be sent.
+ </value>
+ <remarks>
+ <para>
+ Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to
+ 239.255.255.255). Multicast packets can pass across different networks through routers, so
+ it is possible to use multicasts in an Internet scenario as long as your network provider
+ supports multicasting.
+ </para>
+ <para>
+ Hosts that want to receive particular multicast messages must register their interest by joining
+ the multicast group. Multicast messages are not sent to networks where no host has joined
+ the multicast group. Class <b>D</b> IP addresses are used for multicast groups, to differentiate
+ them from normal host addresses, allowing nodes to easily detect if a message is of interest.
+ </para>
+ <para>
+ Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below:
+ </para>
+ <para>
+ <list type="table">
+ <listheader>
+ <term>IP Address</term>
+ <description>Description</description>
+ </listheader>
+ <item>
+ <term>224.0.0.1</term>
+ <description>
+ <para>
+ Sends a message to all system on the subnet.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>224.0.0.2</term>
+ <description>
+ <para>
+ Sends a message to all routers on the subnet.
+ </para>
+ </description>
+ </item>
+ <item>
+ <term>224.0.0.12</term>
+ <description>
+ <para>
+ The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.
+ </para>
+ </description>
+ </item>
+ </list>
+ </para>
+ <para>
+ A complete list of actually reserved multicast addresses and their owners in the ranges
+ defined by RFC 3171 can be found at the <A href="http://www.iana.org/assignments/multicast-addresses">IANA web site</A>.
+ </para>
+ <para>
+ The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative
+ addresses. These addresses can be reused with other local groups. Routers are typically
+ configured with filters to prevent multicast traffic in this range from flowing outside
+ of the local network.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RemotePort">
+ <summary>
+ Gets or sets the TCP port number of the remote host or multicast group to which
+ the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event.
+ </summary>
+ <value>
+ An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/>
+ indicating the TCP port number of the remote host or multicast group to which the logging event
+ will be sent.
+ </value>
+ <remarks>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will send messages to this TCP port number
+ on the remote host or multicast group.
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.LocalPort">
+ <summary>
+ Gets or sets the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
+ </summary>
+ <value>
+ An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/>
+ indicating the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
+ </value>
+ <remarks>
+ <para>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will bind to this port for sending messages.
+ </para>
+ <para>
+ Setting the value to 0 (the default) will cause the udp client not to bind to
+ a local port.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.Encoding">
+ <summary>
+ Gets or sets <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.Client">
+ <summary>
+ Gets or sets the underlying <see cref="T:System.Net.Sockets.UdpClient"/>.
+ </summary>
+ <value>
+ The underlying <see cref="T:System.Net.Sockets.UdpClient"/>.
+ </value>
+ <remarks>
+ <see cref="T:log4net.Appender.UdpAppender"/> creates a <see cref="T:System.Net.Sockets.UdpClient"/> to send logging events
+ over a network. Classes deriving from <see cref="T:log4net.Appender.UdpAppender"/> can use this
+ property to get or set this <see cref="T:System.Net.Sockets.UdpClient"/>. Use the underlying <see cref="T:System.Net.Sockets.UdpClient"/>
+ returned from <see cref="P:log4net.Appender.UdpAppender.Client"/> if you require access beyond that which
+ <see cref="T:log4net.Appender.UdpAppender"/> provides.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RemoteEndPoint">
+ <summary>
+ Gets or sets the cached remote endpoint to which the logging events should be sent.
+ </summary>
+ <value>
+ The cached remote endpoint to which the logging events will be sent.
+ </value>
+ <remarks>
+ The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method will initialize the remote endpoint
+ with the values of the <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> and <see cref="P:log4net.Appender.UdpAppender.RemotePort"/>
+ properties.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.UdpAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort">
+ <summary>
+ Syslog port 514
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.c_renderBufferSize">
+ <summary>
+ Initial buffer size
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.c_renderBufferMaxCapacity">
+ <summary>
+ Maximum buffer size before it is recycled
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class.
+ </summary>
+ <remarks>
+ This instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class is set up to write
+ to a remote syslog daemon.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)">
+ <summary>
+ Add a mapping of level to severity
+ </summary>
+ <param name="mapping">The mapping to add</param>
+ <remarks>
+ <para>
+ Add a <see cref="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity"/> mapping to this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the event to a remote syslog daemon.
+ </para>
+ <para>
+ The format of the output will depend on the appender's layout.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.ActivateOptions">
+ <summary>
+ Initialize the options for this appender
+ </summary>
+ <remarks>
+ <para>
+ Initialize the level to syslog severity mappings set on this appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)">
+ <summary>
+ Translates a log4net level to a syslog severity.
+ </summary>
+ <param name="level">A log4net level.</param>
+ <returns>A syslog severity.</returns>
+ <remarks>
+ <para>
+ Translates a log4net level to a syslog severity.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)">
+ <summary>
+ Generate a syslog priority.
+ </summary>
+ <param name="facility">The syslog facility.</param>
+ <param name="severity">The syslog severity.</param>
+ <returns>A syslog priority.</returns>
+ <remarks>
+ <para>
+ Generate a syslog priority.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.m_facility">
+ <summary>
+ The facility. The default facility is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.m_identity">
+ <summary>
+ The message identity
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.m_levelMapping">
+ <summary>
+ Mapping from level object to syslog severity
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RemoteSyslogAppender.Identity">
+ <summary>
+ Message identity
+ </summary>
+ <remarks>
+ <para>
+ An identifier is specified with each log message. This can be specified
+ by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RemoteSyslogAppender.Facility">
+ <summary>
+ Syslog facility
+ </summary>
+ <remarks>
+ Set to one of the <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The list of
+ facilities is predefined and cannot be extended. The default value
+ is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>.
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity">
+ <summary>
+ syslog severities
+ </summary>
+ <remarks>
+ <para>
+ The syslog severities.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency">
+ <summary>
+ system is unusable
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert">
+ <summary>
+ action must be taken immediately
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical">
+ <summary>
+ critical conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error">
+ <summary>
+ error conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning">
+ <summary>
+ warning conditions
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice">
+ <summary>
+ normal but significant condition
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational">
+ <summary>
+ informational
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug">
+ <summary>
+ debug-level messages
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility">
+ <summary>
+ syslog facilities
+ </summary>
+ <remarks>
+ <para>
+ The syslog facilities
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel">
+ <summary>
+ kernel messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User">
+ <summary>
+ random user-level messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail">
+ <summary>
+ mail system
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons">
+ <summary>
+ system daemons
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization">
+ <summary>
+ security/authorization messages
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog">
+ <summary>
+ messages generated internally by syslogd
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer">
+ <summary>
+ line printer subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News">
+ <summary>
+ network news subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp">
+ <summary>
+ UUCP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock">
+ <summary>
+ clock (cron/at) daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2">
+ <summary>
+ security/authorization messages (private)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp">
+ <summary>
+ ftp daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp">
+ <summary>
+ NTP subsystem
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit">
+ <summary>
+ log audit
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert">
+ <summary>
+ log alert
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2">
+ <summary>
+ clock daemon
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7">
+ <summary>
+ reserved for local use
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity">
+ <summary>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </summary>
+ <remarks>
+ <para>
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity">
+ <summary>
+ The mapped syslog severity for the specified level
+ </summary>
+ <remarks>
+ <para>
+ Required property.
+ The mapped syslog severity for the specified level
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemotingAppender">
+ <summary>
+ Delivers logging events to a remote logging sink.
+ </summary>
+ <remarks>
+ <para>
+ This Appender is designed to deliver events to a remote sink.
+ That is any object that implements the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
+ interface. It delivers the events using .NET remoting. The
+ object to deliver events to is specified by setting the
+ appenders <see cref="P:log4net.Appender.RemotingAppender.Sink"/> property.</para>
+ <para>
+ The RemotingAppender buffers events before sending them. This allows it to
+ make more efficient use of the remoting infrastructure.</para>
+ <para>
+ Once the buffer is full the events are still not sent immediately.
+ They are scheduled to be sent using a pool thread. The effect is that
+ the send occurs asynchronously. This is very important for a
+ number of non obvious reasons. The remoting infrastructure will
+ flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>),
+ if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the
+ remoting boundary. If the server is not contactable then
+ the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>
+ objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from
+ having side effects on the calling application the remoting call must be made
+ from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/>
+ thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then
+ the events will block in the thread pool manager until a thread is available.</para>
+ <para>
+ Because the events are sent asynchronously using pool threads it is possible to close
+ this appender before all the queued events have been sent.
+ When closing the appender attempts to wait until all the queued events have been sent, but
+ this will timeout after 30 seconds regardless.</para>
+ <para>
+ If this appender is being closed because the <see cref="E:System.AppDomain.ProcessExit"/>
+ event has fired it may not be possible to send all the queued events. During process
+ exit the runtime limits the time that a <see cref="E:System.AppDomain.ProcessExit"/>
+ event handler is allowed to run for. If the runtime terminates the threads before
+ the queued events have been sent then they will be lost. To ensure that all events
+ are sent the appender must be closed before the application exits. See
+ <see cref="M:log4net.Core.LoggerManager.Shutdown"/> for details on how to shutdown
+ log4net programmatically.</para>
+ </remarks>
+ <seealso cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Daniel Cazzulino</author>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.RemotingAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Send the contents of the buffer to the remote sink.
+ </summary>
+ <remarks>
+ The events are not sent immediately. They are scheduled to be sent
+ using a pool thread. The effect is that the send occurs asynchronously.
+ This is very important for a number of non obvious reasons. The remoting
+ infrastructure will flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>),
+ if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the
+ remoting boundary. If the server is not contactable then
+ the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>
+ objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from
+ having side effects on the calling application the remoting call must be made
+ from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/>
+ thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then
+ the events will block in the thread pool manager until a thread is available.
+ </remarks>
+ <param name="events">The events to send.</param>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.OnClose">
+ <summary>
+ Override base class close.
+ </summary>
+ <remarks>
+ <para>
+ This method waits while there are queued work items. The events are
+ sent asynchronously using <see cref="T:System.Threading.ThreadPool"/> work items. These items
+ will be sent once a thread pool thread is available to send them, therefore
+ it is possible to close the appender before all the queued events have been
+ sent.</para>
+ <para>
+ This method attempts to wait until all the queued events have been sent, but this
+ method will timeout after 30 seconds regardless.</para>
+ <para>
+ If the appender is being closed because the <see cref="E:System.AppDomain.ProcessExit"/>
+ event has fired it may not be possible to send all the queued events. During process
+ exit the runtime limits the time that a <see cref="E:System.AppDomain.ProcessExit"/>
+ event handler is allowed to run for.</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.BeginAsyncSend">
+ <summary>
+ A work item is being queued into the thread pool
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.EndAsyncSend">
+ <summary>
+ A work item from the thread pool has completed
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)">
+ <summary>
+ Send the contents of the buffer to the remote sink.
+ </summary>
+ <remarks>
+ This method is designed to be used with the <see cref="T:System.Threading.ThreadPool"/>.
+ This method expects to be passed an array of <see cref="T:log4net.Core.LoggingEvent"/>
+ objects in the state param.
+ </remarks>
+ <param name="state">the logging events to send</param>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_sinkUrl">
+ <summary>
+ The URL of the remote sink.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_sinkObj">
+ <summary>
+ The local proxy (.NET remoting) for the remote logging sink.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_queuedCallbackCount">
+ <summary>
+ The number of queued callbacks currently waiting or executing
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent">
+ <summary>
+ Event used to signal when there are no queued work items
+ </summary>
+ <remarks>
+ This event is set when there are no queued work items. In this
+ state it is safe to close the appender.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RemotingAppender.Sink">
+ <summary>
+ Gets or sets the URL of the well-known object that will accept
+ the logging events.
+ </summary>
+ <value>
+ The well-known URL of the remote sink.
+ </value>
+ <remarks>
+ <para>
+ The URL of the remoting sink that will accept logging events.
+ The sink must implement the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
+ interface.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink">
+ <summary>
+ Interface used to deliver <see cref="T:log4net.Core.LoggingEvent"/> objects to a remote sink.
+ </summary>
+ <remarks>
+ This interface must be implemented by a remoting sink
+ if the <see cref="T:log4net.Appender.RemotingAppender"/> is to be used
+ to deliver logging events to the sink.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])">
+ <summary>
+ Delivers logging events to the remote sink
+ </summary>
+ <param name="events">Array of events to log.</param>
+ <remarks>
+ <para>
+ Delivers logging events to the remote sink
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender">
+ <summary>
+ Appender that rolls log files based on size or date or both.
+ </summary>
+ <remarks>
+ <para>
+ RollingFileAppender can roll log files based on size or date or both
+ depending on the setting of the <see cref="P:log4net.Appender.RollingFileAppender.RollingStyle"/> property.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Size"/> the log file will be rolled
+ once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Date"/> the log file will be rolled
+ once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property
+ is crossed.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/> the log file will be
+ rolled once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property
+ is crossed, but within a date boundary the file will also be rolled
+ once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>.
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> the log file will be rolled when
+ the appender is configured. This effectively means that the log file can be
+ rolled once per program execution.
+ </para>
+ <para>
+ A of few additional optional features have been added:
+ <list type="bullet">
+ <item>Attach date pattern for current log file <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/></item>
+ <item>Backup number increments for newer files <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/></item>
+ <item>Infinite number of backups by file size <see cref="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups"/></item>
+ </list>
+ </para>
+
+ <note>
+ <para>
+ For large or infinite numbers of backup files a <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/>
+ greater than zero is highly recommended, otherwise all the backup files need
+ to be renamed each time a new backup is created.
+ </para>
+ <para>
+ When Date/Time based rolling is used setting <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/>
+ to <see langword="true"/> will reduce the number of file renamings to few or none.
+ </para>
+ </note>
+
+ <note type="caution">
+ <para>
+ Changing <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> or <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> without clearing
+ the log file directory of backup files will cause unexpected and unwanted side effects.
+ </para>
+ </note>
+
+ <para>
+ If Date/Time based rolling is enabled this appender will attempt to roll existing files
+ in the directory without a Date/Time tag based on the last write date of the base log file.
+ The appender only rolls the log file when a message is logged. If Date/Time based rolling
+ is enabled then the appender will not roll the log file at the Date/Time boundary but
+ at the point when the next message is logged after the boundary has been crossed.
+ </para>
+
+ <para>
+ The <see cref="T:log4net.Appender.RollingFileAppender"/> extends the <see cref="T:log4net.Appender.FileAppender"/> and
+ has the same behavior when opening the log file.
+ The appender will first try to open the file for writing when <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>
+ is called. This will typically be during configuration.
+ If the file cannot be opened for writing the appender will attempt
+ to open the file again each time a message is logged to the appender.
+ If the file cannot be opened for writing when a message is logged then
+ the message will be discarded by this appender.
+ </para>
+ <para>
+ When rolling a backup file necessitates deleting an older backup file the
+ file to be deleted is moved to a temporary name before being deleted.
+ </para>
+
+ <note type="caution">
+ <para>
+ A maximum number of backup files when rolling on date/time boundaries is not supported.
+ </para>
+ </note>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Aspi Havewala</author>
+ <author>Douglas de la Torre</author>
+ <author>Edward Smit</author>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.RollingFileAppender"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.declaringType">
+ <summary>
+ The fully qualified type of the RollingFileAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)">
+ <summary>
+ Sets the quiet writer being used.
+ </summary>
+ <remarks>
+ This method can be overridden by sub classes.
+ </remarks>
+ <param name="writer">the writer to set</param>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Write out a logging event.
+ </summary>
+ <param name="loggingEvent">the event to write to file.</param>
+ <remarks>
+ <para>
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])">
+ <summary>
+ Write out an array of logging events.
+ </summary>
+ <param name="loggingEvents">the events to write to file.</param>
+ <remarks>
+ <para>
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend">
+ <summary>
+ Performs any required rolling before outputting the next event
+ </summary>
+ <remarks>
+ <para>
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)">
+ <summary>
+ Creates and opens the file for logging. If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/>
+ is false then the fully qualified name is determined and used.
+ </summary>
+ <param name="fileName">the name of the file to open</param>
+ <param name="append">true to append to existing file</param>
+ <remarks>
+ <para>This method will ensure that the directory structure
+ for the <paramref name="fileName"/> specified exists.</para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)">
+ <summary>
+ Get the current output file name
+ </summary>
+ <param name="fileName">the base file name</param>
+ <returns>the output file name</returns>
+ <remarks>
+ The output file name is based on the base fileName specified.
+ If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> is set then the output
+ file name is the same as the base file passed in. Otherwise
+ the output file depends on the date pattern, on the count
+ direction or both.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups">
+ <summary>
+ Determines curSizeRollBackups (only within the current roll point)
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)">
+ <summary>
+ Generates a wildcard pattern that can be used to find all files
+ that are similar to the base file name.
+ </summary>
+ <param name="baseFileName"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)">
+ <summary>
+ Builds a list of filenames for all files matching the base filename plus a file
+ pattern.
+ </summary>
+ <param name="baseFilePath"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing">
+ <summary>
+ Initiates a roll over if needed for crossing a date boundary since the last run.
+ </summary>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.ExistingInit">
+ <summary>
+ Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>.
+ </summary>
+ <remarks>
+ <para>
+ Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>.
+ The following is done
+ <list type="bullet">
+ <item>determine curSizeRollBackups (only within the current roll point)</item>
+ <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>
+ </list>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)">
+ <summary>
+ Does the work of bumping the 'current' file counter higher
+ to the highest count when an incremental file name is seen.
+ The highest count is either the first file (when count direction
+ is greater than 0) or the last file (when count direction less than 0).
+ In either case, we want to know the highest count that is present.
+ </summary>
+ <param name="baseFile"></param>
+ <param name="curFileName"></param>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)">
+ <summary>
+ Attempts to extract a number from the end of the file name that indicates
+ the number of the times the file has been rolled over.
+ </summary>
+ <remarks>
+ Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.
+ </remarks>
+ <param name="curFileName"></param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)">
+ <summary>
+ Takes a list of files and a base file name, and looks for
+ 'incremented' versions of the base file. Bumps the max
+ count up to the highest count seen.
+ </summary>
+ <param name="baseFile"></param>
+ <param name="arrayFiles"></param>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)">
+ <summary>
+ Calculates the RollPoint for the datePattern supplied.
+ </summary>
+ <param name="datePattern">the date pattern to calculate the check period for</param>
+ <returns>The RollPoint that is most accurate for the date pattern supplied</returns>
+ <remarks>
+ Essentially the date pattern is examined to determine what the
+ most suitable roll point is. The roll point chosen is the roll point
+ with the smallest period that can be detected using the date pattern
+ supplied. i.e. if the date pattern only outputs the year, month, day
+ and hour then the smallest roll point that can be detected would be
+ and hourly roll point as minutes could not be detected.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ Sets initial conditions including date/time roll over information, first check,
+ scheduledFilename, and calls <see cref="M:log4net.Appender.RollingFileAppender.ExistingInit"/> to initialize
+ the current number of backups.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)">
+ <summary>
+
+ </summary>
+ <param name="path1"></param>
+ <param name="path2">.1, .2, .3, etc.</param>
+ <returns></returns>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)">
+ <summary>
+ Rollover the file(s) to date/time tagged file(s).
+ </summary>
+ <param name="fileIsOpen">set to true if the file to be rolled is currently open</param>
+ <remarks>
+ <para>
+ Rollover the file(s) to date/time tagged file(s).
+ Resets curSizeRollBackups.
+ If fileIsOpen is set then the new file is opened (through SafeOpenFile).
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)">
+ <summary>
+ Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>.
+ </summary>
+ <param name="fromFile">Name of existing file to roll.</param>
+ <param name="toFile">New name for file.</param>
+ <remarks>
+ <para>
+ Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>. It
+ also checks for existence of target file and deletes if it does.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.FileExists(System.String)">
+ <summary>
+ Test if a file exists at a specified path
+ </summary>
+ <param name="path">the path to the file</param>
+ <returns>true if the file exists</returns>
+ <remarks>
+ <para>
+ Test if a file exists at a specified path
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)">
+ <summary>
+ Deletes the specified file if it exists.
+ </summary>
+ <param name="fileName">The file to delete.</param>
+ <remarks>
+ <para>
+ Delete a file if is exists.
+ The file is first moved to a new filename then deleted.
+ This allows the file to be removed even when it cannot
+ be deleted, but it still can be moved.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverSize">
+ <summary>
+ Implements file roll base on file size.
+ </summary>
+ <remarks>
+ <para>
+ If the maximum number of size based backups is reached
+ (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest
+ file is deleted -- its index determined by the sign of countDirection.
+ If <c>countDirection</c> < 0, then files
+ {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}
+ are renamed to {<c>File.2</c>, ...,
+ <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is
+ renamed <c>File.1</c> and closed.
+ </para>
+ <para>
+ A new file is created to receive further log output.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> is equal to zero, then the
+ <c>File</c> is truncated with no backup files created.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> < 0, then <c>File</c> is
+ renamed if needed and no files are deleted.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)">
+ <summary>
+ Implements file roll.
+ </summary>
+ <param name="baseFileName">the base name to rename</param>
+ <remarks>
+ <para>
+ If the maximum number of size based backups is reached
+ (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest
+ file is deleted -- its index determined by the sign of countDirection.
+ If <c>countDirection</c> < 0, then files
+ {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}
+ are renamed to {<c>File.2</c>, ...,
+ <c>File.curSizeRollBackups</c>}.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> is equal to zero, then the
+ <c>File</c> is truncated with no backup files created.
+ </para>
+ <para>
+ If <c>maxSizeRollBackups</c> < 0, then <c>File</c> is
+ renamed if needed and no files are deleted.
+ </para>
+ <para>
+ This is called by <see cref="M:log4net.Appender.RollingFileAppender.RollOverSize"/> to rename the files.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)">
+ <summary>
+ Get the start time of the next window for the current rollpoint
+ </summary>
+ <param name="currentDateTime">the current date</param>
+ <param name="rollPoint">the type of roll point we are working with</param>
+ <returns>the start time for the next roll point an interval after the currentDateTime date</returns>
+ <remarks>
+ <para>
+ Returns the date of the next roll point after the currentDateTime date passed to the method.
+ </para>
+ <para>
+ The basic strategy is to subtract the time parts that are less significant
+ than the rollpoint from the current time. This should roll the time back to
+ the start of the time window for the current rollpoint. Then we add 1 window
+ worth of time and get the start time of the next window for the rollpoint.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_dateTime">
+ <summary>
+ This object supplies the current date/time. Allows test code to plug in
+ a method to control this class when testing date/time based rolling. The default
+ implementation uses the underlying value of DateTime.Now.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_datePattern">
+ <summary>
+ The date pattern. By default, the pattern is set to <c>".yyyy-MM-dd"</c>
+ meaning daily rollover.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_scheduledFilename">
+ <summary>
+ The actual formatted filename that is currently being written to
+ or will be the file transferred to on roll over
+ (based on staticLogFileName).
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_nextCheck">
+ <summary>
+ The timestamp when we shall next recompute the filename.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_now">
+ <summary>
+ Holds date of last roll over
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollPoint">
+ <summary>
+ The type of rolling done
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_maxFileSize">
+ <summary>
+ The default maximum file size is 10MB
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups">
+ <summary>
+ There is zero backup files by default
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups">
+ <summary>
+ How many sized based backups have been made so far
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_countDirection">
+ <summary>
+ The rolling file count direction.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollingStyle">
+ <summary>
+ The rolling mode used in this appender.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollDate">
+ <summary>
+ Cache flag set if we are rolling by date.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_rollSize">
+ <summary>
+ Cache flag set if we are rolling by size.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_staticLogFileName">
+ <summary>
+ Value indicating whether to always log to the same file.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension">
+ <summary>
+ Value indicating whether to preserve the file name extension when rolling.
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.m_baseFileName">
+ <summary>
+ FileName provided in configuration. Used for rolling properly
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.s_date1970">
+ <summary>
+ The 1st of January 1970 in UTC
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.DateTimeStrategy">
+ <summary>
+ Gets or sets the strategy for determining the current date and time. The default
+ implementation is to use LocalDateTime which internally calls through to DateTime.Now.
+ DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying
+ <see cref="T:log4net.Appender.RollingFileAppender.UniversalDateTime"/>.
+ </summary>
+ <value>
+ An implementation of the <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> interface which returns the current date and time.
+ </value>
+ <remarks>
+ <para>
+ Gets or sets the <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> used to return the current date and time.
+ </para>
+ <para>
+ There are two built strategies for determining the current date and time,
+ <see cref="T:log4net.Appender.RollingFileAppender.LocalDateTime"/>
+ and <see cref="T:log4net.Appender.RollingFileAppender.UniversalDateTime"/>.
+ </para>
+ <para>
+ The default strategy is <see cref="T:log4net.Appender.RollingFileAppender.LocalDateTime"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.DatePattern">
+ <summary>
+ Gets or sets the date pattern to be used for generating file names
+ when rolling over on date.
+ </summary>
+ <value>
+ The date pattern to be used for generating file names when rolling
+ over on date.
+ </value>
+ <remarks>
+ <para>
+ Takes a string in the same format as expected by
+ <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/>.
+ </para>
+ <para>
+ This property determines the rollover schedule when rolling over
+ on date.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups">
+ <summary>
+ Gets or sets the maximum number of backup files that are kept before
+ the oldest is erased.
+ </summary>
+ <value>
+ The maximum number of backup files that are kept before the oldest is
+ erased.
+ </value>
+ <remarks>
+ <para>
+ If set to zero, then there will be no backup files and the log file
+ will be truncated when it reaches <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/>.
+ </para>
+ <para>
+ If a negative number is supplied then no deletions will be made. Note
+ that this could result in very slow performance as a large number of
+ files are rolled over unless <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> is used.
+ </para>
+ <para>
+ The maximum applies to <b>each</b> time based group of files and
+ <b>not</b> the total.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.MaxFileSize">
+ <summary>
+ Gets or sets the maximum size that the output file is allowed to reach
+ before being rolled over to backup files.
+ </summary>
+ <value>
+ The maximum size in bytes that the output file is allowed to reach before being
+ rolled over to backup files.
+ </value>
+ <remarks>
+ <para>
+ This property is equivalent to <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/> except
+ that it is required for differentiating the setter taking a
+ <see cref="T:System.Int64"/> argument from the setter taking a <see cref="T:System.String"/>
+ argument.
+ </para>
+ <para>
+ The default maximum file size is 10MB (10*1024*1024).
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.MaximumFileSize">
+ <summary>
+ Gets or sets the maximum size that the output file is allowed to reach
+ before being rolled over to backup files.
+ </summary>
+ <value>
+ The maximum size that the output file is allowed to reach before being
+ rolled over to backup files.
+ </value>
+ <remarks>
+ <para>
+ This property allows you to specify the maximum size with the
+ suffixes "KB", "MB" or "GB" so that the size is interpreted being
+ expressed respectively in kilobytes, megabytes or gigabytes.
+ </para>
+ <para>
+ For example, the value "10KB" will be interpreted as 10240 bytes.
+ </para>
+ <para>
+ The default maximum file size is 10MB.
+ </para>
+ <para>
+ If you have the option to set the maximum file size programmatically
+ consider using the <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/> property instead as this
+ allows you to set the size in bytes as a <see cref="T:System.Int64"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.CountDirection">
+ <summary>
+ Gets or sets the rolling file count direction.
+ </summary>
+ <value>
+ The rolling file count direction.
+ </value>
+ <remarks>
+ <para>
+ Indicates if the current file is the lowest numbered file or the
+ highest numbered file.
+ </para>
+ <para>
+ By default newer files have lower numbers (<see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> < 0),
+ i.e. log.1 is most recent, log.5 is the 5th backup, etc...
+ </para>
+ <para>
+ <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> >= 0 does the opposite i.e.
+ log.1 is the first backup made, log.5 is the 5th backup made, etc.
+ For infinite backups use <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> >= 0 to reduce
+ rollover costs.
+ </para>
+ <para>The default file count direction is -1.</para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.RollingStyle">
+ <summary>
+ Gets or sets the rolling style.
+ </summary>
+ <value>The rolling style.</value>
+ <remarks>
+ <para>
+ The default rolling style is <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/>.
+ </para>
+ <para>
+ When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> this appender's
+ <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is set to <c>false</c>, otherwise
+ the appender would append to a single file rather than rolling
+ the file each time it is opened.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension">
+ <summary>
+ Gets or sets a value indicating whether to preserve the file name extension when rolling.
+ </summary>
+ <value>
+ <c>true</c> if the file name extension should be preserved.
+ </value>
+ <remarks>
+ <para>
+ By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.
+ However, under Windows the new file name will loose any program associations as the
+ extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or
+ file.curSizeRollBackup.log to maintain any program associations.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.StaticLogFileName">
+ <summary>
+ Gets or sets a value indicating whether to always log to
+ the same file.
+ </summary>
+ <value>
+ <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.
+ </value>
+ <remarks>
+ <para>
+ By default file.log is always the current file. Optionally
+ file.log.yyyy-mm-dd for current formatted datePattern can by the currently
+ logging file (or file.log.curSizeRollBackup or even
+ file.log.yyyy-mm-dd.curSizeRollBackup).
+ </para>
+ <para>
+ This will make time based rollovers with a large number of backups
+ much faster as the appender it won't have to rename all the backups!
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.RollingMode">
+ <summary>
+ Style of rolling to use
+ </summary>
+ <remarks>
+ <para>
+ Style of rolling to use
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Once">
+ <summary>
+ Roll files once per program execution
+ </summary>
+ <remarks>
+ <para>
+ Roll files once per program execution.
+ Well really once each time this appender is
+ configured.
+ </para>
+ <para>
+ Setting this option also sets <c>AppendToFile</c> to
+ <c>false</c> on the <c>RollingFileAppender</c>, otherwise
+ this appender would just be a normal file appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Size">
+ <summary>
+ Roll files based only on the size of the file
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Date">
+ <summary>
+ Roll files based only on the date
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Composite">
+ <summary>
+ Roll files based on both the size and date of the file
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.RollPoint">
+ <summary>
+ The code assumes that the following 'time' constants are in a increasing sequence.
+ </summary>
+ <remarks>
+ <para>
+ The code assumes that the following 'time' constants are in a increasing sequence.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint">
+ <summary>
+ Roll the log not based on the date
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute">
+ <summary>
+ Roll the log for each minute
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour">
+ <summary>
+ Roll the log for each hour
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay">
+ <summary>
+ Roll the log twice a day (midday and midnight)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay">
+ <summary>
+ Roll the log each day (midnight)
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek">
+ <summary>
+ Roll the log each week
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth">
+ <summary>
+ Roll the log each month
+ </summary>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.IDateTime">
+ <summary>
+ This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>.
+ </summary>
+ <remarks>
+ This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>.
+ Used primarily to allow test classes to plug themselves in so they can
+ supply test date/times.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.IDateTime.Now">
+ <summary>
+ Gets the <i>current</i> time.
+ </summary>
+ <value>The <i>current</i> time.</value>
+ <remarks>
+ <para>
+ Gets the <i>current</i> time.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.LocalDateTime">
+ <summary>
+ Default implementation of <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> that returns the current time.
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.LocalDateTime.Now">
+ <summary>
+ Gets the <b>current</b> time.
+ </summary>
+ <value>The <b>current</b> time.</value>
+ <remarks>
+ <para>
+ Gets the <b>current</b> time.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.RollingFileAppender.UniversalDateTime">
+ <summary>
+ Implementation of <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> that returns the current time as the coordinated universal time (UTC).
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.RollingFileAppender.UniversalDateTime.Now">
+ <summary>
+ Gets the <b>current</b> time.
+ </summary>
+ <value>The <b>current</b> time.</value>
+ <remarks>
+ <para>
+ Gets the <b>current</b> time.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.SmtpAppender">
+ <summary>
+ Send an e-mail when a specific logging event occurs, typically on errors
+ or fatal errors.
+ </summary>
+ <remarks>
+ <para>
+ The number of logging events delivered in this e-mail depend on
+ the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The
+ <see cref="T:log4net.Appender.SmtpAppender"/> keeps only the last
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its
+ cyclic buffer. This keeps memory requirements at a reasonable level while
+ still delivering useful application context.
+ </para>
+ <note type="caution">
+ Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.
+ For these features to be enabled you need to ensure that you are using a version of
+ the log4net assembly that is built against the MS .NET 1.1 framework and that you are
+ running the your application on the MS .NET 1.1 runtime. On all other platforms only sending
+ unauthenticated messages to a server listening on port 25 (the default) is supported.
+ </note>
+ <para>
+ Authentication is supported by setting the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property to
+ either <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> or <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>.
+ If using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> authentication then the <see cref="P:log4net.Appender.SmtpAppender.Username"/>
+ and <see cref="P:log4net.Appender.SmtpAppender.Password"/> properties must also be set.
+ </para>
+ <para>
+ To set the SMTP server port use the <see cref="P:log4net.Appender.SmtpAppender.Port"/> property. The default port is 25.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Appender.SmtpAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Sends the contents of the cyclic buffer as an e-mail message.
+ </summary>
+ <param name="events">The logging events to send.</param>
+ </member>
+ <member name="M:log4net.Appender.SmtpAppender.SendEmail(System.String)">
+ <summary>
+ Send the email message
+ </summary>
+ <param name="messageBody">the body text to include in the mail</param>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.To">
+ <summary>
+ Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).
+ </summary>
+ <value>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </value>
+ <remarks>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Cc">
+ <summary>
+ Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses
+ that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).
+ </summary>
+ <value>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </value>
+ <remarks>
+ <para>
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+ </para>
+ <para>
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Bcc">
+ <summary>
+ Gets or sets a semicolon-delimited list of recipient e-mail addresses
+ that will be blind carbon copied.
+ </summary>
+ <value>
+ A semicolon-delimited list of e-mail addresses.
+ </value>
+ <remarks>
+ <para>
+ A semicolon-delimited list of recipient e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.From">
+ <summary>
+ Gets or sets the e-mail address of the sender.
+ </summary>
+ <value>
+ The e-mail address of the sender.
+ </value>
+ <remarks>
+ <para>
+ The e-mail address of the sender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Subject">
+ <summary>
+ Gets or sets the subject line of the e-mail message.
+ </summary>
+ <value>
+ The subject line of the e-mail message.
+ </value>
+ <remarks>
+ <para>
+ The subject line of the e-mail message.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.SmtpHost">
+ <summary>
+ Gets or sets the name of the SMTP relay mail server to use to send
+ the e-mail messages.
+ </summary>
+ <value>
+ The name of the e-mail relay server. If SmtpServer is not set, the
+ name of the local SMTP server is used.
+ </value>
+ <remarks>
+ <para>
+ The name of the e-mail relay server. If SmtpServer is not set, the
+ name of the local SMTP server is used.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.LocationInfo">
+ <summary>
+ Obsolete
+ </summary>
+ <remarks>
+ Use the BufferingAppenderSkeleton Fix methods instead
+ </remarks>
+ <remarks>
+ <para>
+ Obsolete property.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Authentication">
+ <summary>
+ The mode to use to authentication with the SMTP server
+ </summary>
+ <remarks>
+ <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ Valid Authentication mode values are: <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>,
+ <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, and <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>.
+ The default value is <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>. When using
+ <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> you must specify the <see cref="P:log4net.Appender.SmtpAppender.Username"/>
+ and <see cref="P:log4net.Appender.SmtpAppender.Password"/> to use to authenticate.
+ When using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/> the Windows credentials for the current
+ thread, if impersonating, or the process will be used to authenticate.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Username">
+ <summary>
+ The username to use to authenticate with the SMTP server
+ </summary>
+ <remarks>
+ <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when
+ <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>,
+ otherwise the username will be ignored.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Password">
+ <summary>
+ The password to use to authenticate with the SMTP server
+ </summary>
+ <remarks>
+ <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when
+ <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>,
+ otherwise the password will be ignored.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Port">
+ <summary>
+ The port on which the SMTP server is listening
+ </summary>
+ <remarks>
+ <note type="caution">Server Port is only available on the MS .NET 1.1 runtime.</note>
+ <para>
+ The port on which the SMTP server is listening. The default
+ port is <c>25</c>. The Port can only be changed when running on
+ the MS .NET 1.1 runtime.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.Priority">
+ <summary>
+ Gets or sets the priority of the e-mail message
+ </summary>
+ <value>
+ One of the <see cref="T:System.Net.Mail.MailPriority"/> values.
+ </value>
+ <remarks>
+ <para>
+ Sets the priority of the e-mails generated by this
+ appender. The default priority is <see cref="F:System.Net.Mail.MailPriority.Normal"/>.
+ </para>
+ <para>
+ If you are using this appender to report errors then
+ you may want to set the priority to <see cref="F:System.Net.Mail.MailPriority.High"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.EnableSsl">
+ <summary>
+ Enable or disable use of SSL when sending e-mail message
+ </summary>
+ <remarks>
+ This is available on MS .NET 2.0 runtime and higher
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.ReplyTo">
+ <summary>
+ Gets or sets the reply-to e-mail address.
+ </summary>
+ <remarks>
+ This is available on MS .NET 2.0 runtime and higher
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.SubjectEncoding">
+ <summary>
+ Gets or sets the subject encoding to be used.
+ </summary>
+ <remarks>
+ The default encoding is the operating system's current ANSI codepage.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.BodyEncoding">
+ <summary>
+ Gets or sets the body encoding to be used.
+ </summary>
+ <remarks>
+ The default encoding is the operating system's current ANSI codepage.
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.SmtpAppender.SmtpAuthentication">
+ <summary>
+ Values for the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property.
+ </summary>
+ <remarks>
+ <para>
+ SMTP authentication modes.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None">
+ <summary>
+ No authentication
+ </summary>
+ </member>
+ <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic">
+ <summary>
+ Basic authentication.
+ </summary>
+ <remarks>
+ Requires a username and password to be supplied
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm">
+ <summary>
+ Integrated authentication
+ </summary>
+ <remarks>
+ Uses the Windows credentials from the current thread or process to authenticate.
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.SmtpPickupDirAppender">
+ <summary>
+ Send an email when a specific logging event occurs, typically on errors
+ or fatal errors. Rather than sending via smtp it writes a file into the
+ directory specified by <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>. This allows services such
+ as the IIS SMTP agent to manage sending the messages.
+ </summary>
+ <remarks>
+ <para>
+ The configuration for this appender is identical to that of the <c>SMTPAppender</c>,
+ except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify
+ <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>.
+ </para>
+ <para>
+ The number of logging events delivered in this e-mail depend on
+ the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The
+ <see cref="T:log4net.Appender.SmtpPickupDirAppender"/> keeps only the last
+ <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its
+ cyclic buffer. This keeps memory requirements at a reasonable level while
+ still delivering useful application context.
+ </para>
+ </remarks>
+ <author>Niall Daley</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])">
+ <summary>
+ Sends the contents of the cyclic buffer as an e-mail message.
+ </summary>
+ <param name="events">The logging events to send.</param>
+ <remarks>
+ <para>
+ Sends the contents of the cyclic buffer as an e-mail message.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions">
+ <summary>
+ Activate the options on this appender.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> must be called again.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)">
+ <summary>
+ Convert a path into a fully qualified path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>The fully qualified path.</returns>
+ <remarks>
+ <para>
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.SmtpPickupDirAppender.m_securityContext">
+ <summary>
+ The security context to use for privileged calls
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.To">
+ <summary>
+ Gets or sets a semicolon-delimited list of recipient e-mail addresses.
+ </summary>
+ <value>
+ A semicolon-delimited list of e-mail addresses.
+ </value>
+ <remarks>
+ <para>
+ A semicolon-delimited list of e-mail addresses.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.From">
+ <summary>
+ Gets or sets the e-mail address of the sender.
+ </summary>
+ <value>
+ The e-mail address of the sender.
+ </value>
+ <remarks>
+ <para>
+ The e-mail address of the sender.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.Subject">
+ <summary>
+ Gets or sets the subject line of the e-mail message.
+ </summary>
+ <value>
+ The subject line of the e-mail message.
+ </value>
+ <remarks>
+ <para>
+ The subject line of the e-mail message.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.PickupDir">
+ <summary>
+ Gets or sets the path to write the messages to.
+ </summary>
+ <remarks>
+ <para>
+ Gets or sets the path to write the messages to. This should be the same
+ as that used by the agent sending the messages.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext">
+ <summary>
+ Gets or sets the <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory.
+ </value>
+ <remarks>
+ <para>
+ Unless a <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> specified here for this appender
+ the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TelnetAppender">
+ <summary>
+ Appender that allows clients to connect via Telnet to receive log messages
+ </summary>
+ <remarks>
+ <para>
+ The TelnetAppender accepts socket connections and streams logging messages
+ back to the client.
+ The output is provided in a telnet-friendly way so that a log can be monitored
+ over a TCP/IP socket.
+ This allows simple remote monitoring of application logging.
+ </para>
+ <para>
+ The default <see cref="P:log4net.Appender.TelnetAppender.Port"/> is 23 (the telnet port).
+ </para>
+ </remarks>
+ <author>Keith Long</author>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TelnetAppender.declaringType">
+ <summary>
+ The fully qualified type of the TelnetAppender class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.OnClose">
+ <summary>
+ Overrides the parent method to close the socket handler
+ </summary>
+ <remarks>
+ <para>
+ Closes all the outstanding connections.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.ActivateOptions">
+ <summary>
+ Initialize the appender based on the options set.
+ </summary>
+ <remarks>
+ <para>
+ This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
+ activation scheme. The <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> method must
+ be called on this object after the configuration properties have
+ been set. Until <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> is called this
+ object is in an undefined state and must not be used.
+ </para>
+ <para>
+ If any of the configuration properties are modified then
+ <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> must be called again.
+ </para>
+ <para>
+ Create the socket handler and wait for connections
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the logging event to each connected client.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the logging event to each connected client.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TelnetAppender.Port">
+ <summary>
+ Gets or sets the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections.
+ </summary>
+ <value>
+ An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/>
+ indicating the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections.
+ </value>
+ <remarks>
+ <para>
+ The default value is 23 (the telnet port).
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/>
+ or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
+ </member>
+ <member name="P:log4net.Appender.TelnetAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TelnetAppender.SocketHandler">
+ <summary>
+ Helper class to manage connected clients
+ </summary>
+ <remarks>
+ <para>
+ The SocketHandler class is used to accept connections from
+ clients. It is threaded so that clients can connect/disconnect
+ asynchronously.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)">
+ <summary>
+ Opens a new server port on <paramref ref="port"/>
+ </summary>
+ <param name="port">the local port to listen on for connections</param>
+ <remarks>
+ <para>
+ Creates a socket handler on the specified local server port.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)">
+ <summary>
+ Sends a string message to each of the connected clients
+ </summary>
+ <param name="message">the text to send</param>
+ <remarks>
+ <para>
+ Sends a string message to each of the connected clients
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)">
+ <summary>
+ Add a client to the internal clients list
+ </summary>
+ <param name="client">client to add</param>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)">
+ <summary>
+ Remove a client from the internal clients list
+ </summary>
+ <param name="client">client to remove</param>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)">
+ <summary>
+ Callback used to accept a connection on the server socket
+ </summary>
+ <param name="asyncResult">The result of the asynchronous operation</param>
+ <remarks>
+ <para>
+ On connection adds to the list of connections
+ if there are two many open connections you will be disconnected
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Dispose">
+ <summary>
+ Close all network connections
+ </summary>
+ <remarks>
+ <para>
+ Make sure we close all network connections
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections">
+ <summary>
+ Test if this handler has active connections
+ </summary>
+ <value>
+ <c>true</c> if this handler has active connections
+ </value>
+ <remarks>
+ <para>
+ This property will be <c>true</c> while this handler has
+ active connections, that is at least one connection that
+ the handler will attempt to send a message to.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient">
+ <summary>
+ Class that represents a client connected to this handler
+ </summary>
+ <remarks>
+ <para>
+ Class that represents a client connected to this handler
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)">
+ <summary>
+ Create this <see cref="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient"/> for the specified <see cref="T:System.Net.Sockets.Socket"/>
+ </summary>
+ <param name="socket">the client's socket</param>
+ <remarks>
+ <para>
+ Opens a stream writer on the socket.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)">
+ <summary>
+ Write a string to the client
+ </summary>
+ <param name="message">string to send</param>
+ <remarks>
+ <para>
+ Write a string to the client
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose">
+ <summary>
+ Cleanup the clients connection
+ </summary>
+ <remarks>
+ <para>
+ Close the socket connection.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Appender.TraceAppender">
+ <summary>
+ Appends log events to the <see cref="T:System.Diagnostics.Trace"/> system.
+ </summary>
+ <remarks>
+ <para>
+ The application configuration file can be used to control what listeners
+ are actually used. See the MSDN documentation for the
+ <see cref="T:System.Diagnostics.Trace"/> class for details on configuring the
+ trace system.
+ </para>
+ <para>
+ Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>
+ method. The event's logger name is the default value for the category parameter
+ of the Write method.
+ </para>
+ <para>
+ <b>Compact Framework</b><br/>
+ The Compact Framework does not support the <see cref="T:System.Diagnostics.Trace"/>
+ class for any operation except <c>Assert</c>. When using the Compact Framework this
+ appender will write to the <see cref="T:System.Diagnostics.Debug"/> system rather than
+ the Trace system. This appender will therefore behave like the <see cref="T:log4net.Appender.DebugAppender"/>.
+ </para>
+ </remarks>
+ <author>Douglas de la Torre</author>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Ron Grabowski</author>
+ </member>
+ <member name="M:log4net.Appender.TraceAppender.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/>.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/>
+ with a specified layout.
+ </summary>
+ <param name="layout">The layout to use with this appender.</param>
+ <remarks>
+ <para>
+ Obsolete constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)">
+ <summary>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system.
+ </summary>
+ <param name="loggingEvent">The event to log.</param>
+ <remarks>
+ <para>
+ Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TraceAppender.m_immediateFlush">
+ <summary>
+ Immediate flush means that the underlying writer or output stream
+ will be flushed at the end of each append operation.
+ </summary>
+ <remarks>
+ <para>
+ Immediate flush is slower but ensures that each append request is
+ actually written. If <see cref="P:log4net.Appender.TraceAppender.ImmediateFlush"/> is set to
+ <c>false</c>, then there is a good chance that the last few
+ logs events are not actually written to persistent media if and
+ when the application crashes.
+ </para>
+ <para>
+ The default value is <c>true</c>.</para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Appender.TraceAppender.m_category">
+ <summary>
+ Defaults to %logger
+ </summary>
+ </member>
+ <member name="P:log4net.Appender.TraceAppender.ImmediateFlush">
+ <summary>
+ Gets or sets a value that indicates whether the appender will
+ flush at the end of each write.
+ </summary>
+ <remarks>
+ <para>The default behavior is to flush at the end of each
+ write. If the option is set to<c>false</c>, then the underlying
+ stream can defer writing to physical medium to a later time.
+ </para>
+ <para>
+ Avoiding the flush operation at the end of each append results
+ in a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TraceAppender.Category">
+ <summary>
+ The category parameter sent to the Trace method.
+ </summary>
+ <remarks>
+ <para>
+ Defaults to %logger which will use the logger name of the current
+ <see cref="T:log4net.Core.LoggingEvent"/> as the category parameter.
+ </para>
+ <para>
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Appender.TraceAppender.RequiresLayout">
+ <summary>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </summary>
+ <value><c>true</c></value>
+ <remarks>
+ <para>
+ This appender requires a <see cref="N:log4net.Layout"/> to be set.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.AliasDomainAttribute">
+ <summary>
+ Assembly level attribute that specifies a domain to alias to this assembly's repository.
+ </summary>
+ <remarks>
+ <para>
+ <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>
+ </para>
+ <para>
+ An assembly's logger repository is defined by its <see cref="T:log4net.Config.DomainAttribute"/>,
+ however this can be overridden by an assembly loaded before the target assembly.
+ </para>
+ <para>
+ An assembly can alias another assembly's domain to its repository by
+ specifying this attribute with the name of the target domain.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may be used
+ as many times as necessary to alias all the required domains.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Config.AliasRepositoryAttribute">
+ <summary>
+ Assembly level attribute that specifies a repository to alias to this assembly's repository.
+ </summary>
+ <remarks>
+ <para>
+ An assembly's logger repository is defined by its <see cref="T:log4net.Config.RepositoryAttribute"/>,
+ however this can be overridden by an assembly loaded before the target assembly.
+ </para>
+ <para>
+ An assembly can alias another assembly's repository to its repository by
+ specifying this attribute with the name of the target repository.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may be used
+ as many times as necessary to alias all the required repositories.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with
+ the specified repository to alias to this assembly's repository.
+ </summary>
+ <param name="name">The repository to alias to this assemby's repository.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with
+ the specified repository to alias to this assembly's repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.AliasRepositoryAttribute.Name">
+ <summary>
+ Gets or sets the repository to alias to this assemby's repository.
+ </summary>
+ <value>
+ The repository to alias to this assemby's repository.
+ </value>
+ <remarks>
+ <para>
+ The name of the repository to alias to this assemby's repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.AliasDomainAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.AliasDomainAttribute"/> class with
+ the specified domain to alias to this assembly's repository.
+ </summary>
+ <param name="name">The domain to alias to this assemby's repository.</param>
+ <remarks>
+ <para>
+ Obsolete. Use <see cref="T:log4net.Config.AliasRepositoryAttribute"/> instead of <see cref="T:log4net.Config.AliasDomainAttribute"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.BasicConfigurator">
+ <summary>
+ Use this class to quickly configure a <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
+ </summary>
+ <remarks>
+ <para>
+ Allows very simple programmatic configuration of log4net.
+ </para>
+ <para>
+ Only one appender can be configured using this configurator.
+ The appender is set at the root of the hierarchy and all logging
+ events will be delivered to that appender.
+ </para>
+ <para>
+ Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
+ they would require that the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions()"/> method
+ be called after the appenders properties have been configured.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Config.BasicConfigurator.declaringType">
+ <summary>
+ The fully qualified type of the BasicConfigurator class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.BasicConfigurator"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Uses a private access modifier to prevent instantiation of this class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure">
+ <summary>
+ Initializes the log4net system with a default configuration.
+ </summary>
+ <remarks>
+ <para>
+ Initializes the log4net logging system using a <see cref="T:log4net.Appender.ConsoleAppender"/>
+ that will write to <c>Console.Out</c>. The log messages are
+ formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object
+ with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/>
+ layout style.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)">
+ <summary>
+ Initializes the log4net system using the specified appender.
+ </summary>
+ <param name="appender">The appender to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the log4net system using the specified appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])">
+ <summary>
+ Initializes the log4net system using the specified appenders.
+ </summary>
+ <param name="appenders">The appenders to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the log4net system using the specified appenders.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> with a default configuration.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Initializes the specified repository using a <see cref="T:log4net.Appender.ConsoleAppender"/>
+ that will write to <c>Console.Out</c>. The log messages are
+ formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object
+ with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/>
+ layout style.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)">
+ <summary>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="appender">The appender to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])">
+ <summary>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appenders.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="appenders">The appenders to use to log all logging events.</param>
+ <remarks>
+ <para>
+ Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.ConfiguratorAttribute">
+ <summary>
+ Base class for all log4net configuration attributes.
+ </summary>
+ <remarks>
+ This is an abstract class that must be extended by
+ specific configurators. This attribute allows the
+ configurator to be parameterized by an assembly level
+ attribute.
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)">
+ <summary>
+ Constructor used by subclasses.
+ </summary>
+ <param name="priority">the ordering priority for this configurator</param>
+ <remarks>
+ <para>
+ The <paramref name="priority"/> is used to order the configurator
+ attributes before they are invoked. Higher priority configurators are executed
+ before lower priority ones.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Abstract method implemented by a subclass. When this method is called
+ the subclass should configure the <paramref name="targetRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)">
+ <summary>
+ Compare this instance to another ConfiguratorAttribute
+ </summary>
+ <param name="obj">the object to compare to</param>
+ <returns>see <see cref="M:System.IComparable.CompareTo(System.Object)"/></returns>
+ <remarks>
+ <para>
+ Compares the priorities of the two <see cref="T:log4net.Config.ConfiguratorAttribute"/> instances.
+ Sorts by priority in descending order. Objects with the same priority are
+ randomly ordered.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.DomainAttribute">
+ <summary>
+ Assembly level attribute that specifies the logging domain for the assembly.
+ </summary>
+ <remarks>
+ <para>
+ <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>
+ </para>
+ <para>
+ Assemblies are mapped to logging domains. Each domain has its own
+ logging repository. This attribute specified on the assembly controls
+ the configuration of the domain. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name
+ of the domain that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/>
+ specifies the type of the repository objects to create for the domain. If
+ this attribute is not specified and a <see cref="P:log4net.Config.RepositoryAttribute.Name"/> is not specified
+ then the assembly will be part of the default shared logging domain.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may only be used
+ once per assembly.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Config.RepositoryAttribute">
+ <summary>
+ Assembly level attribute that specifies the logging repository for the assembly.
+ </summary>
+ <remarks>
+ <para>
+ Assemblies are mapped to logging repository. This attribute specified
+ on the assembly controls
+ the configuration of the repository. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name
+ of the repository that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/>
+ specifies the type of the <see cref="T:log4net.Repository.ILoggerRepository"/> object
+ to create for the assembly. If this attribute is not specified or a <see cref="P:log4net.Config.RepositoryAttribute.Name"/>
+ is not specified then the assembly will be part of the default shared logging repository.
+ </para>
+ <para>
+ This attribute can only be specified on the assembly and may only be used
+ once per assembly.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.RepositoryAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.RepositoryAttribute.#ctor(System.String)">
+ <summary>
+ Initialize a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class
+ with the name of the repository.
+ </summary>
+ <param name="name">The name of the repository.</param>
+ <remarks>
+ <para>
+ Initialize the attribute with the name for the assembly's repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.RepositoryAttribute.Name">
+ <summary>
+ Gets or sets the name of the logging repository.
+ </summary>
+ <value>
+ The string name to use as the name of the repository associated with this
+ assembly.
+ </value>
+ <remarks>
+ <para>
+ This value does not have to be unique. Several assemblies can share the
+ same repository. They will share the logging configuration of the repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.RepositoryAttribute.RepositoryType">
+ <summary>
+ Gets or sets the type of repository to create for this assembly.
+ </summary>
+ <value>
+ The type of repository to create for this assembly.
+ </value>
+ <remarks>
+ <para>
+ The type of the repository to create for the assembly.
+ The type must implement the <see cref="T:log4net.Repository.ILoggerRepository"/>
+ interface.
+ </para>
+ <para>
+ This will be the type of repository created when
+ the repository is created. If multiple assemblies reference the
+ same repository then the repository is only created once using the
+ <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/> of the first assembly to call into the
+ repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DomainAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Obsolete. Use RepositoryAttribute instead of DomainAttribute.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DomainAttribute.#ctor(System.String)">
+ <summary>
+ Initialize a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class
+ with the name of the domain.
+ </summary>
+ <param name="name">The name of the domain.</param>
+ <remarks>
+ <para>
+ Obsolete. Use RepositoryAttribute instead of DomainAttribute.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.DOMConfigurator">
+ <summary>
+ Use this class to initialize the log4net environment using an Xml tree.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.#ctor">
+ <summary>
+ Private constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure">
+ <summary>
+ Automatically configures the log4net system based on the
+ application's configuration settings.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings
+ stored in the application's configuration file.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)">
+ <summary>
+ Configures log4net using a <c>log4net</c> element
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </remarks>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML
+ element.
+ </summary>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the specified configuration file.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)">
+ <summary>
+ Configures log4net using the specified configuration file.
+ </summary>
+ <param name="configStream">A stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configStream">The stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the file specified, monitors the file for changes
+ and reloads the configuration if a change is detected.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified,
+ monitors the file for changes and reloads the configuration if a change
+ is detected.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
+ </para>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="T:log4net.Config.DOMConfiguratorAttribute">
+ <summary>
+ Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>.
+ </summary>
+ <remarks>
+ <para>
+ <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>
+ </para>
+ <para>
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+ </para>
+ <para>
+ Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
+ without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
+ methods.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Config.XmlConfiguratorAttribute">
+ <summary>
+ Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>.
+ </summary>
+ <remarks>
+ <para>
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+ </para>
+ <para>
+ Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
+ without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
+ methods.
+ </para>
+ <para>
+ If neither of the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>
+ properties are set the configuration is loaded from the application's .config file.
+ If set the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property takes priority over the
+ <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property. The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property
+ specifies a path to a file to load the config from. The path is relative to the
+ application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>.
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property is used as a postfix to the assembly file name.
+ The config file must be located in the application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>.
+ For example in a console application setting the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> to
+ <c>config</c> has the same effect as not specifying the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or
+ <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> properties.
+ </para>
+ <para>
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.Watch"/> property can be set to cause the <see cref="T:log4net.Config.XmlConfigurator"/>
+ to watch the configuration file for changes.
+ </para>
+ <note>
+ <para>
+ Log4net will only look for assembly level configuration attributes once.
+ When using the log4net assembly level attributes to control the configuration
+ of log4net you must ensure that the first call to any of the
+ <see cref="T:log4net.Core.LoggerManager"/> methods is made from the assembly with the configuration
+ attributes.
+ </para>
+ <para>
+ If you cannot guarantee the order in which log4net calls will be made from
+ different assemblies you must use programmatic configuration instead, i.e.
+ call the <see cref="M:XmlConfigurator.Configure()"/> method directly.
+ </para>
+ </note>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ <remarks>
+ <para>
+ Default constructor
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Configure the repository using the <see cref="T:log4net.Config.XmlConfigurator"/>.
+ The <paramref name="targetRepository"/> specified must extend the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>
+ class otherwise the <see cref="T:log4net.Config.XmlConfigurator"/> will not be able to
+ configure it.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="targetRepository"/> does not extend <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.</exception>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Attempt to load configuration from the local file system
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configure the specified repository using a <see cref="T:System.IO.FileInfo"/>
+ </summary>
+ <param name="targetRepository">The repository to configure.</param>
+ <param name="configFile">the FileInfo pointing to the config file</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Attempt to load configuration from a URI
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ </member>
+ <member name="F:log4net.Config.XmlConfiguratorAttribute.declaringType">
+ <summary>
+ The fully qualified type of the XmlConfiguratorAttribute class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile">
+ <summary>
+ Gets or sets the filename of the configuration file.
+ </summary>
+ <value>
+ The filename of the configuration file.
+ </value>
+ <remarks>
+ <para>
+ If specified, this is the name of the configuration file to use with
+ the <see cref="T:log4net.Config.XmlConfigurator"/>. This file path is relative to the
+ <b>application base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>).
+ </para>
+ <para>
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension">
+ <summary>
+ Gets or sets the extension of the configuration file.
+ </summary>
+ <value>
+ The extension of the configuration file.
+ </value>
+ <remarks>
+ <para>
+ If specified this is the extension for the configuration file.
+ The path to the config file is built by using the <b>application
+ base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>),
+ the <b>assembly file name</b> and the config file extension.
+ </para>
+ <para>
+ If the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> is set to <c>MyExt</c> then
+ possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or
+ <c>MyClassLibrary.dll.MyExt</c>.
+ </para>
+ <para>
+ The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.XmlConfiguratorAttribute.Watch">
+ <summary>
+ Gets or sets a value indicating whether to watch the configuration file.
+ </summary>
+ <value>
+ <c>true</c> if the configuration should be watched, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ If this flag is specified and set to <c>true</c> then the framework
+ will watch the configuration file and will reload the config each time
+ the file is modified.
+ </para>
+ <para>
+ The config file can only be watched if it is loaded from local disk.
+ In a No-Touch (Smart Client) deployment where the application is downloaded
+ from a web server the config file may not reside on the local disk
+ and therefore it may not be able to watch it.
+ </para>
+ <note>
+ Watching configuration is not supported on the SSCLI.
+ </note>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.Log4NetConfigurationSectionHandler">
+ <summary>
+ Class to register for the log4net section of the configuration file
+ </summary>
+ <remarks>
+ The log4net section of the configuration file needs to have a section
+ handler registered. This is the section handler used. It simply returns
+ the XML element that is the root of the section.
+ </remarks>
+ <example>
+ Example of registering the log4net section handler :
+ <code lang="XML" escaped="true">
+ <configuration>
+ <configSections>
+ <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
+ </configSections>
+ <log4net>
+ log4net configuration XML goes here
+ </log4net>
+ </configuration>
+ </code>
+ </example>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> class.
+ </summary>
+ <remarks>
+ <para>
+ Default constructor.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
+ <summary>
+ Parses the configuration section.
+ </summary>
+ <param name="parent">The configuration settings in a corresponding parent configuration section.</param>
+ <param name="configContext">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>
+ <param name="section">The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</param>
+ <returns>The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</returns>
+ <remarks>
+ <para>
+ Returns the <see cref="T:System.Xml.XmlNode"/> containing the configuration data,
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.PluginAttribute">
+ <summary>
+ Assembly level attribute that specifies a plugin to attach to
+ the repository.
+ </summary>
+ <remarks>
+ <para>
+ Specifies the type of a plugin to create and attach to the
+ assembly's repository. The plugin type must implement the
+ <see cref="T:log4net.Plugin.IPlugin"/> interface.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.Plugin.IPluginFactory">
+ <summary>
+ Interface used to create plugins.
+ </summary>
+ <remarks>
+ <para>
+ Interface used to create a plugin.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Plugin.IPluginFactory.CreatePlugin">
+ <summary>
+ Creates the plugin object.
+ </summary>
+ <returns>the new plugin instance</returns>
+ <remarks>
+ <para>
+ Create and return a new plugin instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class
+ with the specified type.
+ </summary>
+ <param name="typeName">The type name of plugin to create.</param>
+ <remarks>
+ <para>
+ Create the attribute with the plugin type specified.
+ </para>
+ <para>
+ Where possible use the constructor that takes a <see cref="T:System.Type"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class
+ with the specified type.
+ </summary>
+ <param name="type">The type of plugin to create.</param>
+ <remarks>
+ <para>
+ Create the attribute with the plugin type specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.CreatePlugin">
+ <summary>
+ Creates the plugin object defined by this attribute.
+ </summary>
+ <remarks>
+ <para>
+ Creates the instance of the <see cref="T:log4net.Plugin.IPlugin"/> object as
+ specified by this attribute.
+ </para>
+ </remarks>
+ <returns>The plugin object.</returns>
+ </member>
+ <member name="M:log4net.Config.PluginAttribute.ToString">
+ <summary>
+ Returns a representation of the properties of this object.
+ </summary>
+ <remarks>
+ <para>
+ Overrides base class <see cref="M:Object.ToString()" /> method to
+ return a representation of the properties of this object.
+ </para>
+ </remarks>
+ <returns>A representation of the properties of this object</returns>
+ </member>
+ <member name="P:log4net.Config.PluginAttribute.Type">
+ <summary>
+ Gets or sets the type for the plugin.
+ </summary>
+ <value>
+ The type for the plugin.
+ </value>
+ <remarks>
+ <para>
+ The type for the plugin.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.PluginAttribute.TypeName">
+ <summary>
+ Gets or sets the type name for the plugin.
+ </summary>
+ <value>
+ The type name for the plugin.
+ </value>
+ <remarks>
+ <para>
+ The type name for the plugin.
+ </para>
+ <para>
+ Where possible use the <see cref="P:log4net.Config.PluginAttribute.Type"/> property instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.SecurityContextProviderAttribute">
+ <summary>
+ Assembly level attribute to configure the <see cref="T:log4net.Core.SecurityContextProvider"/>.
+ </summary>
+ <remarks>
+ <para>
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+ </para>
+ <para>
+ Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
+ without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
+ methods.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)">
+ <summary>
+ Construct provider attribute with type specified
+ </summary>
+ <param name="providerType">the type of the provider to use</param>
+ <remarks>
+ <para>
+ The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/>
+ class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the SecurityContextProvider
+ </summary>
+ <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
+ <param name="targetRepository">The repository to configure.</param>
+ <remarks>
+ <para>
+ Creates a provider instance from the <see cref="P:log4net.Config.SecurityContextProviderAttribute.ProviderType"/> specified.
+ Sets this as the default security context provider <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Config.SecurityContextProviderAttribute.declaringType">
+ <summary>
+ The fully qualified type of the SecurityContextProviderAttribute class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Config.SecurityContextProviderAttribute.ProviderType">
+ <summary>
+ Gets or sets the type of the provider to use.
+ </summary>
+ <value>
+ the type of the provider to use.
+ </value>
+ <remarks>
+ <para>
+ The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/>
+ class.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.XmlConfigurator">
+ <summary>
+ Use this class to initialize the log4net environment using an Xml tree.
+ </summary>
+ <remarks>
+ <para>
+ Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.#ctor">
+ <summary>
+ Private constructor
+ </summary>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure">
+ <summary>
+ Automatically configures the log4net system based on the
+ application's configuration settings.
+ </summary>
+ <remarks>
+ <para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </para>
+ <para>
+ To use this method to configure log4net you must specify
+ the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section
+ handler for the <c>log4net</c> configuration section. See the
+ <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example.
+ </para>
+ </remarks>
+ <seealso cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings
+ stored in the application's configuration file.
+ </summary>
+ <remarks>
+ <para>
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ <c>log4net</c> that contains the configuration data.
+ </para>
+ <para>
+ To use this method to configure log4net you must specify
+ the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section
+ handler for the <c>log4net</c> configuration section. See the
+ <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example.
+ </para>
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)">
+ <summary>
+ Configures log4net using a <c>log4net</c> element
+ </summary>
+ <remarks>
+ <para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </para>
+ </remarks>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML
+ element.
+ </summary>
+ <remarks>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </remarks>
+ <param name="repository">The repository to configure.</param>
+ <param name="element">The element to parse.</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the specified configuration file.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <para>
+ The first element matching <c><configuration></c> will be read as the
+ configuration. If this file is also a .NET .config file then you must specify
+ a configuration section for the <c>log4net</c> element otherwise .NET will
+ complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example:
+ <code lang="XML" escaped="true">
+ <configSections>
+ <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
+ </configSections>
+ </code>
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.Uri)">
+ <summary>
+ Configures log4net using the specified configuration URI.
+ </summary>
+ <param name="configUri">A URI to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)">
+ <summary>
+ Configures log4net using the specified configuration data stream.
+ </summary>
+ <param name="configStream">A stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the log4net configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either <c>MyAppName.exe.config</c> for a
+ normal application on <c>Web.config</c> for an ASP.NET application).
+ </para>
+ <para>
+ The first element matching <c><configuration></c> will be read as the
+ configuration. If this file is also a .NET .config file then you must specify
+ a configuration section for the <c>log4net</c> element otherwise .NET will
+ complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example:
+ <code lang="XML" escaped="true">
+ <configSections>
+ <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
+ </configSections>
+ </code>
+ </para>
+ <example>
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+ </example>
+ <code lang="C#">
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+ </code>
+ <para>
+ In the <c>.config</c> file, the path to the log4net can be specified like this :
+ </para>
+ <code lang="XML" escaped="true">
+ <configuration>
+ <appSettings>
+ <add key="log4net-config-file" value="log.config"/>
+ </appSettings>
+ </configuration>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ URI.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configUri">A URI to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration
+ file.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configStream">The stream to load the XML configuration from.</param>
+ <remarks>
+ <para>
+ The configuration data must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ Note that this method will NOT close the stream parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)">
+ <summary>
+ Configures log4net using the file specified, monitors the file for changes
+ and reloads the configuration if a change is detected.
+ </summary>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified,
+ monitors the file for changes and reloads the configuration if a change
+ is detected.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The XML file to load the configuration from.</param>
+ <remarks>
+ <para>
+ The configuration file must be valid XML. It must contain
+ at least one element called <c>log4net</c> that holds
+ the configuration data.
+ </para>
+ <para>
+ The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
+ and depends on the behavior of that class.
+ </para>
+ <para>
+ For more information on how to configure log4net using
+ a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
+ </para>
+ </remarks>
+ <seealso cref="M:Configure(FileInfo)"/>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
+ <summary>
+ Configures the specified repository using a <c>log4net</c> element.
+ </summary>
+ <param name="repository">The hierarchy to configure.</param>
+ <param name="element">The element to parse.</param>
+ <remarks>
+ <para>
+ Loads the log4net configuration from the XML element
+ supplied as <paramref name="element"/>.
+ </para>
+ <para>
+ This method is ultimately called by one of the Configure methods
+ to load the configuration from an <see cref="T:System.Xml.XmlElement"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler">
+ <summary>
+ Maps repository names to ConfigAndWatchHandler instances to allow a particular
+ ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is
+ reconfigured.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.declaringType">
+ <summary>
+ The fully qualified type of the XmlConfigurator class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler">
+ <summary>
+ Class used to watch config files.
+ </summary>
+ <remarks>
+ <para>
+ Uses the <see cref="T:System.IO.FileSystemWatcher"/> to monitor
+ changes to a specified file. Because multiple change notifications
+ may be raised when the file is modified, a timer is used to
+ compress the notifications into a single event. The timer
+ waits for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> time before delivering
+ the event notification. If any further <see cref="T:System.IO.FileSystemWatcher"/>
+ change notifications arrive while the timer is waiting it
+ is reset and waits again for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> to
+ elapse.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis">
+ <summary>
+ The default amount of time to wait after receiving notification
+ before reloading the config file.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile">
+ <summary>
+ Holds the FileInfo used to configure the XmlConfigurator
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository">
+ <summary>
+ Holds the repository being configured.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer">
+ <summary>
+ The timer used to compress the notification events.
+ </summary>
+ </member>
+ <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher">
+ <summary>
+ Watches file for changes. This object should be disposed when no longer
+ needed to free system handles on the watched resources.
+ </summary>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class to
+ watch a specified config file used to configure a repository.
+ </summary>
+ <param name="repository">The repository to configure.</param>
+ <param name="configFile">The configuration file to watch.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)">
+ <summary>
+ Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>.
+ </summary>
+ <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param>
+ <param name="e">The argument indicates the file that caused the event to be fired.</param>
+ <remarks>
+ <para>
+ This handler reloads the configuration from the file when the event is fired.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)">
+ <summary>
+ Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>.
+ </summary>
+ <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param>
+ <param name="e">The argument indicates the file that caused the event to be fired.</param>
+ <remarks>
+ <para>
+ This handler reloads the configuration from the file when the event is fired.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)">
+ <summary>
+ Called by the timer when the configuration has been updated.
+ </summary>
+ <param name="state">null</param>
+ </member>
+ <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose">
+ <summary>
+ Release the handles held by the watcher and timer.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.CompactRepositorySelector">
+ <summary>
+ The implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface suitable
+ for use with the compact framework
+ </summary>
+ <remarks>
+ <para>
+ This <see cref="T:log4net.Core.IRepositorySelector"/> implementation is a simple
+ mapping between repository name and <see cref="T:log4net.Repository.ILoggerRepository"/>
+ object.
+ </para>
+ <para>
+ The .NET Compact Framework 1.0 does not support retrieving assembly
+ level attributes therefore unlike the <c>DefaultRepositorySelector</c>
+ this selector does not examine the calling assembly for attributes.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="T:log4net.Core.IRepositorySelector">
+ <summary>
+ Interface used by the <see cref="T:log4net.LogManager"/> to select the <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.LogManager"/> uses a <see cref="T:log4net.Core.IRepositorySelector"/>
+ to specify the policy for selecting the correct <see cref="T:log4net.Repository.ILoggerRepository"/>
+ to return to the caller.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="assembly">The assembly to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly.</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </para>
+ <para>
+ How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/>
+ is made is not defined. The implementation may choose any method for
+ this association. The results of this method must be repeatable, i.e.
+ when called again with the same arguments the result must be the
+ save value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.String)">
+ <summary>
+ Gets the named <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </summary>
+ <param name="repositoryName">The name to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
+ <remarks>
+ Lookup a named <see cref="T:log4net.Repository.ILoggerRepository"/>. This is the repository created by
+ calling <see cref="M:CreateRepository(string,Type)"/>.
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a new repository for the assembly specified.
+ </summary>
+ <param name="assembly">The assembly to use to create the domain to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the domain
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ <para>
+ How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/>
+ is made is not defined. The implementation may choose any method for
+ this association.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)">
+ <summary>
+ Creates a new repository with the name specified.
+ </summary>
+ <param name="repositoryName">The name to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the name
+ specified such that a call to <see cref="M:GetRepository(string)"/> with the
+ same name will return the same repository instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)">
+ <summary>
+ Test if a named repository exists
+ </summary>
+ <param name="repositoryName">the named repository to check</param>
+ <returns><c>true</c> if the repository exists</returns>
+ <remarks>
+ <para>
+ Test if a named repository exists. Use <see cref="M:CreateRepository(Assembly, Type)"/>
+ to create a new repository and <see cref="M:GetRepository(Assembly)"/> to retrieve
+ a repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IRepositorySelector.GetAllRepositories">
+ <summary>
+ Gets an array of all currently defined repositories.
+ </summary>
+ <returns>
+ An array of the <see cref="T:log4net.Repository.ILoggerRepository"/> instances created by
+ this <see cref="T:log4net.Core.IRepositorySelector"/>.</returns>
+ <remarks>
+ <para>
+ Gets an array of all of the repositories created by this selector.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent">
+ <summary>
+ Event to notify that a logger repository has been created.
+ </summary>
+ <value>
+ Event to notify that a logger repository has been created.
+ </value>
+ <remarks>
+ <para>
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
+ holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)">
+ <summary>
+ Create a new repository selector
+ </summary>
+ <param name="defaultRepositoryType">the type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <remarks>
+ <para>
+ Create an new compact repository selector.
+ The default type for repositories must be specified,
+ an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">throw if <paramref name="defaultRepositoryType"/> is null</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException">throw if <paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/></exception>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Get the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly
+ </summary>
+ <param name="assembly">not used</param>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
+ <remarks>
+ <para>
+ The <paramref name="assembly"/> argument is not used. This selector does not create a
+ separate repository for each assembly.
+ </para>
+ <para>
+ As a named repository is not specified the default repository is
+ returned. The default repository is named <c>log4net-default-repository</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)">
+ <summary>
+ Get the named <see cref="T:log4net.Repository.ILoggerRepository"/>
+ </summary>
+ <param name="repositoryName">the name of the repository to lookup</param>
+ <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
+ <remarks>
+ <para>
+ Get the named <see cref="T:log4net.Repository.ILoggerRepository"/>. The default
+ repository is <c>log4net-default-repository</c>. Other repositories
+ must be created using the <see cref="M:CreateRepository(string, Type)"/>.
+ If the named repository does not exist an exception is thrown.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception>
+ <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> does not exist</exception>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Create a new repository for the assembly specified
+ </summary>
+ <param name="assembly">not used</param>
+ <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <returns>the repository created</returns>
+ <remarks>
+ <para>
+ The <paramref name="assembly"/> argument is not used. This selector does not create a
+ separate repository for each assembly.
+ </para>
+ <para>
+ If the <paramref name="repositoryType"/> is <c>null</c> then the
+ default repository type specified to the constructor is used.
+ </para>
+ <para>
+ As a named repository is not specified the default repository is
+ returned. The default repository is named <c>log4net-default-repository</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)">
+ <summary>
+ Create a new repository for the repository specified
+ </summary>
+ <param name="repositoryName">the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ If this param is null then the default repository type is used.</param>
+ <returns>the repository created</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(string)"/> with the
+ same repository specified will return the same repository instance.
+ </para>
+ <para>
+ If the named repository already exists an exception will be thrown.
+ </para>
+ <para>
+ If <paramref name="repositoryType"/> is <c>null</c> then the default
+ repository type specified to the constructor is used.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception>
+ <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> already exists</exception>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)">
+ <summary>
+ Test if a named repository exists
+ </summary>
+ <param name="repositoryName">the named repository to check</param>
+ <returns><c>true</c> if the repository exists</returns>
+ <remarks>
+ <para>
+ Test if a named repository exists. Use <see cref="M:CreateRepository(string, Type)"/>
+ to create a new repository and <see cref="M:GetRepository(string)"/> to retrieve
+ a repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.GetAllRepositories">
+ <summary>
+ Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects
+ </summary>
+ <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns>
+ <remarks>
+ <para>
+ Gets an array of all of the repositories created by this selector.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.CompactRepositorySelector.declaringType">
+ <summary>
+ The fully qualified type of the CompactRepositorySelector class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Notify the registered listeners that the repository has been created
+ </summary>
+ <param name="repository">The repository that has been created</param>
+ <remarks>
+ <para>
+ Raises the <event cref="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent">LoggerRepositoryCreatedEvent</event>
+ event.
+ </para>
+ </remarks>
+ </member>
+ <member name="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent">
+ <summary>
+ Event to notify that a logger repository has been created.
+ </summary>
+ <value>
+ Event to notify that a logger repository has been created.
+ </value>
+ <remarks>
+ <para>
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
+ holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.DefaultRepositorySelector">
+ <summary>
+ The default implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface.
+ </summary>
+ <remarks>
+ <para>
+ Uses attributes defined on the calling assembly to determine how to
+ configure the hierarchy for the repository.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)">
+ <summary>
+ Creates a new repository selector.
+ </summary>
+ <param name="defaultRepositoryType">The type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
+ <remarks>
+ <para>
+ Create an new repository selector.
+ The default type for repositories must be specified,
+ an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="defaultRepositoryType"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
+ </summary>
+ <param name="repositoryAssembly">The assembly use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <remarks>
+ <para>
+ The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and the repository
+ to create can be overridden by specifying the <see cref="T:log4net.Config.RepositoryAttribute"/>
+ attribute on the <paramref name="repositoryAssembly"/>.
+ </para>
+ <para>
+ The default values are to use the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>
+ implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
+ <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically configured using
+ any <see cref="T:log4net.Config.ConfiguratorAttribute"/> attributes defined on
+ the <paramref name="repositoryAssembly"/>.
+ </para>
+ </remarks>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly</returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository.
+ </summary>
+ <param name="repositoryName">The repository to use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository.</returns>
+ <remarks>
+ <para>
+ Returns the named repository. If <paramref name="repositoryName"/> is <c>null</c>
+ a <see cref="T:System.ArgumentNullException"/> is thrown. If the repository
+ does not exist a <see cref="T:log4net.Core.LogException"/> is thrown.
+ </para>
+ <para>
+ Use <see cref="M:CreateRepository(string, Type)"/> to create a repository.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception>
+ <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> does not exist.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Create a new repository for the assembly specified
+ </summary>
+ <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ <para>
+ The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and
+ the repository to create can be overridden by specifying the
+ <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ <paramref name="repositoryAssembly"/>. The default values are to use the
+ <paramref name="repositoryType"/> implementation of the
+ <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
+ <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically
+ configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/>
+ attributes defined on the <paramref name="repositoryAssembly"/>.
+ </para>
+ <para>
+ If a repository for the <paramref name="repositoryAssembly"/> already exists
+ that repository will be returned. An error will not be raised and that
+ repository may be of a different type to that specified in <paramref name="repositoryType"/>.
+ Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ assembly may be used to override the repository type specified in
+ <paramref name="repositoryType"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)">
+ <summary>
+ Creates a new repository for the assembly specified.
+ </summary>
+ <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryName">The name to assign to the created repository</param>
+ <param name="readAssemblyAttributes">Set to <c>true</c> to read and apply the assembly attributes</param>
+ <returns>The repository created.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ <para>
+ The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and
+ the repository to create can be overridden by specifying the
+ <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ <paramref name="repositoryAssembly"/>. The default values are to use the
+ <paramref name="repositoryType"/> implementation of the
+ <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
+ <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically
+ configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/>
+ attributes defined on the <paramref name="repositoryAssembly"/>.
+ </para>
+ <para>
+ If a repository for the <paramref name="repositoryAssembly"/> already exists
+ that repository will be returned. An error will not be raised and that
+ repository may be of a different type to that specified in <paramref name="repositoryType"/>.
+ Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
+ assembly may be used to override the repository type specified in
+ <paramref name="repositoryType"/>.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)">
+ <summary>
+ Creates a new repository for the specified repository.
+ </summary>
+ <param name="repositoryName">The repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
+ <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ If this param is <see langword="null"/> then the default repository type is used.</param>
+ <returns>The new repository.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(string)"/> with the
+ same repository specified will return the same repository instance.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception>
+ <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)">
+ <summary>
+ Test if a named repository exists
+ </summary>
+ <param name="repositoryName">the named repository to check</param>
+ <returns><c>true</c> if the repository exists</returns>
+ <remarks>
+ <para>
+ Test if a named repository exists. Use <see cref="M:CreateRepository(string, Type)"/>
+ to create a new repository and <see cref="M:GetRepository(string)"/> to retrieve
+ a repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetAllRepositories">
+ <summary>
+ Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects
+ </summary>
+ <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns>
+ <remarks>
+ <para>
+ Gets an array of all of the repositories created by this selector.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Aliases a repository to an existing repository.
+ </summary>
+ <param name="repositoryAlias">The repository to alias.</param>
+ <param name="repositoryTarget">The repository that the repository is aliased to.</param>
+ <remarks>
+ <para>
+ The repository specified will be aliased to the repository when created.
+ The repository must not already exist.
+ </para>
+ <para>
+ When the repository is created it must utilize the same repository type as
+ the repository it is aliased to, otherwise the aliasing will fail.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="repositoryAlias"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repositoryTarget"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Notifies the registered listeners that the repository has been created.
+ </summary>
+ <param name="repository">The repository that has been created.</param>
+ <remarks>
+ <para>
+ Raises the <see cref="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent"/> event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)">
+ <summary>
+ Gets the repository name and repository type for the specified assembly.
+ </summary>
+ <param name="assembly">The assembly that has a <see cref="T:log4net.Config.RepositoryAttribute"/>.</param>
+ <param name="repositoryName">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>
+ <param name="repositoryType">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="assembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Configures the repository using information from the assembly.
+ </summary>
+ <param name="assembly">The assembly containing <see cref="T:log4net.Config.ConfiguratorAttribute"/>
+ attributes which define the configuration for the repository.</param>
+ <param name="repository">The repository to configure.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="assembly"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repository"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Loads the attribute defined plugins on the assembly.
+ </summary>
+ <param name="assembly">The assembly that contains the attributes.</param>
+ <param name="repository">The repository to add the plugins to.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="assembly"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repository"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
+ <summary>
+ Loads the attribute defined aliases on the assembly.
+ </summary>
+ <param name="assembly">The assembly that contains the attributes.</param>
+ <param name="repository">The repository to alias to.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="assembly"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="repository"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="F:log4net.Core.DefaultRepositorySelector.declaringType">
+ <summary>
+ The fully qualified type of the DefaultRepositorySelector class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent">
+ <summary>
+ Event to notify that a logger repository has been created.
+ </summary>
+ <value>
+ Event to notify that a logger repository has been created.
+ </value>
+ <remarks>
+ <para>
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
+ holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.ErrorCode">
+ <summary>
+ Defined error codes that can be passed to the <see cref="M:IErrorHandler.Error(string, Exception, ErrorCode)"/> method.
+ </summary>
+ <remarks>
+ <para>
+ Values passed to the <see cref="M:IErrorHandler.Error(string, Exception, ErrorCode)"/> method.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.GenericFailure">
+ <summary>
+ A general error
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.WriteFailure">
+ <summary>
+ Error while writing output
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.FlushFailure">
+ <summary>
+ Failed to flush file
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.CloseFailure">
+ <summary>
+ Failed to close file
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.FileOpenFailure">
+ <summary>
+ Unable to open output file
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.MissingLayout">
+ <summary>
+ No layout specified
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ErrorCode.AddressParseFailure">
+ <summary>
+ Failed to parse address
+ </summary>
+ </member>
+ <member name="T:log4net.Core.ExceptionEvaluator">
+ <summary>
+ An evaluator that triggers on an Exception type
+ </summary>
+ <remarks>
+ <para>
+ This evaluator will trigger if the type of the Exception
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to a Type in <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>. ///
+ </para>
+ </remarks>
+ <author>Drew Schaeffer</author>
+ </member>
+ <member name="T:log4net.Core.ITriggeringEventEvaluator">
+ <summary>
+ Test if an <see cref="T:log4net.Core.LoggingEvent"/> triggers an action
+ </summary>
+ <remarks>
+ <para>
+ Implementations of this interface allow certain appenders to decide
+ when to perform an appender specific action.
+ </para>
+ <para>
+ The action or behavior triggered is defined by the implementation.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Test if this event triggers the action
+ </summary>
+ <param name="loggingEvent">The event to check</param>
+ <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>
+ <remarks>
+ <para>
+ Return <c>true</c> if this event triggers the action
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.ExceptionEvaluator.m_type">
+ <summary>
+ The type that causes the trigger to fire.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass">
+ <summary>
+ Causes subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/> to cause the trigger to fire.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.ExceptionEvaluator.#ctor">
+ <summary>
+ Default ctor to allow dynamic creation through a configurator.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)">
+ <summary>
+ Constructs an evaluator and initializes to trigger on <paramref name="exType"/>
+ </summary>
+ <param name="exType">the type that triggers this evaluator.</param>
+ <param name="triggerOnSubClass">If true, this evaluator will trigger on subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.</param>
+ </member>
+ <member name="M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Is this <paramref name="loggingEvent"/> the triggering event?
+ </summary>
+ <param name="loggingEvent">The event to check</param>
+ <returns>This method returns <c>true</c>, if the logging event Exception
+ Type is <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
+ Otherwise it returns <c>false</c></returns>
+ <remarks>
+ <para>
+ This evaluator will trigger if the Exception Type of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.ExceptionEvaluator.ExceptionType">
+ <summary>
+ The type that triggers this evaluator.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass">
+ <summary>
+ If true, this evaluator will trigger on subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.IErrorHandler">
+ <summary>
+ Appenders may delegate their error handling to an <see cref="T:log4net.Core.IErrorHandler"/>.
+ </summary>
+ <remarks>
+ <para>
+ Error handling is a particularly tedious to get right because by
+ definition errors are hard to predict and to reproduce.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)">
+ <summary>
+ Handles the error and information about the error condition is passed as
+ a parameter.
+ </summary>
+ <param name="message">The message associated with the error.</param>
+ <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param>
+ <param name="errorCode">The error code associated with the error.</param>
+ <remarks>
+ <para>
+ Handles the error and information about the error condition is passed as
+ a parameter.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)">
+ <summary>
+ Prints the error message passed as a parameter.
+ </summary>
+ <param name="message">The message associated with the error.</param>
+ <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param>
+ <remarks>
+ <para>
+ See <see cref="M:Error(string,Exception,ErrorCode)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.IErrorHandler.Error(System.String)">
+ <summary>
+ Prints the error message passed as a parameter.
+ </summary>
+ <param name="message">The message associated with the error.</param>
+ <remarks>
+ <para>
+ See <see cref="M:Error(string,Exception,ErrorCode)"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.IFixingRequired">
+ <summary>
+ Interface for objects that require fixing.
+ </summary>
+ <remarks>
+ <para>
+ Interface that indicates that the object requires fixing before it
+ can be taken outside the context of the appender's
+ <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method.
+ </para>
+ <para>
+ When objects that implement this interface are stored
+ in the context properties maps <see cref="T:log4net.GlobalContext"/>
+ <see cref="P:log4net.GlobalContext.Properties"/> and <see cref="T:log4net.ThreadContext"/>
+ <see cref="P:log4net.ThreadContext.Properties"/> are fixed
+ (see <see cref="P:log4net.Core.LoggingEvent.Fix"/>) the <see cref="M:log4net.Core.IFixingRequired.GetFixedObject"/>
+ method will be called.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.IFixingRequired.GetFixedObject">
+ <summary>
+ Get a portable version of this object
+ </summary>
+ <returns>the portable instance of this object</returns>
+ <remarks>
+ <para>
+ Get a portable instance object that represents the current
+ state of this object. The portable object can be stored
+ and logged from any thread with identical results.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.ILogger">
+ <summary>
+ Interface that all loggers implement
+ </summary>
+ <remarks>
+ <para>
+ This interface supports logging events and testing if a level
+ is enabled for logging.
+ </para>
+ <para>
+ These methods will not throw exceptions. Note to implementor, ensure
+ that the implementation of these methods cannot allow an exception
+ to be thrown to the caller.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)">
+ <summary>
+ This generic form is intended to be used by wrappers.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="level">The level of the message to be logged.</param>
+ <param name="message">The message object to log.</param>
+ <param name="exception">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>
+ <remarks>
+ <para>
+ Generates a logging event for the specified <paramref name="level"/> using
+ the <paramref name="message"/> and <paramref name="exception"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)">
+ <summary>
+ This is the most generic printing method that is intended to be used
+ by wrappers.
+ </summary>
+ <param name="logEvent">The event being logged.</param>
+ <remarks>
+ <para>
+ Logs the specified logging event through this logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)">
+ <summary>
+ Checks if this logger is enabled for a given <see cref="T:log4net.Core.Level"/> passed as parameter.
+ </summary>
+ <param name="level">The level to check.</param>
+ <returns>
+ <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Test if this logger is going to log events of the specified <paramref name="level"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.ILogger.Name">
+ <summary>
+ Gets the name of the logger.
+ </summary>
+ <value>
+ The name of the logger.
+ </value>
+ <remarks>
+ <para>
+ The name of this logger
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.ILogger.Repository">
+ <summary>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this
+ <c>Logger</c> instance is attached to.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this logger belongs to.
+ </value>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this
+ <c>Logger</c> instance is attached to.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.ILoggerWrapper">
+ <summary>
+ Base interface for all wrappers
+ </summary>
+ <remarks>
+ <para>
+ Base interface for all wrappers.
+ </para>
+ <para>
+ All wrappers must implement this interface.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="P:log4net.Core.ILoggerWrapper.Logger">
+ <summary>
+ Get the implementation behind this wrapper object.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.ILogger"/> object that in implementing this object.
+ </value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Core.ILogger"/> object that in implementing this
+ object. The <c>Logger</c> object may not
+ be the same object as this object because of logger decorators.
+ This gets the actual underlying objects that is used to process
+ the log events.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggerRepositoryCreationEventHandler">
+ <summary>
+ Delegate used to handle logger repository creation event notifications
+ </summary>
+ <param name="sender">The <see cref="T:log4net.Core.IRepositorySelector"/> which created the repository.</param>
+ <param name="e">The <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> event args
+ that holds the <see cref="T:log4net.Repository.ILoggerRepository"/> instance that has been created.</param>
+ <remarks>
+ <para>
+ Delegate used to handle logger repository creation event notifications.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggerRepositoryCreationEventArgs">
+ <summary>
+ Provides data for the <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/> event.
+ </summary>
+ <remarks>
+ <para>
+ A <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/>
+ event is raised every time a <see cref="T:log4net.Repository.ILoggerRepository"/> is created.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository">
+ <summary>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified
+ </summary>
+ <param name="repository">the <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created</param>
+ <remarks>
+ <para>
+ Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository">
+ <summary>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
+ </summary>
+ <value>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
+ </value>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.Level">
+ <summary>
+ Defines the default set of levels recognized by the system.
+ </summary>
+ <remarks>
+ <para>
+ Each <see cref="T:log4net.Core.LoggingEvent"/> has an associated <see cref="T:log4net.Core.Level"/>.
+ </para>
+ <para>
+ Levels have a numeric <see cref="P:log4net.Core.Level.Value"/> that defines the relative
+ ordering between levels. Two Levels with the same <see cref="P:log4net.Core.Level.Value"/>
+ are deemed to be equivalent.
+ </para>
+ <para>
+ The levels that are recognized by log4net are set for each <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and each repository can have different levels defined. The levels are stored
+ in the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/> on the repository. Levels are
+ looked up by name from the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>.
+ </para>
+ <para>
+ When logging at level INFO the actual level used is not <see cref="F:log4net.Core.Level.Info"/> but
+ the value of <c>LoggerRepository.LevelMap["INFO"]</c>. The default value for this is
+ <see cref="F:log4net.Core.Level.Info"/>, but this can be changed by reconfiguring the level map.
+ </para>
+ <para>
+ Each level has a <see cref="P:log4net.Core.Level.DisplayName"/> in addition to its <see cref="P:log4net.Core.Level.Name"/>. The
+ <see cref="P:log4net.Core.Level.DisplayName"/> is the string that is written into the output log. By default
+ the display name is the same as the level name, but this can be used to alias levels
+ or to localize the log output.
+ </para>
+ <para>
+ Some of the predefined levels recognized by the system are:
+ </para>
+ <list type="bullet">
+ <item>
+ <description><see cref="F:log4net.Core.Level.Off"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Fatal"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Error"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Warn"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Info"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.Debug"/>.</description>
+ </item>
+ <item>
+ <description><see cref="F:log4net.Core.Level.All"/>.</description>
+ </item>
+ </list>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="level">Integer value for this level, higher values represent more severe levels.</param>
+ <param name="levelName">The string name of this level.</param>
+ <param name="displayName">The display name for this level. This may be localized or otherwise different from the name</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with
+ the specified level name and value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="level">Integer value for this level, higher values represent more severe levels.</param>
+ <param name="levelName">The string name of this level.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with
+ the specified level name and value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.ToString">
+ <summary>
+ Returns the <see cref="T:System.String"/> representation of the current
+ <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> representation of the current <see cref="T:log4net.Core.Level"/>.
+ </returns>
+ <remarks>
+ <para>
+ Returns the level <see cref="P:log4net.Core.Level.Name"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.Equals(System.Object)">
+ <summary>
+ Compares levels.
+ </summary>
+ <param name="o">The object to compare against.</param>
+ <returns><c>true</c> if the objects are equal.</returns>
+ <remarks>
+ <para>
+ Compares the levels of <see cref="T:log4net.Core.Level"/> instances, and
+ defers to base class if the target object is not a <see cref="T:log4net.Core.Level"/>
+ instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.GetHashCode">
+ <summary>
+ Returns a hash code
+ </summary>
+ <returns>A hash code for the current <see cref="T:log4net.Core.Level"/>.</returns>
+ <remarks>
+ <para>
+ Returns a hash code suitable for use in hashing algorithms and data
+ structures like a hash table.
+ </para>
+ <para>
+ Returns the hash code of the level <see cref="P:log4net.Core.Level.Value"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.CompareTo(System.Object)">
+ <summary>
+ Compares this instance to a specified object and returns an
+ indication of their relative values.
+ </summary>
+ <param name="r">A <see cref="T:log4net.Core.Level"/> instance or <see langword="null"/> to compare with this instance.</param>
+ <returns>
+ A 32-bit signed integer that indicates the relative order of the
+ values compared. The return value has these meanings:
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Meaning</description>
+ </listheader>
+ <item>
+ <term>Less than zero</term>
+ <description>This instance is less than <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Zero</term>
+ <description>This instance is equal to <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Greater than zero</term>
+ <description>
+ <para>This instance is greater than <paramref name="r"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="r"/> is <see langword="null"/>.</para>
+ </description>
+ </item>
+ </list>
+ </returns>
+ <remarks>
+ <para>
+ <paramref name="r"/> must be an instance of <see cref="T:log4net.Core.Level"/>
+ or <see langword="null"/>; otherwise, an exception is thrown.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentException"><paramref name="r"/> is not a <see cref="T:log4net.Core.Level"/>.</exception>
+ </member>
+ <member name="M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is greater than another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is greater than
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is less than another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is less than
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is greater than or equal to another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is greater than or equal to
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/>
+ is less than or equal to another specified <see cref="T:log4net.Core.Level"/>.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/></param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/></param>
+ <returns>
+ <c>true</c> if <paramref name="l"/> is less than or equal to
+ <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/>
+ objects have the same value.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <returns>
+ <c>true</c> if the value of <paramref name="l"/> is the same as the
+ value of <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/>
+ objects have different values.
+ </summary>
+ <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
+ <returns>
+ <c>true</c> if the value of <paramref name="l"/> is different from
+ the value of <paramref name="r"/>; otherwise, <c>false</c>.
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)">
+ <summary>
+ Compares two specified <see cref="T:log4net.Core.Level"/> instances.
+ </summary>
+ <param name="l">The first <see cref="T:log4net.Core.Level"/> to compare.</param>
+ <param name="r">The second <see cref="T:log4net.Core.Level"/> to compare.</param>
+ <returns>
+ A 32-bit signed integer that indicates the relative order of the
+ two values compared. The return value has these meanings:
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Meaning</description>
+ </listheader>
+ <item>
+ <term>Less than zero</term>
+ <description><paramref name="l"/> is less than <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Zero</term>
+ <description><paramref name="l"/> is equal to <paramref name="r"/>.</description>
+ </item>
+ <item>
+ <term>Greater than zero</term>
+ <description><paramref name="l"/> is greater than <paramref name="r"/>.</description>
+ </item>
+ </list>
+ </returns>
+ <remarks>
+ <para>
+ Compares two levels.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.Level.Off">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Off"/> level designates a higher level than all the rest.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Log4Net_Debug">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Emergency"/> level designates very severe error events.
+ System unusable, emergencies.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Emergency">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Emergency"/> level designates very severe error events.
+ System unusable, emergencies.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Fatal">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Fatal"/> level designates very severe error events
+ that will presumably lead the application to abort.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Alert">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Alert"/> level designates very severe error events.
+ Take immediate action, alerts.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Critical">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Critical"/> level designates very severe error events.
+ Critical condition, critical.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Severe">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Severe"/> level designates very severe error events.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Error">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Error"/> level designates error events that might
+ still allow the application to continue running.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Warn">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Warn"/> level designates potentially harmful
+ situations.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Notice">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Notice"/> level designates informational messages
+ that highlight the progress of the application at the highest level.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Info">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Info"/> level designates informational messages that
+ highlight the progress of the application at coarse-grained level.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Debug">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Debug"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Fine">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Fine"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Trace">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Trace"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Finer">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Finer"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Verbose">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Verbose"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.Finest">
+ <summary>
+ The <see cref="F:log4net.Core.Level.Finest"/> level designates fine-grained informational
+ events that are most useful to debug an application.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.Level.All">
+ <summary>
+ The <see cref="F:log4net.Core.Level.All"/> level designates the lowest level possible.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.Level.Name">
+ <summary>
+ Gets the name of this level.
+ </summary>
+ <value>
+ The name of this level.
+ </value>
+ <remarks>
+ <para>
+ Gets the name of this level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.Level.Value">
+ <summary>
+ Gets the value of this level.
+ </summary>
+ <value>
+ The value of this level.
+ </value>
+ <remarks>
+ <para>
+ Gets the value of this level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.Level.DisplayName">
+ <summary>
+ Gets the display name of this level.
+ </summary>
+ <value>
+ The display name of this level.
+ </value>
+ <remarks>
+ <para>
+ Gets the display name of this level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LevelCollection">
+ <summary>
+ A strongly-typed collection of <see cref="T:log4net.Core.Level"/> objects.
+ </summary>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)">
+ <summary>
+ Creates a read-only wrapper for a <c>LevelCollection</c> instance.
+ </summary>
+ <param name="list">list to create a readonly wrapper arround</param>
+ <returns>
+ A <c>LevelCollection</c> wrapper that is read-only.
+ </returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that is empty and has the default initial capacity.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that has the specified initial capacity.
+ </summary>
+ <param name="capacity">
+ The number of elements that the new <c>LevelCollection</c> is initially capable of storing.
+ </param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that contains elements copied from the specified <c>LevelCollection</c>.
+ </summary>
+ <param name="c">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> array.
+ </summary>
+ <param name="a">The <see cref="T:log4net.Core.Level"/> array whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)">
+ <summary>
+ Initializes a new instance of the <c>LevelCollection</c> class
+ that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> collection.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements are copied to the new list.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)">
+ <summary>
+ Allow subclasses to avoid our default constructors
+ </summary>
+ <param name="tag"></param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])">
+ <summary>
+ Copies the entire <c>LevelCollection</c> to a one-dimensional
+ <see cref="T:log4net.Core.Level"/> array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)">
+ <summary>
+ Copies the entire <c>LevelCollection</c> to a one-dimensional
+ <see cref="T:log4net.Core.Level"/> array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param>
+ <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Add(log4net.Core.Level)">
+ <summary>
+ Adds a <see cref="T:log4net.Core.Level"/> to the end of the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to be added to the end of the <c>LevelCollection</c>.</param>
+ <returns>The index at which the value has been added.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Clear">
+ <summary>
+ Removes all elements from the <c>LevelCollection</c>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:log4net.Core.LevelCollection"/>.
+ </summary>
+ <returns>A new <see cref="T:log4net.Core.LevelCollection"/> with a shallow copy of the collection data.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)">
+ <summary>
+ Determines whether a given <see cref="T:log4net.Core.Level"/> is in the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to check for.</param>
+ <returns><c>true</c> if <paramref name="item"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)">
+ <summary>
+ Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Core.Level"/>
+ in the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to locate in the <c>LevelCollection</c>.</param>
+ <returns>
+ The zero-based index of the first occurrence of <paramref name="item"/>
+ in the entire <c>LevelCollection</c>, if found; otherwise, -1.
+ </returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)">
+ <summary>
+ Inserts an element into the <c>LevelCollection</c> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to insert.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)">
+ <summary>
+ Removes the first occurrence of a specific <see cref="T:log4net.Core.Level"/> from the <c>LevelCollection</c>.
+ </summary>
+ <param name="item">The <see cref="T:log4net.Core.Level"/> to remove from the <c>LevelCollection</c>.</param>
+ <exception cref="T:System.ArgumentException">
+ The specified <see cref="T:log4net.Core.Level"/> was not found in the <c>LevelCollection</c>.
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.RemoveAt(System.Int32)">
+ <summary>
+ Removes the element at the specified index of the <c>LevelCollection</c>.
+ </summary>
+ <param name="index">The zero-based index of the element to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the <c>LevelCollection</c>.
+ </summary>
+ <returns>An <see cref="T:log4net.Core.LevelCollection.Enumerator"/> for the entire <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)">
+ <summary>
+ Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.
+ </summary>
+ <param name="x">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Core.Level"/> array to the current <c>LevelCollection</c>.
+ </summary>
+ <param name="x">The <see cref="T:log4net.Core.Level"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)">
+ <summary>
+ Adds the elements of a <see cref="T:log4net.Core.Level"/> collection to the current <c>LevelCollection</c>.
+ </summary>
+ <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>
+ <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.TrimToSize">
+ <summary>
+ Sets the capacity to the actual number of elements.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)">
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="i"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Count">
+ <summary>
+ Gets the number of elements actually contained in the <c>LevelCollection</c>.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.IsSynchronized">
+ <summary>
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+ </summary>
+ <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the <see cref="T:log4net.Core.Level"/> at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="index"/> is less than zero</para>
+ <para>-or-</para>
+ <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
+ </exception>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>true if the collection has a fixed size; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the IList is read-only.
+ </summary>
+ <value>true if the collection is read-only; otherwise, false. The default is false</value>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Capacity">
+ <summary>
+ Gets or sets the number of elements the <c>LevelCollection</c> can contain.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelCollection.ILevelCollectionEnumerator">
+ <summary>
+ Supports type-safe iteration over a <see cref="T:log4net.Core.LevelCollection"/>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelCollection.Tag">
+ <summary>
+ Type visible only to our subclasses
+ Used to access protected constructor
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LevelCollection.Tag.Default">
+ <summary>
+ A value
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelCollection.Enumerator">
+ <summary>
+ Supports simple iteration over a <see cref="T:log4net.Core.LevelCollection"/>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)">
+ <summary>
+ Initializes a new instance of the <c>Enumerator</c> class.
+ </summary>
+ <param name="tc"></param>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Enumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element in the collection.
+ </summary>
+ <returns>
+ <c>true</c> if the enumerator was successfully advanced to the next element;
+ <c>false</c> if the enumerator has passed the end of the collection.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">
+ The collection was modified after the enumerator was created.
+ </exception>
+ </member>
+ <member name="M:log4net.Core.LevelCollection.Enumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, before the first element in the collection.
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LevelCollection.Enumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LevelEvaluator">
+ <summary>
+ An evaluator that triggers at a threshold level
+ </summary>
+ <remarks>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.LevelEvaluator.m_threshold">
+ <summary>
+ The threshold for triggering
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelEvaluator.#ctor">
+ <summary>
+ Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold.
+ </summary>
+ <remarks>
+ <para>
+ Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold.
+ </para>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)">
+ <summary>
+ Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold.
+ </summary>
+ <param name="threshold">the threshold to trigger at</param>
+ <remarks>
+ <para>
+ Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold.
+ </para>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
+ <summary>
+ Is this <paramref name="loggingEvent"/> the triggering event?
+ </summary>
+ <param name="loggingEvent">The event to check</param>
+ <returns>This method returns <c>true</c>, if the event level
+ is equal or higher than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>.
+ Otherwise it returns <c>false</c></returns>
+ <remarks>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LevelEvaluator.Threshold">
+ <summary>
+ the threshold to trigger at
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.Level"/> that will cause this evaluator to trigger
+ </value>
+ <remarks>
+ <para>
+ This evaluator will trigger if the level of the event
+ passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
+ is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
+ level.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LevelMap">
+ <summary>
+ Mapping between string name and Level object
+ </summary>
+ <remarks>
+ <para>
+ Mapping between string name and <see cref="T:log4net.Core.Level"/> object.
+ This mapping is held separately for each <see cref="T:log4net.Repository.ILoggerRepository"/>.
+ The level name is case insensitive.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.LevelMap.m_mapName2Level">
+ <summary>
+ Mapping from level name to Level object. The
+ level name is case insensitive
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LevelMap.#ctor">
+ <summary>
+ Construct the level map
+ </summary>
+ <remarks>
+ <para>
+ Construct the level map.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Clear">
+ <summary>
+ Clear the internal maps of all levels
+ </summary>
+ <remarks>
+ <para>
+ Clear the internal maps of all levels
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32)">
+ <summary>
+ Create a new Level and add it to the map
+ </summary>
+ <param name="name">the string to display for the Level</param>
+ <param name="value">the level value to give to the Level</param>
+ <remarks>
+ <para>
+ Create a new Level and add it to the map
+ </para>
+ </remarks>
+ <seealso cref="M:Add(string,int,string)"/>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)">
+ <summary>
+ Create a new Level and add it to the map
+ </summary>
+ <param name="name">the string to display for the Level</param>
+ <param name="value">the level value to give to the Level</param>
+ <param name="displayName">the display name to give to the Level</param>
+ <remarks>
+ <para>
+ Create a new Level and add it to the map
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.Add(log4net.Core.Level)">
+ <summary>
+ Add a Level to the map
+ </summary>
+ <param name="level">the Level to add</param>
+ <remarks>
+ <para>
+ Add a Level to the map
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)">
+ <summary>
+ Lookup a named level from the map
+ </summary>
+ <param name="defaultLevel">the name of the level to lookup is taken from this level.
+ If the level is not set on the map then this level is added</param>
+ <returns>the level in the map with the name specified</returns>
+ <remarks>
+ <para>
+ Lookup a named level from the map. The name of the level to lookup is taken
+ from the <see cref="P:log4net.Core.Level.Name"/> property of the <paramref name="defaultLevel"/>
+ argument.
+ </para>
+ <para>
+ If no level with the specified name is found then the
+ <paramref name="defaultLevel"/> argument is added to the level map
+ and returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LevelMap.Item(System.String)">
+ <summary>
+ Lookup a <see cref="T:log4net.Core.Level"/> by name
+ </summary>
+ <param name="name">The name of the Level to lookup</param>
+ <returns>a Level from the map with the name specified</returns>
+ <remarks>
+ <para>
+ Returns the <see cref="T:log4net.Core.Level"/> from the
+ map with the name specified. If the no level is
+ found then <c>null</c> is returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LevelMap.AllLevels">
+ <summary>
+ Return all possible levels as a list of Level objects.
+ </summary>
+ <returns>all possible levels as a list of Level objects</returns>
+ <remarks>
+ <para>
+ Return all possible levels as a list of Level objects.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LocationInfo">
+ <summary>
+ The internal representation of caller location information.
+ </summary>
+ <remarks>
+ <para>
+ This class uses the <c>System.Diagnostics.StackTrace</c> class to generate
+ a call stack. The caller's information is then extracted from this stack.
+ </para>
+ <para>
+ The <c>System.Diagnostics.StackTrace</c> class is not supported on the
+ .NET Compact Framework 1.0 therefore caller location information is not
+ available on that framework.
+ </para>
+ <para>
+ The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:
+ </para>
+ <para>
+ "StackTrace information will be most informative with Debug build configurations.
+ By default, Debug builds include debug symbols, while Release builds do not. The
+ debug symbols contain most of the file, method name, line number, and column
+ information used in constructing StackFrame and StackTrace objects. StackTrace
+ might not report as many method calls as expected, due to code transformations
+ that occur during optimization."
+ </para>
+ <para>
+ This means that in a Release build the caller information may be incomplete or may
+ not exist at all! Therefore caller location information cannot be relied upon in a Release build.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="F:log4net.Core.LocationInfo.NA">
+ <summary>
+ When location information is not available the constant
+ <c>NA</c> is returned. Current value of this string
+ constant is <b>?</b>.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LocationInfo.#ctor(System.Type)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LocationInfo"/>
+ class based on the current thread.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="className">The fully qualified class name.</param>
+ <param name="methodName">The method name.</param>
+ <param name="fileName">The file name.</param>
+ <param name="lineNumber">The line number of the method within the file.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LocationInfo"/>
+ class with the specified data.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LocationInfo.declaringType">
+ <summary>
+ The fully qualified type of the LocationInfo class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.ClassName">
+ <summary>
+ Gets the fully qualified class name of the caller making the logging
+ request.
+ </summary>
+ <value>
+ The fully qualified class name of the caller making the logging
+ request.
+ </value>
+ <remarks>
+ <para>
+ Gets the fully qualified class name of the caller making the logging
+ request.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.FileName">
+ <summary>
+ Gets the file name of the caller.
+ </summary>
+ <value>
+ The file name of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the file name of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.LineNumber">
+ <summary>
+ Gets the line number of the caller.
+ </summary>
+ <value>
+ The line number of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the line number of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.MethodName">
+ <summary>
+ Gets the method name of the caller.
+ </summary>
+ <value>
+ The method name of the caller.
+ </value>
+ <remarks>
+ <para>
+ Gets the method name of the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.FullInfo">
+ <summary>
+ Gets all available caller information
+ </summary>
+ <value>
+ All available caller information, in the format
+ <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
+ </value>
+ <remarks>
+ <para>
+ Gets all available caller information, in the format
+ <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LocationInfo.StackFrames">
+ <summary>
+ Gets the stack frames from the stack trace of the caller making the log request
+ </summary>
+ </member>
+ <member name="T:log4net.Core.LoggerManager">
+ <summary>
+ Static manager that controls the creation of repositories
+ </summary>
+ <remarks>
+ <para>
+ Static manager that controls the creation of repositories
+ </para>
+ <para>
+ This class is used by the wrapper managers (e.g. <see cref="T:log4net.LogManager"/>)
+ to provide access to the <see cref="T:log4net.Core.ILogger"/> objects.
+ </para>
+ <para>
+ This manager also holds the <see cref="T:log4net.Core.IRepositorySelector"/> that is used to
+ lookup and create repositories. The selector can be set either programmatically using
+ the <see cref="P:log4net.Core.LoggerManager.RepositorySelector"/> property, or by setting the <c>log4net.RepositorySelector</c>
+ AppSetting in the applications config file to the fully qualified type name of the
+ selector to use.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.#ctor">
+ <summary>
+ Private constructor to prevent instances. Only static methods should be used.
+ </summary>
+ <remarks>
+ <para>
+ Private constructor to prevent instances. Only static methods should be used.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.#cctor">
+ <summary>
+ Hook the shutdown event
+ </summary>
+ <remarks>
+ <para>
+ On the full .NET runtime, the static constructor hooks up the
+ <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events.
+ These are used to shutdown the log4net system as the application exits.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.RegisterAppDomainEvents">
+ <summary>
+ Register for ProcessExit and DomainUnload events on the AppDomain
+ </summary>
+ <remarks>
+ <para>
+ This needs to be in a separate method because the events make
+ a LinkDemand for the ControlAppDomain SecurityPermission. Because
+ this is a LinkDemand it is demanded at JIT time. Therefore we cannot
+ catch the exception in the method itself, we have to catch it in the
+ caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)">
+ <summary>
+ Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repository">the repository to lookup in</param>
+ <returns>Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repository"/> argument.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetRepository(System.String)">
+ <summary>
+ Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repository">the repository to lookup in</param>
+ <returns>Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance</returns>
+ <remarks>
+ <para>
+ Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified
+ by the <paramref name="repository"/> argument.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)">
+ <summary>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns>
+ <remarks>
+ <para>
+ Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.Exists(System.String,System.String)">
+ <summary>
+ Returns the named logger if it exists.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="name">The fully qualified logger name to look for.</param>
+ <returns>
+ The logger found, or <c>null</c> if the named logger does not exist in the
+ specified repository.
+ </returns>
+ <remarks>
+ <para>
+ If the named logger exists (in the specified repository) then it
+ returns a reference to the logger, otherwise it returns
+ <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)">
+ <summary>
+ Returns the named logger if it exists.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <param name="name">The fully qualified logger name to look for.</param>
+ <returns>
+ The logger found, or <c>null</c> if the named logger does not exist in the
+ specified assembly's repository.
+ </returns>
+ <remarks>
+ <para>
+ If the named logger exists (in the specified assembly's repository) then it
+ returns a reference to the logger, otherwise it returns
+ <c>null</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)">
+ <summary>
+ Returns all the currently defined loggers in the specified repository.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <returns>All the defined loggers.</returns>
+ <remarks>
+ <para>
+ The root logger is <b>not</b> included in the returned array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)">
+ <summary>
+ Returns all the currently defined loggers in the specified assembly's repository.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <returns>All the defined loggers.</returns>
+ <remarks>
+ <para>
+ The root logger is <b>not</b> included in the returned array.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)">
+ <summary>
+ Retrieves or creates a named logger.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="name">The name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Retrieves a logger named as the <paramref name="name"/>
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+ </para>
+ <para>
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)">
+ <summary>
+ Retrieves or creates a named logger.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <param name="name">The name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Retrieves a logger named as the <paramref name="name"/>
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+ </para>
+ <para>
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)">
+ <summary>
+ Shorthand for <see cref="M:LogManager.GetLogger(string)"/>.
+ </summary>
+ <param name="repository">The repository to lookup in.</param>
+ <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Gets the logger for the fully qualified name of the type specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Shorthand for <see cref="M:LogManager.GetLogger(string)"/>.
+ </summary>
+ <param name="repositoryAssembly">the assembly to use to lookup the repository</param>
+ <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param>
+ <returns>The logger with the name specified.</returns>
+ <remarks>
+ <para>
+ Gets the logger for the fully qualified name of the type specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.Shutdown">
+ <summary>
+ Shuts down the log4net system.
+ </summary>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in all the
+ default repositories.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>
+ The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ShutdownRepository(System.String)">
+ <summary>
+ Shuts down the repository for the repository specified.
+ </summary>
+ <param name="repository">The repository to shutdown.</param>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in the
+ repository for the <paramref name="repository"/> specified.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>
+ The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)">
+ <summary>
+ Shuts down the repository for the repository specified.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
+ <remarks>
+ <para>
+ Calling this method will <b>safely</b> close and remove all
+ appenders in all the loggers including root contained in the
+ repository for the repository. The repository is looked up using
+ the <paramref name="repositoryAssembly"/> specified.
+ </para>
+ <para>
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+ </para>
+ <para>
+ The <c>shutdown</c> method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ResetConfiguration(System.String)">
+ <summary>
+ Resets all values contained in this repository instance to their defaults.
+ </summary>
+ <param name="repository">The repository to reset.</param>
+ <remarks>
+ <para>
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set its default "off" value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)">
+ <summary>
+ Resets all values contained in this repository instance to their defaults.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to lookup the repository to reset.</param>
+ <remarks>
+ <para>
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to <c>null</c>,
+ sets their additivity flag to <c>true</c> and sets the level
+ of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover,
+ message disabling is set its default "off" value.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateDomain(System.String)">
+ <summary>
+ Creates a repository with the specified name.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a
+ <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object.
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateRepository(System.String)">
+ <summary>
+ Creates a repository with the specified name.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a
+ <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object.
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An <see cref="T:System.Exception"/> will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)">
+ <summary>
+ Creates a repository with the specified name and repository type.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique to the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An Exception will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)">
+ <summary>
+ Creates a repository with the specified name and repository type.
+ </summary>
+ <param name="repository">The name of the repository, this must be unique to the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
+ An Exception will be thrown if the repository already exists.
+ </para>
+ </remarks>
+ <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a repository for the specified assembly and repository type.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
+ </para>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Creates a repository for the specified assembly and repository type.
+ </summary>
+ <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
+ <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/>
+ and has a no arg constructor. An instance of this type will be created to act
+ as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param>
+ <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
+ specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
+ same assembly specified will return the same repository instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetAllRepositories">
+ <summary>
+ Gets an array of all currently defined repositories.
+ </summary>
+ <returns>An array of all the known <see cref="T:log4net.Repository.ILoggerRepository"/> objects.</returns>
+ <remarks>
+ <para>
+ Gets an array of all currently defined repositories.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.GetVersionInfo">
+ <summary>
+ Internal method to get pertinent version info.
+ </summary>
+ <returns>A string of version info.</returns>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)">
+ <summary>
+ Called when the <see cref="E:System.AppDomain.DomainUnload"/> event fires
+ </summary>
+ <param name="sender">the <see cref="T:System.AppDomain"/> that is exiting</param>
+ <param name="e">null</param>
+ <remarks>
+ <para>
+ Called when the <see cref="E:System.AppDomain.DomainUnload"/> event fires.
+ </para>
+ <para>
+ When the event is triggered the log4net system is <see cref="M:Shutdown()"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)">
+ <summary>
+ Called when the <see cref="E:System.AppDomain.ProcessExit"/> event fires
+ </summary>
+ <param name="sender">the <see cref="T:System.AppDomain"/> that is exiting</param>
+ <param name="e">null</param>
+ <remarks>
+ <para>
+ Called when the <see cref="E:System.AppDomain.ProcessExit"/> event fires.
+ </para>
+ <para>
+ When the event is triggered the log4net system is <see cref="M:Shutdown()"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerManager.declaringType">
+ <summary>
+ The fully qualified type of the LoggerManager class.
+ </summary>
+ <remarks>
+ Used by the internal logger to record the Type of the
+ log message.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerManager.s_repositorySelector">
+ <summary>
+ Initialize the default repository selector
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LoggerManager.RepositorySelector">
+ <summary>
+ Gets or sets the repository selector used by the <see cref="T:log4net.LogManager"/>.
+ </summary>
+ <value>
+ The repository selector used by the <see cref="T:log4net.LogManager"/>.
+ </value>
+ <remarks>
+ <para>
+ The repository selector (<see cref="T:log4net.Core.IRepositorySelector"/>) is used by
+ the <see cref="T:log4net.LogManager"/> to create and select repositories
+ (<see cref="T:log4net.Repository.ILoggerRepository"/>).
+ </para>
+ <para>
+ The caller to <see cref="T:log4net.LogManager"/> supplies either a string name
+ or an assembly (if not supplied the assembly is inferred using
+ <see cref="M:Assembly.GetCallingAssembly()"/>).
+ </para>
+ <para>
+ This context is used by the selector to lookup a specific repository.
+ </para>
+ <para>
+ For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>;
+ for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default
+ repository.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggerWrapperImpl">
+ <summary>
+ Implementation of the <see cref="T:log4net.Core.ILoggerWrapper"/> interface.
+ </summary>
+ <remarks>
+ <para>
+ This class should be used as the base for all wrapper implementations.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)">
+ <summary>
+ Constructs a new wrapper for the specified logger.
+ </summary>
+ <param name="logger">The logger to wrap.</param>
+ <remarks>
+ <para>
+ Constructs a new wrapper for the specified logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggerWrapperImpl.m_logger">
+ <summary>
+ The logger that this object is wrapping
+ </summary>
+ </member>
+ <member name="P:log4net.Core.LoggerWrapperImpl.Logger">
+ <summary>
+ Gets the implementation behind this wrapper object.
+ </summary>
+ <value>
+ The <see cref="T:log4net.Core.ILogger"/> object that this object is implementing.
+ </value>
+ <remarks>
+ <para>
+ The <c>Logger</c> object may not be the same object as this object
+ because of logger decorators.
+ </para>
+ <para>
+ This gets the actual underlying objects that is used to process
+ the log events.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggingEventData">
+ <summary>
+ Portable data structure used by <see cref="T:log4net.Core.LoggingEvent"/>
+ </summary>
+ <remarks>
+ <para>
+ Portable data structure used by <see cref="T:log4net.Core.LoggingEvent"/>
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.LoggerName">
+ <summary>
+ The logger name.
+ </summary>
+ <remarks>
+ <para>
+ The logger name.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Level">
+ <summary>
+ Level of logging event.
+ </summary>
+ <remarks>
+ <para>
+ Level of logging event. Level cannot be Serializable
+ because it is a flyweight. Due to its special serialization it
+ cannot be declared final either.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Message">
+ <summary>
+ The application supplied message.
+ </summary>
+ <remarks>
+ <para>
+ The application supplied message of logging event.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.ThreadName">
+ <summary>
+ The name of thread
+ </summary>
+ <remarks>
+ <para>
+ The name of thread in which this logging event was generated
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.TimeStamp">
+ <summary>
+ The time the event was logged
+ </summary>
+ <remarks>
+ <para>
+ The TimeStamp is stored in the local time zone for this computer.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.LocationInfo">
+ <summary>
+ Location information for the caller.
+ </summary>
+ <remarks>
+ <para>
+ Location information for the caller.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.UserName">
+ <summary>
+ String representation of the user
+ </summary>
+ <remarks>
+ <para>
+ String representation of the user's windows name,
+ like DOMAIN\username
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Identity">
+ <summary>
+ String representation of the identity.
+ </summary>
+ <remarks>
+ <para>
+ String representation of the current thread's principal identity.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.ExceptionString">
+ <summary>
+ The string representation of the exception
+ </summary>
+ <remarks>
+ <para>
+ The string representation of the exception
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Domain">
+ <summary>
+ String representation of the AppDomain.
+ </summary>
+ <remarks>
+ <para>
+ String representation of the AppDomain.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEventData.Properties">
+ <summary>
+ Additional event specific properties
+ </summary>
+ <remarks>
+ <para>
+ A logger or an appender may attach additional
+ properties to specific events. These properties
+ have a string key and an object value.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.FixFlags">
+ <summary>
+ Flags passed to the <see cref="P:log4net.Core.LoggingEvent.Fix"/> property
+ </summary>
+ <remarks>
+ <para>
+ Flags passed to the <see cref="P:log4net.Core.LoggingEvent.Fix"/> property
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Mdc">
+ <summary>
+ Fix the MDC
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Ndc">
+ <summary>
+ Fix the NDC
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Message">
+ <summary>
+ Fix the rendered message
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.ThreadName">
+ <summary>
+ Fix the thread name
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.LocationInfo">
+ <summary>
+ Fix the callers location information
+ </summary>
+ <remarks>
+ CAUTION: Very slow to generate
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.FixFlags.UserName">
+ <summary>
+ Fix the callers windows user name
+ </summary>
+ <remarks>
+ CAUTION: Slow to generate
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Domain">
+ <summary>
+ Fix the domain friendly name
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Identity">
+ <summary>
+ Fix the callers principal name
+ </summary>
+ <remarks>
+ CAUTION: May be slow to generate
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Exception">
+ <summary>
+ Fix the exception text
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Properties">
+ <summary>
+ Fix the event properties. Active properties must implement <see cref="T:log4net.Core.IFixingRequired"/> in order to be eligible for fixing.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.None">
+ <summary>
+ No fields fixed
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.All">
+ <summary>
+ All fields fixed
+ </summary>
+ </member>
+ <member name="F:log4net.Core.FixFlags.Partial">
+ <summary>
+ Partial fields fixed
+ </summary>
+ <remarks>
+ <para>
+ This set of partial fields gives good performance. The following fields are fixed:
+ </para>
+ <list type="bullet">
+ <item><description><see cref="F:log4net.Core.FixFlags.Message"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.ThreadName"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.Exception"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.Domain"/></description></item>
+ <item><description><see cref="F:log4net.Core.FixFlags.Properties"/></description></item>
+ </list>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LoggingEvent">
+ <summary>
+ The internal representation of logging events.
+ </summary>
+ <remarks>
+ <para>
+ When an affirmative decision is made to log then a
+ <see cref="T:log4net.Core.LoggingEvent"/> instance is created. This instance
+ is passed around to the different log4net components.
+ </para>
+ <para>
+ This class is of concern to those wishing to extend log4net.
+ </para>
+ <para>
+ Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/>
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ <see cref="M:FixVolatileData()"/>. There is a performance penalty
+ for incurred by calling <see cref="M:FixVolatileData()"/> but it
+ is essential to maintaining data consistency.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ <author>Douglas de la Torre</author>
+ <author>Daniel Cazzulino</author>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.HostNameProperty">
+ <summary>
+ The key into the Properties map for the host name value.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.IdentityProperty">
+ <summary>
+ The key into the Properties map for the thread identity value.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.UserNameProperty">
+ <summary>
+ The key into the Properties map for the user name value.
+ </summary>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ from the supplied parameters.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="repository">The repository this event is logged in.</param>
+ <param name="loggerName">The name of the logger of this event.</param>
+ <param name="level">The level of this event.</param>
+ <param name="message">The message of this event.</param>
+ <param name="exception">The exception for this event.</param>
+ <remarks>
+ <para>
+ Except <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/>, <see cref="P:log4net.Core.LoggingEvent.Level"/> and <see cref="P:log4net.Core.LoggingEvent.LoggerName"/>,
+ all fields of <c>LoggingEvent</c> are filled when actually needed. Call
+ <see cref="M:FixVolatileData()"/> to cache all data locally
+ to prevent inconsistencies.
+ </para>
+ <para>This method is called by the log4net framework
+ to create a logging event.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ using specific data.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="repository">The repository this event is logged in.</param>
+ <param name="data">Data used to initialize the logging event.</param>
+ <param name="fixedData">The fields in the <paranref name="data"/> struct that have already been fixed.</param>
+ <remarks>
+ <para>
+ This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/>
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+ </para>
+ <para>
+ Use the <see cref="M:GetLoggingEventData(FixFlags)"/> method to obtain an
+ instance of the <see cref="T:log4net.Core.LoggingEventData"/> class.
+ </para>
+ <para>
+ The <paramref name="fixedData"/> parameter should be used to specify which fields in the
+ <paramref name="data"/> struct have been preset. Fields not specified in the <paramref name="fixedData"/>
+ will be captured from the environment if requested or fixed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ using specific data.
+ </summary>
+ <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
+ the stack boundary into the logging system for this call.</param>
+ <param name="repository">The repository this event is logged in.</param>
+ <param name="data">Data used to initialize the logging event.</param>
+ <remarks>
+ <para>
+ This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/>
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+ </para>
+ <para>
+ Use the <see cref="M:GetLoggingEventData(FixFlags)"/> method to obtain an
+ instance of the <see cref="T:log4net.Core.LoggingEventData"/> class.
+ </para>
+ <para>
+ This constructor sets this objects <see cref="P:log4net.Core.LoggingEvent.Fix"/> flags to <see cref="F:log4net.Core.FixFlags.All"/>,
+ this assumes that all the data relating to this event is passed in via the <paramref name="data"/>
+ parameter and no other data should be captured from the environment.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)">
+ <summary>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ using specific data.
+ </summary>
+ <param name="data">Data used to initialize the logging event.</param>
+ <remarks>
+ <para>
+ This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/>
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+ </para>
+ <para>
+ Use the <see cref="M:GetLoggingEventData(FixFlags)"/> method to obtain an
+ instance of the <see cref="T:log4net.Core.LoggingEventData"/> class.
+ </para>
+ <para>
+ This constructor sets this objects <see cref="P:log4net.Core.LoggingEvent.Fix"/> flags to <see cref="F:log4net.Core.FixFlags.All"/>,
+ this assumes that all the data relating to this event is passed in via the <paramref name="data"/>
+ parameter and no other data should be captured from the environment.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serialization constructor
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ <remarks>
+ <para>
+ Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class
+ with serialized data.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Ensure that the repository is set.
+ </summary>
+ <param name="repository">the value for the repository</param>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)">
+ <summary>
+ Write the rendered message to a TextWriter
+ </summary>
+ <param name="writer">the writer to write the message to</param>
+ <remarks>
+ <para>
+ Unlike the <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property this method
+ does store the message data in the internal cache. Therefore
+ if called only once this method should be faster than the
+ <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property, however if the message is
+ to be accessed multiple times then the property will be more efficient.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
+ <param name="context">The destination for this serialization.</param>
+ <remarks>
+ <para>
+ The data in this event must be fixed before it can be serialized.
+ </para>
+ <para>
+ The <see cref="M:FixVolatileData()"/> method must be called during the
+ <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method call if this event
+ is to be used outside that method.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetLoggingEventData">
+ <summary>
+ Gets the portable data for this <see cref="T:log4net.Core.LoggingEvent"/>.
+ </summary>
+ <returns>The <see cref="T:log4net.Core.LoggingEventData"/> for this event.</returns>
+ <remarks>
+ <para>
+ A new <see cref="T:log4net.Core.LoggingEvent"/> can be constructed using a
+ <see cref="T:log4net.Core.LoggingEventData"/> instance.
+ </para>
+ <para>
+ Does a <see cref="F:log4net.Core.FixFlags.Partial"/> fix of the data
+ in the logging event before returning the event data.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)">
+ <summary>
+ Gets the portable data for this <see cref="T:log4net.Core.LoggingEvent"/>.
+ </summary>
+ <param name="fixFlags">The set of data to ensure is fixed in the LoggingEventData</param>
+ <returns>The <see cref="T:log4net.Core.LoggingEventData"/> for this event.</returns>
+ <remarks>
+ <para>
+ A new <see cref="T:log4net.Core.LoggingEvent"/> can be constructed using a
+ <see cref="T:log4net.Core.LoggingEventData"/> instance.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetExceptionStrRep">
+ <summary>
+ Returns this event's exception's rendered using the
+ <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </summary>
+ <returns>
+ This event's exception's rendered using the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </returns>
+ <remarks>
+ <para>
+ <b>Obsolete. Use <see cref="M:log4net.Core.LoggingEvent.GetExceptionString"/> instead.</b>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetExceptionString">
+ <summary>
+ Returns this event's exception's rendered using the
+ <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </summary>
+ <returns>
+ This event's exception's rendered using the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </returns>
+ <remarks>
+ <para>
+ Returns this event's exception's rendered using the
+ <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.FixVolatileData">
+ <summary>
+ Fix instance fields that hold volatile data.
+ </summary>
+ <remarks>
+ <para>
+ Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/>
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ <see cref="M:FixVolatileData()"/>. There is a performance penalty
+ incurred by calling <see cref="M:FixVolatileData()"/> but it
+ is essential to maintaining data consistency.
+ </para>
+ <para>
+ Calling <see cref="M:FixVolatileData()"/> is equivalent to
+ calling <see cref="M:FixVolatileData(bool)"/> passing the parameter
+ <c>false</c>.
+ </para>
+ <para>
+ See <see cref="M:FixVolatileData(bool)"/> for more
+ information.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)">
+ <summary>
+ Fixes instance fields that hold volatile data.
+ </summary>
+ <param name="fastButLoose">Set to <c>true</c> to not fix data that takes a long time to fix.</param>
+ <remarks>
+ <para>
+ Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/>
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ <see cref="M:FixVolatileData()"/>. There is a performance penalty
+ for incurred by calling <see cref="M:FixVolatileData()"/> but it
+ is essential to maintaining data consistency.
+ </para>
+ <para>
+ The <paramref name="fastButLoose"/> param controls the data that
+ is fixed. Some of the data that can be fixed takes a long time to
+ generate, therefore if you do not require those settings to be fixed
+ they can be ignored by setting the <paramref name="fastButLoose"/> param
+ to <c>true</c>. This setting will ignore the <see cref="P:log4net.Core.LoggingEvent.LocationInformation"/>
+ and <see cref="P:log4net.Core.LoggingEvent.UserName"/> settings.
+ </para>
+ <para>
+ Set <paramref name="fastButLoose"/> to <c>false</c> to ensure that all
+ settings are fixed.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)">
+ <summary>
+ Fix the fields specified by the <see cref="T:log4net.Core.FixFlags"/> parameter
+ </summary>
+ <param name="flags">the fields to fix</param>
+ <remarks>
+ <para>
+ Only fields specified in the <paramref name="flags"/> will be fixed.
+ Fields will not be fixed if they have previously been fixed.
+ It is not possible to 'unfix' a field.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.LookupProperty(System.String)">
+ <summary>
+ Lookup a composite property in this event
+ </summary>
+ <param name="key">the key for the property to lookup</param>
+ <returns>the value for the property</returns>
+ <remarks>
+ <para>
+ This event has composite properties that combine together properties from
+ several different contexts in the following order:
+ <list type="definition">
+ <item>
+ <term>this events properties</term>
+ <description>
+ This event has <see cref="P:log4net.Core.LoggingEvent.Properties"/> that can be set. These
+ properties are specific to this event only.
+ </description>
+ </item>
+ <item>
+ <term>the thread properties</term>
+ <description>
+ The <see cref="P:log4net.ThreadContext.Properties"/> that are set on the current
+ thread. These properties are shared by all events logged on this thread.
+ </description>
+ </item>
+ <item>
+ <term>the global properties</term>
+ <description>
+ The <see cref="P:log4net.GlobalContext.Properties"/> that are set globally. These
+ properties are shared by all the threads in the AppDomain.
+ </description>
+ </item>
+ </list>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LoggingEvent.GetProperties">
+ <summary>
+ Get all the composite properties in this event
+ </summary>
+ <returns>the <see cref="T:log4net.Util.PropertiesDictionary"/> containing all the properties</returns>
+ <remarks>
+ <para>
+ See <see cref="M:log4net.Core.LoggingEvent.LookupProperty(System.String)"/> for details of the composite properties
+ stored by the event.
+ </para>
+ <para>
+ This method returns a single <see cref="T:log4net.Util.PropertiesDictionary"/> containing all the
+ properties defined for this event.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_data">
+ <summary>
+ The internal logging event data.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_compositeProperties">
+ <summary>
+ The internal logging event data.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_eventProperties">
+ <summary>
+ The internal logging event data.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType">
+ <summary>
+ The fully qualified Type of the calling
+ logger class in the stack frame (i.e. the declaring type of the method).
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_message">
+ <summary>
+ The application supplied message of logging event.
+ </summary>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_thrownException">
+ <summary>
+ The exception that was thrown.
+ </summary>
+ <remarks>
+ This is not serialized. The string representation
+ is serialized instead.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_repository">
+ <summary>
+ The repository that generated the logging event
+ </summary>
+ <remarks>
+ This is not serialized.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_fixFlags">
+ <summary>
+ The fix state for this event
+ </summary>
+ <remarks>
+ These flags indicate which fields have been fixed.
+ Not serialized.
+ </remarks>
+ </member>
+ <member name="F:log4net.Core.LoggingEvent.m_cacheUpdatable">
+ <summary>
+ Indicated that the internal cache is updateable (ie not fixed)
+ </summary>
+ <remarks>
+ This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler
+ changes in the caching strategy.
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.StartTime">
+ <summary>
+ Gets the time when the current process started.
+ </summary>
+ <value>
+ This is the time when this process started.
+ </value>
+ <remarks>
+ <para>
+ The TimeStamp is stored in the local time zone for this computer.
+ </para>
+ <para>
+ Tries to get the start time for the current process.
+ Failing that it returns the time of the first call to
+ this property.
+ </para>
+ <para>
+ Note that AppDomains may be loaded and unloaded within the
+ same process without the process terminating and therefore
+ without the process start time being reset.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Level">
+ <summary>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event.
+ </summary>
+ <value>
+ The <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event.
+ </value>
+ <remarks>
+ <para>
+ Gets the <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.TimeStamp">
+ <summary>
+ Gets the time of the logging event.
+ </summary>
+ <value>
+ The time of the logging event.
+ </value>
+ <remarks>
+ <para>
+ The TimeStamp is stored in the local time zone for this computer.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.LoggerName">
+ <summary>
+ Gets the name of the logger that logged the event.
+ </summary>
+ <value>
+ The name of the logger that logged the event.
+ </value>
+ <remarks>
+ <para>
+ Gets the name of the logger that logged the event.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.LocationInformation">
+ <summary>
+ Gets the location information for this logging event.
+ </summary>
+ <value>
+ The location information for this logging event.
+ </value>
+ <remarks>
+ <para>
+ The collected information is cached for future use.
+ </para>
+ <para>
+ See the <see cref="T:log4net.Core.LocationInfo"/> class for more information on
+ supported frameworks and the different behavior in Debug and
+ Release builds.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.MessageObject">
+ <summary>
+ Gets the message object used to initialize this event.
+ </summary>
+ <value>
+ The message object used to initialize this event.
+ </value>
+ <remarks>
+ <para>
+ Gets the message object used to initialize this event.
+ Note that this event may not have a valid message object.
+ If the event is serialized the message object will not
+ be transferred. To get the text of the message the
+ <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property must be used
+ not this property.
+ </para>
+ <para>
+ If there is no defined message object for this event then
+ null will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.ExceptionObject">
+ <summary>
+ Gets the exception object used to initialize this event.
+ </summary>
+ <value>
+ The exception object used to initialize this event.
+ </value>
+ <remarks>
+ <para>
+ Gets the exception object used to initialize this event.
+ Note that this event may not have a valid exception object.
+ If the event is serialized the exception object will not
+ be transferred. To get the text of the exception the
+ <see cref="M:log4net.Core.LoggingEvent.GetExceptionString"/> method must be used
+ not this property.
+ </para>
+ <para>
+ If there is no defined exception object for this event then
+ null will be returned.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Repository">
+ <summary>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this event was created in.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:log4net.Repository.ILoggerRepository"/> that this event was created in.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.RenderedMessage">
+ <summary>
+ Gets the message, rendered through the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </summary>
+ <value>
+ The message rendered through the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>.
+ </value>
+ <remarks>
+ <para>
+ The collected information is cached for future use.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.ThreadName">
+ <summary>
+ Gets the name of the current thread.
+ </summary>
+ <value>
+ The name of the current thread, or the thread ID when
+ the name is not available.
+ </value>
+ <remarks>
+ <para>
+ The collected information is cached for future use.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.UserName">
+ <summary>
+ Gets the name of the current user.
+ </summary>
+ <value>
+ The name of the current user, or <c>NOT AVAILABLE</c> when the
+ underlying runtime has no support for retrieving the name of the
+ current user.
+ </value>
+ <remarks>
+ <para>
+ Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of
+ the current windows user.
+ </para>
+ <para>
+ To improve performance, we could cache the string representation of
+ the name, and reuse that as long as the identity stayed constant.
+ Once the identity changed, we would need to re-assign and re-render
+ the string.
+ </para>
+ <para>
+ However, the <c>WindowsIdentity.GetCurrent()</c> call seems to
+ return different objects every time, so the current implementation
+ doesn't do this type of caching.
+ </para>
+ <para>
+ Timing for these operations:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Method</term>
+ <description>Results</description>
+ </listheader>
+ <item>
+ <term><c>WindowsIdentity.GetCurrent()</c></term>
+ <description>10000 loops, 00:00:00.2031250 seconds</description>
+ </item>
+ <item>
+ <term><c>WindowsIdentity.GetCurrent().Name</c></term>
+ <description>10000 loops, 00:00:08.0468750 seconds</description>
+ </item>
+ </list>
+ <para>
+ This means we could speed things up almost 40 times by caching the
+ value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since
+ this takes (8.04-0.20) = 7.84375 seconds.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Identity">
+ <summary>
+ Gets the identity of the current thread principal.
+ </summary>
+ <value>
+ The string name of the identity of the current thread principal.
+ </value>
+ <remarks>
+ <para>
+ Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get
+ the name of the current thread principal.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Domain">
+ <summary>
+ Gets the AppDomain friendly name.
+ </summary>
+ <value>
+ The AppDomain friendly name.
+ </value>
+ <remarks>
+ <para>
+ Gets the AppDomain friendly name.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Properties">
+ <summary>
+ Additional event specific properties.
+ </summary>
+ <value>
+ Additional event specific properties.
+ </value>
+ <remarks>
+ <para>
+ A logger or an appender may attach additional
+ properties to specific events. These properties
+ have a string key and an object value.
+ </para>
+ <para>
+ This property is for events that have been added directly to
+ this event. The aggregate properties (which include these
+ event properties) can be retrieved using <see cref="M:log4net.Core.LoggingEvent.LookupProperty(System.String)"/>
+ and <see cref="M:log4net.Core.LoggingEvent.GetProperties"/>.
+ </para>
+ <para>
+ Once the properties have been fixed <see cref="P:log4net.Core.LoggingEvent.Fix"/> this property
+ returns the combined cached properties. This ensures that updates to
+ this property are always reflected in the underlying storage. When
+ returning the combined properties there may be more keys in the
+ Dictionary than expected.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:log4net.Core.LoggingEvent.Fix">
+ <summary>
+ The fixed fields in this event
+ </summary>
+ <value>
+ The set of fields that are fixed in this event
+ </value>
+ <remarks>
+ <para>
+ Fields will not be fixed if they have previously been fixed.
+ It is not possible to 'unfix' a field.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:log4net.Core.LogImpl">
+ <summary>
+ Implementation of <see cref="T:log4net.ILog"/> wrapper interface.
+ </summary>
+ <remarks>
+ <para>
+ This implementation of the <see cref="T:log4net.ILog"/> interface
+ forwards to the <see cref="T:log4net.Core.ILogger"/> held by the base class.
+ </para>
+ <para>
+ This logger has methods to allow the caller to log at the following
+ levels:
+ </para>
+ <list type="definition">
+ <item>
+ <term>DEBUG</term>
+ <description>
+ The <see cref="M:Debug(object)"/> and <see cref="M:DebugFormat(string, object[])"/> methods log messages
+ at the <c>DEBUG</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Debug"/>. The <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>INFO</term>
+ <description>
+ The <see cref="M:Info(object)"/> and <see cref="M:InfoFormat(string, object[])"/> methods log messages
+ at the <c>INFO</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Info"/>. The <see cref="P:log4net.Core.LogImpl.IsInfoEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>WARN</term>
+ <description>
+ The <see cref="M:Warn(object)"/> and <see cref="M:WarnFormat(string, object[])"/> methods log messages
+ at the <c>WARN</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Warn"/>. The <see cref="P:log4net.Core.LogImpl.IsWarnEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>ERROR</term>
+ <description>
+ The <see cref="M:Error(object)"/> and <see cref="M:ErrorFormat(string, object[])"/> methods log messages
+ at the <c>ERROR</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Error"/>. The <see cref="P:log4net.Core.LogImpl.IsErrorEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ <item>
+ <term>FATAL</term>
+ <description>
+ The <see cref="M:Fatal(object)"/> and <see cref="M:FatalFormat(string, object[])"/> methods log messages
+ at the <c>FATAL</c> level. That is the level with that name defined in the
+ repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value
+ for this level is <see cref="F:log4net.Core.Level.Fatal"/>. The <see cref="P:log4net.Core.LogImpl.IsFatalEnabled"/>
+ property tests if this level is enabled for logging.
+ </description>
+ </item>
+ </list>
+ <para>
+ The values for these levels and their semantic meanings can be changed by
+ configuring the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/> for the repository.
+ </para>
+ </remarks>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="T:log4net.ILog">
+ <summary>
+ The ILog interface is use by application to log messages into
+ the log4net framework.
+ </summary>
+ <remarks>
+ <para>
+ Use the <see cref="T:log4net.LogManager"/> to obtain logger instances
+ that implement this interface. The <see cref="M:LogManager.GetLogger(Assembly,Type)"/>
+ static method is used to get logger instances.
+ </para>
+ <para>
+ This class contains methods for logging at different levels and also
+ has properties for determining if those logging levels are
+ enabled in the current configuration.
+ </para>
+ <para>
+ This interface can be implemented in different ways. This documentation
+ specifies reasonable behavior that a caller can expect from the actual
+ implementation, however different implementations reserve the right to
+ do things differently.
+ </para>
+ </remarks>
+ <example>Simple example of logging messages
+ <code lang="C#">
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.Info("Application Start");
+ log.Debug("This is a debug message");
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is another debug message");
+ }
+ </code>
+ </example>
+ <seealso cref="T:log4net.LogManager"/>
+ <seealso cref="M:LogManager.GetLogger(Assembly, Type)"/>
+ <author>Nicko Cadell</author>
+ <author>Gert Driesen</author>
+ </member>
+ <member name="M:log4net.ILog.Debug(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.</overloads>
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>DEBUG</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Debug"/> level. If this logger is
+ <c>DEBUG</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Debug(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Debug(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Debug(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object[])">
+ <overloads>Log a formatted string with the <see cref="F:log4net.Core.Level.Debug"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Info(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level.</overloads>
+ <summary>
+ Logs a message object with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Info"/> level. If this logger is
+ <c>INFO</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Info(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <param name="message">The message object to log.</param>
+ <seealso cref="M:Info(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Info(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>INFO</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Info(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsInfoEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Warn(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.</overloads>
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>WARN</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Warn"/> level. If this logger is
+ <c>WARN</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Warn(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <param name="message">The message object to log.</param>
+ <seealso cref="M:Warn(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Warn(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Warn(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Warn(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Warn(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsWarnEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Error(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level.</overloads>
+ <summary>
+ Logs a message object with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>ERROR</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Error"/> level. If this logger is
+ <c>ERROR</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Error(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Error(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Error(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Error(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Error(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsErrorEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Fatal(System.Object)">
+ <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.</overloads>
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>FATAL</c>
+ enabled by comparing the level of this logger with the
+ <see cref="F:log4net.Core.Level.Fatal"/> level. If this logger is
+ <c>FATAL</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Fatal(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ <param name="message">The message object to log.</param>
+ <seealso cref="M:Fatal(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.Fatal(System.Object,System.Exception)">
+ <summary>
+ Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level including
+ the stack trace of the <see cref="T:System.Exception"/> passed
+ as a parameter.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ See the <see cref="M:Fatal(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object[])">
+ <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.</overloads>
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object,Exception)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <c>String.Format</c> method. See
+ <see cref="M:String.Format(string, object[])"/> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Fatal(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ <seealso cref="M:Fatal(object,Exception)"/>
+ <seealso cref="P:log4net.ILog.IsFatalEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsDebugEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Debug"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Debug"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ <para>
+ This function is intended to lessen the computational cost of
+ disabled log debug statements.
+ </para>
+ <para> For some ILog interface <c>log</c>, when you write:</para>
+ <code lang="C#">
+ log.Debug("This is entry number: " + i );
+ </code>
+ <para>
+ You incur the cost constructing the message, string construction and concatenation in
+ this case, regardless of whether the message is logged or not.
+ </para>
+ <para>
+ If you are worried about speed (who isn't), then you should write:
+ </para>
+ <code lang="C#">
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+ </code>
+ <para>
+ This way you will not incur the cost of parameter
+ construction if debugging is disabled for <c>log</c>. On
+ the other hand, if the <c>log</c> is debug enabled, you
+ will incur the cost of evaluating whether the logger is debug
+ enabled twice. Once in <see cref="P:log4net.ILog.IsDebugEnabled"/> and once in
+ the <see cref="M:Debug(object)"/>. This is an insignificant overhead
+ since evaluating a logger takes about 1% of the time it
+ takes to actually log. This is the preferred style of logging.
+ </para>
+ <para>Alternatively if your logger is available statically then the is debug
+ enabled state can be stored in a static variable like this:
+ </para>
+ <code lang="C#">
+ private static readonly bool isDebugEnabled = log.IsDebugEnabled;
+ </code>
+ <para>
+ Then when you come to log you can write:
+ </para>
+ <code lang="C#">
+ if (isDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+ </code>
+ <para>
+ This way the debug enabled state is only queried once
+ when the class is loaded. Using a <c>private static readonly</c>
+ variable is the most efficient because it is a run time constant
+ and can be heavily optimized by the JIT compiler.
+ </para>
+ <para>
+ Of course if you use a static readonly variable to
+ hold the enabled state of the logger then you cannot
+ change the enabled state at runtime to vary the logging
+ that is produced. You have to decide if you need absolute
+ speed or runtime flexibility.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ <seealso cref="M:DebugFormat(IFormatProvider, string, object[])"/>
+ </member>
+ <member name="P:log4net.ILog.IsInfoEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Info"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Info"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ <seealso cref="M:InfoFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsWarnEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Warn"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Warn"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Warn(object)"/>
+ <seealso cref="M:WarnFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsErrorEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Error"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Error"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Error(object)"/>
+ <seealso cref="M:ErrorFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="P:log4net.ILog.IsFatalEnabled">
+ <summary>
+ Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Fatal"/> level.
+ </summary>
+ <value>
+ <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Fatal"/> events, <c>false</c> otherwise.
+ </value>
+ <remarks>
+ For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>.
+ </remarks>
+ <seealso cref="M:Fatal(object)"/>
+ <seealso cref="M:FatalFormat(IFormatProvider, string, object[])"/>
+ <seealso cref="P:log4net.ILog.IsDebugEnabled"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)">
+ <summary>
+ Construct a new wrapper for the specified logger.
+ </summary>
+ <param name="logger">The logger to wrap.</param>
+ <remarks>
+ <para>
+ Construct a new wrapper for the specified logger.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)">
+ <summary>
+ Virtual method called when the configuration of the repository changes
+ </summary>
+ <param name="repository">the repository holding the levels</param>
+ <remarks>
+ <para>
+ Virtual method called when the configuration of the repository changes
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Debug(System.Object)">
+ <summary>
+ Logs a message object with the <c>DEBUG</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>DEBUG</c>
+ enabled by comparing the level of this logger with the
+ <c>DEBUG</c> level. If this logger is
+ <c>DEBUG</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+ </para>
+ <para>
+ <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Debug(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>DEBUG</c> level
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Logs a message object with the <c>DEBUG</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/> passed
+ as a parameter.
+ </para>
+ <para>
+ See the <see cref="M:Debug(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Debug(object)"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="arg0">An Object to format</param>
+ <param name="arg1">An Object to format</param>
+ <param name="arg2">An Object to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:DebugFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>DEBUG</c> level.
+ </summary>
+ <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Debug(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Info(System.Object)">
+ <summary>
+ Logs a message object with the <c>INFO</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <remarks>
+ <para>
+ This method first checks if this logger is <c>INFO</c>
+ enabled by comparing the level of this logger with the
+ <c>INFO</c> level. If this logger is
+ <c>INFO</c> enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+ </para>
+ <para>
+ <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/>
+ to this method will print the name of the <see cref="T:System.Exception"/>
+ but no stack trace. To print a stack trace use the
+ <see cref="M:Info(object,Exception)"/> form instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:log4net.Core.LogImpl.Info(System.Object,System.Exception)">
+ <summary>
+ Logs a message object with the <c>INFO</c> level.
+ </summary>
+ <param name="message">The message object to log.</param>
+ <param name="exception">The exception to log, including its stack trace.</param>
+ <remarks>
+ <para>
+ Logs a message object with the <c>INFO</c> level including
+ the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/>
+ passed as a parameter.
+ </para>
+ <para>
+ See the <see cref="M:Info(object)"/> form for more detailed information.
+ </para>
+ </remarks>
+ <seealso cref="M:Info(object)"/>
+ </member>
+ <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])">
+ <summary>
+ Logs a formatted message string with the <c>INFO</c> level.
+ </summary>
+ <param name="format">A String containing zero or more format items</param>
+ <param name="args">An Object array containing zero or more objects to format</param>
+ <remarks>
+ <para>
+ The message is formatted using the <see cref="M:String.Format(IFormatProvider, string, object[])"/> method. See
+ <c>String.Format</c> for details of the syntax of the format string and the behavior
+ of the formatting.
+ </para>
+ <para>
+ The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/>
+ format provider. To specify a localized provider use the
+ <see cref="M:InfoFormat(IFormatProvider,string,object[])"/> method.
+ </para>
+ <para>
+ This method does not take an <see cref="T:System.Exception"/> object to include in the
+ log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:Info(object)"/>
+ methods instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="